Skip to content

Commit c5caa74

Browse files
committed
[PWGEM/Dilepton] update taggingHFE.cxx
1 parent b362175 commit c5caa74

3 files changed

Lines changed: 30 additions & 32 deletions

File tree

PWGEM/Dilepton/DataModel/lmeeMLTables.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,13 +211,14 @@ DECLARE_SOA_COLUMN(ImpParCYYL, impParCYYL, float); //! sigma of i
211211
DECLARE_SOA_COLUMN(ImpParCZYL, impParCZYL, float); //! sigma of impact parameter for lepton, correlaion term
212212
DECLARE_SOA_COLUMN(ImpParCZZL, impParCZZL, float); //! sigma of impact parameter for lepton in Z
213213
DECLARE_SOA_COLUMN(PdgCodeMother, pdgCodeMother, int); //! pdg code of mother of lepton
214+
DECLARE_SOA_COLUMN(IsCorrectCollision, isCorrectCollision, bool); //! LH pair is associated to correct collision.
214215
} // namespace emmltrack
215216

216217
DECLARE_SOA_TABLE(EMMLLeptons, "AOD", "EMMLLEPTON", //!
217218
o2::soa::Index<>, collision::NumContrib, evsel::NumTracksInTimeRange, evsel::SumAmpFT0CInTimeRange, emmlevent::SubGeneratorId,
218219
emmltrack::Signed1PtL, emmltrack::EtaL,
219220
emmltrack::ImpParXYL, emmltrack::ImpParZL, emmltrack::ImpParCYYL, emmltrack::ImpParCZYL, emmltrack::ImpParCZZL,
220-
emmltrack::IsMotherFromBeauty, emmltrack::PdgCodeMother);
221+
emmltrack::IsMotherFromBeauty, emmltrack::PdgCodeMother, emmltrack::IsCorrectCollision);
221222
// iterators
222223
using EMMLLepton = EMMLLeptons::iterator;
223224

PWGEM/Dilepton/Tasks/associateMCcollision.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ struct associateMCcollision {
5959
void runMC(TMCCollisions const& mcCollisions, TCollisions const& collisions, TPreslice const& perMCCollision)
6060
{
6161

62-
for (auto& mcCollision : mcCollisions) {
62+
for (const auto& mcCollision : mcCollisions) {
6363
auto rec_colls_per_mccoll = collisions.sliceBy(perMCCollision, mcCollision.globalIndex());
6464
fRegistry.fill(HIST("hReccollsPerMCcoll"), rec_colls_per_mccoll.size());
6565
uint32_t maxNumContrib = 0;

PWGEM/Dilepton/Tasks/taggingHFE.cxx

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ struct taggingHFE {
238238
Configurable<float> cfg_min_rxy{"cfg_min_rxy", 0.1, "minimum V0 rxy in cascade"};
239239
Configurable<float> cfg_min_dcaxy_v0leg{"cfg_min_dcaxy_v0leg", 0.1, "min dca XY for v0 legs in cm"};
240240
Configurable<float> cfg_min_dcaxy_bachelor{"cfg_min_dcaxy_bachelor", 0.05, "min dca XY for bachelor in cm"};
241-
Configurable<float> cfg_min_dcaxy_v0{"cfg_min_dcaxy_v0", 0.05, "min dca XY for V0 in cm"};
241+
Configurable<float> cfg_min_dcaxy_v0{"cfg_min_dcaxy_v0", 0.0, "min dca XY for V0 in cm"};
242242
} cascadeCut;
243243

244244
struct : ConfigurableGroup {
@@ -311,7 +311,7 @@ struct taggingHFE {
311311
dist01 = std::uniform_real_distribution<float>(0.0f, 1.0f);
312312

313313
fitter_eK.setPropagateToPCA(true);
314-
fitter_eK.setMaxR(20.f);
314+
fitter_eK.setMaxR(200.f);
315315
fitter_eK.setMinParamChange(1e-3);
316316
fitter_eK.setMinRelChi2Change(0.9);
317317
fitter_eK.setMaxDZIni(1e9);
@@ -321,7 +321,7 @@ struct taggingHFE {
321321
fitter_eK.setMatCorrType(matCorr);
322322

323323
fitter_eV0.setPropagateToPCA(true);
324-
fitter_eV0.setMaxR(20.f);
324+
fitter_eV0.setMaxR(200.f);
325325
fitter_eV0.setMinParamChange(1e-3);
326326
fitter_eV0.setMinRelChi2Change(0.9);
327327
fitter_eV0.setMaxDZIni(1e9);
@@ -331,7 +331,7 @@ struct taggingHFE {
331331
fitter_eV0.setMatCorrType(matCorr);
332332

333333
fitter_eCascade.setPropagateToPCA(true);
334-
fitter_eCascade.setMaxR(20.f);
334+
fitter_eCascade.setMaxR(200.f);
335335
fitter_eCascade.setMinParamChange(1e-3);
336336
fitter_eCascade.setMinRelChi2Change(0.9);
337337
fitter_eCascade.setMaxDZIni(1e9);
@@ -441,6 +441,7 @@ struct taggingHFE {
441441
fRegistry.add("Generated/Lc/hsAcc", "pT-#eta acc.;p_{T,l} (GeV/c);p_{T,#Lambda} (GeV/c);#eta_{l};#eta_{#Lambda};", kTHnSparseF, {{100, 0, 10}, {100, 0, 10}, {100, -5, +5}, {100, -5, +5}}, false);
442442

443443
fRegistry.add("Electron/hs", "hs;p_{T} (GeV/c);#eta;#varphi (rad.)", kTHnSparseF, {{100, 0, 10}, {40, -1, 1}, {36, 0, 2 * M_PI}}, false);
444+
fRegistry.add("Electron/hDCA", "DCA xy vs. z;DCA_{xy} (cm);DCA_{z} (cm)", kTH2F, {{200, -1, 1}, {200, -1, 1}}, false);
444445
fRegistry.add("Electron/hTPCdEdx", "TPC dE/dx vs. pin;p_{in} (GeV/c);TPC dE/dx", kTH2F, {{1000, 0, 10}, {200, 0, 200}}, false);
445446
fRegistry.add("Electron/hTOFbeta", "TOF #beta vs. p;p_{pv} (GeV/c);TOF #beta", kTH2F, {{1000, 0, 10}, {600, 0, 1.2}}, false);
446447
fRegistry.addClone("Electron/", "Hadron/");
@@ -1419,6 +1420,7 @@ struct taggingHFE {
14191420
continue;
14201421
}
14211422

1423+
auto mcCollision_from_collision = collision.template mcCollision_as<aod::McCollisions>();
14221424
fRegistry.fill(HIST("Event/hCollisionCounter"), 0);
14231425

14241426
const float centralities[3] = {collision.centFT0M(), collision.centFT0A(), collision.centFT0C()};
@@ -1471,8 +1473,8 @@ struct taggingHFE {
14711473
if (mcCollision_ele.getSubGeneratorId() == eventCut.cfgRejectEventGenerator) {
14721474
continue;
14731475
}
1474-
14751476
fRegistry.fill(HIST("Electron/hs"), trackParCov.getPt(), trackParCov.getEta(), RecoDecay::constrainAngle(trackParCov.getPhi(), 0, 1U));
1477+
fRegistry.fill(HIST("Electron/hDCA"), dcaXY, dcaZ);
14761478
fRegistry.fill(HIST("Electron/hTPCdEdx"), track.tpcInnerParam(), track.mcTunedTPCSignal());
14771479
fRegistry.fill(HIST("Electron/hTOFbeta"), track.p(), mapTOFBetaReassociated[std::make_pair(collision.globalIndex(), track.globalIndex())]);
14781480

@@ -1491,6 +1493,7 @@ struct taggingHFE {
14911493

14921494
if (isSelectedHadron(collision, track, trackParCov, dcaXY, dcaZ)) { // electrons can be included in hadron sample.
14931495
fRegistry.fill(HIST("Hadron/hs"), trackParCov.getPt(), trackParCov.getEta(), RecoDecay::constrainAngle(trackParCov.getPhi(), 0, 1U));
1496+
fRegistry.fill(HIST("Hadron/hDCA"), dcaXY, dcaZ);
14941497
fRegistry.fill(HIST("Hadron/hTPCdEdx"), track.tpcInnerParam(), track.mcTunedTPCSignal());
14951498
fRegistry.fill(HIST("Hadron/hTOFbeta"), track.p(), mapTOFBetaReassociated[std::make_pair(collision.globalIndex(), track.globalIndex())]);
14961499
if (track.sign() > 0) { // K+
@@ -1594,9 +1597,9 @@ struct taggingHFE {
15941597
continue;
15951598
}
15961599

1597-
// if (cascade.dcav0topv(collision.posX(), collision.posY(), collision.posZ()) < cascadeCut.cfg_min_dcaxy_v0) {
1598-
// continue;
1599-
// }
1600+
if (std::fabs(cascade.dcav0topv(collision.posX(), collision.posY(), collision.posZ())) < cascadeCut.cfg_min_dcaxy_v0) {
1601+
continue;
1602+
}
16001603

16011604
fillCascadeHistograms(collision, cascade);
16021605

@@ -1629,7 +1632,8 @@ struct taggingHFE {
16291632
auto mcpos = pos.template mcParticle_as<aod::McParticles>();
16301633
auto mcMother = mcpos.template mothers_as<aod::McParticles>()[0];
16311634
bool isMotherFromB = IsFromBeauty(mcMother, mcParticles) > -1;
1632-
auto mcCollision = mcpos.template mcCollision_as<aod::McCollisions>();
1635+
auto mcCollision_mcpos = mcpos.template mcCollision_as<aod::McCollisions>();
1636+
bool isCorrectCollision = mcCollision_mcpos.globalIndex() == mcCollision_from_collision.globalIndex();
16331637

16341638
bool is_e_from_dy = std::abs(mcMother.pdgCode()) == 23; // virtual photon is Z in simulation.
16351639
bool is_e_from_jpsi = std::abs(mcMother.pdgCode()) == 443; // e from prompt J/psi is treated as the same as Z. // e from nonprompt J/psi is treated as the same as B.
@@ -1639,9 +1643,13 @@ struct taggingHFE {
16391643
continue;
16401644
}
16411645

1642-
leptonTable(collision.numContrib(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), mcCollision.getSubGeneratorId(),
1646+
if ((is_e_from_dy || is_e_from_jpsi) && dist01(engine) > cfgDownSampling) { // random sampling, if necessary
1647+
continue;
1648+
}
1649+
1650+
leptonTable(collision.numContrib(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), mcCollision_mcpos.getSubGeneratorId(),
16431651
leptonParCov.getQ2Pt(), leptonParCov.getEta(), dcaXY_lepton, dcaZ_lepton, leptonParCov.getSigmaY2(), leptonParCov.getSigmaZY(), leptonParCov.getSigmaZ2(),
1644-
isMotherFromB, mcMother.pdgCode());
1652+
isMotherFromB, mcMother.pdgCode(), isCorrectCollision);
16451653

16461654
// D0 -> e+ nu_e K-, br = 0.03538, ctau = 123.01 um, m = 1864 MeV/c2
16471655
for (const auto& kaonId : kaonMinusIds) {
@@ -1688,10 +1696,6 @@ struct taggingHFE {
16881696
continue;
16891697
}
16901698

1691-
if (!foundCommonMother && dist01(engine) > cfgDownSampling) { // random sampling, if necessary
1692-
continue;
1693-
}
1694-
16951699
float tofNSigmaPi = mapTOFNsigmaPiReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
16961700
float tofNSigmaKa = mapTOFNsigmaKaReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
16971701
float tofNSigmaPr = mapTOFNsigmaPrReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
@@ -1751,10 +1755,6 @@ struct taggingHFE {
17511755
continue;
17521756
}
17531757

1754-
if (!foundCommonMother && dist01(engine) > cfgDownSampling) { // random sampling, if necessary
1755-
continue;
1756-
}
1757-
17581758
float tofNSigmaPi = mapTOFNsigmaPiReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
17591759
float tofNSigmaKa = mapTOFNsigmaKaReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
17601760
float tofNSigmaPr = mapTOFNsigmaPrReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
@@ -2055,7 +2055,8 @@ struct taggingHFE {
20552055
auto mcele = ele.template mcParticle_as<aod::McParticles>();
20562056
auto mcMother = mcele.template mothers_as<aod::McParticles>()[0];
20572057
bool isMotherFromB = IsFromBeauty(mcMother, mcParticles) > -1;
2058-
auto mcCollision = mcele.template mcCollision_as<aod::McCollisions>();
2058+
auto mcCollision_mcele = mcele.template mcCollision_as<aod::McCollisions>();
2059+
bool isCorrectCollision = mcCollision_mcele.globalIndex() == mcCollision_from_collision.globalIndex();
20592060

20602061
bool is_e_from_dy = std::abs(mcMother.pdgCode()) == 23; // virtual photon is Z in simulation.
20612062
bool is_e_from_jpsi = std::abs(mcMother.pdgCode()) == 443; // e from prompt J/psi is treated as the same as Z. // e from nonprompt J/psi is treated as the same as B. // B+ -> J/psi K+ -> e+ e- K+
@@ -2065,9 +2066,13 @@ struct taggingHFE {
20652066
continue;
20662067
}
20672068

2068-
leptonTable(collision.numContrib(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), mcCollision.getSubGeneratorId(),
2069+
if ((is_e_from_dy || is_e_from_jpsi) && dist01(engine) > cfgDownSampling) { // random sampling, if necessary
2070+
continue;
2071+
}
2072+
2073+
leptonTable(collision.numContrib(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), mcCollision_mcele.getSubGeneratorId(),
20692074
leptonParCov.getQ2Pt(), leptonParCov.getEta(), dcaXY_lepton, dcaZ_lepton, leptonParCov.getSigmaY2(), leptonParCov.getSigmaZY(), leptonParCov.getSigmaZ2(),
2070-
isMotherFromB, mcMother.pdgCode());
2075+
isMotherFromB, mcMother.pdgCode(), isCorrectCollision);
20712076

20722077
for (const auto& kaonId : kaonMinusIds) {
20732078
auto kaon = tracks.rawIteratorAt(kaonId);
@@ -2113,10 +2118,6 @@ struct taggingHFE {
21132118
continue;
21142119
}
21152120

2116-
if (!foundCommonMother && dist01(engine) > cfgDownSampling) { // random sampling, if necessary
2117-
continue;
2118-
}
2119-
21202121
float tofNSigmaPi = mapTOFNsigmaPiReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
21212122
float tofNSigmaKa = mapTOFNsigmaKaReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
21222123
float tofNSigmaPr = mapTOFNsigmaPrReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
@@ -2177,10 +2178,6 @@ struct taggingHFE {
21772178
continue;
21782179
}
21792180

2180-
if (!foundCommonMother && dist01(engine) > cfgDownSampling) { // random sampling, if necessary
2181-
continue;
2182-
}
2183-
21842181
float tofNSigmaPi = mapTOFNsigmaPiReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
21852182
float tofNSigmaKa = mapTOFNsigmaKaReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];
21862183
float tofNSigmaPr = mapTOFNsigmaPrReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())];

0 commit comments

Comments
 (0)