Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-07-16 08:11:22

0001 std::string getDate()
0002 {
0003     std::time_t t = std::time(0);   // get time now
0004     std::tm* now = std::localtime(&t);
0005 
0006     std::stringstream date;
0007     date << (now->tm_mon + 1) << '/'
0008          <<  now->tm_mday << '/'
0009          << (now->tm_year + 1900);
0010     return date.str();
0011 }
0012 
0013 void CutEfficiencySystematic()
0014 {
0015   std::string weightFileName = "/sphenix/user/rosstom/TrackingAnalysis/Physics_Val_TF/data/analysisMacros/normalized_sWeight_pT_distributions.root";
0016   TFile* weightFile = new TFile(weightFileName.c_str());
0017   TH1F* KS0_pT_histo_Normalized = (TH1F*)weightFile->Get("KS0_pT_histo_Normalized");
0018   TH1F* Xi_pT_histo_Normalized = (TH1F*)weightFile->Get("Xi_pT_histo_Normalized");
0019   KS0_pT_histo_Normalized->SetDirectory(0);
0020   Xi_pT_histo_Normalized->SetDirectory(0);
0021 
0022   string sim_inFile_Xi = "/sphenix/user/rosstom/TrackingAnalysis/Physics_Val_TF/sim/pTComp/KFParticle_4Mcascade_nopTCut.root";
0023   TFile* sim_file_Xi = new TFile(sim_inFile_Xi.c_str());
0024   sim_file_Xi->cd();
0025   TTree* sim_tree_Xi = (TTree*)sim_file_Xi->Get("DecayTree");
0026 
0027   const int nBins_pT = 4;
0028   double pTbins[nBins_pT + 1] = {0.75, 1.07, 1.25, 1.49, 2.0};
0029 
0030   const int nBins_phi = 6;
0031   double phibins[nBins_phi + 1] = {-M_PI,-2.09439,-1.04719,0.0,1.04721,2.09441,M_PI};
0032 
0033   const int nBins_eta = 6;
0034   double etabins[nBins_eta + 1] = {-1.1,-0.733333,-0.366666,0.0,0.366668,0.733335,1.1};
0035 
0036   const int nBins_rap = 6;
0037   double rapbins[nBins_rap + 1] = {-1.0,-0.66,-0.33,0.0,0.33,0.66,1.0};
0038 
0039   std::string truthCut = "abs(Lambda0_track_1_true_ID) == 211 && Sum$(abs(Lambda0_track_1_true_track_history_PDG_ID) == 3122) > 0 && Sum$(abs(Lambda0_track_1_true_track_history_PDG_ID) == 3312) > 0 && abs(Lambda0_track_2_true_ID) == 2212 && Sum$(abs(Lambda0_track_2_true_track_history_PDG_ID) == 3122) > 0 && Sum$(abs(Lambda0_track_2_true_track_history_PDG_ID) == 3312) > 0 && abs(track_3_true_ID) == 211 && Sum$(abs(track_3_true_track_history_PDG_ID) == 3312) > 0 && Sum$(abs(track_3_true_track_history_PDG_ID) == 3122) == 0 && abs(Ximinus_rapidity) <= 1.0 && Lambda0_track_1_MVTX_nHits > 0 && Lambda0_track_2_MVTX_nHits > 0 && track_3_MVTX_nHits > 0 && abs(primary_vertex_z) < 10 && Lambda0_track_1_charge == track_3_charge";
0040   std::string truthDataCut = "abs(Lambda0_track_1_true_ID) == 211 && Sum$(abs(Lambda0_track_1_true_track_history_PDG_ID) == 3122) > 0 && Sum$(abs(Lambda0_track_1_true_track_history_PDG_ID) == 3312) > 0 && abs(Lambda0_track_2_true_ID) == 2212 && Sum$(abs(Lambda0_track_2_true_track_history_PDG_ID) == 3122) > 0 && Sum$(abs(Lambda0_track_2_true_track_history_PDG_ID) == 3312) > 0 && abs(track_3_true_ID) == 211 && Sum$(abs(track_3_true_track_history_PDG_ID) == 3312) > 0 && Sum$(abs(track_3_true_track_history_PDG_ID) == 3122) == 0 && Lambda0_track_1_MVTX_nHits > 0 && Lambda0_track_2_MVTX_nHits > 0 && track_3_MVTX_nHits > 0 && abs(primary_vertex_z) < 10 && Lambda0_track_1_charge == track_3_charge && Lambda0_track_1_INTT_nHits > 0 && Lambda0_track_2_INTT_nHits > 0 && track_3_INTT_nHits > 0 && Lambda0_track_1_TPC_nHits > 19 && Lambda0_track_2_TPC_nHits > 19 && track_3_TPC_nHits > 19 && abs(Lambda0_mass - 1.1157) <= 0.01 && Ximinus_decayLength_xy >= 0.15 && Lambda0_decayLength_xy >= 0.01 && (Lambda0_track_1_chi2/Lambda0_track_1_nDoF) <= 400 && (Lambda0_track_2_chi2/Lambda0_track_2_nDoF) <= 400 && (track_3_chi2/track_3_nDoF) <= 400 && track_1_track_2_DCA <= 0.5 && track_1_track_3_DCA <= 0.5 && track_2_track_3_DCA <= 0.5 && Ximinus_chi2/Ximinus_nDoF <= 50 && Lambda0_chi2/Lambda0_nDoF <= 50 && abs(Ximinus_rapidity) <= 1.0 && Lambda0_track_1_pT >= 0.2 && Lambda0_track_2_pT >= 0.2 && track_3_pT >= 0.2";
0041 
0042   TH1F* h_pT_truth = new TH1F("h_pT_truth",";#Xi^{-} p_{T} [GeV/c];Cut Efficiency",nBins_pT,pTbins);
0043   TH1F* h_pT_truthCuts = new TH1F("h_pT_truthCuts",";#Xi^{-} p_{T} [GeV/c];Cut Efficiency",nBins_pT,pTbins);
0044   
0045   TH1F* h_eta_truth = new TH1F("h_eta_truth",";#Xi^{-} #eta;Cut Efficiency",nBins_eta,etabins);
0046   TH1F* h_eta_truthCuts = new TH1F("h_eta_truthCuts",";#Xi^{-} #eta;Cut Efficiency",nBins_eta,etabins);
0047   
0048   TH1F* h_phi_truth = new TH1F("h_phi_truth",";#Xi^{-} #phi;Cut Efficiency",nBins_phi,phibins);
0049   TH1F* h_phi_truthCuts = new TH1F("h_phi_truthCuts",";#Xi^{-} #phi;Cut Efficiency",nBins_phi,phibins);
0050   
0051   TH1F* h_y_truth = new TH1F("h_y_truth",";#Xi^{-} y;Cut Efficiency",nBins_rap,rapbins);
0052   TH1F* h_y_truthCuts = new TH1F("h_y_truthCuts",";#Xi^{-} y;Cut Efficiency",nBins_rap,rapbins);
0053    
0054   h_pT_truth->Sumw2();
0055   h_pT_truthCuts->Sumw2();
0056   h_eta_truth->Sumw2();
0057   h_eta_truthCuts->Sumw2();
0058   h_phi_truth->Sumw2();
0059   h_phi_truthCuts->Sumw2();
0060   h_y_truth->Sumw2();
0061   h_y_truthCuts->Sumw2();
0062 
0063   std::cout << "Writing Xi base histograms" << std::endl;
0064 
0065   sim_tree_Xi->Draw("Ximinus_pT>>+h_pT_truth",truthCut.c_str());
0066   sim_tree_Xi->Draw("Ximinus_pT>>+h_pT_truthCuts",truthDataCut.c_str());
0067   sim_tree_Xi->Draw("Ximinus_pseudorapidity>>+h_eta_truth",truthCut.c_str());
0068   sim_tree_Xi->Draw("Ximinus_pseudorapidity>>+h_eta_truthCuts",truthDataCut.c_str());
0069   sim_tree_Xi->Draw("Ximinus_phi>>+h_phi_truth",truthCut.c_str());
0070   sim_tree_Xi->Draw("Ximinus_phi>>+h_phi_truthCuts",truthDataCut.c_str());
0071   sim_tree_Xi->Draw("Ximinus_rapidity>>+h_y_truth",truthCut.c_str());
0072   sim_tree_Xi->Draw("Ximinus_rapidity>>+h_y_truthCuts",truthDataCut.c_str());
0073 
0074   std::cout << "Done writing Xi base histograms" << std::endl;
0075   
0076   TH1F* h_cutEff_pT_KS0_denom = new TH1F("h_cutEff_pT_KS0_denom",";K_{S}^{0} p_{T} [GeV/c];Cut Efficiency",nBins_pT,pTbins);
0077   TH1F* h_cutEff_pT_KS0_num = new TH1F("h_cutEff_pT_KS0_num",";K_{S}^{0} p_{T} [GeV/c];Cut Efficiency",nBins_pT,pTbins);
0078   TH1F* h_cutEff_eta_KS0_denom = new TH1F("h_cutEff_eta_KS0_denom",";K_{S}^{0} #eta;Cut Efficiency",nBins_eta,etabins);
0079   TH1F* h_cutEff_eta_KS0_num = new TH1F("h_cutEff_eta_KS0_num",";K_{S}^{0} #eta;Cut Efficiency",nBins_eta,etabins);
0080   TH1F* h_cutEff_phi_KS0_denom = new TH1F("h_cutEff_phi_KS0_denom",";K_{S}^{0} #phi [rad];Cut Efficiency",nBins_phi,phibins);
0081   TH1F* h_cutEff_phi_KS0_num = new TH1F("h_cutEff_phi_KS0_num",";K_{S}^{0} #phi [rad];Cut Efficiency",nBins_phi,phibins);
0082   TH1F* h_cutEff_rap_KS0_denom = new TH1F("h_cutEff_rap_KS0_denom",";K_{S}^{0} Rapidity (y);Cut Efficiency",nBins_rap,rapbins);
0083   TH1F* h_cutEff_rap_KS0_num = new TH1F("h_cutEff_rap_KS0_num",";K_{S}^{0} Rapidity (y);Cut Efficiency",nBins_rap,rapbins);
0084   
0085   TH1F* h_cutEff_pT_Xi_denom = new TH1F("h_cutEff_pT_Xi_denom",";#Xi^{-} p_{T} [GeV/c];Cut Efficiency",nBins_pT,pTbins);
0086   TH1F* h_cutEff_pT_Xi_num = new TH1F("h_cutEff_pT_Xi_num",";#Xi^{-} p_{T} [GeV/c];Cut Efficiency",nBins_pT,pTbins);
0087   TH1F* h_cutEff_eta_Xi_denom = new TH1F("h_cutEff_eta_Xi_denom",";#Xi^{-} #eta;Cut Efficiency",nBins_eta,etabins);
0088   TH1F* h_cutEff_eta_Xi_num = new TH1F("h_cutEff_eta_Xi_num",";#Xi^{-} #eta;Cut Efficiency",nBins_eta,etabins);
0089   TH1F* h_cutEff_phi_Xi_denom = new TH1F("h_cutEff_phi_Xi_denom",";#Xi^{-} #phi [rad];Cut Efficiency",nBins_phi,phibins);
0090   TH1F* h_cutEff_phi_Xi_num = new TH1F("h_cutEff_phi_Xi_num",";#Xi^{-} #phi [rad];Cut Efficiency",nBins_phi,phibins);
0091   TH1F* h_cutEff_rap_Xi_denom = new TH1F("h_cutEff_rap_Xi_denom",";#Xi^{-} Rapidity (y);Cut Efficiency",nBins_rap,rapbins);
0092   TH1F* h_cutEff_rap_Xi_num = new TH1F("h_cutEff_rap_Xi_num",";#Xi^{-} Rapidity (y);Cut Efficiency",nBins_rap,rapbins);
0093 
0094   h_cutEff_pT_KS0_denom->Sumw2();
0095   h_cutEff_pT_KS0_num->Sumw2();
0096   h_cutEff_eta_KS0_denom->Sumw2();
0097   h_cutEff_eta_KS0_num->Sumw2();
0098   h_cutEff_phi_KS0_denom->Sumw2();
0099   h_cutEff_phi_KS0_num->Sumw2();
0100   h_cutEff_rap_KS0_denom->Sumw2();
0101   h_cutEff_rap_KS0_num->Sumw2();
0102   h_cutEff_pT_Xi_denom->Sumw2();
0103   h_cutEff_pT_Xi_num->Sumw2();
0104   h_cutEff_eta_Xi_denom->Sumw2();
0105   h_cutEff_eta_Xi_num->Sumw2();
0106   h_cutEff_phi_Xi_denom->Sumw2();
0107   h_cutEff_phi_Xi_num->Sumw2();
0108   h_cutEff_rap_Xi_denom->Sumw2();
0109   h_cutEff_rap_Xi_num->Sumw2();
0110 
0111   TFile* outputFile = TFile::Open("cutEfficiencyCorrections.root", "RECREATE");  
0112   outputFile->cd();
0113   TTree* XiTree_truth = sim_tree_Xi->CopyTree(truthCut.c_str());
0114   XiTree_truth->SetName("XiTree_truth");
0115   std::cout << "Copied XiTree_truth" << std::endl;
0116   TTree* XiTree_truthCuts = sim_tree_Xi->CopyTree(truthDataCut.c_str());
0117   XiTree_truthCuts->SetName("XiTree_truthCuts");
0118   std::cout << "Copied XiTree_truthCuts" << std::endl;
0119 
0120   float Ximinus_pT, Ximinus_eta, Ximinus_phi, Ximinus_rap;
0121   float K_S0_pT, K_S0_eta, K_S0_phi, K_S0_rap;
0122   float weight;
0123   XiTree_truth->SetBranchAddress("Ximinus_pT", &Ximinus_pT);
0124   XiTree_truth->SetBranchAddress("Ximinus_pseudorapidity", &Ximinus_eta);
0125   XiTree_truth->SetBranchAddress("Ximinus_phi", &Ximinus_phi);
0126   XiTree_truth->SetBranchAddress("Ximinus_rapidity", &Ximinus_rap);
0127   for (int i = 0; i < XiTree_truth->GetEntries(); i++)
0128   {
0129     XiTree_truth->GetEntry(i);
0130 
0131     if (Ximinus_pT < 0 || Ximinus_pT > 5)
0132     {
0133       weight = 0;
0134     }  
0135     else
0136     {
0137       int binNumber = Xi_pT_histo_Normalized->GetXaxis()->FindBin(Ximinus_pT);
0138       weight = Xi_pT_histo_Normalized->GetBinContent(binNumber);
0139     }
0140 
0141     h_cutEff_pT_Xi_denom->Fill(Ximinus_pT, weight); 
0142     h_cutEff_eta_Xi_denom->Fill(Ximinus_eta, weight); 
0143     h_cutEff_phi_Xi_denom->Fill(Ximinus_phi, weight); 
0144     h_cutEff_rap_Xi_denom->Fill(Ximinus_rap, weight); 
0145   }
0146   std::cout << "Filled Xi denom" << std::endl;
0147   
0148   XiTree_truthCuts->SetBranchAddress("Ximinus_pT", &Ximinus_pT);
0149   XiTree_truthCuts->SetBranchAddress("Ximinus_pseudorapidity", &Ximinus_eta);
0150   XiTree_truthCuts->SetBranchAddress("Ximinus_phi", &Ximinus_phi);
0151   XiTree_truthCuts->SetBranchAddress("Ximinus_rapidity", &Ximinus_rap);
0152   for (int i = 0; i < XiTree_truthCuts->GetEntries(); i++)
0153   {
0154     XiTree_truthCuts->GetEntry(i);
0155     
0156     if (Ximinus_pT < 0 || Ximinus_pT > 5)
0157     {
0158       weight = 0;
0159     }  
0160     else
0161     {
0162       int binNumber = Xi_pT_histo_Normalized->GetXaxis()->FindBin(Ximinus_pT);
0163       weight = Xi_pT_histo_Normalized->GetBinContent(binNumber);
0164     }
0165 
0166     h_cutEff_pT_Xi_num->Fill(Ximinus_pT, weight); 
0167     h_cutEff_eta_Xi_num->Fill(Ximinus_eta, weight); 
0168     h_cutEff_phi_Xi_num->Fill(Ximinus_phi, weight); 
0169     h_cutEff_rap_Xi_num->Fill(Ximinus_rap, weight); 
0170   } 
0171   std::cout << "Filled Xi num" << std::endl;
0172 
0173   string sim_inFile_KS0 = "/sphenix/user/cdean/software/analysis/LightFlavorRatios/geometric_acceptance/simulation/outputKFParticle_Kshort_reco.root";
0174   TFile* sim_file_KS0 = new TFile(sim_inFile_KS0.c_str());
0175   sim_file_KS0->cd();
0176   TTree* sim_tree_KS0 = (TTree*)sim_file_KS0->Get("DecayTree");
0177 
0178   std::string truthCut_KS0 = "abs(track_1_true_ID) == 211 && Sum$(abs(track_1_true_track_history_PDG_ID) == 310) > 0 && abs(track_2_true_ID) == 211 && Sum$(abs(track_2_true_track_history_PDG_ID) == 310) > 0 && abs(K_S0_rapidity) <= 1.0 && track_1_MVTX_nHits > 0 && track_2_MVTX_nHits > 0 && abs(primary_vertex_z) < 10";
0179   std::string truthDataCut_KS0 = "abs(track_1_true_ID) == 211 && Sum$(abs(track_1_true_track_history_PDG_ID) == 310) > 0 && abs(track_2_true_ID) == 211 && Sum$(abs(track_2_true_track_history_PDG_ID) == 310) > 0 && abs(K_S0_rapidity) <= 1.0 && track_1_MVTX_nHits > 0 && track_2_MVTX_nHits > 0 && abs(primary_vertex_z) < 10 && track_1_INTT_nHits > 0 && track_2_INTT_nHits > 0 && track_1_TPC_nHits > 19 && track_2_TPC_nHits > 19 && (track_1_chi2/track_1_nDoF) <= 300 && (track_2_chi2/track_2_nDoF) <= 300 && abs(track_1_IP_xy) >= 0.05 && abs(track_2_IP_xy) >= 0.05 && track_1_track_2_DCA <= 0.5 && track_1_track_2_DCA_xy <= 1.0 && K_S0_DIRA >= 0.99 && (K_S0_chi2/K_S0_nDoF) <= 20 && abs(K_S0_mass - 0.5) <= 0.1 && track_1_pT >= 0.2 && track_2_pT >= 0.2";
0180 
0181   TH1F* h_pT_truth_KS0 = new TH1F("h_pT_truth_KS0",";K_{S}^{0} p_{T} [GeV/c];Cut Efficiency",nBins_pT,pTbins);
0182   TH1F* h_pT_truthCuts_KS0 = new TH1F("h_pT_truthCuts_KS0",";K_{S}^{0} p_{T} [GeV/c];Cut Efficiency",nBins_pT,pTbins);
0183   
0184   TH1F* h_eta_truth_KS0 = new TH1F("h_eta_truth_KS0",";K_{S}^{0} #eta;Cut Efficiency",nBins_eta,etabins);
0185   TH1F* h_eta_truthCuts_KS0 = new TH1F("h_eta_truthCuts_KS0",";K_{S}^{0} #eta;Cut Efficiency",nBins_eta,etabins);
0186   
0187   TH1F* h_phi_truth_KS0 = new TH1F("h_phi_truth_KS0",";K_{S}^{0} #phi;Cut Efficiency",nBins_phi,phibins);
0188   TH1F* h_phi_truthCuts_KS0 = new TH1F("h_phi_truthCuts_KS0",";K_{S}^{0} #phi;Cut Efficiency",nBins_phi,phibins);
0189   
0190   TH1F* h_y_truth_KS0 = new TH1F("h_y_truth_KS0",";K_{S}^{0} y;Cut Efficiency",nBins_rap,rapbins);
0191   TH1F* h_y_truthCuts_KS0 = new TH1F("h_y_truthCuts_KS0",";K_{S}^{0} y;Cut Efficiency",nBins_rap,rapbins);
0192    
0193   h_pT_truth_KS0->Sumw2();
0194   h_pT_truthCuts_KS0->Sumw2();
0195   h_eta_truth_KS0->Sumw2();
0196   h_eta_truthCuts_KS0->Sumw2();
0197   h_phi_truth_KS0->Sumw2();
0198   h_phi_truthCuts_KS0->Sumw2();
0199   h_y_truth_KS0->Sumw2();
0200   h_y_truthCuts_KS0->Sumw2();
0201 
0202   sim_tree_KS0->Draw("K_S0_pT>>+h_pT_truth_KS0",truthCut_KS0.c_str());
0203   sim_tree_KS0->Draw("K_S0_pT>>+h_pT_truthCuts_KS0",truthDataCut_KS0.c_str());
0204   sim_tree_KS0->Draw("K_S0_pseudorapidity>>+h_eta_truth_KS0",truthCut_KS0.c_str());
0205   sim_tree_KS0->Draw("K_S0_pseudorapidity>>+h_eta_truthCuts_KS0",truthDataCut_KS0.c_str());
0206   sim_tree_KS0->Draw("K_S0_phi>>+h_phi_truth_KS0",truthCut_KS0.c_str());
0207   sim_tree_KS0->Draw("K_S0_phi>>+h_phi_truthCuts_KS0",truthDataCut_KS0.c_str());
0208   sim_tree_KS0->Draw("K_S0_rapidity>>+h_y_truth_KS0",truthCut_KS0.c_str());
0209   sim_tree_KS0->Draw("K_S0_rapidity>>+h_y_truthCuts_KS0",truthDataCut_KS0.c_str());
0210   std::cout << "Filled KS0 base" << std::endl;
0211 
0212   TH1F* h_cutEff_pT_KS0 = (TH1F*)h_pT_truthCuts_KS0->Clone("h_cutEff_pT_KS0");
0213   h_cutEff_pT_KS0->Divide(h_pT_truthCuts_KS0, h_pT_truth_KS0, 1, 1, "B"); 
0214   TH1F* h_cutEff_phi_KS0 = (TH1F*)h_phi_truthCuts_KS0->Clone("h_cutEff_phi_KS0");
0215   h_cutEff_phi_KS0->Divide(h_phi_truthCuts_KS0, h_phi_truth_KS0, 1, 1, "B"); 
0216   TH1F* h_cutEff_eta_KS0 = (TH1F*)h_eta_truthCuts_KS0->Clone("h_cutEff_eta_KS0");
0217   h_cutEff_eta_KS0->Divide(h_eta_truthCuts_KS0, h_eta_truth_KS0, 1, 1, "B"); 
0218   TH1F* h_cutEff_rap_KS0 = (TH1F*)h_y_truthCuts_KS0->Clone("h_cutEff_rap_KS0");
0219   h_cutEff_rap_KS0->Divide(h_y_truthCuts_KS0, h_y_truth_KS0, 1, 1, "B"); 
0220   
0221   TH1F* h_cutEff_pT_Xi = (TH1F*)h_pT_truthCuts->Clone("h_cutEff_pT_Xi");
0222   h_cutEff_pT_Xi->Divide(h_pT_truthCuts, h_pT_truth, 1, 1, "B"); 
0223   TH1F* h_cutEff_phi_Xi = (TH1F*)h_phi_truthCuts->Clone("h_cutEff_phi_Xi");
0224   h_cutEff_phi_Xi->Divide(h_phi_truthCuts, h_phi_truth, 1, 1, "B"); 
0225   TH1F* h_cutEff_eta_Xi = (TH1F*)h_eta_truthCuts->Clone("h_cutEff_eta_Xi");
0226   h_cutEff_eta_Xi->Divide(h_eta_truthCuts, h_eta_truth, 1, 1, "B"); 
0227   TH1F* h_cutEff_rap_Xi = (TH1F*)h_y_truthCuts->Clone("h_cutEff_rap_Xi");
0228   h_cutEff_rap_Xi->Divide(h_y_truthCuts, h_y_truth, 1, 1, "B"); 
0229 
0230   outputFile->cd();
0231   TTree* KS0Tree_truth = sim_tree_KS0->CopyTree(truthCut_KS0.c_str());
0232   KS0Tree_truth->SetName("KS0Tree_truth");
0233   std::cout << "Copied KS0Tree_truth" << std::endl;
0234   TTree* KS0Tree_truthCuts = sim_tree_KS0->CopyTree(truthDataCut_KS0.c_str());
0235   KS0Tree_truthCuts->SetName("KS0Tree_truthCuts");
0236   std::cout << "Copied KS0Tree_truthCuts" << std::endl;
0237 
0238   KS0Tree_truth->SetBranchAddress("K_S0_pT", &K_S0_pT);
0239   KS0Tree_truth->SetBranchAddress("K_S0_pseudorapidity", &K_S0_eta);
0240   KS0Tree_truth->SetBranchAddress("K_S0_phi", &K_S0_phi);
0241   KS0Tree_truth->SetBranchAddress("K_S0_rapidity", &K_S0_rap);
0242   for (int i = 0; i < KS0Tree_truth->GetEntries(); i++)
0243   {
0244     KS0Tree_truth->GetEntry(i);
0245     
0246     if (K_S0_pT < 0 || K_S0_pT > 5)
0247     {
0248       weight = 0;
0249     }  
0250     else
0251     {
0252       int binNumber = KS0_pT_histo_Normalized->GetXaxis()->FindBin(K_S0_pT);
0253       weight = KS0_pT_histo_Normalized->GetBinContent(binNumber);
0254     }
0255 
0256     h_cutEff_pT_KS0_denom->Fill(K_S0_pT, weight); 
0257     h_cutEff_eta_KS0_denom->Fill(K_S0_eta, weight); 
0258     h_cutEff_phi_KS0_denom->Fill(K_S0_phi, weight); 
0259     h_cutEff_rap_KS0_denom->Fill(K_S0_rap, weight); 
0260   }
0261   std::cout << "Wrote KS0 denom" << std::endl;
0262   
0263   KS0Tree_truthCuts->SetBranchAddress("K_S0_pT", &K_S0_pT);
0264   KS0Tree_truthCuts->SetBranchAddress("K_S0_pseudorapidity", &K_S0_eta);
0265   KS0Tree_truthCuts->SetBranchAddress("K_S0_phi", &K_S0_phi);
0266   KS0Tree_truthCuts->SetBranchAddress("K_S0_rapidity", &K_S0_rap);
0267   for (int i = 0; i < KS0Tree_truthCuts->GetEntries(); i++)
0268   {
0269     KS0Tree_truthCuts->GetEntry(i);
0270     
0271     if (K_S0_pT < 0 || K_S0_pT > 5)
0272     {
0273       weight = 0;
0274     }  
0275     else
0276     {
0277       int binNumber = KS0_pT_histo_Normalized->GetXaxis()->FindBin(K_S0_pT);
0278       weight = KS0_pT_histo_Normalized->GetBinContent(binNumber);
0279     }
0280 
0281     h_cutEff_pT_KS0_num->Fill(K_S0_pT, weight); 
0282     h_cutEff_eta_KS0_num->Fill(K_S0_eta, weight); 
0283     h_cutEff_phi_KS0_num->Fill(K_S0_phi, weight); 
0284     h_cutEff_rap_KS0_num->Fill(K_S0_rap, weight); 
0285   }
0286   std::cout << "Wrote KS0 num" << std::endl;
0287 
0288   TH1F* h_cutEff_pT_KS0_max = (TH1F*)h_cutEff_pT_KS0_num->Clone("h_cutEff_pT_KS0_max");
0289   h_cutEff_pT_KS0_max->Divide(h_cutEff_pT_KS0_num, h_cutEff_pT_KS0_denom, 1., 1.);
0290   TH1F* h_cutEff_eta_KS0_max = (TH1F*)h_cutEff_eta_KS0_num->Clone("h_cutEff_eta_KS0_max");
0291   h_cutEff_eta_KS0_max->Divide(h_cutEff_eta_KS0_num, h_cutEff_eta_KS0_denom, 1., 1.);
0292   TH1F* h_cutEff_phi_KS0_max = (TH1F*)h_cutEff_phi_KS0_num->Clone("h_cutEff_phi_KS0_max");
0293   h_cutEff_phi_KS0_max->Divide(h_cutEff_phi_KS0_num, h_cutEff_phi_KS0_denom, 1., 1.);
0294   TH1F* h_cutEff_rap_KS0_max = (TH1F*)h_cutEff_rap_KS0_num->Clone("h_cutEff_rap_KS0_max");
0295   h_cutEff_rap_KS0_max->Divide(h_cutEff_rap_KS0_num, h_cutEff_rap_KS0_denom, 1., 1.);
0296   TH1F* h_cutEff_pT_Xi_max = (TH1F*)h_cutEff_pT_Xi_num->Clone("h_cutEff_pT_Xi_max");
0297   h_cutEff_pT_Xi_max->Divide(h_cutEff_pT_Xi_num, h_cutEff_pT_Xi_denom, 1., 1.);
0298   TH1F* h_cutEff_eta_Xi_max = (TH1F*)h_cutEff_eta_Xi_num->Clone("h_cutEff_eta_Xi_max");
0299   h_cutEff_eta_Xi_max->Divide(h_cutEff_eta_Xi_num, h_cutEff_eta_Xi_denom, 1., 1.);
0300   TH1F* h_cutEff_phi_Xi_max = (TH1F*)h_cutEff_phi_Xi_num->Clone("h_cutEff_phi_Xi_max");
0301   h_cutEff_phi_Xi_max->Divide(h_cutEff_phi_Xi_num, h_cutEff_phi_Xi_denom, 1., 1.);
0302   TH1F* h_cutEff_rap_Xi_max = (TH1F*)h_cutEff_rap_Xi_num->Clone("h_cutEff_rap_Xi_max");
0303   h_cutEff_rap_Xi_max->Divide(h_cutEff_rap_Xi_num, h_cutEff_rap_Xi_denom, 1., 1.);
0304 
0305   outputFile->cd();
0306   h_cutEff_pT_KS0->Write(); 
0307   h_cutEff_phi_KS0->Write(); 
0308   h_cutEff_eta_KS0->Write(); 
0309   h_cutEff_rap_KS0->Write(); 
0310   h_cutEff_pT_Xi->Write(); 
0311   h_cutEff_phi_Xi->Write(); 
0312   h_cutEff_eta_Xi->Write(); 
0313   h_cutEff_rap_Xi->Write(); 
0314   h_cutEff_pT_KS0_max->Write(); 
0315   h_cutEff_phi_KS0_max->Write(); 
0316   h_cutEff_eta_KS0_max->Write(); 
0317   h_cutEff_rap_KS0_max->Write(); 
0318   h_cutEff_pT_Xi_max->Write(); 
0319   h_cutEff_phi_Xi_max->Write(); 
0320   h_cutEff_eta_Xi_max->Write(); 
0321   h_cutEff_rap_Xi_max->Write(); 
0322   outputFile->Close();
0323   std::cout << "Done" << std::endl;
0324 }