File indexing completed on 2025-08-06 08:12:26
0001 #include "../INTTDSTchain.C"
0002 vector<string> read_list (string MC_directory, string MC_list_name)
0003 {
0004 string list_buffer;
0005 ifstream data_list;
0006 data_list.open((MC_directory + "/" + MC_list_name).c_str());
0007
0008 vector<string> output_vec; output_vec.clear();
0009
0010 while (1)
0011 {
0012 data_list >> list_buffer;
0013 if (!data_list.good())
0014 {
0015 break;
0016 }
0017 output_vec.push_back(list_buffer);
0018 }
0019 cout<<"size : "<<output_vec.size()<<endl;
0020
0021 return output_vec;
0022 }
0023
0024 void sanity_check()
0025 {
0026 string folder_direction = "/sphenix/user/ChengWei/sPH_dNdeta/HIJING_ana398_xvtx-0p04cm_yvtx0p24cm_zvtx-20cm_dummyAlignParams";
0027 string MC_list_name = "file_list.txt";
0028 vector <string> file_list = read_list(folder_direction,MC_list_name);
0029
0030 TChain * chain_in = new TChain("EventTree");
0031 INTTDSTchain inttDSTMC(chain_in,folder_direction,file_list);
0032 std::printf("inttDSTMC N event : %lli \n", chain_in->GetEntries());
0033
0034 TH2F * MC_vtx_xy = new TH2F("MC_vtx_xy","",100,-0.2,0.2,100,-0.,0.4);
0035 MC_vtx_xy -> GetXaxis() -> SetTitle("X axis [cm]");
0036 MC_vtx_xy -> GetYaxis() -> SetTitle("Y axis [cm]");
0037
0038 TH1F * MC_vtx_z = new TH1F("MC_vtx_z","",100,-35,35);
0039 MC_vtx_z -> GetXaxis() -> SetTitle("Z axis [cm]");
0040 MC_vtx_z -> GetYaxis() -> SetTitle("Entry");
0041
0042 TH1F * MC_vtx_Npart = new TH1F("Npart","",100,0,10000);
0043 MC_vtx_Npart -> GetXaxis() -> SetTitle("Npart");
0044 MC_vtx_Npart -> GetYaxis() -> SetTitle("Entry");
0045
0046 TH2F * MC_Npart_Ntrack = new TH2F("MC_Npart_Ntrack","",200,0,10000, 200, 0, 4000);
0047 MC_Npart_Ntrack -> GetXaxis() -> SetTitle("Npart");
0048 MC_Npart_Ntrack -> GetYaxis() -> SetTitle("Ntrack");
0049
0050 TH1F * MC_INTT_multiplicity = new TH1F("MC_INTT_multiplicity","",100,0,8000);
0051 MC_INTT_multiplicity -> GetXaxis() -> SetTitle("INTT N cluster");
0052 MC_INTT_multiplicity -> GetYaxis() -> SetTitle("Entry");
0053
0054 TH1F * MC_INTT_CluPhiSize = new TH1F("MC_INTT_CluPhiSize","",25,0,25);
0055 MC_INTT_CluPhiSize -> GetXaxis() -> SetTitle("Size");
0056 MC_INTT_CluPhiSize -> GetYaxis() -> SetTitle("Entry");
0057
0058 TH1F * MC_INTT_CluZSize = new TH1F("MC_INTT_CluZSize","",25,0,25);
0059 MC_INTT_CluZSize -> GetXaxis() -> SetTitle("Size");
0060 MC_INTT_CluZSize -> GetYaxis() -> SetTitle("Entry");
0061
0062 TH1F * MC_INTT_CluADC = new TH1F("MC_INTT_CluADC","",150,0,3000);
0063 MC_INTT_CluADC -> GetXaxis() -> SetTitle("ADC");
0064 MC_INTT_CluADC -> GetYaxis() -> SetTitle("Entry");
0065
0066 TH2F * MC_INTT_clu_nhit_corr = new TH2F("MC_INTT_clu_nhit_corr","",200,0,45000,200,0,9000);
0067 MC_INTT_clu_nhit_corr -> GetXaxis() -> SetTitle("NTrkrhits");
0068 MC_INTT_clu_nhit_corr -> GetYaxis() -> SetTitle("NClu");
0069
0070 TH2F * MC_Ntrack_NClu = new TH2F("MC_Ntrack_NClu","",200,0,9000, 200, 0, 4000);
0071 MC_Ntrack_NClu -> GetXaxis() -> SetTitle("NClus");
0072 MC_Ntrack_NClu -> GetYaxis() -> SetTitle("Ntrack");
0073
0074 TH1F * MC_Ntrack_1D = new TH1F("MC_Ntrack_1D","",200,0,4000);
0075 MC_Ntrack_1D -> GetXaxis() -> SetTitle("Ntrack");
0076 MC_Ntrack_1D -> GetYaxis() -> SetTitle("Entry");
0077
0078 TH1F * MC_true_track_eta = new TH1F("MC_true_track_eta","",29,-2.9,2.9);
0079 MC_true_track_eta -> GetXaxis() -> SetTitle("#eta");
0080 MC_true_track_eta -> GetYaxis() -> SetTitle("dN/d#eta");
0081
0082 TH2F * MC_NClu_Zvtx = new TH2F("MC_NClu_Zvtx","",200,0,9000, 200, -500, 500);
0083 MC_NClu_Zvtx -> GetXaxis() -> SetTitle("NClus");
0084 MC_NClu_Zvtx -> GetYaxis() -> SetTitle("Z vertex [mm]");
0085
0086 TH1F * MC_inner_phi_3 = new TH1F("MC_inner_phi_3","",100,0,360);
0087 MC_inner_phi_3 -> GetXaxis() -> SetTitle("Inner phi");
0088 MC_inner_phi_3 -> GetYaxis() -> SetTitle("Entry");
0089
0090 TH1F * MC_inner_phi_4 = new TH1F("MC_inner_phi_4","",100,0,360);
0091 MC_inner_phi_4 -> GetXaxis() -> SetTitle("Inner phi");
0092 MC_inner_phi_4 -> GetYaxis() -> SetTitle("Entry");
0093
0094 TH1F * MC_outer_phi_5 = new TH1F("MC_outer_phi_5","",100,0,360);
0095 MC_outer_phi_5 -> GetXaxis() -> SetTitle("Outer phi");
0096 MC_outer_phi_5 -> GetYaxis() -> SetTitle("Entry");
0097
0098 TH1F * MC_outer_phi_6 = new TH1F("MC_outer_phi_6","",100,0,360);
0099 MC_outer_phi_6 -> GetXaxis() -> SetTitle("Outer phi");
0100 MC_outer_phi_6 -> GetYaxis() -> SetTitle("Entry");
0101
0102 int good_evt_counter = 0;
0103 int eta_one_track_counter = 0;
0104 int eta_one_track_counter_evt = 0;
0105 int eta_two_track_counter_evt = 0;
0106
0107 for (int i = 0; i < chain_in->GetEntries(); i++) {
0108 inttDSTMC.LoadTree(i);
0109 inttDSTMC.GetEntry(i);
0110
0111 if (i % 1000 == 0){
0112 cout<<"evnet running : "<<i<<endl;
0113 cout<<"----------------------------------------------- -----------------------------------------------"<<endl;
0114 printf(" event : %i, NTruthVtx : %i, NClus : %i, NTrkrhits : %i \n", inttDSTMC.event, inttDSTMC.NTruthVtx, inttDSTMC.NClus, inttDSTMC.NTrkrhits);
0115 printf(" size of ClusX : %zu \n", inttDSTMC.ClusX -> size());
0116 printf("triggered VTX ? : %.2f, %.2f, %.2f \n", inttDSTMC.TruthPV_trig_x, inttDSTMC.TruthPV_trig_y, inttDSTMC.TruthPV_trig_z);
0117 }
0118
0119
0120
0121 if (inttDSTMC.NTruthVtx == 1){
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133 MC_NClu_Zvtx -> Fill(inttDSTMC.NClus, (inttDSTMC.TruthPV_trig_z) * 10.);
0134
0135 MC_Ntrack_NClu -> Fill(inttDSTMC.NClus, eta_two_track_counter_evt);
0136 eta_one_track_counter_evt = 0;
0137 eta_two_track_counter_evt = 0;
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154 MC_vtx_xy -> Fill(inttDSTMC.TruthPV_trig_x, inttDSTMC.TruthPV_trig_y);
0155 MC_vtx_z -> Fill( inttDSTMC.TruthPV_trig_z );
0156 MC_vtx_Npart -> Fill( inttDSTMC.TruthPV_trig_Npart );
0157
0158
0159
0160 MC_INTT_multiplicity -> Fill( inttDSTMC.ClusX -> size() );
0161 MC_INTT_clu_nhit_corr -> Fill(inttDSTMC.NTrkrhits, inttDSTMC.ClusX -> size());
0162
0163
0164 for (int clu_i = 0; clu_i < inttDSTMC.ClusX -> size(); clu_i++){
0165 MC_INTT_CluPhiSize -> Fill( inttDSTMC.ClusPhiSize -> at(clu_i) );
0166 MC_INTT_CluZSize -> Fill( inttDSTMC.ClusZSize -> at(clu_i) );
0167 MC_INTT_CluADC -> Fill( inttDSTMC.ClusAdc -> at(clu_i) );
0168
0169 if (inttDSTMC.ClusLayer -> at(clu_i) == 3){
0170 MC_inner_phi_3 -> Fill( (inttDSTMC.ClusY -> at(clu_i) < 0) ? atan2(inttDSTMC.ClusY -> at(clu_i), inttDSTMC.ClusX -> at(clu_i) ) * (180./TMath::Pi()) + 360 : atan2(inttDSTMC.ClusY -> at(clu_i), inttDSTMC.ClusX -> at(clu_i) ) * (180./TMath::Pi()) );
0171 }
0172 else if (inttDSTMC.ClusLayer -> at(clu_i) == 4){
0173 MC_inner_phi_4 -> Fill( (inttDSTMC.ClusY -> at(clu_i) < 0) ? atan2(inttDSTMC.ClusY -> at(clu_i), inttDSTMC.ClusX -> at(clu_i) ) * (180./TMath::Pi()) + 360 : atan2(inttDSTMC.ClusY -> at(clu_i), inttDSTMC.ClusX -> at(clu_i) ) * (180./TMath::Pi()) );
0174 }
0175 else if (inttDSTMC.ClusLayer -> at(clu_i) == 5){
0176 MC_outer_phi_5 -> Fill( (inttDSTMC.ClusY -> at(clu_i) < 0) ? atan2(inttDSTMC.ClusY -> at(clu_i), inttDSTMC.ClusX -> at(clu_i) ) * (180./TMath::Pi()) + 360 : atan2(inttDSTMC.ClusY -> at(clu_i), inttDSTMC.ClusX -> at(clu_i) ) * (180./TMath::Pi()) );
0177 }
0178 else if (inttDSTMC.ClusLayer -> at(clu_i) == 6){
0179 MC_outer_phi_6 -> Fill( (inttDSTMC.ClusY -> at(clu_i) < 0) ? atan2(inttDSTMC.ClusY -> at(clu_i), inttDSTMC.ClusX -> at(clu_i) ) * (180./TMath::Pi()) + 360 : atan2(inttDSTMC.ClusY -> at(clu_i), inttDSTMC.ClusX -> at(clu_i) ) * (180./TMath::Pi()) );
0180 }
0181
0182
0183 }
0184
0185
0186
0187 }
0188
0189
0190
0191
0192
0193
0194
0195
0196 }
0197
0198 MC_true_track_eta -> Scale(1./double(good_evt_counter));
0199 cout<<"N track in eta +- 1 : "<<eta_one_track_counter<<" good_evt_counter "<<good_evt_counter<<endl;
0200
0201
0202 TFile * INTT_MC_sanity_out = new TFile(Form("%s/MC_sanity_intt.root",folder_direction.c_str()), "recreate");
0203 MC_vtx_xy -> Write();
0204 MC_vtx_z -> Write();
0205 MC_NClu_Zvtx -> Write();
0206 MC_vtx_Npart -> Write();
0207 MC_Npart_Ntrack -> Write();
0208 MC_INTT_multiplicity -> Write();
0209 MC_INTT_CluPhiSize -> Write();
0210 MC_INTT_CluZSize -> Write();
0211 MC_INTT_CluADC -> Write();
0212 MC_INTT_clu_nhit_corr -> Write();
0213 MC_Ntrack_NClu -> Write();
0214 MC_Ntrack_1D -> Write();
0215 MC_true_track_eta -> Write();
0216 MC_inner_phi_3 -> Write();
0217 MC_inner_phi_4 -> Write();
0218 MC_outer_phi_5 -> Write();
0219 MC_outer_phi_6 -> Write();
0220 INTT_MC_sanity_out -> Close();
0221
0222 }