Skip to content

Commit f2b6a7a

Browse files
authored
[PWGEM/Dilepton] update treeCreatorMuonML.cxx (#15971)
1 parent e642a04 commit f2b6a7a

3 files changed

Lines changed: 20 additions & 3 deletions

File tree

PWGEM/Dilepton/DataModel/lmeeMLTables.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ DECLARE_SOA_COLUMN(IsPrimaryMCHMID, isPrimaryMCHMID, bool); //!
162162
DECLARE_SOA_COLUMN(IsCorrectMatch, isCorrectMatch, bool); //!
163163
DECLARE_SOA_COLUMN(PdgCodeMFT, pdgCodeMFT, int); //!
164164
DECLARE_SOA_COLUMN(PdgCodeMCHMID, pdgCodeMCHMID, int); //!
165+
DECLARE_SOA_COLUMN(MatchMCHTrackId, mchTrackId, int); //!
166+
DECLARE_SOA_COLUMN(DFId, dfId, uint64_t); //!
165167

166168
DECLARE_SOA_COLUMN(MultMFT, multMFT, uint16_t); //! number of MFTsa tracks per collision
167169
} // namespace emmlfwdtrack
@@ -178,7 +180,7 @@ DECLARE_SOA_TABLE(EMFwdTracksForML, "AOD", "EMFWDTRKML", //!
178180
fwdtrack::Chi2MatchMCHMFT,
179181
emmlfwdtrack::PdgCodeMFT, emmlfwdtrack::IsPrimaryMFT,
180182
emmlfwdtrack::PdgCodeMCHMID, emmlfwdtrack::IsPrimaryMCHMID,
181-
emmlfwdtrack::IsCorrectMatch);
183+
emmlfwdtrack::IsCorrectMatch, emmlfwdtrack::MatchMCHTrackId, emmlfwdtrack::DFId);
182184

183185
// iterators
184186
using EMFwdTrackForML = EMFwdTracksForML::iterator;

PWGEM/Dilepton/TableProducer/treeCreatorMuonML.cxx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,10 @@ struct TreeCreatorMuonML {
266266

267267
std::unordered_map<int, int> map_mfttrackcovs;
268268

269-
void processWithMFTCov(MyCollisionsMC const& collisions, aod::BCsWithTimestamps const&, MyFwdTracksMC const&, MyMFTTracksMC const& mfttracks, aod::MFTTracksCov const& mftCovs, aod::McParticles const&, aod::McCollisions const&)
269+
void processWithMFTCov(MyCollisionsMC const& collisions, aod::BCsWithTimestamps const&, MyFwdTracksMC const&, MyMFTTracksMC const& mfttracks, aod::MFTTracksCov const& mftCovs, aod::McParticles const&, aod::McCollisions const&, aod::Origins const& origins)
270270
{
271+
uint64_t dfId = origins.iteratorAt(0).dataframeID();
272+
271273
for (const auto& mfttrackCov : mftCovs) {
272274
map_mfttrackcovs[mfttrackCov.matchMFTTrackId()] = mfttrackCov.globalIndex();
273275
}
@@ -378,7 +380,7 @@ struct TreeCreatorMuonML {
378380
fwdtrack.chi2MatchMCHMFT(),
379381
mcParticle_MFT.pdgCode(), isPrimary_MFT,
380382
mcParticle_MCHMID.pdgCode(), isPrimary_MCHMID,
381-
isMatched);
383+
isMatched, mchtrack.globalIndex(), dfId);
382384

383385
trackErrTable(tglErrMFTatMP, phiErrMFTatMP, xErrMFTatMP, yErrMFTatMP,
384386
tglErrMCHMIDatMP, phiErrMCHMIDatMP, xErrMCHMIDatMP, yErrMCHMIDatMP);

PWGEM/Dilepton/Tasks/taggingHFE.cxx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
#include <cmath>
5656
#include <cstdint>
5757
#include <iostream>
58+
#include <random>
5859
#include <string>
5960
#include <string_view>
6061
#include <utility>
@@ -94,6 +95,7 @@ struct taggingHFE {
9495
Configurable<bool> skipGRPOquery{"skipGRPOquery", true, "skip grpo query"};
9596
Configurable<float> d_bz_input{"d_bz_input", -999, "bz field in kG, -999 is automatic"};
9697
Configurable<int> cfgPdgLepton{"cfgPdgLepton", 11, "pdg code of desired lepton: 11 or 13"};
98+
Configurable<float> cfgDownSampling{"cfgDownSampling", 1.1, "down sampling for fake matches"};
9799

98100
struct : ConfigurableGroup {
99101
std::string prefix = "dcaFitterGroup_eK";
@@ -267,6 +269,10 @@ struct taggingHFE {
267269
ccdb->setLocalObjectValidityChecking();
268270
ccdb->setFatalWhenNull(false);
269271

272+
std::random_device seed_gen;
273+
engine = std::mt19937(seed_gen());
274+
dist01 = std::uniform_real_distribution<float>(0.0f, 1.0f);
275+
270276
fitter_eK.setPropagateToPCA(true);
271277
fitter_eK.setMaxR(20.f);
272278
fitter_eK.setMinParamChange(1e-3);
@@ -303,6 +309,9 @@ struct taggingHFE {
303309
int mRunNumber;
304310
float d_bz;
305311
Service<o2::ccdb::BasicCCDBManager> ccdb;
312+
std::mt19937 engine;
313+
std::uniform_real_distribution<float> dist01;
314+
306315
// o2::base::Propagator::MatCorrType matCorr = o2::base::Propagator::MatCorrType::USEMatCorrNONE;
307316
o2::base::Propagator::MatCorrType matCorr = o2::base::Propagator::MatCorrType::USEMatCorrLUT;
308317
const o2::dataformats::MeanVertexObject* mMeanVtx = nullptr;
@@ -970,6 +979,10 @@ struct taggingHFE {
970979
mVtx.setPos({collision.posX(), collision.posY(), collision.posZ()});
971980
mVtx.setCov(collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ());
972981

982+
if (dist01(engine) > cfgDownSampling) { // random sampling, if necessary
983+
continue;
984+
}
985+
973986
const auto& trackIdsThisCollision = trackIndices.sliceBy(trackIndicesPerCollision, collision.globalIndex());
974987
electronIds.reserve(trackIdsThisCollision.size());
975988
positronIds.reserve(trackIdsThisCollision.size());

0 commit comments

Comments
 (0)