Skip to content

Commit 12f97fe

Browse files
authored
[PWGEM/Dilepton] update treeCreatorMuonML.cxx (#15902)
1 parent df4739e commit 12f97fe

3 files changed

Lines changed: 91 additions & 36 deletions

File tree

PWGEM/Dilepton/DataModel/lmeeMLTables.h

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
// or submit itself to any jurisdiction.
1111

1212
#include "Common/DataModel/EventSelection.h"
13+
#include "Common/DataModel/Multiplicity.h"
1314
#include "Common/DataModel/PIDResponseTOF.h"
1415
#include "Common/DataModel/PIDResponseTPC.h"
1516
#include "Common/DataModel/TrackSelectionTables.h"
@@ -118,32 +119,59 @@ using EMPIDPr = EMPIDsPr::iterator;
118119

119120
namespace emmlfwdtrack
120121
{
121-
DECLARE_SOA_COLUMN(PtMatchedMCHMID, ptMatchedMCHMID, float); //! pt of MCH-MID track in MFT-MCH-MID track at PV
122-
DECLARE_SOA_COLUMN(EtaMatchedMCHMID, etaMatchedMCHMID, float); //! eta of MCH-MID track in MFT-MCH-MID track at PV
123-
DECLARE_SOA_COLUMN(PhiMatchedMCHMID, phiMatchedMCHMID, float); //! phi of MCH-MID track in MFT-MCH-MID track at PV
124-
DECLARE_SOA_COLUMN(XMatchedMCHMIDatMP, xMatchedMCHMIDatMP, float); //! x of MCH-MID track in MFT-MCH-MID track at matching plane
125-
DECLARE_SOA_COLUMN(YMatchedMCHMIDatMP, yMatchedMCHMIDatMP, float); //! y of MCH-MID track in MFT-MCH-MID track at matching plane
126-
DECLARE_SOA_COLUMN(XMatchedMFTatMP, xMatchedMFTatMP, float); //! x of MFT track in MFT-MCH-MID track at matching plane
127-
DECLARE_SOA_COLUMN(YMatchedMFTatMP, yMatchedMFTatMP, float); //! y of MFT track in MFT-MCH-MID track at matching plane
128-
DECLARE_SOA_COLUMN(Sign, sign, int8_t); //!
129-
DECLARE_SOA_COLUMN(Chi2MFT, chi2MFT, float); //! chi2 of MFT standalone track
122+
// DECLARE_SOA_COLUMN(Signed1PtMFTMCHMIDatPV, signed1PtMFTMCHMIDatPV, float); //! pt of MCH-MID track in MFT-MCH-MID track at PV
123+
// DECLARE_SOA_COLUMN(EtaMFTMCHMIDatPV, etaMFTMCHMIDatPV, float); //! eta of MCH-MID track in MFT-MCH-MID track at PV
124+
// DECLARE_SOA_COLUMN(PhiMFTMCHMIDatPV, phiMFTMCHMIDatPV, float); //! phi of MCH-MID track in MFT-MCH-MID track at PV
125+
//
126+
// DECLARE_SOA_COLUMN(Signed1PtMCHMIDatPV, signed1PtMCHMIDatPV, float); //! pt of MCH-MID track in MFT-MCH-MID track at PV
127+
// DECLARE_SOA_COLUMN(EtaMCHMIDatPV, etaMCHMIDatPV, float); //! eta of MCH-MID track in MFT-MCH-MID track at PV
128+
// DECLARE_SOA_COLUMN(PhiMCHMIDatPV, phiMCHMIDatPV, float); //! phi of MCH-MID track in MFT-MCH-MID track at PV
129+
130+
DECLARE_SOA_COLUMN(Signed1PtMCHMIDatMP, signed1PtMCHMIDatMP, float); //! pt of MCH-MID track in MFT-MCH-MID track at MP
131+
DECLARE_SOA_COLUMN(EtaMCHMIDatMP, etaMCHMIDatMP, float); //! eta of MCH-MID track in MFT-MCH-MID track at MP
132+
DECLARE_SOA_COLUMN(PhiMCHMIDatMP, phiMCHMIDatMP, float); //! phi of MCH-MID track in MFT-MCH-MID track at MP
133+
134+
DECLARE_SOA_COLUMN(Signed1PtMFTatMP, signed1PtMFTatMP, float); //! pt of MCH-MID track in MFT-MCH-MID track at MP
135+
DECLARE_SOA_COLUMN(EtaMFTatMP, etaMFTatMP, float); //! eta of MCH-MID track in MFT-MCH-MID track at MP
136+
DECLARE_SOA_COLUMN(PhiMFTatMP, phiMFTatMP, float); //! phi of MCH-MID track in MFT-MCH-MID track at MP
137+
138+
DECLARE_SOA_COLUMN(XMCHMIDatMP, xMCHMIDatMP, float); //! x of MCH-MID track in MFT-MCH-MID track at matching plane
139+
DECLARE_SOA_COLUMN(YMCHMIDatMP, yMCHMIDatMP, float); //! y of MCH-MID track in MFT-MCH-MID track at matching plane
140+
DECLARE_SOA_COLUMN(XErrMCHMIDatMP, xErrMCHMIDatMP, float); //! x error of MCH-MID track in MFT-MCH-MID track at matching plane
141+
DECLARE_SOA_COLUMN(YErrMCHMIDatMP, yErrMCHMIDatMP, float); //! y error of MCH-MID track in MFT-MCH-MID track at matching plane
142+
143+
DECLARE_SOA_COLUMN(XMFTatMP, xMFTatMP, float); //! x of MFT track in MFT-MCH-MID track at matching plane
144+
DECLARE_SOA_COLUMN(YMFTatMP, yMFTatMP, float); //! y of MFT track in MFT-MCH-MID track at matching plane
145+
DECLARE_SOA_COLUMN(XErrMFTatMP, xErrMFTatMP, float); //! x error of MFT track in MFT-MCH-MID track at matching plane
146+
DECLARE_SOA_COLUMN(YErrMFTatMP, yErrMFTatMP, float); //! y error of MFT track in MFT-MCH-MID track at matching plane
147+
148+
// DECLARE_SOA_COLUMN(Sign, sign, int8_t); //!
149+
DECLARE_SOA_COLUMN(Chi2MFT, chi2MFT, float); //! chi2/ndf of MFT track
150+
DECLARE_SOA_COLUMN(Chi2MCHMID, chi2MCHMID, float); //! chi2/ndf of MCH-MID track
151+
DECLARE_SOA_COLUMN(Chi2MFTMCHMID, chi2MFTMCHMID, float); //! chi2/ndf of MFT-MCH-MID track
130152
DECLARE_SOA_COLUMN(NClustersMFT, nClustersMFT, uint8_t); //!
131153
DECLARE_SOA_COLUMN(IsPrimary, isPrimary, bool); //!
132154
DECLARE_SOA_COLUMN(IsCorrectMatchMFTMCH, isCorrectMatchMFTMCH, bool); //!
133155
} // namespace emmlfwdtrack
134156

135157
DECLARE_SOA_TABLE_VERSIONED(EMFwdTracksForML_000, "AOD", "EMFWDTRKML", 0, //!
136-
o2::soa::Index<>, collision::PosZ, collision::NumContrib, evsel::NumTracksInTimeRange, evsel::SumAmpFT0CInTimeRange, emmltrack::HadronicRate,
137-
fwdtrack::TrackType, fwdtrack::Pt, fwdtrack::Eta, fwdtrack::Phi, emmlfwdtrack::Sign,
158+
o2::soa::Index<>, collision::NumContrib, mult::MultFT0C, evsel::NumTracksInTimeRange, evsel::SumAmpFT0CInTimeRange, emmltrack::HadronicRate,
159+
fwdtrack::TrackType,
160+
// emmlfwdtrack::Signed1PtMFTMCHMIDatPV, emmlfwdtrack::EtaMFTMCHMIDatPV, emmlfwdtrack::PhiMFTMCHMIDatPV,
161+
// emmlfwdtrack::Signed1PtMCHMIDatPV, emmlfwdtrack::EtaMCHMIDatPV, emmlfwdtrack::PhiMCHMIDatPV,
162+
163+
emmlfwdtrack::Signed1PtMCHMIDatMP, emmlfwdtrack::EtaMCHMIDatMP, emmlfwdtrack::PhiMCHMIDatMP,
164+
emmlfwdtrack::Signed1PtMFTatMP, emmlfwdtrack::EtaMFTatMP, emmlfwdtrack::PhiMFTatMP,
165+
emmlfwdtrack::XMCHMIDatMP, emmlfwdtrack::YMCHMIDatMP,
166+
// emmlfwdtrack::XErrMCHMIDatMP, emmlfwdtrack::YErrMCHMIDatMP,
167+
emmlfwdtrack::XMFTatMP, emmlfwdtrack::YMFTatMP,
168+
// emmlfwdtrack::XErrMFTatMP, emmlfwdtrack::YErrMFTatMP,
169+
138170
fwdtrack::FwdDcaX, fwdtrack::FwdDcaY,
139-
emmlfwdtrack::PtMatchedMCHMID, emmlfwdtrack::EtaMatchedMCHMID, emmlfwdtrack::PhiMatchedMCHMID,
140-
emmlfwdtrack::XMatchedMCHMIDatMP, emmlfwdtrack::YMatchedMCHMIDatMP,
141-
emmlfwdtrack::XMatchedMFTatMP, emmlfwdtrack::YMatchedMFTatMP,
142171
fwdtrack::NClusters, fwdtrack::PDca, fwdtrack::RAtAbsorberEnd,
143-
fwdtrack::Chi2, fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT,
144-
// fwdtrack::MCHBitMap, fwdtrack::MIDBitMap, fwdtrack::MIDBoards,
145-
fwdtrack::MFTClusterSizesAndTrackFlags, emmlfwdtrack::Chi2MFT, emmlfwdtrack::NClustersMFT, mcparticle::PdgCode, emmlfwdtrack::IsPrimary, emmlfwdtrack::IsCorrectMatchMFTMCH,
146-
emmltrack::PtGen, emmltrack::EtaGen, emmltrack::PhiGen);
172+
fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT,
173+
fwdtrack::MFTClusterSizesAndTrackFlags, emmlfwdtrack::Chi2MFTMCHMID, emmlfwdtrack::Chi2MCHMID, emmlfwdtrack::Chi2MFT, emmlfwdtrack::NClustersMFT,
174+
mcparticle::PdgCode, emmlfwdtrack::IsPrimary, emmlfwdtrack::IsCorrectMatchMFTMCH, mcparticle::Pt, mcparticle::Eta, mcparticle::Phi);
147175

148176
using EMFwdTracksForML = EMFwdTracksForML_000;
149177
// iterators

PWGEM/Dilepton/TableProducer/treeCreatorMuonML.cxx

Lines changed: 44 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "PWGEM/Dilepton/DataModel/lmeeMLTables.h"
1818

1919
#include "Common/CCDB/EventSelectionParams.h"
20+
#include "Common/CCDB/RCTSelectionFlags.h"
2021
#include "Common/CCDB/ctpRateFetcher.h"
2122
#include "Common/Core/CollisionTypeHelper.h"
2223
#include "Common/Core/RecoDecay.h"
@@ -66,7 +67,7 @@ using namespace o2::constants::physics;
6667
using namespace o2::aod::fwdtrackutils;
6768

6869
struct TreeCreatorMuonML {
69-
using MyCollisionsMC = soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels>;
70+
using MyCollisionsMC = soa::Join<aod::Collisions, aod::Mults, aod::EvSels, aod::McCollisionLabels>;
7071
using MyCollisionMC = MyCollisionsMC::iterator;
7172

7273
using MyFwdTracksMC = soa::Join<aod::FwdTracks, aod::FwdTracksCov, aod::McFwdTrackLabels>;
@@ -81,7 +82,6 @@ struct TreeCreatorMuonML {
8182
Configurable<std::string> ccdburl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
8283
Configurable<std::string> grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"};
8384
Configurable<std::string> geoPath{"geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"};
84-
// Configurable<std::string> irSource{"irSource", "ZNC hadronic", "Estimator of the interaction rate (Recommended: pp/OO --> T0VTX, Pb-Pb --> ZNC hadronic)"};
8585

8686
// for z shift for propagation
8787
Configurable<bool> cfgApplyZShiftFromCCDB{"cfgApplyZShiftFromCCDB", false, "flag to apply z shift"};
@@ -98,6 +98,11 @@ struct TreeCreatorMuonML {
9898
Configurable<bool> cfgRequireNoITSROFB{"cfgRequireNoITSROFB", false, "require no ITS readout frame border"};
9999
Configurable<bool> cfgRequireNoSameBunchPileup{"cfgRequireNoSameBunchPileup", false, "require no same bunch pileup in event cut"};
100100
Configurable<bool> cfgRequireGoodZvtxFT0vsPV{"cfgRequireGoodZvtxFT0vsPV", false, "require good Zvtx between FT0 vs. PV in event cut"};
101+
// for RCT
102+
o2::framework::Configurable<bool> cfgRequireGoodRCT{"cfgRequireGoodRCT", false, "require good detector flag in run condtion table"};
103+
o2::framework::Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT_muon_glo", "select 1 [CBT, CBT_hadronPID, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"};
104+
o2::framework::Configurable<bool> cfgCheckZDC{"cfgCheckZDC", false, "set ZDC flag for AA"};
105+
o2::framework::Configurable<bool> cfgTreatLimitedAcceptanceAsBad{"cfgTreatLimitedAcceptanceAsBad", false, "reject all events where the detectors relevant for the specified Runlist are flagged as LimitedAcceptance"};
101106
} eventCutGroup;
102107

103108
struct : ConfigurableGroup {
@@ -115,6 +120,7 @@ struct TreeCreatorMuonML {
115120
std::mt19937 engine;
116121
std::uniform_real_distribution<float> dist01;
117122

123+
o2::aod::rctsel::RCTFlagsChecker rctChecker;
118124
ctpRateFetcher mRateFetcher;
119125
std::string irSourceForCptFetcher{""};
120126

@@ -132,6 +138,7 @@ struct TreeCreatorMuonML {
132138
ccdb->setLocalObjectValidityChecking();
133139
ccdb->setFatalWhenNull(false);
134140
ccdbApi.init(ccdburl);
141+
rctChecker.init(eventCutGroup.cfgRCTLabel.value, eventCutGroup.cfgCheckZDC.value, eventCutGroup.cfgTreatLimitedAcceptanceAsBad.value);
135142

136143
addHistograms();
137144

@@ -319,7 +326,7 @@ struct TreeCreatorMuonML {
319326
float dcaXY = std::sqrt(dcaX * dcaX + dcaY * dcaY);
320327

321328
o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = propagateMuon(mchtrack, mchtrack, collision, propagationPoint::kToVertex, glMuonCutGroup.matchingZ, mBz, mZShift);
322-
float ptMatchedMCHMID = propmuonAtPV_Matched.getPt();
329+
// float ptMatchedMCHMID = propmuonAtPV_Matched.getPt();
323330
float etaMatchedMCHMID = propmuonAtPV_Matched.getEta();
324331
float phiMatchedMCHMID = propmuonAtPV_Matched.getPhi();
325332
// o2::math_utils::bringTo02Pi(phiMatchedMCHMID);
@@ -335,33 +342,43 @@ struct TreeCreatorMuonML {
335342
float pDCA = mchtrack.p() * dcaXY_Matched;
336343
float rAtAbsorberEnd = fwdtrack.rAtAbsorberEnd(); // this works only for GlobalMuonTrack
337344

338-
float xMatchedMFTatMP = 999.f;
339-
float yMatchedMFTatMP = 999.f;
340-
float xMatchedMCHMIDatMP = 999.f;
341-
float yMatchedMCHMIDatMP = 999.f;
345+
float xMFTatMP = 999.f, yMFTatMP = 999.f;
346+
float xMCHMIDatMP = 999.f, yMCHMIDatMP = 999.f;
347+
float signed1PtMFTatMP = 999.f, etaMFTatMP = 999.f, phiMFTatMP = 999.f;
348+
float signed1PtMCHMIDatMP = 999.f, etaMCHMIDatMP = 999.f, phiMCHMIDatMP = 999.f;
342349

343350
if constexpr (withMFTCov) {
344351
auto mfttrackcov = mftCovs.rawIteratorAt(map_mfttrackcovs[mfttrack.globalIndex()]);
345352
o2::track::TrackParCovFwd mftsaAtMP = getTrackParCovFwdShift(mfttrack, mZShift, mfttrackcov); // values at innermost update
346353
mftsaAtMP.propagateToZhelix(glMuonCutGroup.matchingZ, mBz); // propagated to matching plane
347-
xMatchedMFTatMP = mftsaAtMP.getX();
348-
yMatchedMFTatMP = mftsaAtMP.getY();
354+
xMFTatMP = mftsaAtMP.getX();
355+
yMFTatMP = mftsaAtMP.getY();
356+
signed1PtMFTatMP = mftsaAtMP.getInvQPt();
357+
etaMFTatMP = mftsaAtMP.getEta();
358+
phiMFTatMP = RecoDecay::constrainAngle(mftsaAtMP.getPhi(), 0, 1U);
349359

350360
auto muonAtMP = propagateMuon(mchtrack, mchtrack, collision, propagationPoint::kToMatchingPlane, glMuonCutGroup.matchingZ, mBz, mZShift); // propagated to matching plane
351-
xMatchedMCHMIDatMP = muonAtMP.getX();
352-
yMatchedMCHMIDatMP = muonAtMP.getY();
361+
xMCHMIDatMP = muonAtMP.getX();
362+
yMCHMIDatMP = muonAtMP.getY();
363+
signed1PtMCHMIDatMP = mftsaAtMP.getInvQPt();
364+
etaMCHMIDatMP = muonAtMP.getEta();
365+
phiMCHMIDatMP = RecoDecay::constrainAngle(muonAtMP.getPhi(), 0, 1U);
353366
}
354367

355368
float deta = etaMatchedMCHMID - eta;
356369
float dphi = phiMatchedMCHMID - phi;
357370
o2::math_utils::bringToPMPi(dphi);
358371

359-
mltable(collision.posZ(), collision.numContrib(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), hadronicRate,
360-
fwdtrack.trackType(), pt, eta, phi, fwdtrack.sign(), dcaX, dcaY, ptMatchedMCHMID, etaMatchedMCHMID, phiMatchedMCHMID,
361-
xMatchedMCHMIDatMP, yMatchedMCHMIDatMP, xMatchedMFTatMP, yMatchedMFTatMP,
362-
fwdtrack.nClusters(), pDCA, rAtAbsorberEnd, chi2, fwdtrack.chi2MatchMCHMID(), fwdtrack.chi2MatchMCHMFT(),
363-
// fwdtrack.mchBitMap(), fwdtrack.midBitMap(), fwdtrack.midBoards(),
364-
mfttrack.mftClusterSizesAndTrackFlags(), chi2mft, mfttrack.nClusters(), pdgCode, isPrimary, isMatched,
372+
mltable(collision.numContrib(), collision.multFT0C(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), hadronicRate,
373+
fwdtrack.trackType(),
374+
signed1PtMFTatMP, etaMFTatMP, phiMFTatMP,
375+
signed1PtMCHMIDatMP, etaMCHMIDatMP, phiMCHMIDatMP,
376+
xMCHMIDatMP, yMCHMIDatMP,
377+
xMFTatMP, yMFTatMP,
378+
dcaX, dcaY,
379+
fwdtrack.nClusters(), pDCA, rAtAbsorberEnd, fwdtrack.chi2MatchMCHMID(), fwdtrack.chi2MatchMCHMFT(),
380+
mfttrack.mftClusterSizesAndTrackFlags(), chi2, mchtrack.chi2(), chi2mft, mfttrack.nClusters(),
381+
pdgCode, isPrimary, isMatched,
365382
mcParticle_MCHMID.pt(), mcParticle_MCHMID.eta(), mcParticle_MCHMID.phi());
366383

367384
fRegistry.fill(HIST("hMuonType"), fwdtrack.trackType());
@@ -409,6 +426,11 @@ struct TreeCreatorMuonML {
409426
if (!isSelectedCollision(collision)) {
410427
continue;
411428
}
429+
430+
if (eventCutGroup.cfgRequireGoodRCT && !rctChecker.checkTable(collision)) {
431+
continue;
432+
}
433+
412434
float hadronicRate = mRateFetcher.fetch(ccdb.service, bc.timestamp(), bc.runNumber(), irSourceForCptFetcher) * 1.e-3; // kHz
413435

414436
auto fwdtracks_coll = fwdtracks.sliceBy(perCollision, collision.globalIndex());
@@ -442,6 +464,11 @@ struct TreeCreatorMuonML {
442464
if (!isSelectedCollision(collision)) {
443465
continue;
444466
}
467+
468+
if (eventCutGroup.cfgRequireGoodRCT && !rctChecker.checkTable(collision)) {
469+
continue;
470+
}
471+
445472
float hadronicRate = mRateFetcher.fetch(ccdb.service, bc.timestamp(), bc.runNumber(), irSourceForCptFetcher) * 1.e-3; // kHz
446473

447474
auto fwdtracks_coll = fwdtracks.sliceBy(perCollision, collision.globalIndex());

PWGEM/Dilepton/Tasks/taggingHFE.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1096,7 +1096,7 @@ struct taggingHFE {
10961096
if (isXi(cascade) && isPion(bachelor)) {
10971097
xiMinusIds.emplace_back(cascade.globalIndex());
10981098
}
1099-
if (isOmega(cascade) && isKaon(bachelor)) {
1099+
if (isOmega(cascade) && isKaonBachelor(bachelor)) {
11001100
omegaMinusIds.emplace_back(cascade.globalIndex());
11011101
}
11021102
} else { // Xi+ or Omega+

0 commit comments

Comments
 (0)