Skip to content

Commit 7fd7969

Browse files
dsekihatalibuild
andauthored
[PWGEM/Dilepton] update treeCreatorMuonML.cxx (#14854)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 89b413b commit 7fd7969

File tree

1 file changed

+52
-15
lines changed

1 file changed

+52
-15
lines changed

PWGEM/Dilepton/TableProducer/treeCreatorMuonML.cxx

Lines changed: 52 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,11 @@
1414
// This code will create data table for inputs to machine learning for electrons.
1515
// Please write to: daiki.sekihata@cern.ch
1616

17-
#include "Common/Core/CollisionTypeHelper.cxx"
18-
1917
#include "PWGEM/Dilepton/DataModel/lmeeMLTables.h"
2018

2119
#include "Common/CCDB/RCTSelectionFlags.h"
2220
#include "Common/CCDB/ctpRateFetcher.h"
21+
#include "Common/Core/CollisionTypeHelper.h"
2322
#include "Common/Core/RecoDecay.h"
2423
#include "Common/Core/TrackSelection.h"
2524
#include "Common/Core/fwdtrackUtilities.h"
@@ -252,7 +251,7 @@ struct TreeCreatorMuonML {
252251
return true;
253252
}
254253

255-
template <typename TCollision, typename TFwdTrack, typename TFwdTracks, typename TMFTTracks, typename TMFTTracksCov>
254+
template <bool withMFTCov, typename TCollision, typename TFwdTrack, typename TFwdTracks, typename TMFTTracks, typename TMFTTracksCov>
256255
bool fillFwdTrackTable(TCollision const& collision, TFwdTrack const& fwdtrack, TFwdTracks const&, TMFTTracks const&, TMFTTracksCov const& mftCovs, const float hadronicRate)
257256
{
258257
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) {
@@ -325,15 +324,22 @@ struct TreeCreatorMuonML {
325324
float pDCA = mchtrack.p() * dcaXY_Matched;
326325
float rAtAbsorberEnd = fwdtrack.rAtAbsorberEnd(); // this works only for GlobalMuonTrack
327326

328-
auto mfttrackcov = mftCovs.rawIteratorAt(map_mfttrackcovs[mfttrack.globalIndex()]);
329-
o2::track::TrackParCovFwd mftsaAtMP = getTrackParCovFwdShift(mfttrack, mZShift, mfttrackcov); // values at innermost update
330-
mftsaAtMP.propagateToZhelix(glMuonCutGroup.matchingZ, mBz); // propagated to matching plane
331-
float xMatchedMFTatMP = mftsaAtMP.getX();
332-
float yMatchedMFTatMP = mftsaAtMP.getY();
333-
334-
auto muonAtMP = propagateMuon(mchtrack, mchtrack, collision, propagationPoint::kToMatchingPlane, glMuonCutGroup.matchingZ, mBz, mZShift); // propagated to matching plane
335-
float xMatchedMCHMIDatMP = muonAtMP.getX();
336-
float yMatchedMCHMIDatMP = muonAtMP.getY();
327+
float xMatchedMFTatMP = 999.f;
328+
float yMatchedMFTatMP = 999.f;
329+
float xMatchedMCHMIDatMP = 999.f;
330+
float yMatchedMCHMIDatMP = 999.f;
331+
332+
if constexpr (withMFTCov) {
333+
auto mfttrackcov = mftCovs.rawIteratorAt(map_mfttrackcovs[mfttrack.globalIndex()]);
334+
o2::track::TrackParCovFwd mftsaAtMP = getTrackParCovFwdShift(mfttrack, mZShift, mfttrackcov); // values at innermost update
335+
mftsaAtMP.propagateToZhelix(glMuonCutGroup.matchingZ, mBz); // propagated to matching plane
336+
xMatchedMFTatMP = mftsaAtMP.getX();
337+
yMatchedMFTatMP = mftsaAtMP.getY();
338+
339+
auto muonAtMP = propagateMuon(mchtrack, mchtrack, collision, propagationPoint::kToMatchingPlane, glMuonCutGroup.matchingZ, mBz, mZShift); // propagated to matching plane
340+
xMatchedMCHMIDatMP = muonAtMP.getX();
341+
yMatchedMCHMIDatMP = muonAtMP.getY();
342+
}
337343

338344
float deta = etaMatchedMCHMID - eta;
339345
float dphi = phiMatchedMCHMID - phi;
@@ -374,7 +380,7 @@ struct TreeCreatorMuonML {
374380
Preslice<aod::FwdTracks> perCollision = o2::aod::fwdtrack::collisionId;
375381

376382
std::unordered_map<int, int> map_mfttrackcovs;
377-
void processMatchingMFT(MyCollisionsMC const& collisions, aod::BCsWithTimestamps const&, MyFwdTracksMC const& fwdtracks, MyMFTTracksMC const& mfttracks, aod::MFTTracksCov const& mftCovs, aod::McParticles const&, aod::McCollisions const&)
383+
void processWithMFTCov(MyCollisionsMC const& collisions, aod::BCsWithTimestamps const&, MyFwdTracksMC const& fwdtracks, MyMFTTracksMC const& mfttracks, aod::MFTTracksCov const& mftCovs, aod::McParticles const&, aod::McCollisions const&)
378384
{
379385
for (const auto& mfttrackConv : mftCovs) {
380386
map_mfttrackcovs[mfttrackConv.matchMFTTrackId()] = mfttrackConv.globalIndex();
@@ -402,14 +408,45 @@ struct TreeCreatorMuonML {
402408
continue;
403409
}
404410

405-
fillFwdTrackTable(collision, fwdtrack, fwdtracks, mfttracks, mftCovs, hadronicRate);
411+
fillFwdTrackTable<true>(collision, fwdtrack, fwdtracks, mfttracks, mftCovs, hadronicRate);
406412

407413
} // end of fwdtrack loop
408414
} // end of collision loop
409415

410416
map_mfttrackcovs.clear();
411417
}
412-
PROCESS_SWITCH(TreeCreatorMuonML, processMatchingMFT, "produce ML input for single track level", true);
418+
PROCESS_SWITCH(TreeCreatorMuonML, processWithMFTCov, "produce ML input for single track level", true);
419+
420+
void processWithoutMFTCov(MyCollisionsMC const& collisions, aod::BCsWithTimestamps const&, MyFwdTracksMC const& fwdtracks, MyMFTTracksMC const& mfttracks, aod::McParticles const&, aod::McCollisions const&)
421+
{
422+
for (const auto& collision : collisions) {
423+
auto bc = collision.template foundBC_as<aod::BCsWithTimestamps>();
424+
initCCDB(bc);
425+
426+
if (!collision.has_mcCollision()) {
427+
continue;
428+
}
429+
430+
if (!isSelectedCollision(collision)) {
431+
continue;
432+
}
433+
float hadronicRate = mRateFetcher.fetch(ccdb.service, bc.timestamp(), bc.runNumber(), irSourceForCptFetcher) * 1.e-3; // kHz
434+
435+
auto fwdtracks_coll = fwdtracks.sliceBy(perCollision, collision.globalIndex());
436+
for (const auto& fwdtrack : fwdtracks_coll) {
437+
if (!fwdtrack.has_mcParticle()) {
438+
continue;
439+
}
440+
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) {
441+
continue;
442+
}
443+
444+
fillFwdTrackTable<false>(collision, fwdtrack, fwdtracks, mfttracks, nullptr, hadronicRate);
445+
446+
} // end of fwdtrack loop
447+
} // end of collision loop
448+
}
449+
PROCESS_SWITCH(TreeCreatorMuonML, processWithoutMFTCov, "produce ML input for single track level", false);
413450
};
414451

415452
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)