Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:11:22

0001 #include <TCanvas.h>
0002 #include <TCut.h>
0003 #include <TFile.h>
0004 #include <TH1F.h>
0005 #include <TH2F.h>
0006 #include <TMath.h>
0007 #include <TObjString.h>
0008 #include <TRandom3.h>
0009 #include <TTree.h>
0010 #include <TTreeIndex.h>
0011 
0012 #include <fstream>
0013 #include <iostream>
0014 #include <sstream>
0015 #include <string>
0016 #include <vector>
0017 
0018 using namespace std;
0019 
0020 // in python, do this: np.logspace(-4,np.log10(0.5),num=51)
0021 const int NBins = 50;
0022 float edges[NBins + 1] = {1.00000000e-04, 1.18571250e-04, 1.40591414e-04, 1.66700998e-04, 1.97659458e-04, 2.34367291e-04, 2.77892228e-04, 3.29500290e-04, 3.90692614e-04,
0023                           4.63249118e-04, 5.49280272e-04, 6.51288487e-04, 7.72240903e-04, 9.15655696e-04, 1.08570441e-03, 1.28733329e-03, 1.52640718e-03, 1.80988009e-03,
0024                           2.14599745e-03, 2.54453601e-03, 3.01708817e-03, 3.57739917e-03, 4.24176693e-03, 5.02951609e-03, 5.96356012e-03, 7.07106781e-03, 8.38425353e-03,
0025                           9.94131425e-03, 1.17875406e-02, 1.39766343e-02, 1.65722701e-02, 1.96499479e-02, 2.32991889e-02, 2.76261397e-02, 3.27566592e-02, 3.88399805e-02,
0026                           4.60530506e-02, 5.46056779e-02, 6.47466352e-02, 7.67708949e-02, 9.10282102e-02, 1.07933287e-01, 1.27977848e-01, 1.51744935e-01, 1.79925867e-01,
0027                           2.13340350e-01, 2.52960321e-01, 2.99938216e-01, 3.55640493e-01, 4.21687380e-01, 5.00000000e-01};
0028 
0029 void makehist(TString infname, TString outfname)
0030 {
0031     TFile *fout = new TFile(outfname, "RECREATE");
0032 
0033     // not zvtx weighted
0034     TH1F *hM_clusphi = new TH1F("hM_clusphi", "hM_clusphi", 140, -3.5, 3.5);
0035     TH1F *hM_cluseta = new TH1F("hM_cluseta", "hM_cluseta", 80, -4, 4);
0036     TH1F *hM_clusphisize = new TH1F("hM_clusphisize", "hM_clusphisize", 80, 0, 80);
0037     TH1F *hM_clusadc = new TH1F("hM_clusadc", "hM_clusadc", 200, 0, 20000);
0038     TH2F *hM_clusphi_clusphisize = new TH2F("hM_clusphi_clusphisize", "hM_clusphi_clusphisize", 140, -3.5, 3.5, 80, 0, 80);
0039     TH2F *hM_cluseta_clusphisize = new TH2F("hM_cluseta_clusphisize", "hM_cluseta_clusphisize", 160, -4, 4, 80, 0, 80);
0040     // zvtx weighted
0041     TH1F *hM_clusphi_zvtxwei = new TH1F("hM_clusphi_zvtxwei", "hM_clusphi_zvtxwei", 140, -3.5, 3.5);
0042     TH1F *hM_cluseta_zvtxwei = new TH1F("hM_cluseta_zvtxwei", "hM_cluseta_zvtxwei", 80, -4, 4);
0043     TH1F *hM_clusphisize_zvtxwei = new TH1F("hM_clusphisize_zvtxwei", "hM_clusphisize_zvtxwei", 80, 0, 80);
0044     TH2F *hM_clusphi_clusphisize_zvtxwei = new TH2F("hM_clusphi_clusphisize_zvtxwei", "hM_clusphi_clusphisize_zvtxwei", 140, -3.5, 3.5, 80, 0, 80);
0045     TH2F *hM_cluseta_clusphisize_zvtxwei = new TH2F("hM_cluseta_clusphisize_zvtxwei", "hM_cluseta_clusphisize_zvtxwei", 160, -4, 4, 80, 0, 80);
0046 
0047     // clusters of tracklets
0048     TH1F *hM_tklclus1phisize = new TH1F("hM_tklclus1phisize", "hM_tklclus1phisize", 80, 0, 80);
0049     TH1F *hM_tklclus2phisize = new TH1F("hM_tklclus2phisize", "hM_tklclus2phisize", 80, 0, 80);
0050     TH2F *hM_tklclus1phisize_tklclus2phisize = new TH2F("hM_tklclus1phisize_tklclus2phisize", "hM_tklclus1phisize_tklclus2phisize", 80, 0, 80, 80, 0, 80);
0051     TH2F *hM_tklclus1phi_tklclus1phisize = new TH2F("hM_tklclus1phi_tklclus1phisize", "hM_tklclus1phi_tklclus1phisize", 140, -3.5, 3.5, 80, 0, 80);
0052     TH2F *hM_tklclus2phi_tklclus2phisize = new TH2F("hM_tklclus2phi_tklclus2phisize", "hM_tklclus2phi_tklclus2phisize", 140, -3.5, 3.5, 80, 0, 80);
0053     TH2F *hM_tklclus1eta_tklclus1phisize = new TH2F("hM_tklclus1eta_tklclus1phisize", "hM_tklclus1eta_tklclus1phisize", 160, -4, 4, 80, 0, 80);
0054     TH2F *hM_tklclus2eta_tklclus2phisize = new TH2F("hM_tklclus2eta_tklclus2phisize", "hM_tklclus2eta_tklclus2phisize", 160, -4, 4, 80, 0, 80);
0055 
0056     TH1F *hM_dEta_reco = new TH1F("hM_dEta_reco", "hM_dEta_reco", 200, -3, 3);
0057     TH1F *hM_dEta_reco_altrange = new TH1F("hM_dEta_reco_altrange", "hM_dEta_reco_altrange", 100, -0.5, 0.5);
0058     TH1F *hM_dEta_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20 = new TH1F("hM_dEta_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", "hM_dEta_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", 100, -0.5, 0.5);
0059     TH1F *hM_dPhi_reco = new TH1F("hM_dPhi_reco", "hM_dPhi_reco", 200, -0.5, 0.5);
0060     TH1F *hM_dPhi_reco_altrange = new TH1F("hM_dPhi_reco_altrange", "hM_dPhi_reco_altrange", 200, -0.05, 0.05);
0061     TH1F *hM_dPhi_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20 = new TH1F("hM_dPhi_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", "hM_dPhi_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", 200, -0.05, 0.05);
0062     TH1F *hM_dR_reco = new TH1F("hM_dR_reco", "hM_dR_reco", 100, 0, 0.5);
0063     TH1F *hM_dR_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20 = new TH1F("hM_dR_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", "hM_dR_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", 100, 0, 0.5);
0064     TH1F *hM_dR_reco_altrange = new TH1F("hM_dR_reco_altrange", "hM_dR_reco_altrange", 50, 0, 0.05);
0065     TH1F *hM_dR_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20 = new TH1F("hM_dR_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", "hM_dR_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", 50, 0, 0.05);
0066     TH1F *hM_dR_reco_LogX = new TH1F("hM_dR_reco_LogX", "hM_dR_reco_LogX", NBins, edges);
0067     TH1F *hM_Eta_reco = new TH1F("hM_Eta_reco", "hM_Eta_reco", 80, -4, 4);
0068     TH1F *hM_Eta_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20 = new TH1F("hM_Eta_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", "hM_Eta_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", 80, -4, 4);
0069     TH1F *hM_Phi_reco = new TH1F("hM_Phi_reco", "hM_Phi_reco", 140, -3.5, 3.5);
0070     TH1F *hM_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20 = new TH1F("hM_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", "hM_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", 140, -3.5, 3.5);
0071     TH2F *hM_Eta_vtxZ_reco_incl = new TH2F("hM_Eta_vtxZ_reco_incl", "hM_Eta_vtxZ_reco_incl", 280, -3.5, 3.5, 310, -31, 31);
0072     TH2F *hM_Eta_vtxZ_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20 = new TH2F("hM_Eta_vtxZ_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", "hM_Eta_vtxZ_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", 350, -3.5, 3.5, 420, -21, 21);
0073     TH2F *hM_Eta_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20 = new TH2F("hM_Eta_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", "hM_Eta_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20", 350, -3.5, 3.5, 350, -3.5, 3.5);
0074 
0075     // vector<float> centrality_cut = {0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
0076     vector<float> centrality_cut = {0, 3, 6, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 80, 90, 100};
0077     vector<TH1F *> hM_dEta_reco_Centrality;
0078     vector<TH1F *> hM_dPhi_reco_Centrality;
0079     vector<TH1F *> hM_dR_reco_Centrality;
0080     vector<TH2F *> hM_Eta_vtxZ_reco_Centrality;
0081     vector<TH1F *> hM_dEta_reco_Centrality_MBDAsymLe0p75;
0082     vector<TH1F *> hM_dPhi_reco_Centrality_MBDAsymLe0p75;
0083     vector<TH1F *> hM_dR_reco_Centrality_MBDAsymLe0p75;
0084     vector<TH2F *> hM_Eta_vtxZ_reco_Centrality_MBDAsymLe0p75;
0085     vector<TH1F *> hM_dEta_reco_Centrality_MBDAsymLe0p75_VtxZm20to20;
0086     vector<TH1F *> hM_dPhi_reco_Centrality_MBDAsymLe0p75_VtxZm20to20;
0087     vector<TH1F *> hM_dR_reco_Centrality_MBDAsymLe0p75_VtxZm20to20;
0088     vector<TH2F *> hM_Eta_vtxZ_reco_Centrality_MBDAsymLe0p75_VtxZm20to20;
0089     vector<TH2F *> hM_Eta_Phi_reco_Centrality_MBDAsymLe0p75_VtxZm20to20;
0090     vector<TH1F *> hM_Eta_reco_Centrality_MBDAsymLe0p75_VtxZm20to20;
0091     
0092     for (size_t i = 0; i < centrality_cut.size() - 1; i++)
0093     {
0094         hM_dEta_reco_Centrality.push_back(new TH1F(Form("hM_dEta_reco_Centrality_%dto%d", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0095                                                    Form("hM_dEta_reco_Centrality_%dto%d", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 100, -0.5, 0.5));
0096         hM_dPhi_reco_Centrality.push_back(new TH1F(Form("hM_dPhi_reco_Centrality_%dto%d", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0097                                                    Form("hM_dPhi_reco_Centrality_%dto%d", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 200, -0.05, 0.05));
0098         hM_dR_reco_Centrality.push_back(new TH1F(Form("hM_dR_reco_Centrality_%dto%d", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0099                                                  Form("hM_dR_reco_Centrality_%dto%d", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 100, 0, 0.5));
0100         hM_Eta_vtxZ_reco_Centrality.push_back(new TH2F(Form("hM_Eta_vtxZ_reco_Centrality_%dto%d", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0101                                                        Form("hM_Eta_vtxZ_reco_Centrality_%dto%d", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 280, -3.5, 3.5, 310, -31, 31));
0102         hM_dEta_reco_Centrality_MBDAsymLe0p75.push_back(new TH1F(Form("hM_dEta_reco_Centrality_%dto%d_MBDAsymLe0p75", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0103                                                                  Form("hM_dEta_reco_Centrality_%dto%d_MBDAsymLe0p75", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 100, -0.5, 0.5));
0104         hM_dPhi_reco_Centrality_MBDAsymLe0p75.push_back(new TH1F(Form("hM_dPhi_reco_Centrality_%dto%d_MBDAsymLe0p75", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0105                                                                  Form("hM_dPhi_reco_Centrality_%dto%d_MBDAsymLe0p75", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 200, -0.05, 0.05));
0106         hM_dR_reco_Centrality_MBDAsymLe0p75.push_back(new TH1F(Form("hM_dR_reco_Centrality_%dto%d_MBDAsymLe0p75", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0107                                                                Form("hM_dR_reco_Centrality_%dto%d_MBDAsymLe0p75", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 100, 0, 0.5));
0108         hM_Eta_vtxZ_reco_Centrality_MBDAsymLe0p75.push_back(new TH2F(Form("hM_Eta_vtxZ_reco_Centrality_%dto%d_MBDAsymLe0p75", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0109                                                                      Form("hM_Eta_vtxZ_reco_Centrality_%dto%d_MBDAsymLe0p75", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 280, -3.5, 3.5, 310,
0110                                                                      -31, 31));
0111         hM_dEta_reco_Centrality_MBDAsymLe0p75_VtxZm20to20.push_back(new TH1F(Form("hM_dEta_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0112                                                                               Form("hM_dEta_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0113                                                                               100, -0.5, 0.5));
0114         hM_dPhi_reco_Centrality_MBDAsymLe0p75_VtxZm20to20.push_back(new TH1F(Form("hM_dPhi_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0115                                                                               Form("hM_dPhi_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0116                                                                               200, -0.05, 0.05));
0117         hM_dR_reco_Centrality_MBDAsymLe0p75_VtxZm20to20.push_back(new TH1F(Form("hM_dR_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0118                                                                             Form("hM_dR_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 100, 0,
0119                                                                             0.5));
0120         hM_Eta_vtxZ_reco_Centrality_MBDAsymLe0p75_VtxZm20to20.push_back(
0121             new TH2F(Form("hM_Eta_vtxZ_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0122                      Form("hM_Eta_vtxZ_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 350, -3.5, 3.5, 420, -21, 21));
0123 
0124         hM_Eta_Phi_reco_Centrality_MBDAsymLe0p75_VtxZm20to20.push_back(
0125             new TH2F(Form("hM_Eta_Phi_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0126                      Form("hM_Eta_Phi_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 280, -3.5, 3.5, 350, -3.5, 3.5));
0127         hM_Eta_reco_Centrality_MBDAsymLe0p75_VtxZm20to20.push_back(
0128             new TH1F(Form("hM_Eta_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]),
0129                      Form("hM_Eta_reco_Centrality_%dto%d_MBDAsymLe0p75_VtxZm20to20", (int)centrality_cut[i], (int)centrality_cut[i + 1]), 80, -4, 4));
0130     }
0131 
0132     // not zvtx weighted
0133     TH1F *hM_NClusLayer1 = new TH1F("hM_NClusLayer1", "hM_NClusLayer1", 100, 0, 5000);
0134     TH1F *hM_NClusLayer2 = new TH1F("hM_NClusLayer2", "hM_NClusLayer2", 100, 0, 5000);
0135     TH1F *hM_NTklclusLayer1 = new TH1F("hM_NTklclusLayer1", "hM_NTklclusLayer1", 100, 0, 5000);
0136     TH1F *hM_NPrototkl = new TH1F("hM_NPrototkl", "hM_NPrototkl", 200, 0, 20000);
0137     TH1F *hM_NRecotkl_Raw = new TH1F("hM_NRecotkl_Raw", "hM_NRecotkl_Raw", 100, 0, 5000);
0138     // zvtx weighted 
0139     TH1F *hM_NClusLayer1_zvtxwei = new TH1F("hM_NClusLayer1_zvtxwei", "hM_NClusLayer1_zvtxwei",  100, 0, 5000);
0140     TH1F *hM_NClusLayer2_zvtxwei = new TH1F("hM_NClusLayer2_zvtxwei", "hM_NClusLayer2_zvtxwei", 100, 0, 5000);
0141     TH1F *hM_NTklclusLayer1_zvtxwei = new TH1F("hM_NTklclusLayer1_zvtxwei", "hM_NTklclusLayer1_zvtxwei", 100, 0, 5000);
0142     TH1F *hM_NPrototkl_zvtxwei = new TH1F("hM_NPrototkl_zvtxwei", "hM_NPrototkl_zvtxwei", 200, 0, 20000);
0143     TH1F *hM_NRecotkl_Raw_zvtxwei = new TH1F("hM_NRecotkl_Raw_zvtxwei", "hM_NRecotkl_Raw_zvtxwei", 100, 0, 5000);
0144 
0145     TH1F *hM_RecoPVz = new TH1F("hM_RecoPVz", "hM_RecoPVz", 310, -31, 31);
0146     TH1F *hM_RecoPVz_MBDAsymLe0p75_VtxZm20to20 = new TH1F("hM_RecoPVz_MBDAsymLe0p75_VtxZm20to20", "hM_RecoPVz_MBDAsymLe0p75_VtxZm20to20", 420, -21, 21);
0147     TH1F *hM_MBDChargeAsymm_Le0p75 = new TH1F("hM_MBDChargeAsymm_Le0p75", "hM_MBDChargeAsymm_Le0p75", 100, -1, 1);
0148     TH1F *hM_MBDChargeAsymm_Le0p75_VtxZm20to20 = new TH1F("hM_MBDChargeAsymm_Le0p75_VtxZm20to20", "hM_MBDChargeAsymm_Le0p75_VtxZm20to20", 100, -1, 1);
0149 
0150     TFile *f = new TFile(infname, "READ");
0151     TTree *t = (TTree *)f->Get("minitree");
0152     t->BuildIndex("event"); // Reference: https://root-forum.cern.ch/t/sort-ttree-entries/13138
0153     TTreeIndex *index = (TTreeIndex *)t->GetTreeIndex();
0154     int event, NClusLayer1, NClusLayer2, NPrototkl, NRecotkl_Raw, NRecotkl_GenMatched, NGenHadron;
0155     float PV_z, TruthPV_z, vtxzwei;
0156     float MBD_centrality;
0157     float mbd_south_charge_sum, mbd_north_charge_sum, mbd_charge_sum, mbd_charge_asymm, mbd_z_vtx;
0158     bool is_min_bias, InttBco_IsToBeRemoved;
0159     bool firedTrig10_MBDSNgeq2, firedTrig12_vtxle10cm, firedTrig13_vtxle30cm, MbdNSge0, MbdZvtxle10cm, validMbdVtx;
0160     vector<int> *clusLayer = 0;
0161     vector<float> *clusPhi = 0, *clusEta = 0, *clusPhiSize = 0;
0162     vector<unsigned int> *clusADC = 0;
0163     vector<float> *tklclus1Phi = 0, *tklclus1Eta = 0, *tklclus1PhiSize = 0, *tklclus2Phi = 0, *tklclus2Eta = 0, *tklclus2PhiSize = 0;
0164     vector<unsigned int> *tklclus1ADC = 0, *tklclus2ADC = 0;
0165     // vector<float> *prototkl_eta = 0, *prototkl_phi = 0, *prototkl_deta = 0, *prototkl_dphi = 0, *prototkl_dR = 0;
0166     vector<float> *recotklraw_eta = 0, *recotklraw_phi = 0, *recotklraw_deta = 0, *recotklraw_dphi = 0, *recotklraw_dR = 0;
0167     t->SetBranchAddress("event", &event);
0168     t->SetBranchAddress("is_min_bias", &is_min_bias);
0169     if (t->GetListOfBranches()->FindObject("InttBco_IsToBeRemoved"))
0170     {
0171         t->SetBranchAddress("InttBco_IsToBeRemoved", &InttBco_IsToBeRemoved);
0172     }
0173     else
0174     {
0175         InttBco_IsToBeRemoved = false;
0176     }
0177     t->SetBranchAddress("firedTrig10_MBDSNgeq2", &firedTrig10_MBDSNgeq2);
0178     t->SetBranchAddress("firedTrig12_vtxle10cm", &firedTrig12_vtxle10cm);
0179     t->SetBranchAddress("firedTrig13_vtxle30cm", &firedTrig13_vtxle30cm);
0180     t->SetBranchAddress("MbdNSge0", &MbdNSge0);
0181     t->SetBranchAddress("MbdZvtxle10cm", &MbdZvtxle10cm);
0182     t->SetBranchAddress("validMbdVtx", &validMbdVtx);
0183     t->SetBranchAddress("MBD_centrality", &MBD_centrality);
0184     t->SetBranchAddress("MBD_z_vtx", &mbd_z_vtx);
0185     t->SetBranchAddress("MBD_south_charge_sum", &mbd_south_charge_sum);
0186     t->SetBranchAddress("MBD_north_charge_sum", &mbd_north_charge_sum);
0187     t->SetBranchAddress("MBD_charge_sum", &mbd_charge_sum);
0188     t->SetBranchAddress("MBD_charge_asymm", &mbd_charge_asymm);
0189     t->SetBranchAddress("NClusLayer1", &NClusLayer1);
0190     t->SetBranchAddress("NClusLayer2", &NClusLayer2);
0191     t->SetBranchAddress("NPrototkl", &NPrototkl);
0192     t->SetBranchAddress("NRecotkl_Raw", &NRecotkl_Raw);
0193     t->SetBranchAddress("PV_z", &PV_z);
0194     t->SetBranchAddress("vtxzwei", &vtxzwei);
0195     t->SetBranchAddress("TruthPV_z", &TruthPV_z);
0196     t->SetBranchAddress("clusLayer", &clusLayer);
0197     t->SetBranchAddress("clusPhi", &clusPhi);
0198     t->SetBranchAddress("clusEta", &clusEta);
0199     t->SetBranchAddress("clusPhiSize", &clusPhiSize);
0200     t->SetBranchAddress("clusADC", &clusADC);
0201     t->SetBranchAddress("tklclus1Phi", &tklclus1Phi);
0202     t->SetBranchAddress("tklclus1Eta", &tklclus1Eta);
0203     t->SetBranchAddress("tklclus1PhiSize", &tklclus1PhiSize);
0204     t->SetBranchAddress("tklclus2Phi", &tklclus2Phi);
0205     t->SetBranchAddress("tklclus2Eta", &tklclus2Eta);
0206     t->SetBranchAddress("tklclus2PhiSize", &tklclus2PhiSize);
0207     t->SetBranchAddress("tklclus1ADC", &tklclus1ADC);
0208     t->SetBranchAddress("tklclus2ADC", &tklclus2ADC);
0209     t->SetBranchAddress("recotklraw_eta", &recotklraw_eta);
0210     t->SetBranchAddress("recotklraw_phi", &recotklraw_phi);
0211     t->SetBranchAddress("recotklraw_deta", &recotklraw_deta);
0212     t->SetBranchAddress("recotklraw_dphi", &recotklraw_dphi);
0213     t->SetBranchAddress("recotklraw_dR", &recotklraw_dR);
0214 
0215     for (int ev = 0; ev < t->GetEntriesFast(); ev++)
0216     {
0217         Long64_t local = t->LoadTree(index->GetIndex()[ev]);
0218         t->GetEntry(local);
0219 
0220         cout << "Event=" << event << "; NClusLayer1=" << NClusLayer1 << "; NTklclusLayer1=" << tklclus1Phi->size() << "; NPrototkl=" << NPrototkl << "; NRecotkl_Raw=" << NRecotkl_Raw << endl;        
0221 
0222         if (InttBco_IsToBeRemoved)
0223             continue;
0224         
0225         bool InttZvtxle10cm = (PV_z >= -10. && PV_z <= 10.);
0226         bool evtsel = validMbdVtx && MbdNSge0 && is_min_bias && firedTrig10_MBDSNgeq2 && MbdZvtxle10cm && InttZvtxle10cm;
0227         if (!evtsel)
0228             continue; 
0229 
0230         hM_NClusLayer1->Fill(NClusLayer1);
0231         hM_NClusLayer2->Fill(NClusLayer2);
0232         hM_NTklclusLayer1->Fill(tklclus1Phi->size());
0233         hM_NPrototkl->Fill(NPrototkl);
0234         hM_NRecotkl_Raw->Fill(NRecotkl_Raw);
0235 
0236         // vtxzwei = 1.;
0237         hM_NClusLayer1_zvtxwei->Fill(NClusLayer1, vtxzwei);
0238         hM_NClusLayer2_zvtxwei->Fill(NClusLayer2, vtxzwei);
0239         hM_NTklclusLayer1_zvtxwei->Fill(tklclus1Phi->size(), vtxzwei);
0240         hM_NPrototkl_zvtxwei->Fill(NPrototkl, vtxzwei);
0241         hM_NRecotkl_Raw_zvtxwei->Fill(NRecotkl_Raw, vtxzwei);
0242 
0243         int NClusLayer1_clusADCgt35 = 0;
0244 
0245         hM_RecoPVz->Fill(PV_z, vtxzwei);
0246 
0247         cout << "Event " << event << " has " << clusPhi->size() << " clusters" << endl;
0248         for (size_t j = 0; j < clusPhiSize->size(); j++)
0249         {
0250             hM_clusphi->Fill(clusPhi->at(j));
0251             hM_cluseta->Fill(clusEta->at(j));
0252             hM_clusphisize->Fill(clusPhiSize->at(j));
0253             hM_clusadc->Fill(clusADC->at(j));
0254             hM_clusphi_clusphisize->Fill(clusPhi->at(j), clusPhiSize->at(j));
0255             hM_cluseta_clusphisize->Fill(clusEta->at(j), clusPhiSize->at(j));
0256 
0257             hM_clusphi_zvtxwei->Fill(clusPhi->at(j), vtxzwei);
0258             hM_cluseta_zvtxwei->Fill(clusEta->at(j), vtxzwei);
0259             hM_clusphisize_zvtxwei->Fill(clusPhiSize->at(j), vtxzwei);
0260             hM_clusphi_clusphisize_zvtxwei->Fill(clusPhi->at(j), clusPhiSize->at(j), vtxzwei);
0261             hM_cluseta_clusphisize_zvtxwei->Fill(clusEta->at(j), clusPhiSize->at(j), vtxzwei);
0262         }
0263 
0264         // clusters of tracklets
0265         for (size_t j = 0; j < tklclus1PhiSize->size(); j++)
0266         {
0267             hM_tklclus1phisize->Fill(tklclus1PhiSize->at(j), vtxzwei);
0268             hM_tklclus2phisize->Fill(tklclus2PhiSize->at(j), vtxzwei);
0269             hM_tklclus1phisize_tklclus2phisize->Fill(tklclus1PhiSize->at(j), tklclus2PhiSize->at(j), vtxzwei);
0270             hM_tklclus1phi_tklclus1phisize->Fill(tklclus1Phi->at(j), tklclus1PhiSize->at(j), vtxzwei);
0271             hM_tklclus2phi_tklclus2phisize->Fill(tklclus2Phi->at(j), tklclus2PhiSize->at(j), vtxzwei);
0272         }
0273 
0274         for (size_t j = 0; j < recotklraw_eta->size(); j++)
0275         {
0276             hM_dEta_reco->Fill(recotklraw_deta->at(j), vtxzwei);
0277             hM_dEta_reco_altrange->Fill(recotklraw_deta->at(j), vtxzwei);
0278             hM_dPhi_reco->Fill(recotklraw_dphi->at(j), vtxzwei);
0279             hM_dPhi_reco_altrange->Fill(recotklraw_dphi->at(j), vtxzwei);
0280             hM_dR_reco->Fill(recotklraw_dR->at(j), vtxzwei);
0281             hM_dR_reco_altrange->Fill(recotklraw_dR->at(j), vtxzwei);
0282             hM_dR_reco_LogX->Fill(recotklraw_dR->at(j), vtxzwei);
0283             hM_Eta_reco->Fill(recotklraw_eta->at(j), vtxzwei);
0284             hM_Phi_reco->Fill(recotklraw_phi->at(j), vtxzwei);
0285             hM_Eta_vtxZ_reco_incl->Fill(recotklraw_eta->at(j), PV_z, vtxzwei);
0286         }
0287         
0288         for (size_t i = 0; i < centrality_cut.size() - 1; i++)
0289         {
0290             if (MBD_centrality >= centrality_cut[i] && MBD_centrality < centrality_cut[i + 1])
0291             {
0292                 for (size_t j = 0; j < recotklraw_eta->size(); j++)
0293                 {
0294                     hM_dEta_reco_Centrality[i]->Fill(recotklraw_deta->at(j), vtxzwei);
0295                     hM_dPhi_reco_Centrality[i]->Fill(recotklraw_dphi->at(j), vtxzwei);
0296                     hM_dR_reco_Centrality[i]->Fill(recotklraw_dR->at(j), vtxzwei);
0297                     hM_Eta_vtxZ_reco_Centrality[i]->Fill(recotklraw_eta->at(j), PV_z, vtxzwei);
0298                 }
0299             }
0300         }
0301 
0302         if (fabs(mbd_charge_asymm) <= 0.75)
0303         {
0304             hM_MBDChargeAsymm_Le0p75->Fill(mbd_charge_asymm, vtxzwei);
0305 
0306             for (size_t i = 0; i < centrality_cut.size() - 1; i++)
0307             {
0308                 if (MBD_centrality >= centrality_cut[i] && MBD_centrality < centrality_cut[i + 1])
0309                 {
0310                     for (size_t j = 0; j < recotklraw_eta->size(); j++)
0311                     {
0312                         hM_dEta_reco_Centrality_MBDAsymLe0p75[i]->Fill(recotklraw_deta->at(j), vtxzwei);
0313                         hM_dPhi_reco_Centrality_MBDAsymLe0p75[i]->Fill(recotklraw_dphi->at(j), vtxzwei);
0314                         hM_dR_reco_Centrality_MBDAsymLe0p75[i]->Fill(recotklraw_dR->at(j), vtxzwei);
0315                         hM_Eta_vtxZ_reco_Centrality_MBDAsymLe0p75[i]->Fill(recotklraw_eta->at(j), PV_z, vtxzwei);
0316                     }
0317                 }
0318             }
0319         }
0320 
0321         if (fabs(mbd_charge_asymm) <= 0.75 && (PV_z >= -20 && PV_z <= 20))
0322         {
0323             hM_RecoPVz_MBDAsymLe0p75_VtxZm20to20->Fill(PV_z, vtxzwei);
0324             hM_MBDChargeAsymm_Le0p75_VtxZm20to20->Fill(mbd_charge_asymm, vtxzwei);
0325 
0326             if (MBD_centrality >= 0 && MBD_centrality <= 70)
0327             {
0328                 for (size_t j = 0; j < recotklraw_eta->size(); j++)
0329                 {
0330                     hM_dEta_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Fill(recotklraw_deta->at(j), vtxzwei);
0331                     hM_dPhi_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Fill(recotklraw_dphi->at(j), vtxzwei);
0332                     hM_dR_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Fill(recotklraw_dR->at(j), vtxzwei);
0333                     hM_dR_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Fill(recotklraw_dR->at(j), vtxzwei);
0334                     hM_Eta_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Fill(recotklraw_eta->at(j), vtxzwei);
0335                     hM_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Fill(recotklraw_phi->at(j), vtxzwei);
0336                     hM_Eta_vtxZ_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Fill(recotklraw_eta->at(j), PV_z, vtxzwei);
0337                     hM_Eta_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Fill(recotklraw_eta->at(j), recotklraw_phi->at(j), vtxzwei);
0338                 }
0339             }
0340 
0341             for (size_t i = 0; i < centrality_cut.size() - 1; i++)
0342             {
0343                 if (MBD_centrality >= centrality_cut[i] && MBD_centrality < centrality_cut[i + 1])
0344                 {
0345                     for (size_t j = 0; j < recotklraw_eta->size(); j++)
0346                     {
0347                         hM_dEta_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Fill(recotklraw_deta->at(j), vtxzwei);
0348                         hM_dPhi_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Fill(recotklraw_dphi->at(j), vtxzwei);
0349                         hM_dR_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Fill(recotklraw_dR->at(j), vtxzwei);
0350                         hM_Eta_vtxZ_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Fill(recotklraw_eta->at(j), PV_z, vtxzwei);
0351                         hM_Eta_Phi_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Fill(recotklraw_eta->at(j), recotklraw_phi->at(j), vtxzwei);
0352                         hM_Eta_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Fill(recotklraw_eta->at(j), vtxzwei);
0353                     }
0354                 }
0355             }
0356         }
0357     }
0358 
0359     f->Close();
0360 
0361     fout->cd();
0362     hM_NClusLayer1->Write();
0363     hM_NClusLayer2->Write();
0364     hM_NTklclusLayer1->Write();
0365     hM_NRecotkl_Raw->Write();
0366     hM_NClusLayer1_zvtxwei->Write();
0367     hM_NTklclusLayer1_zvtxwei->Write();
0368     hM_NRecotkl_Raw_zvtxwei->Write();
0369     hM_RecoPVz->Write();
0370     hM_RecoPVz_MBDAsymLe0p75_VtxZm20to20->Write();
0371     hM_MBDChargeAsymm_Le0p75->Write();
0372     hM_MBDChargeAsymm_Le0p75_VtxZm20to20->Write();
0373     hM_clusphi->Write();
0374     hM_cluseta->Write();
0375     hM_clusphisize->Write();
0376     hM_clusadc->Write();
0377     hM_clusphi_clusphisize->Write();
0378     hM_cluseta_clusphisize->Write();
0379     hM_clusphi_zvtxwei->Write();
0380     hM_cluseta_zvtxwei->Write();
0381     hM_clusphisize_zvtxwei->Write();
0382     hM_clusphi_clusphisize_zvtxwei->Write();
0383     hM_cluseta_clusphisize_zvtxwei->Write();
0384     hM_tklclus1phisize->Write();
0385     hM_tklclus2phisize->Write();
0386     hM_tklclus1phisize_tklclus2phisize->Write();
0387     hM_tklclus1phi_tklclus1phisize->Write();
0388     hM_tklclus2phi_tklclus2phisize->Write();
0389     hM_dEta_reco->Write();
0390     hM_dEta_reco->Write();
0391     hM_dEta_reco_altrange->Write();
0392     hM_dEta_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Write();
0393     hM_dPhi_reco->Write();
0394     hM_dPhi_reco_altrange->Write();
0395     hM_dPhi_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Write();
0396     hM_dR_reco->Write();
0397     hM_dR_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Write();
0398     hM_dR_reco_altrange->Write();
0399     hM_dR_reco_altrange_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Write();
0400     hM_dR_reco_LogX->Write();
0401     hM_Eta_reco->Write();
0402     hM_Eta_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Write();
0403     hM_Phi_reco->Write();
0404     hM_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Write();
0405     hM_Eta_vtxZ_reco_incl->Write();
0406     hM_Eta_vtxZ_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Write();
0407     hM_Eta_Phi_reco_Centrality0to70_MBDAsymLe0p75_VtxZm20to20->Write();
0408     for (size_t i = 0; i < centrality_cut.size() - 1; i++)
0409     {
0410         hM_dEta_reco_Centrality[i]->Write();
0411         hM_dPhi_reco_Centrality[i]->Write();
0412         hM_dR_reco_Centrality[i]->Write();
0413         hM_Eta_vtxZ_reco_Centrality[i]->Write();
0414         hM_dEta_reco_Centrality_MBDAsymLe0p75[i]->Write();
0415         hM_dPhi_reco_Centrality_MBDAsymLe0p75[i]->Write();
0416         hM_dR_reco_Centrality_MBDAsymLe0p75[i]->Write();
0417         hM_Eta_vtxZ_reco_Centrality_MBDAsymLe0p75[i]->Write();
0418         hM_dEta_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Write();
0419         hM_dPhi_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Write();
0420         hM_dR_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Write();
0421         hM_Eta_vtxZ_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Write();
0422         hM_Eta_Phi_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Write();
0423         hM_Eta_reco_Centrality_MBDAsymLe0p75_VtxZm20to20[i]->Write();
0424     }
0425 
0426     fout->Close();
0427 }
0428 
0429 int main(int argc, char *argv[])
0430 {
0431     TString infname;
0432     TString outfname;
0433 
0434     if (argc == 1)
0435     {
0436         infname = "/sphenix/user/hjheng/TrackletAna/minitree/INTT/TrackletMinitree_ana382_zvtx-20cm_dummyAlignParams/TrackletAna_minitree_Evt0to2000_dRcut0p5.root";
0437         outfname = "/sphenix/user/hjheng/TrackletAna/analysis_INTT/plot/hists/ana382_zvtx-20cm_dummyAlignParams/Hists_RecoTracklets.root";
0438     }
0439     else if (argc == 3)
0440     {
0441         infname = argv[1];
0442         outfname = argv[2];
0443     }
0444     else
0445     {
0446         std::cout << "Usage: ./plotTracklets [infile] [outfile]" << std::endl;
0447         return 0;
0448     }
0449 
0450     cout << "[Run Info] Input file = " << infname << endl << "           Output file = " << outfname << endl << "-----------" << endl;
0451 
0452     makehist(infname, outfname);
0453 
0454     return 0;
0455 }