Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include "Framework/runDataProcessing.h"
#include "ReconstructionDataFormats/Track.h"

#include <iostream>

Check failure on line 28 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[include-iostream]

Do not include iostream. Use O2 logging instead.
#include <map>
#include <random>
#include <vector>
Expand Down Expand Up @@ -90,10 +90,10 @@
bool is_lepton = false, is_anti_lepton = false;
for (int d = mctrack.daughtersIds()[0]; d <= mctrack.daughtersIds()[1]; ++d) {
auto daughter = mcTracks.iteratorAt(d);
if (daughter.pdgCode() == 11 && (min_eta_gen_primary < daughter.eta() && daughter.eta() < max_eta_gen_primary)) {

Check failure on line 93 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
is_lepton = true;
}
if (daughter.pdgCode() == -11 && (min_eta_gen_primary < daughter.eta() && daughter.eta() < max_eta_gen_primary)) {

Check failure on line 96 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
is_anti_lepton = true;
}
}
Expand All @@ -114,10 +114,10 @@
bool is_lepton = false, is_anti_lepton = false;
for (int d = mctrack.daughtersIds()[0]; d <= mctrack.daughtersIds()[1]; ++d) {
auto daughter = mcTracks.iteratorAt(d);
if (daughter.pdgCode() == 13 && (min_eta_gen_primary_fwd < daughter.eta() && daughter.eta() < max_eta_gen_primary_fwd)) {

Check failure on line 117 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
is_lepton = true;
}
if (daughter.pdgCode() == -13 && (min_eta_gen_primary_fwd < daughter.eta() && daughter.eta() < max_eta_gen_primary_fwd)) {

Check failure on line 120 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
is_anti_lepton = true;
}
}
Expand All @@ -135,9 +135,9 @@
Preslice<aod::EMPrimaryMuons> perCollision_mu = aod::emprimarymuon::collisionId;

// apply rapidity cut for electrons
Partition<aod::McParticles> mcelectrons = nabs(o2::aod::mcparticle::pdgCode) == 11 && min_eta_gen_primary < o2::aod::mcparticle::eta && o2::aod::mcparticle::eta < max_eta_gen_primary;

Check failure on line 138 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
Partition<aod::McParticles> mcmuons = nabs(o2::aod::mcparticle::pdgCode) == 13 && min_eta_gen_primary_fwd < o2::aod::mcparticle::eta && o2::aod::mcparticle::eta < max_eta_gen_primary_fwd;

Check failure on line 139 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
Partition<aod::McParticles> mcvectormesons = o2::aod::mcparticle::pdgCode == 223 || o2::aod::mcparticle::pdgCode == 333;

Check failure on line 140 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.

template <uint8_t system, typename TTracks, typename TFwdTracks, typename TMFTTracks, typename TPCMs, typename TPCMLegs, typename TEMPrimaryElectrons, typename TEMPrimaryMuons>
void skimmingMC(MyCollisionsMC const& collisions, aod::BCs const&, aod::McCollisions const& mcCollisions, aod::McParticles const& mcTracks, TTracks const& o2tracks, TFwdTracks const& o2fwdtracks, TMFTTracks const&, TPCMs const& v0photons, TPCMLegs const&, TEMPrimaryElectrons const& emprimaryelectrons, TEMPrimaryMuons const& emprimarymuons)
Expand Down Expand Up @@ -323,7 +323,7 @@
// TODO: remove this check as soon as issues with MC production are fixed
if (d < mcTracks.size()) { // protect against bad daughter indices
auto daughter = mcTracks.iteratorAt(d);
if (std::abs(daughter.pdgCode()) == 11 || std::abs(daughter.pdgCode()) == 13) {

Check failure on line 326 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
is_lepton_involved = true;
break;
}
Expand Down Expand Up @@ -531,13 +531,13 @@

// mc label for tracks registered in MFT in global muons
if (o2track.matchMFTTrackId() > -1) {
const auto& o2mfttrack = o2track.template matchMFTTrack_as<TMFTTracks>();
auto o2mfttrack = o2track.template matchMFTTrack_as<TMFTTracks>();
if (!o2mfttrack.has_mcParticle()) {
emmftmclabels(-1, 0);
break;
}

const auto& mco2mfttrack = o2mfttrack.template mcParticle_as<aod::McParticles>();
auto mco2mfttrack = o2mfttrack.template mcParticle_as<aod::McParticles>();
if (!(fNewLabels.find(mco2mfttrack.globalIndex()) != fNewLabels.end())) {
fNewLabels[mco2mfttrack.globalIndex()] = fCounters[0];
fNewLabelsReversed[fCounters[0]] = mco2mfttrack.globalIndex();
Expand Down Expand Up @@ -644,7 +644,7 @@
continue;
}

if (mctrack.pdgCode() == 223) {

Check failure on line 647 in PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
if (dist01(engine) < down_scaling_omega) {
emmcgenvms(fEventLabels[mcCollision.globalIndex()], mctrack.pdgCode(), mctrack.flags(), mctrack.px(), mctrack.py(), mctrack.pz(), mctrack.e(), down_scaling_omega.value);
}
Expand Down
61 changes: 34 additions & 27 deletions PWGEM/Dilepton/TableProducer/skimmerPrimaryMuon.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ struct skimmerPrimaryMuon {
const double centerMFT[3] = {0, 0, -61.4};
o2::field::MagneticField* field = static_cast<o2::field::MagneticField*>(TGeoGlobalMagField::Instance()->GetField());
mBz = field->getBz(centerMFT); // Get field at centre of MFT
LOGF(info, "Bz at center of MFT = %f kZG", mBz); // this is dummy comment. // dummy2
LOGF(info, "Bz at center of MFT = %f kZG", mBz);
}

void addHistograms()
Expand Down Expand Up @@ -213,7 +213,7 @@ struct skimmerPrimaryMuon {
return true;
}

template <bool withMFTCov, typename TFwdTracks, typename TMFTTracks, typename TCollision, typename TFwdTrack, typename TMFTTracksCov>
template <bool isMC, bool withMFTCov, typename TFwdTracks, typename TMFTTracks, typename TCollision, typename TFwdTrack, typename TMFTTracksCov>
void fillFwdTrackTable(TCollision const& collision, TFwdTrack fwdtrack, TMFTTracksCov const& mftCovs, const bool isAmbiguous)
{
if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.chi2MatchMCHMFT() > maxMatchingChi2MCHMFT) {
Expand Down Expand Up @@ -284,8 +284,15 @@ struct skimmerPrimaryMuon {
return;
}

const auto& mchtrack = fwdtrack.template matchMCHTrack_as<TFwdTracks>(); // MCH-MID
const auto& mfttrack = fwdtrack.template matchMFTTrack_as<TMFTTracks>(); // MFTsa
auto mchtrack = fwdtrack.template matchMCHTrack_as<TFwdTracks>(); // MCH-MID
auto mfttrack = fwdtrack.template matchMFTTrack_as<TMFTTracks>(); // MFTsa

if constexpr (isMC) {
if (!mfttrack.has_mcParticle()) {
return;
}
}

nClustersMFT = mfttrack.nClusters();
mftClusterSizesAndTrackFlags = mfttrack.mftClusterSizesAndTrackFlags();
ndf_mchmft = 2.f * (mchtrack.nClusters() + nClustersMFT) - 5.f;
Expand Down Expand Up @@ -510,7 +517,7 @@ struct skimmerPrimaryMuon {
continue;
}

fillFwdTrackTable<false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, false);
fillFwdTrackTable<false, false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, false);
} // end of fwdtrack loop
} // end of collision loop

Expand Down Expand Up @@ -549,7 +556,7 @@ struct skimmerPrimaryMuon {
continue;
}

fillFwdTrackTable<false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
fillFwdTrackTable<false, false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
} // end of fwdtrack loop
} // end of collision loop

Expand Down Expand Up @@ -592,7 +599,7 @@ struct skimmerPrimaryMuon {
continue;
}

fillFwdTrackTable<true, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
fillFwdTrackTable<false, true, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
} // end of fwdtrack loop
} // end of collision loop
mapAmb.clear();
Expand Down Expand Up @@ -627,7 +634,7 @@ struct skimmerPrimaryMuon {
continue;
}

fillFwdTrackTable<false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, false);
fillFwdTrackTable<false, false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, false);
} // end of fwdtrack loop
} // end of collision loop
map_mfttrackcovs.clear();
Expand Down Expand Up @@ -667,7 +674,7 @@ struct skimmerPrimaryMuon {
continue;
}

fillFwdTrackTable<false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
fillFwdTrackTable<false, false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
} // end of fwdtrack loop
} // end of collision loop
mapAmb.clear();
Expand All @@ -686,13 +693,13 @@ struct skimmerPrimaryMuon {

std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
for (const auto& fwdtrack : fwdtracks) {
const auto& fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
mapAmb[fwdtrack.globalIndex()] = fwdtrackIdsPerFwdTrack.size() > 1;
// LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]);
} // end of fwdtrack loop

for (const auto& collision : collisions) {
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
initCCDB(bc);
if (!collision.isSelected()) {
continue;
Expand All @@ -701,17 +708,17 @@ struct skimmerPrimaryMuon {
continue;
}

const auto& fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
for (const auto& fwdtrackId : fwdtrackIdsThisCollision) {
const auto& fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracks>();
auto fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracks>();
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
continue;
}
if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find(vec_min_chi2MatchMCHMFT.begin(), vec_min_chi2MatchMCHMFT.end(), std::make_tuple(fwdtrack.globalIndex(), fwdtrack.matchMCHTrackId(), fwdtrack.matchMFTTrackId())) == vec_min_chi2MatchMCHMFT.end()) {
continue;
}

fillFwdTrackTable<true, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
fillFwdTrackTable<false, true, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
} // end of fwdtrack loop
} // end of collision loop
mapAmb.clear();
Expand All @@ -726,7 +733,7 @@ struct skimmerPrimaryMuon {
findBestMatchPerMCHMID(fwdtracks);

for (const auto& collision : collisions) {
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
initCCDB(bc);
if (!collision.isSelected()) {
continue;
Expand All @@ -735,7 +742,7 @@ struct skimmerPrimaryMuon {
continue;
}

const auto& fwdtracks_per_coll = fwdtracks.sliceBy(perCollision, collision.globalIndex());
auto fwdtracks_per_coll = fwdtracks.sliceBy(perCollision, collision.globalIndex());
for (const auto& fwdtrack : fwdtracks_per_coll) {
if (!fwdtrack.has_mcParticle()) {
continue;
Expand All @@ -747,7 +754,7 @@ struct skimmerPrimaryMuon {
continue;
}

fillFwdTrackTable<false, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr, false);
fillFwdTrackTable<true, false, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr, false);
} // end of fwdtrack loop
} // end of collision loop
map_mfttrackcovs.clear();
Expand All @@ -762,13 +769,13 @@ struct skimmerPrimaryMuon {

std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
for (const auto& fwdtrack : fwdtracks) {
const auto& fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
mapAmb[fwdtrack.globalIndex()] = fwdtrackIdsPerFwdTrack.size() > 1;
// LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]);
} // end of fwdtrack loop

for (const auto& collision : collisions) {
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
initCCDB(bc);
if (!collision.isSelected()) {
continue;
Expand All @@ -777,9 +784,9 @@ struct skimmerPrimaryMuon {
continue;
}

const auto& fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
for (const auto& fwdtrackId : fwdtrackIdsThisCollision) {
const auto& fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracksMC>();
auto fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracksMC>();
if (!fwdtrack.has_mcParticle()) {
continue;
}
Expand All @@ -790,7 +797,7 @@ struct skimmerPrimaryMuon {
continue;
}

fillFwdTrackTable<false, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
fillFwdTrackTable<true, false, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
} // end of fwdtrack loop
} // end of collision loop
mapAmb.clear();
Expand All @@ -809,13 +816,13 @@ struct skimmerPrimaryMuon {

std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
for (const auto& fwdtrack : fwdtracks) {
const auto& fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
mapAmb[fwdtrack.globalIndex()] = fwdtrackIdsPerFwdTrack.size() > 1;
// LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]);
} // end of fwdtrack loop

for (const auto& collision : collisions) {
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
initCCDB(bc);
if (!collision.isSelected()) {
continue;
Expand All @@ -824,9 +831,9 @@ struct skimmerPrimaryMuon {
continue;
}

const auto& fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
for (const auto& fwdtrackId : fwdtrackIdsThisCollision) {
const auto& fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracksMC>();
auto fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracksMC>();
if (!fwdtrack.has_mcParticle()) {
continue;
}
Expand All @@ -837,7 +844,7 @@ struct skimmerPrimaryMuon {
continue;
}

fillFwdTrackTable<true, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
fillFwdTrackTable<true, true, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
} // end of fwdtrack loop
} // end of collision loop
mapAmb.clear();
Expand Down
Loading