Skip to content

Commit 9ff7b01

Browse files
committed
outputing to single ttree
1 parent 2c5829d commit 9ff7b01

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

PWGUD/Tasks/upcFwdJpsiRl.cxx

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,57 @@
4545
#include <unordered_map>
4646
#include <vector>
4747

48+
// table for saving tree with info on data
49+
namespace jpsirl
50+
{
51+
// dimuon
52+
DECLARE_SOA_COLUMN(RunNumber, runNumber, int);
53+
DECLARE_SOA_COLUMN(M, m, float);
54+
DECLARE_SOA_COLUMN(Energy, energy, float);
55+
DECLARE_SOA_COLUMN(Px, px, float);
56+
DECLARE_SOA_COLUMN(Py, py, float);
57+
DECLARE_SOA_COLUMN(Pz, pz, float);
58+
DECLARE_SOA_COLUMN(Pt, pt, float);
59+
DECLARE_SOA_COLUMN(Rap, rap, float);
60+
DECLARE_SOA_COLUMN(Phi, phi, float);
61+
DECLARE_SOA_COLUMN(PhiAv, phiAv, float);
62+
DECLARE_SOA_COLUMN(PhiCh, phiCh, float);
63+
// tracks positive (p) and negative (n)
64+
DECLARE_SOA_COLUMN(EnergyP, energyP, float);
65+
DECLARE_SOA_COLUMN(Pxp, pxp, float);
66+
DECLARE_SOA_COLUMN(Pyp, pyp, float);
67+
DECLARE_SOA_COLUMN(Pzp, pzp, float);
68+
DECLARE_SOA_COLUMN(Ptp, ptp, float);
69+
DECLARE_SOA_COLUMN(Etap, etap, float);
70+
DECLARE_SOA_COLUMN(Phip, phip, float);
71+
DECLARE_SOA_COLUMN(TrackTypep, trackTypep, int);
72+
DECLARE_SOA_COLUMN(EnergyN, energyN, float);
73+
DECLARE_SOA_COLUMN(Pxn, pxn, float);
74+
DECLARE_SOA_COLUMN(Pyn, pyn, float);
75+
DECLARE_SOA_COLUMN(Pzn, pzn, float);
76+
DECLARE_SOA_COLUMN(Ptn, ptn, float);
77+
DECLARE_SOA_COLUMN(Etan, etan, float);
78+
DECLARE_SOA_COLUMN(Phin, phin, float);
79+
DECLARE_SOA_COLUMN(TrackTypen, trackTypen, int);
80+
// zn
81+
DECLARE_SOA_COLUMN(Tzna, tzna, float);
82+
DECLARE_SOA_COLUMN(Ezna, ezna, float);
83+
DECLARE_SOA_COLUMN(Tznc, tznc, float);
84+
DECLARE_SOA_COLUMN(Eznc, eznc, float);
85+
DECLARE_SOA_COLUMN(Nclass, nclass, int);
86+
} // namespace jpsirl
87+
88+
namespace o2::aod
89+
{
90+
DECLARE_SOA_TABLE(JpsiRL, "AOD", "JPSI_RL",
91+
jpsirl::RunNumber,
92+
jpsirl::M, jpsirl::Energy, jpsirl::Px, jpsirl::Py, jpsirl::Pz, jpsirl::Pt, jpsirl::Rap, jpsirl::Phi,
93+
jpsirl::PhiAv, jpsirl::PhiCh,
94+
jpsirl::EnergyP, jpsirl::Pxp, jpsirl::Pyp, jpsirl::Pzp, jpsirl::Ptp, jpsirl::Etap, jpsirl::Phip, jpsirl::TrackTypep,
95+
jpsirl::EnergyN, jpsirl::Pxn, jpsirl::Pyn, jpsirl::Pzn, jpsirl::Ptn, jpsirl::Etan, jpsirl::Phin, jpsirl::TrackTypen,
96+
jpsirl::Tzna, jpsirl::Ezna, jpsirl::Tznc, jpsirl::Eznc, jpsirl::Nclass);
97+
} // namespace o2::aod
98+
4899
using namespace o2;
49100
using namespace o2::framework;
50101
using namespace o2::framework::expressions;
@@ -71,6 +122,8 @@ struct UpcFwdJpsiRL {
71122
using CandidatesFwd = soa::Join<o2::aod::UDCollisions, o2::aod::UDCollisionsSelsFwd>;
72123
using ForwardTracks = soa::Join<o2::aod::UDFwdTracks, o2::aod::UDFwdTracksExtra>;
73124

125+
Produces<o2::aod::JpsiRL> dimuSel;
126+
74127
// defining histograms using histogram registry
75128
HistogramRegistry registry{"registry", {}, OutputObjHandlingPolicy::AnalysisObject, true, true};
76129
HistogramRegistry reg0n0n{"reg0n0n", {}, OutputObjHandlingPolicy::AnalysisObject, true, true};
@@ -409,20 +462,24 @@ struct UpcFwdJpsiRL {
409462
// neutron classes
410463
bool neutronA = std::abs(zdc.timeA) < kMaxZDCTime && !std::isinf(zdc.timeA);
411464
bool neutronC = std::abs(zdc.timeC) < kMaxZDCTime && !std::isinf(zdc.timeC);
465+
int znClass = -1;
412466

413467
if (!neutronC && !neutronA) {
468+
znClass = 1;
414469
reg0n0n.fill(HIST("hMass"), p.M());
415470
reg0n0n.fill(HIST("hPt"), p.Pt());
416471
reg0n0n.fill(HIST("hPtFit"), p.Pt());
417472
reg0n0n.fill(HIST("hEta"), p.Eta());
418473
reg0n0n.fill(HIST("hRapidity"), p.Rapidity());
419474
} else if (neutronA ^ neutronC) {
475+
znClass = neutronA ? 2 : 3;
420476
regXn0n.fill(HIST("hMass"), p.M());
421477
regXn0n.fill(HIST("hPt"), p.Pt());
422478
regXn0n.fill(HIST("hPtFit"), p.Pt());
423479
regXn0n.fill(HIST("hEta"), p.Eta());
424480
regXn0n.fill(HIST("hRapidity"), p.Rapidity());
425481
} else if (neutronA && neutronC) {
482+
znClass = 4;
426483
regXnXn.fill(HIST("hMass"), p.M());
427484
regXnXn.fill(HIST("hPt"), p.Pt());
428485
regXnXn.fill(HIST("hPtFit"), p.Pt());
@@ -450,6 +507,24 @@ struct UpcFwdJpsiRL {
450507
registry.fill(HIST("hCharge"), tr2.sign());
451508
registry.fill(HIST("hPhiAverage"), phiAverage);
452509
registry.fill(HIST("hPhiCharge"), phiCharge);
510+
511+
// store the event to save it into a tree
512+
// order tracks so that positive is first
513+
if (tr1.sign() > 0) {
514+
dimuSel(cand.runNumber(),
515+
p.M(), p.E(), p.Px(), p.Py(), p.Pz(), p.Pt(), p.Rapidity(), p.Phi(),
516+
phiAverage, phiCharge,
517+
p1.E(), p1.Px(), p1.Py(), p1.Pz(), p1.Pt(), p1.PseudoRapidity(), p1.Phi(), static_cast<int>(tr1.trackType()),
518+
p2.E(), p2.Px(), p2.Py(), p2.Pz(), p2.Pt(), p2.PseudoRapidity(), p2.Phi(), static_cast<int>(tr2.trackType()),
519+
zdc.timeA, zdc.enA, zdc.timeC, zdc.enC, znClass);
520+
} else {
521+
dimuSel(cand.runNumber(),
522+
p.M(), p.E(), p.Px(), p.Py(), p.Pz(), p.Pt(), p.Rapidity(), p.Phi(),
523+
phiAverage, phiCharge,
524+
p2.E(), p2.Px(), p2.Py(), p2.Pz(), p2.Pt(), p2.PseudoRapidity(), p2.Phi(), static_cast<int>(tr2.trackType()),
525+
p1.E(), p1.Px(), p1.Py(), p1.Pz(), p1.Pt(), p1.PseudoRapidity(), p1.Phi(), static_cast<int>(tr1.trackType()),
526+
zdc.timeA, zdc.enA, zdc.timeC, zdc.enC, znClass);
527+
}
453528
}
454529

455530
// PROCESS FUNCTION

0 commit comments

Comments
 (0)