diff --git a/benchmarks/barrel_ecal/scripts/emcal_barrel_pions_analysis.cxx b/benchmarks/barrel_ecal/scripts/emcal_barrel_pions_analysis.cxx index bdc92d07aae73b03e27b10bb03108fc1dca32814..04b59134eab81c1111ba3068acda0e8c25a4447c 100644 --- a/benchmarks/barrel_ecal/scripts/emcal_barrel_pions_analysis.cxx +++ b/benchmarks/barrel_ecal/scripts/emcal_barrel_pions_analysis.cxx @@ -95,14 +95,36 @@ void emcal_barrel_pions_analysis(const char* input_fname = "sim_output/sim_emcal return result; }; + // Energy Resolution = Esampling - Ethrown + auto eResol = [](const std::vector<double>& sampled, const std::vector<double>& thrown) { + std::vector<double> result; + auto it_sam = sampled.cbegin(); + auto it_thr = thrown.cbegin(); + for (; it_sam != sampled.end() && it_thr != thrown.end(); ++it_sam, ++it_thr) { + result.push_back(*it_sam - *it_thr); + } + return result; + }; + + // Relative Energy Resolution = (Esampling - Ethrown)/Ethrown + auto eResol_rel = [](const std::vector<double>& sampled, const std::vector<double>& thrown) { + std::vector<double> result; + auto it_sam = sampled.cbegin(); + auto it_thr = thrown.cbegin(); + for (; it_sam != sampled.end() && it_thr != thrown.end(); ++it_sam, ++it_thr) { + result.push_back((*it_sam - *it_thr) / *it_sam); + } + return result; + }; + // Define variables auto d1 = d0.Define("Ethr", Ethr, {"mcparticles"}) - .Define("nhits", nhits, {"EcalBarrelHits"}) - .Define("Esim", Esim, {"EcalBarrelHits"}) + .Define("nhits", nhits, {"EcalBarrelHits"}) + .Define("Esim", Esim, {"EcalBarrelHits"}) //.Define("fsam", fsam, {"Esim","Ethr"}) - .Define("fsam", fsam2, {"Esim","Ethr"}) - .Define("dE", "Ethr-Esim") - .Define("dE_rel", "(Ethr - Esim)/Esim") + .Define("fsam", fsam2, {"Esim","Ethr"}) + .Define("dE", eResol, {"Esim", "Ethr"}) + .Define("dE_rel", eResol_rel, {"Esim", "Ethr"}) ; // Define Histograms