Skip to content

Commit 69768a3

Browse files
authored
[PWGEM] Add maximum pt cut (#13961)
1 parent 335fed7 commit 69768a3

File tree

1 file changed

+41
-35
lines changed

1 file changed

+41
-35
lines changed

PWGEM/Dilepton/Tasks/lmeeHFCocktail.cxx

Lines changed: 41 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,18 @@
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

2931
using namespace o2;
3032
using 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

7678
template <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

9598
template <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

112116
template <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

148153
struct 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

Comments
 (0)