Skip to content

Commit 643a25c

Browse files
authored
[PWGLF] Add checks for the number of triggered events used in h3l 3body analysis (#10693)
1 parent 4082306 commit 643a25c

File tree

1 file changed

+55
-12
lines changed

1 file changed

+55
-12
lines changed

PWGLF/TableProducer/Nuspex/threebodyRecoTask.cxx

Lines changed: 55 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,25 @@ using ReducedCols = soa::Join<aod::RedCollisions, aod::RedCentFT0Cs>;
4747
using FullTracksExtIU = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCFullPr, aod::pidTPCFullPi, aod::pidTPCFullDe>;
4848
using MCLabeledTracksIU = soa::Join<FullTracksExtIU, aod::McTrackLabels>;
4949

50+
std::vector<std::string> triggerLabels = {
51+
"fTriggerEventF1Proton", "fTrackedOmega", "fTrackedXi", "fOmegaLargeRadius",
52+
"fDoubleOmega", "fOmegaHighMult", "fSingleXiYN", "fQuadrupleXi", "fDoubleXi",
53+
"fhadronOmega", "fOmegaXi", "fTripleXi", "fOmega", "fGammaVeryLowPtEMCAL",
54+
"fGammaVeryLowPtDCAL", "fGammaHighPtEMCAL", "fGammaLowPtEMCAL", "fGammaVeryHighPtDCAL",
55+
"fGammaVeryHighPtEMCAL", "fGammaLowPtDCAL", "fJetNeutralLowPt", "fJetNeutralHighPt",
56+
"fGammaHighPtDCAL", "fJetFullLowPt", "fJetFullHighPt", "fEMCALReadout", "fPCMandEE",
57+
"fPHOSnbar", "fPCMHighPtPhoton", "fPHOSPhoton", "fLD", "fPPPHI", "fPD", "fLLL", "fPLL",
58+
"fPPL", "fPPP", "fLeadingPtTrack", "fHighFt0cFv0Flat", "fHighFt0cFv0Mult", "fHighFt0Flat",
59+
"fHighFt0Mult", "fHighMultFv0", "fHighTrackMult", "fHfSingleNonPromptCharm3P",
60+
"fHfSingleNonPromptCharm2P", "fHfSingleCharm3P", "fHfPhotonCharm3P", "fHfHighPt2P",
61+
"fHfSigmaC0K0", "fHfDoubleCharm2P", "fHfBeauty3P", "fHfFemto3P", "fHfFemto2P",
62+
"fHfHighPt3P", "fHfSigmaCPPK", "fHfDoubleCharm3P", "fHfDoubleCharmMix",
63+
"fHfPhotonCharm2P", "fHfV0Charm2P", "fHfBeauty4P", "fHfV0Charm3P", "fHfSingleCharm2P",
64+
"fHfCharmBarToXiBach", "fSingleMuHigh", "fSingleMuLow", "fLMeeHMR", "fDiMuon",
65+
"fDiElectron", "fLMeeIMR", "fSingleE", "fTrackHighPt", "fTrackLowPt", "fJetChHighPt",
66+
"fJetChLowPt", "fUDdiffLarge", "fUDdiffSmall", "fITSextremeIonisation",
67+
"fITSmildIonisation", "fH3L3Body", "fHe", "fH2"};
68+
5069
struct Candidate3body {
5170
// Index
5271
int mcmotherId;
@@ -102,8 +121,9 @@ struct ThreebodyRecoTask {
102121
PresliceUnsorted<aod::Vtx3BodyDatas> perCollisionVtx3BodyDatas = o2::aod::vtx3body::collisionId;
103122

104123
// Configurable for trigger selection
105-
Configurable<std::string> triggerList{"triggerList", "fH3L3Body", "List of triggers used to select events"};
124+
Configurable<std::string> triggerList{"triggerList", "fTriggerEventF1Proton, fTrackedOmega, fTrackedXi, fOmegaLargeRadius, fDoubleOmega, fOmegaHighMult, fSingleXiYN, fQuadrupleXi, fDoubleXi, fhadronOmega, fOmegaXi, fTripleXi, fOmega, fGammaVeryLowPtEMCAL, fGammaVeryLowPtDCAL, fGammaHighPtEMCAL, fGammaLowPtEMCAL, fGammaVeryHighPtDCAL, fGammaVeryHighPtEMCAL, fGammaLowPtDCAL, fJetNeutralLowPt, fJetNeutralHighPt, fGammaHighPtDCAL, fJetFullLowPt, fJetFullHighPt, fEMCALReadout, fPCMandEE, fPHOSnbar, fPCMHighPtPhoton, fPHOSPhoton, fLD, fPPPHI, fPD, fLLL, fPLL, fPPL, fPPP, fLeadingPtTrack, fHighFt0cFv0Flat, fHighFt0cFv0Mult, fHighFt0Flat, fHighFt0Mult, fHighMultFv0, fHighTrackMult, fHfSingleNonPromptCharm3P, fHfSingleNonPromptCharm2P, fHfSingleCharm3P, fHfPhotonCharm3P, fHfHighPt2P, fHfSigmaC0K0, fHfDoubleCharm2P, fHfBeauty3P, fHfFemto3P, fHfFemto2P, fHfHighPt3P, fHfSigmaCPPK, fHfDoubleCharm3P, fHfDoubleCharmMix, fHfPhotonCharm2P, fHfV0Charm2P, fHfBeauty4P, fHfV0Charm3P, fHfSingleCharm2P, fHfCharmBarToXiBach, fSingleMuHigh, fSingleMuLow, fLMeeHMR, fDiMuon, fDiElectron, fLMeeIMR, fSingleE, fTrackHighPt, fTrackLowPt, fJetChHighPt, fJetChLowPt, fUDdiffLarge, fUDdiffSmall, fITSextremeIonisation, fITSmildIonisation, fH3L3Body, fHe, fH2", "List of triggers used to select events"};
106125
Configurable<bool> cfgOnlyKeepInterestedTrigger{"cfgOnlyKeepInterestedTrigger", false, "Flag to keep only interested trigger"};
126+
Configurable<int> bcTolerance{"bcTolerance", 100, "Tolerance for BC in Zorro"};
107127
// Configuration to enable like-sign analysis
108128
Configurable<bool> cfgLikeSignAnalysis{"cfgLikeSignAnalysis", false, "Enable like-sign analysis"};
109129
// Selection criteria
@@ -224,6 +244,7 @@ struct ThreebodyRecoTask {
224244
void init(InitContext const&)
225245
{
226246
zorroSummary.setObject(zorro.getZorroSummary());
247+
227248
mRunNumber = 0;
228249

229250
ccdb->setURL(ccdbUrl);
@@ -243,6 +264,13 @@ struct ThreebodyRecoTask {
243264
registry.add("hDiffRVtxDeuteron", "hDiffRVtxDeuteron", HistType::kTH1F, {{100, -10, 10}}); // difference between the radius of decay vertex and minR of deuteron
244265
registry.add("hDiffDaughterR", "hDiffDaughterR", HistType::kTH1F, {{10000, -100, 100}}); // difference between minR of pion&proton and R of deuteron(bachelor)
245266

267+
// Check triggers
268+
auto hEventTriggerCount = registry.add<TH1>("hEventTriggerCount", "hEventTriggerCount", HistType::kTH1F, {{static_cast<int>(triggerLabels.size() + 1), 0, static_cast<double>(triggerLabels.size() + 1)}});
269+
for (size_t i = 0; i < triggerLabels.size(); i++) {
270+
hEventTriggerCount->GetXaxis()->SetBinLabel(i + 1, triggerLabels[i].c_str());
271+
}
272+
hEventTriggerCount->GetXaxis()->SetBinLabel(triggerLabels.size() + 1, "NoTrigger");
273+
246274
if (cfgLikeSignAnalysis) {
247275
registry.add("hInvMassCorrectSign", "hInvMassCorrectSign", HistType::kTH1F, {{80, 2.96f, 3.04f}}); // check if there are contamination of possible signals which are caused by unexpected PID
248276
}
@@ -282,6 +310,7 @@ struct ThreebodyRecoTask {
282310
zorro.populateHistRegistry(registry, bc.runNumber());
283311
}
284312

313+
LOGF(info, "Initializing CCDB for run %d", bc.runNumber());
285314
mRunNumber = bc.runNumber();
286315
}
287316

@@ -296,13 +325,13 @@ struct ThreebodyRecoTask {
296325
bool haveProton = false, havePion = false, haveBachelor = false;
297326
bool haveAntiProton = false, haveAntiPion = false, haveAntiBachelor = false;
298327
for (const auto& mcparticleDaughter : particle.template daughters_as<TMCTrackTo>()) {
299-
if (mcparticleDaughter.pdgCode() == 2212)
328+
if (mcparticleDaughter.pdgCode() == PDG_t::kProton)
300329
haveProton = true;
301-
if (mcparticleDaughter.pdgCode() == -2212)
330+
if (mcparticleDaughter.pdgCode() == PDG_t::kProtonBar)
302331
haveAntiProton = true;
303-
if (mcparticleDaughter.pdgCode() == 211)
332+
if (mcparticleDaughter.pdgCode() == PDG_t::kPiPlus)
304333
havePion = true;
305-
if (mcparticleDaughter.pdgCode() == -211)
334+
if (mcparticleDaughter.pdgCode() == PDG_t::kPiMinus)
306335
haveAntiPion = true;
307336
if (mcparticleDaughter.pdgCode() == bachelorPdgCode)
308337
haveBachelor = true;
@@ -642,13 +671,13 @@ struct ThreebodyRecoTask {
642671
bool haveAntiProton = false, havePionMinus = false, haveAntiDeuteron = false;
643672
double mcLifetime = -1;
644673
for (const auto& mcparticleDaughter : mcparticle.template daughters_as<aod::McParticles>()) {
645-
if (mcparticleDaughter.pdgCode() == 2212)
674+
if (mcparticleDaughter.pdgCode() == PDG_t::kProton)
646675
haveProton = true;
647-
if (mcparticleDaughter.pdgCode() == -2212)
676+
if (mcparticleDaughter.pdgCode() == PDG_t::kProtonBar)
648677
haveAntiProton = true;
649-
if (mcparticleDaughter.pdgCode() == 211)
678+
if (mcparticleDaughter.pdgCode() == PDG_t::kPiPlus)
650679
havePionPlus = true;
651-
if (mcparticleDaughter.pdgCode() == -211)
680+
if (mcparticleDaughter.pdgCode() == -PDG_t::kPiPlus)
652681
havePionMinus = true;
653682
if (mcparticleDaughter.pdgCode() == bachelorPdgCode) {
654683
haveDeuteron = true;
@@ -695,8 +724,20 @@ struct ThreebodyRecoTask {
695724
candidateAnalysis<FullTracksExtIU>(collision, vtx, ifHasCandidate);
696725
}
697726
}
698-
if (ifHasCandidate)
727+
728+
if (ifHasCandidate) {
729+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
730+
auto triggerSelection = zorro.getTriggerOfInterestResults(bc.globalBC(), bcTolerance);
731+
for (size_t i = 0; i < triggerSelection.size(); i++) {
732+
if (triggerSelection[i]) {
733+
registry.fill(HIST("hEventTriggerCount"), i + 0.5);
734+
}
735+
}
736+
if (zorro.isNotSelectedByAny(bc.globalBC(), bcTolerance)) {
737+
registry.fill(HIST("hEventTriggerCount"), triggerLabels.size() + 0.5);
738+
}
699739
registry.fill(HIST("hEventCounter"), 4.5);
740+
}
700741
fillHistos();
701742
resetHistos();
702743

@@ -713,6 +754,8 @@ struct ThreebodyRecoTask {
713754
{
714755
candidates3body.clear();
715756

757+
registry.fill(HIST("hEventCounter"), 0.5, collisions.size());
758+
716759
for (const auto& vtx : vtx3bodydatas) {
717760
const auto& collision = collisions.iteratorAt(vtx.collisionId());
718761
if (cfgLikeSignAnalysis) {
@@ -784,8 +827,8 @@ struct ThreebodyRecoTask {
784827
if (lMother0.globalIndex() == lMother1.globalIndex() && lMother0.globalIndex() == lMother2.globalIndex()) {
785828
lLabel = lMother0.globalIndex();
786829
lPDG = lMother0.pdgCode();
787-
if ((lPDG == motherPdgCode && lMCTrack0.pdgCode() == 2212 && lMCTrack1.pdgCode() == -211 && lMCTrack2.pdgCode() == bachelorPdgCode) ||
788-
(lPDG == -motherPdgCode && lMCTrack0.pdgCode() == 211 && lMCTrack1.pdgCode() == -2212 && lMCTrack2.pdgCode() == -bachelorPdgCode)) {
830+
if ((lPDG == motherPdgCode && lMCTrack0.pdgCode() == PDG_t::kProton && lMCTrack1.pdgCode() == PDG_t::kPiMinus && lMCTrack2.pdgCode() == bachelorPdgCode) ||
831+
(lPDG == -motherPdgCode && lMCTrack0.pdgCode() == PDG_t::kPiPlus && lMCTrack1.pdgCode() == PDG_t::kProtonBar && lMCTrack2.pdgCode() == -bachelorPdgCode)) {
789832
isTrueCand = true;
790833
mcLifetime = RecoDecay::sqrtSumOfSquares(lMCTrack2.vx() - lMother2.vx(), lMCTrack2.vy() - lMother2.vy(), lMCTrack2.vz() - lMother2.vz()) * o2::constants::physics::MassHyperTriton / lMother2.p();
791834
lmother.SetXYZM(lMother0.px(), lMother0.py(), lMother0.pz(), o2::constants::physics::MassHyperTriton);

0 commit comments

Comments
 (0)