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_truedNdEta(
0004 int process_id,
0005 string input_directory,
0006 string input_filename,
0007 string output_directory
0008 )
0009 {
0010 TFile * file_in = TFile::Open(Form("%s/%s", input_directory.c_str(), input_filename.c_str()));
0011 TTree * tree_in = (TTree*)file_in->Get("EventTree");
0012 tree_in -> SetBranchStatus("*", 0);
0013
0014 tree_in -> SetBranchStatus("MBD_z_vtx", 1);
0015 tree_in -> SetBranchStatus("is_min_bias", 1);
0016 tree_in -> SetBranchStatus("MBD_centrality", 1);
0017 tree_in -> SetBranchStatus("MBD_south_charge_sum", 1);
0018 tree_in -> SetBranchStatus("MBD_north_charge_sum", 1);
0019 tree_in -> SetBranchStatus("MBD_charge_sum", 1);
0020 tree_in -> SetBranchStatus("MBD_charge_asymm", 1);
0021
0022
0023
0024
0025
0026
0027 tree_in -> SetBranchStatus("INTTvtxZ", 1);
0028 tree_in -> SetBranchStatus("INTTvtxZError", 1);
0029 tree_in -> SetBranchStatus("NgroupTrapezoidal", 1);
0030 tree_in -> SetBranchStatus("NgroupCoarse", 1);
0031 tree_in -> SetBranchStatus("TrapezoidalFitWidth", 1);
0032 tree_in -> SetBranchStatus("TrapezoidalFWHM", 1);
0033
0034 tree_in -> SetBranchStatus("NTruthVtx", 1);
0035 tree_in -> SetBranchStatus("PrimaryG4P_Pt", 1);
0036 tree_in -> SetBranchStatus("PrimaryG4P_Eta", 1);
0037 tree_in -> SetBranchStatus("PrimaryG4P_Phi", 1);
0038 tree_in -> SetBranchStatus("PrimaryG4P_E", 1);
0039 tree_in -> SetBranchStatus("PrimaryG4P_PID", 1);
0040 tree_in -> SetBranchStatus("PrimaryG4P_isChargeHadron", 1);
0041
0042 tree_in -> SetBranchStatus("TruthPV_trig_z", 1);
0043
0044
0045
0046 float MBD_z_vtx;
0047 bool is_min_bias;
0048 float MBD_centrality;
0049 float MBD_south_charge_sum;
0050 float MBD_north_charge_sum;
0051 float MBD_charge_sum;
0052 float MBD_charge_asymm;
0053
0054
0055
0056
0057
0058 std::vector<int> *ClusLayer = 0;
0059 std::vector<double> *ClusEta_INTTz = 0;
0060
0061
0062 double INTTvtxZ;
0063 double INTTvtxZError;
0064 double NgroupTrapezoidal;
0065 double NgroupCoarse;
0066 double TrapezoidalFitWidth;
0067 double TrapezoidalFWHM;
0068
0069 int NTruthVtx;
0070 float TruthPV_trig_z;
0071 std::vector<float> *PrimaryG4P_Pt = 0;
0072 std::vector<float> *PrimaryG4P_Eta = 0;
0073 std::vector<float> *PrimaryG4P_Phi = 0;
0074 std::vector<float> *PrimaryG4P_E = 0;
0075 std::vector<float> *PrimaryG4P_PID = 0;
0076 std::vector<int> *PrimaryG4P_isChargeHadron = 0;
0077
0078 tree_in -> SetBranchAddress("MBD_z_vtx", &MBD_z_vtx);
0079 tree_in -> SetBranchAddress("is_min_bias", &is_min_bias);
0080 tree_in -> SetBranchAddress("MBD_centrality", &MBD_centrality);
0081 tree_in -> SetBranchAddress("MBD_south_charge_sum", &MBD_south_charge_sum);
0082 tree_in -> SetBranchAddress("MBD_north_charge_sum", &MBD_north_charge_sum);
0083 tree_in -> SetBranchAddress("MBD_charge_sum", &MBD_charge_sum);
0084 tree_in -> SetBranchAddress("MBD_charge_asymm", &MBD_charge_asymm);
0085
0086
0087
0088
0089
0090
0091
0092 tree_in -> SetBranchAddress("INTTvtxZ", &INTTvtxZ);
0093 tree_in -> SetBranchAddress("INTTvtxZError", &INTTvtxZError);
0094 tree_in -> SetBranchAddress("NgroupTrapezoidal", &NgroupTrapezoidal);
0095 tree_in -> SetBranchAddress("NgroupCoarse", &NgroupCoarse);
0096 tree_in -> SetBranchAddress("TrapezoidalFitWidth", &TrapezoidalFitWidth);
0097 tree_in -> SetBranchAddress("TrapezoidalFWHM", &TrapezoidalFWHM);
0098
0099 tree_in -> SetBranchAddress("NTruthVtx", &NTruthVtx);
0100 tree_in -> SetBranchAddress("PrimaryG4P_Pt", &PrimaryG4P_Pt);
0101 tree_in -> SetBranchAddress("PrimaryG4P_Eta", &PrimaryG4P_Eta);
0102 tree_in -> SetBranchAddress("PrimaryG4P_Phi", &PrimaryG4P_Phi);
0103 tree_in -> SetBranchAddress("PrimaryG4P_E", &PrimaryG4P_E);
0104 tree_in -> SetBranchAddress("PrimaryG4P_PID", &PrimaryG4P_PID);
0105 tree_in -> SetBranchAddress("PrimaryG4P_isChargeHadron", &PrimaryG4P_isChargeHadron);
0106 tree_in -> SetBranchAddress("TruthPV_trig_z", &TruthPV_trig_z);
0107
0108
0109
0110
0111 std::string job_index = std::to_string( process_id );
0112 int job_index_len = 5;
0113 job_index.insert(0, job_index_len - job_index.size(), '0');
0114
0115 std::string output_filename = Form("INTTz_New_QuickCheck_%s.root", job_index.c_str());
0116
0117 system(Form("if [ -f %s/completed/%s ]; then rm %s/completed/%s; fi", output_directory.c_str(), output_filename.c_str(), output_directory.c_str(), output_filename.c_str()));
0118
0119 TFile * file_out = new TFile(Form("%s/%s", output_directory.c_str(), output_filename.c_str()), "recreate");
0120
0121 TH1D * h1D_NHadronCount = new TH1D("h1D_NHadronCount","h1D_NHadronCount;#eta;Entries",27,-2.7,2.7);
0122 TH1D * h1D_TrueEvtCount = new TH1D("h1D_TrueEvtCount","h1D_TrueEvtCount;#True vtx Z;Entries",20,-10,10);
0123 TH1D * h1D_TruedNdEta = new TH1D("h1D_TruedNdEta","h1D_TruedNdEta;#eta;Entries",27,-2.7,2.7);
0124
0125 TH1D * h1D_NHadronCount_NTrueVtxCut = new TH1D("h1D_NHadronCount_NTrueVtxCut","h1D_NHadronCount_NTrueVtxCut;#eta;Entries",27,-2.7,2.7);
0126 TH1D * h1D_TrueEvtCount_NTrueVtxCut = new TH1D("h1D_TrueEvtCount_NTrueVtxCut","h1D_TrueEvtCount_NTrueVtxCut;#True vtx Z;Entries",20,-10,10);
0127 TH1D * h1D_TruedNdEta_NTrueVtxCut = new TH1D("h1D_TruedNdEta_NTrueVtxCut","h1D_TruedNdEta_NTrueVtxCut;#eta;Entries",27,-2.7,2.7);
0128
0129 for (int i = 0; i < tree_in -> GetEntries(); i++)
0130 {
0131 tree_in -> GetEntry(i);
0132
0133
0134
0135
0136
0137
0138 int nHadron_count = 0;
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151 if (is_min_bias != 1) {continue;}
0152 if (MBD_z_vtx != MBD_z_vtx) {continue;}
0153 if (MBD_centrality != MBD_centrality) {continue;}
0154 if (MBD_centrality < 0 || MBD_centrality > 100) {continue;}
0155 if (INTTvtxZ != INTTvtxZ) {continue;}
0156
0157
0158 if ((MBD_z_vtx - INTTvtxZ < Constants::cut_vtxZDiff.first || MBD_z_vtx - INTTvtxZ > Constants::cut_vtxZDiff.second) ) {continue;}
0159 if ((TrapezoidalFitWidth < Constants::cut_TrapezoidalFitWidth.first || TrapezoidalFitWidth > Constants::cut_TrapezoidalFitWidth.second)){continue;}
0160 if ((TrapezoidalFWHM < Constants::cut_TrapezoidalFWHM.first || TrapezoidalFWHM > Constants::cut_TrapezoidalFWHM.second)){continue;}
0161 if ((INTTvtxZError < Constants::cut_INTTvtxZError.first || INTTvtxZError > Constants::cut_INTTvtxZError.second)){continue;}
0162
0163
0164 if (INTTvtxZ < -10 || INTTvtxZ >= 10) {continue;}
0165 if (MBD_centrality < 0) {continue;}
0166 if (MBD_centrality > 3) {continue;}
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189 for (int true_i = 0; true_i < PrimaryG4P_isChargeHadron -> size(); true_i++)
0190 {
0191 if (PrimaryG4P_isChargeHadron -> at(true_i) == 1)
0192 {
0193 h1D_NHadronCount -> Fill(PrimaryG4P_Eta -> at(true_i));
0194
0195 if (fabs(PrimaryG4P_Eta->at(true_i)) < 4){
0196 nHadron_count++;
0197 }
0198 }
0199 }
0200
0201 std::cout<<"eID: "<<i<<", nHadron_count: "<<nHadron_count<<", TruthPV_trig_z: "<<TruthPV_trig_z<<std::endl;
0202
0203 h1D_TrueEvtCount -> Fill(INTTvtxZ);
0204
0205
0206 if (NTruthVtx != 1) {continue;}
0207
0208
0209 for (int true_i = 0; true_i < PrimaryG4P_isChargeHadron -> size(); true_i++)
0210 {
0211 if (PrimaryG4P_isChargeHadron -> at(true_i) == 1)
0212 {
0213 h1D_NHadronCount_NTrueVtxCut -> Fill(PrimaryG4P_Eta -> at(true_i));
0214
0215
0216
0217
0218 }
0219 }
0220
0221 h1D_TrueEvtCount_NTrueVtxCut -> Fill(INTTvtxZ);
0222 }
0223
0224 h1D_TruedNdEta = (TH1D*) h1D_NHadronCount -> Clone("h1D_TruedNdEta");
0225 h1D_TruedNdEta -> Sumw2(true);
0226 h1D_TruedNdEta -> Scale(1./h1D_TrueEvtCount->Integral());
0227 h1D_TruedNdEta -> Scale(1./ h1D_TruedNdEta->GetBinWidth(1));
0228
0229 file_out -> cd();
0230 h1D_NHadronCount -> Write();
0231 h1D_TrueEvtCount -> Write();
0232 h1D_TruedNdEta -> Write();
0233
0234 h1D_NHadronCount_NTrueVtxCut -> Write();
0235 h1D_TrueEvtCount_NTrueVtxCut -> Write();
0236
0237 file_out -> Close();
0238
0239 system(Form("mv %s/%s %s/completed/%s", output_directory.c_str(), output_filename.c_str(), output_directory.c_str(), output_filename.c_str()));
0240
0241 return 0;
0242
0243 }