File indexing completed on 2025-08-06 08:12:38
0001 #include "/sphenix/user/ChengWei/INTT/INTT_dNdeta_repo/NewCode2024/Constants.cpp"
0002
0003 int quick_check_llee_chain(bool isData = true)
0004 {
0005 string input_directory;
0006 string input_filename;
0007 string output_directory;
0008 string output_filename;
0009 int Nfiles;
0010
0011 if (isData == true){
0012 input_directory = "/sphenix/tg/tg01/commissioning/INTT/work/cwshih/seflgendata/run_54280_HR_Feb102025/Run6_EvtZFitWidthChange/EvtVtxZ/completed";
0013 input_filename = "Data_EvtVtxZProtoTracklet_FieldOff_BcoFullDiff_VtxZReco_00054280_";
0014
0015 output_directory = input_directory;
0016 output_filename = Form("Data_MBin70_NClus.root");
0017
0018 Nfiles = 1000;
0019 }
0020 else {
0021 input_directory = "/sphenix/tg/tg01/commissioning/INTT/work/cwshih/sPH_dNdeta/Run24AuAuMC/Sim_HIJING_MDC2_ana472_20250307/Run7/EvtVtxZ/completed";
0022 input_filename = "MC_EvtVtxZProtoTracklet_FieldOff_VtxZReco_";
0023
0024 output_directory = input_directory;
0025 output_filename = Form("MC_MBin70_NClus.root");
0026
0027 Nfiles = 146;
0028 }
0029
0030
0031
0032
0033
0034 TChain * tree_in = new TChain("EventTree");
0035
0036
0037 for (int i = 0; i < Nfiles; i++)
0038 {
0039 std::string job_index = std::to_string( i );
0040 int job_index_len = 5;
0041 job_index.insert(0, job_index_len - job_index.size(), '0');
0042
0043 std::string input_filename_full = Form("%s/%s%s.root", input_directory.c_str(), input_filename.c_str(), job_index.c_str());
0044 std::cout<<"input_filename_full: "<<input_filename_full<<std::endl;
0045 tree_in -> Add(input_filename_full.c_str());
0046 }
0047
0048
0049
0050
0051
0052 std::cout<<"tree_in -> GetEntries(): "<<tree_in -> GetEntries()<<std::endl;
0053
0054 tree_in -> SetBranchStatus("*", 0);
0055
0056 tree_in -> SetBranchStatus("MBD_z_vtx", 1);
0057 tree_in -> SetBranchStatus("is_min_bias", 1);
0058 tree_in -> SetBranchStatus("MBD_centrality", 1);
0059 tree_in -> SetBranchStatus("MBD_south_charge_sum", 1);
0060 tree_in -> SetBranchStatus("MBD_north_charge_sum", 1);
0061 tree_in -> SetBranchStatus("MBD_charge_sum", 1);
0062 tree_in -> SetBranchStatus("MBD_charge_asymm", 1);
0063
0064
0065
0066
0067
0068
0069 tree_in -> SetBranchStatus("INTTvtxZ", 1);
0070 tree_in -> SetBranchStatus("INTTvtxZError", 1);
0071 tree_in -> SetBranchStatus("NgroupTrapezoidal", 1);
0072 tree_in -> SetBranchStatus("NgroupCoarse", 1);
0073 tree_in -> SetBranchStatus("TrapezoidalFitWidth", 1);
0074 tree_in -> SetBranchStatus("TrapezoidalFWHM", 1);
0075
0076 tree_in -> SetBranchStatus("NClus", 1);
0077 tree_in -> SetBranchStatus("ClusAdc", 1);
0078 tree_in -> SetBranchStatus("ClusPhiSize", 1);
0079
0080 if (isData){tree_in -> SetBranchStatus("InttBcoFullDiff_next",1);}
0081
0082 if (!isData){tree_in -> SetBranchStatus("NTruthVtx", 1);}
0083 if (!isData){tree_in -> SetBranchStatus("PrimaryG4P_Pt", 1);}
0084 if (!isData){tree_in -> SetBranchStatus("PrimaryG4P_Eta", 1);}
0085 if (!isData){tree_in -> SetBranchStatus("PrimaryG4P_Phi", 1);}
0086 if (!isData){tree_in -> SetBranchStatus("PrimaryG4P_E", 1);}
0087 if (!isData){tree_in -> SetBranchStatus("PrimaryG4P_PID", 1);}
0088 if (!isData){tree_in -> SetBranchStatus("PrimaryG4P_isChargeHadron", 1);}
0089
0090 if (!isData){tree_in -> SetBranchStatus("TruthPV_trig_z", 1);}
0091
0092
0093
0094
0095
0096
0097
0098 float MBD_z_vtx;
0099 bool is_min_bias;
0100 float MBD_centrality;
0101 float MBD_south_charge_sum;
0102 float MBD_north_charge_sum;
0103 float MBD_charge_sum;
0104 float MBD_charge_asymm;
0105 int InttBcoFullDiff_next;
0106
0107
0108
0109
0110
0111
0112
0113 int NClus;
0114 std::vector<int> *ClusLayer = 0;
0115 std::vector<int> *ClusAdc = 0;
0116 std::vector<float> *ClusPhiSize = 0;
0117
0118
0119 double INTTvtxZ;
0120 double INTTvtxZError;
0121 double NgroupTrapezoidal;
0122 double NgroupCoarse;
0123 double TrapezoidalFitWidth;
0124 double TrapezoidalFWHM;
0125
0126 int NTruthVtx;
0127 float TruthPV_trig_z;
0128 std::vector<float> *PrimaryG4P_Pt = 0;
0129 std::vector<float> *PrimaryG4P_Eta = 0;
0130 std::vector<float> *PrimaryG4P_Phi = 0;
0131 std::vector<float> *PrimaryG4P_E = 0;
0132 std::vector<int> *PrimaryG4P_PID = 0;
0133 std::vector<bool> *PrimaryG4P_isChargeHadron = 0;
0134
0135 tree_in -> SetBranchAddress("MBD_z_vtx", &MBD_z_vtx);
0136 tree_in -> SetBranchAddress("is_min_bias", &is_min_bias);
0137 tree_in -> SetBranchAddress("MBD_centrality", &MBD_centrality);
0138 tree_in -> SetBranchAddress("MBD_south_charge_sum", &MBD_south_charge_sum);
0139 tree_in -> SetBranchAddress("MBD_north_charge_sum", &MBD_north_charge_sum);
0140 tree_in -> SetBranchAddress("MBD_charge_sum", &MBD_charge_sum);
0141 tree_in -> SetBranchAddress("MBD_charge_asymm", &MBD_charge_asymm);
0142 if(isData){tree_in -> SetBranchAddress("InttBcoFullDiff_next", &InttBcoFullDiff_next);}
0143
0144
0145
0146
0147
0148
0149 tree_in -> SetBranchAddress("NClus",&NClus);
0150 tree_in -> SetBranchAddress("ClusAdc",&ClusAdc);
0151 tree_in -> SetBranchAddress("ClusPhiSize",&ClusPhiSize);
0152
0153 tree_in -> SetBranchAddress("INTTvtxZ", &INTTvtxZ);
0154 tree_in -> SetBranchAddress("INTTvtxZError", &INTTvtxZError);
0155 tree_in -> SetBranchAddress("NgroupTrapezoidal", &NgroupTrapezoidal);
0156 tree_in -> SetBranchAddress("NgroupCoarse", &NgroupCoarse);
0157 tree_in -> SetBranchAddress("TrapezoidalFitWidth", &TrapezoidalFitWidth);
0158 tree_in -> SetBranchAddress("TrapezoidalFWHM", &TrapezoidalFWHM);
0159
0160 if (!isData){tree_in -> SetBranchAddress("NTruthVtx", &NTruthVtx);}
0161 if (!isData){tree_in -> SetBranchAddress("PrimaryG4P_Pt", &PrimaryG4P_Pt);}
0162 if (!isData){tree_in -> SetBranchAddress("PrimaryG4P_Eta", &PrimaryG4P_Eta);}
0163 if (!isData){tree_in -> SetBranchAddress("PrimaryG4P_Phi", &PrimaryG4P_Phi);}
0164 if (!isData){tree_in -> SetBranchAddress("PrimaryG4P_E", &PrimaryG4P_E);}
0165 if (!isData){tree_in -> SetBranchAddress("PrimaryG4P_PID", &PrimaryG4P_PID);}
0166 if (!isData){tree_in -> SetBranchAddress("PrimaryG4P_isChargeHadron", &PrimaryG4P_isChargeHadron);}
0167 if (!isData){tree_in -> SetBranchAddress("TruthPV_trig_z", &TruthPV_trig_z);}
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182 std::cout<<111<<std::endl;
0183
0184 vector<double> centrality_edges = Constants::centrality_edges;
0185 TH2D * h2D_Mbin_NClus = new TH2D("h2D_Mbin_NClus","h2D_Mbin_NClus;Centrality;NClus",centrality_edges.size() - 1, ¢rality_edges[0], 500, 0, 10000);
0186
0187 TFile * file_out = new TFile(Form("%s/%s", output_directory.c_str(), output_filename.c_str()), "recreate");
0188
0189 std::cout<<222<<std::endl;
0190
0191 for (int i = 0; i < tree_in -> GetEntries(); i++)
0192 {
0193
0194 tree_in -> GetEntry(i);
0195
0196
0197 if (i % 1000 == 0)
0198 {
0199 std::cout<<"i: "<<i<<std::endl;
0200 }
0201
0202 int nHadron_count = 0;
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215 if (is_min_bias != 1) {continue;}
0216 if (MBD_z_vtx != MBD_z_vtx) {continue;}
0217 if (MBD_centrality != MBD_centrality) {continue;}
0218 if (MBD_centrality < 0 || MBD_centrality > 100) {continue;}
0219
0220 if (isData && InttBcoFullDiff_next <= 61) {continue;}
0221 if (NClus <= 5) {continue;}
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232 if (MBD_z_vtx < -10 || MBD_z_vtx >= 10) {continue;}
0233
0234
0235
0236
0237 int NClus_count = 0;
0238 for (int clu_i = 0; clu_i < NClus; clu_i++)
0239 {
0240 if (ClusAdc -> at(clu_i) <= 35) {continue;}
0241 if (ClusPhiSize -> at(clu_i) > 40) {continue;}
0242 NClus_count++;
0243 }
0244
0245 h2D_Mbin_NClus -> Fill(MBD_centrality, NClus_count);
0246 }
0247
0248 file_out -> cd();
0249 h2D_Mbin_NClus -> Write();
0250
0251 file_out -> Close();
0252
0253
0254
0255 return 0;
0256
0257 }
0258
0259 TH1D * GetVtxZReWeight(string file_directory_in)
0260 {
0261 std::string Run54280_file_directory = "/sphenix/tg/tg01/commissioning/INTT/work/cwshih/seflgendata/run_54280_HR_Feb102025/Run6_EvtZFitWidthChange/EvtVtxZ/completed/MBD_z_vtx.root";
0262 std::string hist_name = "h1D_mbd_z_vtx";
0263
0264 TFile * file_in = TFile::Open(Run54280_file_directory.c_str());
0265 TH1D * hist = (TH1D*)file_in->Get(hist_name.c_str());
0266 hist->Scale(1./hist->Integral());
0267 hist->Sumw2(true);
0268
0269 TFile * file_in_2 = TFile::Open(file_directory_in.c_str());
0270 TH1D * hist_2 = (TH1D*)file_in_2->Get(hist_name.c_str());
0271 hist_2->Scale(1./hist_2->Integral());
0272
0273 TH1D * ratio_hist = (TH1D*)hist->Clone("ratio_hist");
0274 ratio_hist->Reset("ICESM");
0275 ratio_hist->Divide(hist, hist_2);
0276
0277 return ratio_hist;
0278 }
0279
0280 int quick_check_llee_chain_2()
0281 {
0282 string input_directory = "/sphenix/tg/tg01/commissioning/INTT/work/cwshih/sPH_dNdeta/Run24AuAuMC/Sim_HIJING_MDC2_ana472_20250307/per5k";
0283 string input_filename = "ntuple_per5k_";
0284 string output_directory = input_directory;
0285 string output_filename = Form("MC_MBin70_NClus.root");
0286 int Nfiles = 146;
0287 string MBD_z_vtx_directory = "/sphenix/tg/tg01/commissioning/INTT/work/cwshih/sPH_dNdeta/Run24AuAuMC/Sim_HIJING_MDC2_ana472_20250307/per5k/MBD_z_vtx.root";
0288 TH1D * h1D_reweight = GetVtxZReWeight(MBD_z_vtx_directory);
0289
0290 TChain * tree_in = new TChain("EventTree");
0291
0292 for (int i = 0; i < Nfiles; i++)
0293 {
0294 std::string job_index = std::to_string( i );
0295 int job_index_len = 5;
0296 job_index.insert(0, job_index_len - job_index.size(), '0');
0297
0298 std::string input_filename_full = Form("%s/%s%s.root", input_directory.c_str(), input_filename.c_str(), job_index.c_str());
0299 std::cout<<"input_filename_full: "<<input_filename_full<<std::endl;
0300 tree_in -> Add(input_filename_full.c_str());
0301 }
0302
0303 std::cout<<"tree_in -> GetEntries(): "<<tree_in -> GetEntries()<<std::endl;
0304
0305 tree_in -> SetBranchStatus("*", 0);
0306
0307 tree_in -> SetBranchStatus("MBD_z_vtx", 1);
0308 tree_in -> SetBranchStatus("is_min_bias", 1);
0309 tree_in -> SetBranchStatus("MBD_centrality", 1);
0310 tree_in -> SetBranchStatus("MBD_south_charge_sum", 1);
0311 tree_in -> SetBranchStatus("MBD_north_charge_sum", 1);
0312 tree_in -> SetBranchStatus("MBD_charge_sum", 1);
0313 tree_in -> SetBranchStatus("MBD_charge_asymm", 1);
0314
0315 tree_in -> SetBranchStatus("NClus", 1);
0316 tree_in -> SetBranchStatus("ClusAdc", 1);
0317 tree_in -> SetBranchStatus("ClusPhiSize", 1);
0318
0319 float MBD_z_vtx;
0320 bool is_min_bias;
0321 float MBD_centrality;
0322 float MBD_south_charge_sum;
0323 float MBD_north_charge_sum;
0324 float MBD_charge_sum;
0325 float MBD_charge_asymm;
0326
0327 int NClus;
0328 std::vector<int> *ClusLayer = 0;
0329 std::vector<int> *ClusAdc = 0;
0330 std::vector<float> *ClusPhiSize = 0;
0331
0332 tree_in -> SetBranchAddress("MBD_z_vtx", &MBD_z_vtx);
0333 tree_in -> SetBranchAddress("is_min_bias", &is_min_bias);
0334 tree_in -> SetBranchAddress("MBD_centrality", &MBD_centrality);
0335 tree_in -> SetBranchAddress("MBD_south_charge_sum", &MBD_south_charge_sum);
0336 tree_in -> SetBranchAddress("MBD_north_charge_sum", &MBD_north_charge_sum);
0337 tree_in -> SetBranchAddress("MBD_charge_sum", &MBD_charge_sum);
0338 tree_in -> SetBranchAddress("MBD_charge_asymm", &MBD_charge_asymm);
0339
0340 tree_in -> SetBranchAddress("NClus",&NClus);
0341 tree_in -> SetBranchAddress("ClusAdc",&ClusAdc);
0342 tree_in -> SetBranchAddress("ClusPhiSize",&ClusPhiSize);
0343
0344
0345
0346
0347 vector<double> centrality_edges = Constants::centrality_edges;
0348
0349 TFile * file_out = new TFile(Form("%s/%s", output_directory.c_str(), output_filename.c_str()), "recreate");
0350 TH2D * h2D_Mbin_NClus = new TH2D("h2D_Mbin_NClus","h2D_Mbin_NClus;Centrality;NClus",centrality_edges.size() - 1, ¢rality_edges[0], 500, 0, 10000);
0351 TH1D * h1D_mbd_z_vtx_narrow = new TH1D("h1D_mbd_z_vtx_narrow", "h1D_mbd_z_vtx_narrow;MBD_z_vtx [cm];Counts", 120, -60, 60);
0352
0353 for (int i = 0; i < tree_in -> GetEntries(); i++)
0354 {
0355 tree_in -> GetEntry(i);
0356
0357 if (i % 1000 == 0)
0358 {
0359 std::cout<<"i: "<<i<<std::endl;
0360 }
0361
0362 int nHadron_count = 0;
0363
0364
0365
0366 if (is_min_bias != 1) {continue;}
0367 if (MBD_z_vtx != MBD_z_vtx) {continue;}
0368 if (MBD_centrality != MBD_centrality) {continue;}
0369 if (MBD_centrality < 0 || MBD_centrality > 100) {continue;}
0370 if (NClus <= 5) {continue;}
0371 if (MBD_z_vtx < -10 || MBD_z_vtx >= 10) {continue;}
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384
0385
0386
0387
0388
0389 double INTTvtxZWeighting;
0390 INTTvtxZWeighting = h1D_reweight -> GetBinContent(h1D_reweight -> FindBin(MBD_z_vtx));
0391
0392
0393 int NClus_count = 0;
0394 for (int clu_i = 0; clu_i < NClus; clu_i++)
0395 {
0396 if (ClusAdc -> at(clu_i) <= 35) {continue;}
0397 if (ClusPhiSize -> at(clu_i) > 40) {continue;}
0398 NClus_count++;
0399 }
0400
0401 h2D_Mbin_NClus -> Fill(MBD_centrality, NClus_count, INTTvtxZWeighting);
0402 h1D_mbd_z_vtx_narrow -> Fill(MBD_z_vtx, INTTvtxZWeighting);
0403 }
0404
0405 file_out -> cd();
0406 h2D_Mbin_NClus -> Write();
0407 h1D_mbd_z_vtx_narrow -> Write();
0408 h1D_reweight -> Write("h1D_reweight");
0409
0410 file_out -> Close();
0411
0412
0413
0414 return 0;
0415
0416 }