Skip to content

Commit 476d235

Browse files
rbailhacnjacazio
andauthored
[ALICE3] Fix to be able to run the dielectron chain properly (#17115)
Co-authored-by: Nicolò Jacazio <njacazio@users.noreply.github.com>
1 parent 0d79f01 commit 476d235

3 files changed

Lines changed: 82 additions & 25 deletions

File tree

ALICE3/TableProducer/alice3-dileptonsmearing.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ struct alice3dileptonsmearer {
154154
}
155155
} else {
156156
// don't apply smearing
157-
smearedelectron(ptgen, etagen, phigen, true);
157+
smearedelectron(ptgen, etagen, phigen, false);
158158
}
159159
} // end of mc track loop
160160
}

ALICE3/Tasks/alice3-dilepton.cxx

Lines changed: 58 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ struct Alice3Lepton {
129129
registry.add("Reconstructed/Track/Phi", "Track Phi", kTH1F, {axisPhi});
130130
registry.add("Reconstructed/Track/Eta_Pt", "Eta vs. Pt", kTH2F, {axisPt, axisEta}, true);
131131

132+
registry.add("Reconstructed/Track/PtMC", "Track Pt", kTH1F, {axisPt});
133+
registry.add("Reconstructed/Track/EtaMC", "Track Eta", kTH1F, {axisEta});
134+
registry.add("Reconstructed/Track/PhiMC", "Track Phi", kTH1F, {axisPhi});
135+
registry.add("Reconstructed/Track/EtaMC_PtMC", "Eta vs. Pt", kTH2F, {axisPt, axisEta}, true);
136+
132137
registry.addClone("Reconstructed/Track/", "Reconstructed/TrackPID/");
133138
registry.addClone("Reconstructed/Track/", "Reconstructed/TrackPIDPre/");
134139
}
@@ -213,6 +218,10 @@ struct Alice3Lepton {
213218
registry.fill(HIST("Reconstructed/Track/Eta"), track.etaSmeared());
214219
registry.fill(HIST("Reconstructed/Track/Phi"), track.phiSmeared());
215220
registry.fill(HIST("Reconstructed/Track/Eta_Pt"), track.ptSmeared(), track.etaSmeared());
221+
registry.fill(HIST("Reconstructed/Track/PtMC"), mcParticle.pt());
222+
registry.fill(HIST("Reconstructed/Track/EtaMC"), mcParticle.eta());
223+
registry.fill(HIST("Reconstructed/Track/PhiMC"), mcParticle.phi());
224+
registry.fill(HIST("Reconstructed/Track/EtaMC_PtMC"), mcParticle.pt(), mcParticle.eta());
216225
} else {
217226
registry.fill(HIST("Reconstructed/Track/SigmaOTofvspt"), track.pt(), track.nSigmaElectronOuterTOF());
218227
registry.fill(HIST("Reconstructed/Track/SigmaITofvspt"), track.pt(), track.nSigmaElectronInnerTOF());
@@ -230,12 +239,20 @@ struct Alice3Lepton {
230239
registry.fill(HIST("Reconstructed/TrackPID/Eta"), track.etaSmeared());
231240
registry.fill(HIST("Reconstructed/TrackPID/Phi"), track.phiSmeared());
232241
registry.fill(HIST("Reconstructed/TrackPID/Eta_Pt"), track.ptSmeared(), track.etaSmeared());
242+
registry.fill(HIST("Reconstructed/TrackPID/PtMC"), mcParticle.pt());
243+
registry.fill(HIST("Reconstructed/TrackPID/EtaMC"), mcParticle.eta());
244+
registry.fill(HIST("Reconstructed/TrackPID/PhiMC"), mcParticle.phi());
245+
registry.fill(HIST("Reconstructed/TrackPID/EtaMC_PtMC"), mcParticle.pt(), mcParticle.eta());
233246

234247
if (track.isTrackPrefilter() == 0) {
235248
registry.fill(HIST("Reconstructed/TrackPIDPre/Pt"), track.ptSmeared());
236249
registry.fill(HIST("Reconstructed/TrackPIDPre/Eta"), track.etaSmeared());
237250
registry.fill(HIST("Reconstructed/TrackPIDPre/Phi"), track.phiSmeared());
238251
registry.fill(HIST("Reconstructed/TrackPIDPre/Eta_Pt"), track.ptSmeared(), track.etaSmeared());
252+
registry.fill(HIST("Reconstructed/TrackPIDPre/PtMC"), mcParticle.pt());
253+
registry.fill(HIST("Reconstructed/TrackPIDPre/EtaMC"), mcParticle.eta());
254+
registry.fill(HIST("Reconstructed/TrackPIDPre/PhiMC"), mcParticle.phi());
255+
registry.fill(HIST("Reconstructed/TrackPIDPre/EtaMC_PtMC"), mcParticle.pt(), mcParticle.eta());
239256
}
240257
}
241258
} else {
@@ -429,6 +446,11 @@ struct Alice3Dilepton {
429446
registry.add("Reconstructed/Track/Phi", "Particle Phi", kTH1F, {axisPhi});
430447
registry.add("Reconstructed/Track/Pre", "Particle Pre", kTH1F, {axisPre});
431448
}
449+
if (doprocessRecAllWithSmearing) {
450+
registry.add("Reconstructed/Track/PtMC", "Track Pt", kTH1F, {axisPt});
451+
registry.add("Reconstructed/Track/EtaMC", "Particle Eta", kTH1F, {axisEta});
452+
registry.add("Reconstructed/Track/PhiMC", "Particle Phi", kTH1F, {axisPhi});
453+
}
432454

433455
if (doprocessRecAll) {
434456
registry.add("Reconstructed/Track/SigmaOTofvspt", "Track #sigma oTOF", kTH2F, {axisPt, axisSigmaEl});
@@ -989,24 +1011,48 @@ struct Alice3Dilepton {
9891011
} // end of processRec
9901012

9911013
void processRecAllWithSmearing(MyFilteredAlice3Collision const& collisions,
992-
MyFilteredTracksWithSmearing const& tracks)
1014+
MyFilteredTracksWithSmearing const&,
1015+
const aod::McParticles&)
9931016
{
994-
995-
for (const auto& track : tracks) {
996-
if (!IsInAcceptance<true>(track)) {
997-
continue;
998-
}
999-
registry.fill(HIST("Reconstructed/Track/Pt"), track.ptSmeared());
1000-
registry.fill(HIST("Reconstructed/Track/Eta"), track.etaSmeared());
1001-
registry.fill(HIST("Reconstructed/Track/Phi"), track.phiSmeared());
1002-
registry.fill(HIST("Reconstructed/Track/Pre"), track.isTrackPrefilter());
1003-
}
1004-
10051017
for (const auto& collision : collisions) {
10061018
registry.fill(HIST("Reconstructed/Event/VtxZ"), collision.posZ());
10071019
auto negTracks_coll = negTracksWithSmearing->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache_rec);
10081020
auto posTracks_coll = posTracksWithSmearing->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache_rec);
10091021

1022+
for (const auto& track : negTracks_coll) {
1023+
if (!IsInAcceptance<true>(track)) {
1024+
continue;
1025+
}
1026+
if (!track.has_mcParticle()) {
1027+
continue;
1028+
}
1029+
const auto mcParticle = track.template mcParticle_as<aod::McParticles>();
1030+
registry.fill(HIST("Reconstructed/Track/PtMC"), mcParticle.pt());
1031+
registry.fill(HIST("Reconstructed/Track/EtaMC"), mcParticle.eta());
1032+
registry.fill(HIST("Reconstructed/Track/PhiMC"), mcParticle.phi());
1033+
registry.fill(HIST("Reconstructed/Track/Pt"), track.ptSmeared());
1034+
registry.fill(HIST("Reconstructed/Track/Eta"), track.etaSmeared());
1035+
registry.fill(HIST("Reconstructed/Track/Phi"), track.phiSmeared());
1036+
registry.fill(HIST("Reconstructed/Track/Pre"), track.isTrackPrefilter());
1037+
}
1038+
1039+
for (const auto& track : posTracks_coll) {
1040+
if (!IsInAcceptance<true>(track)) {
1041+
continue;
1042+
}
1043+
if (!track.has_mcParticle()) {
1044+
continue;
1045+
}
1046+
const auto mcParticle = track.template mcParticle_as<aod::McParticles>();
1047+
registry.fill(HIST("Reconstructed/Track/PtMC"), mcParticle.pt());
1048+
registry.fill(HIST("Reconstructed/Track/EtaMC"), mcParticle.eta());
1049+
registry.fill(HIST("Reconstructed/Track/PhiMC"), mcParticle.phi());
1050+
registry.fill(HIST("Reconstructed/Track/Pt"), track.ptSmeared());
1051+
registry.fill(HIST("Reconstructed/Track/Eta"), track.etaSmeared());
1052+
registry.fill(HIST("Reconstructed/Track/Phi"), track.phiSmeared());
1053+
registry.fill(HIST("Reconstructed/Track/Pre"), track.isTrackPrefilter());
1054+
}
1055+
10101056
FillPairRecAll<true, PairType::kULS>(negTracks_coll, posTracks_coll);
10111057
FillPairRecAll<true, PairType::kLSpp>(posTracks_coll, posTracks_coll);
10121058
FillPairRecAll<true, PairType::kLSnn>(negTracks_coll, negTracks_coll);

ALICE3/Tasks/alice3-prefilterdilepton.cxx

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -300,20 +300,10 @@ struct Alice3DileptonPrefilter {
300300
continue;
301301
}
302302
}
303-
bool pass = false;
304303
if constexpr (isWithSmearing) {
305-
pass = true;
306-
} else {
307-
if ((std::abs(pos.nSigmaElectronRich()) < nSigmaElectronRich && nSigmaPionRich < std::abs(pos.nSigmaPionRich())) || (std::abs(pos.nSigmaElectronOuterTOF()) < nSigmaEleCutOuterTOF && nSigmaPionCutOuterTOF < std::abs(pos.nSigmaPionOuterTOF())) || (std::abs(pos.nSigmaElectronInnerTOF()) < nSigmaEleCutInnerTOF && nSigmaPionCutInnerTOF < std::abs(pos.nSigmaPionInnerTOF()))) {
308-
if ((std::abs(ele.nSigmaElectronRich()) < nSigmaElectronRich && nSigmaPionRich < std::abs(ele.nSigmaPionRich())) || (std::abs(ele.nSigmaElectronOuterTOF()) < nSigmaEleCutOuterTOF && nSigmaPionCutOuterTOF < std::abs(ele.nSigmaPionOuterTOF())) || (std::abs(ele.nSigmaElectronInnerTOF()) < nSigmaEleCutInnerTOF && nSigmaPionCutInnerTOF < std::abs(ele.nSigmaPionInnerTOF()))) {
309-
pass = true;
310-
}
311-
}
312-
}
313304

314-
if (pass) {
315-
ROOT::Math::PtEtaPhiMVector v1(pos.pt(), pos.eta(), pos.phi(), o2::constants::physics::MassElectron);
316-
ROOT::Math::PtEtaPhiMVector v2(ele.pt(), ele.eta(), ele.phi(), o2::constants::physics::MassElectron);
305+
ROOT::Math::PtEtaPhiMVector v1(pos.ptSmeared(), pos.etaSmeared(), pos.phiSmeared(), o2::constants::physics::MassElectron);
306+
ROOT::Math::PtEtaPhiMVector v2(ele.ptSmeared(), ele.etaSmeared(), ele.phiSmeared(), o2::constants::physics::MassElectron);
317307
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
318308
float angle = RecoDecay::constrainAngle(ROOT::Math::VectorUtil::Angle(v1, v2), -M_PI);
319309
// o2::math_utils::bringToPMPi(angle);
@@ -325,6 +315,27 @@ struct Alice3DileptonPrefilter {
325315
map_pfb[ele.globalIndex()] = 1;
326316
registry.fill(HIST("ReconstructedFiltered/Pair/ULS/Mass_Pt"), v12.M(), v12.Pt());
327317
}
318+
319+
} else {
320+
321+
if ((std::abs(pos.nSigmaElectronRich()) < nSigmaElectronRich && nSigmaPionRich < std::abs(pos.nSigmaPionRich())) || (std::abs(pos.nSigmaElectronOuterTOF()) < nSigmaEleCutOuterTOF && nSigmaPionCutOuterTOF < std::abs(pos.nSigmaPionOuterTOF())) || (std::abs(pos.nSigmaElectronInnerTOF()) < nSigmaEleCutInnerTOF && nSigmaPionCutInnerTOF < std::abs(pos.nSigmaPionInnerTOF()))) {
322+
if ((std::abs(ele.nSigmaElectronRich()) < nSigmaElectronRich && nSigmaPionRich < std::abs(ele.nSigmaPionRich())) || (std::abs(ele.nSigmaElectronOuterTOF()) < nSigmaEleCutOuterTOF && nSigmaPionCutOuterTOF < std::abs(ele.nSigmaPionOuterTOF())) || (std::abs(ele.nSigmaElectronInnerTOF()) < nSigmaEleCutInnerTOF && nSigmaPionCutInnerTOF < std::abs(ele.nSigmaPionInnerTOF()))) {
323+
324+
ROOT::Math::PtEtaPhiMVector v1(pos.pt(), pos.eta(), pos.phi(), o2::constants::physics::MassElectron);
325+
ROOT::Math::PtEtaPhiMVector v2(ele.pt(), ele.eta(), ele.phi(), o2::constants::physics::MassElectron);
326+
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
327+
float angle = RecoDecay::constrainAngle(ROOT::Math::VectorUtil::Angle(v1, v2), -M_PI);
328+
// o2::math_utils::bringToPMPi(angle);
329+
330+
registry.fill(HIST("Reconstructed/Pair/ULS/Mass_Pt"), v12.M(), v12.Pt());
331+
332+
if (v12.M() < maxMass && std::abs(angle) < maxOp) {
333+
map_pfb[pos.globalIndex()] = 1;
334+
map_pfb[ele.globalIndex()] = 1;
335+
registry.fill(HIST("ReconstructedFiltered/Pair/ULS/Mass_Pt"), v12.M(), v12.Pt());
336+
}
337+
}
338+
}
328339
}
329340
} // combination
330341
}

0 commit comments

Comments
 (0)