1515// / \author Daniel Samitz, <daniel.samitz@cern.ch>, SMI Vienna
1616// / Elisa Meninno, <elisa.meninno@cern.ch>, SMI Vienna
1717
18- #include < vector>
18+ #include " PWGEM/Dilepton/DataModel/dileptonTables.h"
19+ #include " PWGEM/Dilepton/Utils/MCUtilities.h"
1920
20- #include " Math/Vector4D.h"
21- #include " MathUtils/Utils.h"
22- #include " Framework/Task.h"
23- #include " Framework/runDataProcessing.h"
2421#include " Framework/AnalysisTask.h"
2522#include " Framework/HistogramRegistry.h"
26- #include " PWGEM/Dilepton/Utils/MCUtilities.h"
27- #include " PWGEM/Dilepton/DataModel/dileptonTables.h"
23+ #include " Framework/Task.h"
24+ #include " Framework/runDataProcessing.h"
25+ #include " MathUtils/Utils.h"
26+
27+ #include " Math/Vector4D.h"
28+
29+ #include < vector>
2830
2931using namespace o2 ;
3032using namespace o2 ::framework;
@@ -74,14 +76,15 @@ const char* stageNames[Nstages] = {"gen", "meas", "meas_and_acc"};
7476// meas_acc: normal, efficiency weights and acceptance cuts applied
7577
7678template <typename T>
77- void doQuark (T& p, std::vector<std::shared_ptr<TH1>> hRapQuark, float ptMin, float etaMax, int pdg)
79+ void doQuark (T& p, std::vector<std::shared_ptr<TH1>> hRapQuark, float ptMin, float ptMax, float etaMax, int pdg)
7880{
7981 float pt[Nstages] = {p.pt (), p.ptSmeared (), p.ptSmeared ()};
8082 float eta[Nstages] = {p.eta (), p.etaSmeared (), p.etaSmeared ()};
81- float cut_pt[Nstages] = {0 ., 0 ., ptMin};
82- float cut_eta[Nstages] = {9999 ., 99999 ., etaMax};
83+ float cut_ptMin[Nstages] = {0 ., 0 ., ptMin};
84+ float cut_ptMax[Nstages] = {99999 ., 99999 ., ptMax};
85+ float cut_eta[Nstages] = {99999 ., 99999 ., etaMax};
8386 for (int i = 0 ; i < Nstages; i++) {
84- if (pt[i] > cut_pt [i] && fabs (eta[i]) < cut_eta[i]) {
87+ if (pt[i] > cut_ptMin[i] && pt[i] < cut_ptMax [i] && fabs (eta[i]) < cut_eta[i]) {
8588 if (pdg == 4 )
8689 hRapQuark[i]->Fill (p.cQuarkRap ());
8790 else if (pdg == 5 )
@@ -93,15 +96,16 @@ void doQuark(T& p, std::vector<std::shared_ptr<TH1>> hRapQuark, float ptMin, flo
9396}
9497
9598template <typename T>
96- void doSingle (T& p, std::vector<std::shared_ptr<TH1>> hEta, std::vector<std::shared_ptr<TH1>> hPt, std::vector<std::shared_ptr<TH2>> hPtEta, float ptMin, float etaMax)
99+ void doSingle (T& p, std::vector<std::shared_ptr<TH1>> hEta, std::vector<std::shared_ptr<TH1>> hPt, std::vector<std::shared_ptr<TH2>> hPtEta, float ptMin, float ptMax, float etaMax)
97100{
98101 float weight[Nstages] = {p.weight (), p.efficiency () * p.weight (), p.efficiency () * p.weight ()};
99102 float pt[Nstages] = {p.pt (), p.ptSmeared (), p.ptSmeared ()};
100103 float eta[Nstages] = {p.eta (), p.etaSmeared (), p.etaSmeared ()};
101- float cut_pt[Nstages] = {0 ., 0 ., ptMin};
102- float cut_eta[Nstages] = {9999 ., 99999 ., etaMax};
104+ float cut_ptMin[Nstages] = {0 ., 0 ., ptMin};
105+ float cut_ptMax[Nstages] = {99999 ., 99999 ., ptMax};
106+ float cut_eta[Nstages] = {99999 ., 99999 ., etaMax};
103107 for (int i = 0 ; i < Nstages; i++) {
104- if (pt[i] > cut_pt [i] && fabs (eta[i]) < cut_eta[i]) {
108+ if (pt[i] > cut_ptMin[i] && pt[i] < cut_ptMax [i] && fabs (eta[i]) < cut_eta[i]) {
105109 hEta[i]->Fill (eta[i], weight[i]);
106110 hPt[i]->Fill (pt[i], weight[i]);
107111 hPtEta[i]->Fill (pt[i], eta[i], weight[i]);
@@ -110,7 +114,7 @@ void doSingle(T& p, std::vector<std::shared_ptr<TH1>> hEta, std::vector<std::sha
110114}
111115
112116template <typename T>
113- void doPair (T& p1, T& p2, std::vector<std::shared_ptr<TH1>> hMee, std::vector<std::shared_ptr<TH2>> hMeePtee, float ptMin, float etaMax, bool apply_detadphi, float min_deta, float min_dphi)
117+ void doPair (T& p1, T& p2, std::vector<std::shared_ptr<TH1>> hMee, std::vector<std::shared_ptr<TH2>> hMeePtee, float ptMin, float ptMax, float etaMax, bool apply_detadphi, float min_deta, float min_dphi)
114118{
115119
116120 ROOT::Math::PtEtaPhiMVector v1 (p1.ptSmeared (), p1.etaSmeared (), p1.phiSmeared (), o2::constants::physics::MassElectron);
@@ -127,8 +131,9 @@ void doPair(T& p1, T& p2, std::vector<std::shared_ptr<TH1>> hMee, std::vector<st
127131 float eta1[Nstages] = {p1.eta (), p1.etaSmeared (), p1.etaSmeared ()};
128132 float eta2[Nstages] = {p2.eta (), p2.etaSmeared (), p2.etaSmeared ()};
129133 float weight[Nstages] = {p1.weight () * p2.weight (), p1.efficiency () * p2.efficiency () * p1.weight () * p2.weight (), p1.efficiency () * p2.efficiency () * p1.weight () * p2.weight ()};
130- float cut_pt[Nstages] = {0 ., 0 ., ptMin};
131- float cut_eta[Nstages] = {9999 ., 99999 ., etaMax};
134+ float cut_ptMin[Nstages] = {0 ., 0 ., ptMin};
135+ float cut_ptMax[Nstages] = {99999 ., 99999 ., ptMax};
136+ float cut_eta[Nstages] = {99999 ., 99999 ., etaMax};
132137
133138 float deta = v1.Eta () - v2.Eta ();
134139 float dphi = v1.Phi () - v2.Phi ();
@@ -138,7 +143,7 @@ void doPair(T& p1, T& p2, std::vector<std::shared_ptr<TH1>> hMee, std::vector<st
138143 }
139144
140145 for (int i = 0 ; i < Nstages; i++) {
141- if (pt1[i] > cut_pt [i] && pt2[i] > cut_pt [i] && fabs (eta1[i]) < cut_eta[i] && fabs (eta2[i]) < cut_eta[i]) {
146+ if (pt1[i] > cut_ptMin [i] && pt2[i] > cut_ptMin[i] && pt1[i] < cut_ptMax[i] && pt2[i] < cut_ptMax [i] && fabs (eta1[i]) < cut_eta[i] && fabs (eta2[i]) < cut_eta[i]) {
142147 hMee[i]->Fill (mass[i], weight[i]);
143148 hMeePtee[i]->Fill (mass[i], pt[i], weight[i]);
144149 }
@@ -147,6 +152,7 @@ void doPair(T& p1, T& p2, std::vector<std::shared_ptr<TH1>> hMee, std::vector<st
147152
148153struct MyConfigs : ConfigurableGroup {
149154 Configurable<float > fConfigPtMin {" cfgPtMin" , 0.2 , " min. pT of single electrons" };
155+ Configurable<float > fConfigPtMax {" cfgPtMax" , 99999 ., " max. pT of single electrons" };
150156 Configurable<float > fConfigEtaMax {" cfgEtaMax" , 0.8 , " max. |eta| of single electrons" };
151157 ConfigurableAxis fConfigPtBins {" cfgPtBins" , {200 , 0 .f , 10 .f }, " single electron pT binning" };
152158 ConfigurableAxis fConfigEtaBins {" cfgEtaBins" , {200 , -10 .f , 10 .f }, " single electron eta binning" };
@@ -353,8 +359,8 @@ struct lmeehfcocktailbeauty {
353359 {
354360 for (auto const & p : mcParticles) {
355361 int from_quark = p.isHF () - 2 ;
356- doSingle (p, hEta[from_quark], hPt[from_quark], hPtEta[from_quark], myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax );
357- doQuark (p, hRapQuark[from_quark], myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , 5 );
362+ doSingle (p, hEta[from_quark], hPt[from_quark], hPtEta[from_quark], myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax );
363+ doQuark (p, hRapQuark[from_quark], myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , 5 );
358364 }
359365
360366 for (auto const & collision : collisions) {
@@ -370,11 +376,11 @@ struct lmeehfcocktailbeauty {
370376 LOG (error) << " Something is wrong here. There should not be dielectrons with same mother." ;
371377 }
372378
373- doPair (particle1, particle2, hULS_Mee, hULS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
379+ doPair (particle1, particle2, hULS_Mee, hULS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
374380
375381 if (particle1.bQuarkOriginId () < 0 || particle2.bQuarkOriginId () < 0 || particle1.bQuarkOriginId () != particle2.bQuarkOriginId ())
376382 continue ;
377- doPair (particle1, particle2, hULS_Mee_wPartonicCheck, hULS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
383+ doPair (particle1, particle2, hULS_Mee_wPartonicCheck, hULS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
378384 }
379385 // LS spectrum
380386 for (auto const & [particle1, particle2] : combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (electronsGrouped, electronsGrouped))) {
@@ -383,23 +389,23 @@ struct lmeehfcocktailbeauty {
383389 LOG (error) << " Something is wrong here. There should not be dielectrons with same mother." ;
384390 }
385391
386- doPair (particle1, particle2, hLS_Mee, hLS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
392+ doPair (particle1, particle2, hLS_Mee, hLS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
387393
388394 if (particle1.bQuarkOriginId () < 0 || particle2.bQuarkOriginId () < 0 || particle1.bQuarkOriginId () != particle2.bQuarkOriginId ())
389395 continue ;
390- doPair (particle1, particle2, hLS_Mee_wPartonicCheck, hLS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
396+ doPair (particle1, particle2, hLS_Mee_wPartonicCheck, hLS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
391397 }
392398 for (auto const & [particle1, particle2] : combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (positronsGrouped, positronsGrouped))) {
393399
394400 if (particle1.mothersIds ()[0 ] == particle2.mothersIds ()[0 ]) {
395401 LOG (error) << " Something is wrong here. There should not be dielectrons with same mother." ;
396402 }
397403
398- doPair (particle1, particle2, hLS_Mee, hLS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
404+ doPair (particle1, particle2, hLS_Mee, hLS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
399405
400406 if (particle1.bQuarkOriginId () < 0 || particle2.bQuarkOriginId () < 0 || particle1.bQuarkOriginId () != particle2.bQuarkOriginId ())
401407 continue ;
402- doPair (particle1, particle2, hLS_Mee_wPartonicCheck, hLS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
408+ doPair (particle1, particle2, hLS_Mee_wPartonicCheck, hLS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
403409 }
404410 }
405411 }
@@ -480,8 +486,8 @@ struct lmeehfcocktailcharm {
480486 void processCharm (aod::McCollisions const & collisions, MyFilteredMcParticlesSmeared const & mcParticles)
481487 {
482488 for (auto const & p : mcParticles) {
483- doSingle (p, hEta, hPt, hPtEta, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax );
484- doQuark (p, hRapQuark, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , 4 );
489+ doSingle (p, hEta, hPt, hPtEta, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax );
490+ doQuark (p, hRapQuark, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , 4 );
485491 }
486492
487493 for (auto const & collision : collisions) {
@@ -497,11 +503,11 @@ struct lmeehfcocktailcharm {
497503 LOG (error) << " Something is wrong here. There should not be dielectrons with same mother." ;
498504 }
499505
500- doPair (particle1, particle2, hULS_Mee, hULS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
506+ doPair (particle1, particle2, hULS_Mee, hULS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
501507
502508 if (particle1.cQuarkOriginId () < 0 || particle2.cQuarkOriginId () < 0 || particle1.cQuarkOriginId () != particle2.cQuarkOriginId ())
503509 continue ;
504- doPair (particle1, particle2, hULS_Mee_wPartonicCheck, hULS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
510+ doPair (particle1, particle2, hULS_Mee_wPartonicCheck, hULS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
505511 }
506512 // LS
507513 for (auto const & [particle1, particle2] : combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (electronsGrouped, electronsGrouped))) {
@@ -510,23 +516,23 @@ struct lmeehfcocktailcharm {
510516 LOG (error) << " Something is wrong here. There should not be dielectrons with same mother." ;
511517 }
512518
513- doPair (particle1, particle2, hLS_Mee, hLS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
519+ doPair (particle1, particle2, hLS_Mee, hLS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
514520
515521 if (particle1.cQuarkOriginId () < 0 || particle2.cQuarkOriginId () < 0 || particle1.cQuarkOriginId () != particle2.cQuarkOriginId ())
516522 continue ;
517- doPair (particle1, particle2, hLS_Mee_wPartonicCheck, hLS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
523+ doPair (particle1, particle2, hLS_Mee_wPartonicCheck, hLS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
518524 }
519525 for (auto const & [particle1, particle2] : combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (positronsGrouped, positronsGrouped))) {
520526
521527 if (particle1.mothersIds ()[0 ] == particle2.mothersIds ()[0 ]) {
522528 LOG (error) << " Something is wrong here. There should not be dielectrons with same mother." ;
523529 }
524530
525- doPair (particle1, particle2, hLS_Mee, hLS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
531+ doPair (particle1, particle2, hLS_Mee, hLS_MeePtee, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
526532
527533 if (particle1.cQuarkOriginId () < 0 || particle2.cQuarkOriginId () < 0 || particle1.cQuarkOriginId () != particle2.cQuarkOriginId ())
528534 continue ;
529- doPair (particle1, particle2, hLS_Mee_wPartonicCheck, hLS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
535+ doPair (particle1, particle2, hLS_Mee_wPartonicCheck, hLS_MeePtee_wPartonicCheck, myConfigs.fConfigPtMin , myConfigs.fConfigPtMax , myConfigs. fConfigEtaMax , myConfigs.fConfigApplyDEtaDPhi , myConfigs.fConfigMinDEta , myConfigs.fConfigMinDPhi );
530536 }
531537 }
532538 }
0 commit comments