Skip to content

Commit cdeb351

Browse files
committed
rewrite derived data table definitions to avoid storing arrays
1 parent 931e615 commit cdeb351

File tree

1 file changed

+96
-39
lines changed

1 file changed

+96
-39
lines changed

PWGUD/Tasks/upcRhoAnalysis.cxx

Lines changed: 96 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -74,23 +74,43 @@ DECLARE_SOA_COLUMN(NeutronClass, neutronClass, int);
7474
// pion tracks
7575
DECLARE_SOA_COLUMN(PhiRandom, phiRandom, float);
7676
DECLARE_SOA_COLUMN(PhiCharge, phiCharge, float);
77-
DECLARE_SOA_COLUMN(TrackSign, trackSign, int[2]);
78-
DECLARE_SOA_COLUMN(TrackPt, trackPt, float[2]);
79-
DECLARE_SOA_COLUMN(TrackEta, trackEta, float[2]);
80-
DECLARE_SOA_COLUMN(TrackPhi, trackPhi, float[2]);
81-
DECLARE_SOA_COLUMN(TrackPiPID, trackPiPID, float[2]);
82-
DECLARE_SOA_COLUMN(TrackElPID, trackElPID, float[2]);
83-
DECLARE_SOA_COLUMN(TrackKaPID, trackKaPID, float[2]);
84-
DECLARE_SOA_COLUMN(TrackDcaXY, trackDcaXY, float[2]);
85-
DECLARE_SOA_COLUMN(TrackDcaZ, trackDcaZ, float[2]);
86-
DECLARE_SOA_COLUMN(TrackTpcSignal, trackTpcSignal, float[2]);
77+
DECLARE_SOA_COLUMN(PosTrackSign, posTrackSign, int);
78+
DECLARE_SOA_COLUMN(NegTrackSign, negTrackSign, int);
79+
DECLARE_SOA_COLUMN(PosTrackPt, posTrackPt, float);
80+
DECLARE_SOA_COLUMN(NegTrackPt, negTrackPt, float);
81+
DECLARE_SOA_COLUMN(PosTrackEta, posTrackEta, float);
82+
DECLARE_SOA_COLUMN(NegTrackEta, negTrackEta, float);
83+
DECLARE_SOA_COLUMN(PosTrackPhi, posTrackPhi, float);
84+
DECLARE_SOA_COLUMN(NegTrackPhi, negTrackPhi, float);
85+
DECLARE_SOA_COLUMN(PosTrackPiPID, posTrackPiPID, float);
86+
DECLARE_SOA_COLUMN(NegTrackPiPID, negTrackPiPID, float);
87+
DECLARE_SOA_COLUMN(PosTrackElPID, posTrackElPID, float);
88+
DECLARE_SOA_COLUMN(NegTrackElPID, negTrackElPID, float);
89+
DECLARE_SOA_COLUMN(PosTrackKaPID, posTrackKaPID, float);
90+
DECLARE_SOA_COLUMN(NegTrackKaPID, negTrackKaPID, float);
91+
DECLARE_SOA_COLUMN(PosTrackDcaXY, posTrackDcaXY, float);
92+
DECLARE_SOA_COLUMN(NegTrackDcaXY, negTrackDcaXY, float);
93+
DECLARE_SOA_COLUMN(PosTrackDcaZ, posTrackDcaZ, float);
94+
DECLARE_SOA_COLUMN(NegTrackDcaZ, negTrackDcaZ, float);
95+
DECLARE_SOA_COLUMN(PosTrackTpcSignal, posTrackTpcSignal, float);
96+
DECLARE_SOA_COLUMN(NegTrackTpcSignal, negTrackTpcSignal, float);
8797
} // namespace reco_tree
8898
DECLARE_SOA_TABLE(RecoTree, "AOD", "RECOTREE",
8999
reco_tree::RecoSetting, reco_tree::RunNumber, reco_tree::LocalBC, reco_tree::NumContrib, reco_tree::PosX, reco_tree::PosY, reco_tree::PosZ,
90100
reco_tree::TotalFT0AmplitudeA, reco_tree::TotalFT0AmplitudeC, reco_tree::TotalFV0AmplitudeA, reco_tree::TotalFDDAmplitudeA, reco_tree::TotalFDDAmplitudeC,
91101
reco_tree::TimeFT0A, reco_tree::TimeFT0C, reco_tree::TimeFV0A, reco_tree::TimeFDDA, reco_tree::TimeFDDC,
92102
reco_tree::EnergyCommonZNA, reco_tree::EnergyCommonZNC, reco_tree::TimeZNA, reco_tree::TimeZNC, reco_tree::NeutronClass,
93-
reco_tree::PhiRandom, reco_tree::PhiCharge, reco_tree::TrackSign, reco_tree::TrackPt, reco_tree::TrackEta, reco_tree::TrackPhi, reco_tree::TrackPiPID, reco_tree::TrackElPID, reco_tree::TrackKaPID, reco_tree::TrackDcaXY, reco_tree::TrackDcaZ, reco_tree::TrackTpcSignal);
103+
reco_tree::PhiRandom, reco_tree::PhiCharge,
104+
reco_tree::PosTrackSign, reco_tree::NegTrackSign,
105+
reco_tree::PosTrackPt, reco_tree::NegTrackPt,
106+
reco_tree::PosTrackEta, reco_tree::NegTrackEta,
107+
reco_tree::PosTrackPhi, reco_tree::NegTrackPhi,
108+
reco_tree::PosTrackPiPID, reco_tree::NegTrackPiPID,
109+
reco_tree::PosTrackElPID, reco_tree::NegTrackElPID,
110+
reco_tree::PosTrackKaPID, reco_tree::NegTrackKaPID,
111+
reco_tree::PosTrackDcaXY, reco_tree::NegTrackDcaXY,
112+
reco_tree::PosTrackDcaZ, reco_tree::NegTrackDcaZ,
113+
reco_tree::PosTrackTpcSignal, reco_tree::NegTrackTpcSignal);
94114

95115
namespace mc_tree
96116
{
@@ -104,15 +124,23 @@ DECLARE_SOA_COLUMN(PosZ, posZ, float);
104124
// pion tracks
105125
DECLARE_SOA_COLUMN(PhiRandom, phiRandom, float);
106126
DECLARE_SOA_COLUMN(PhiCharge, phiCharge, float);
107-
DECLARE_SOA_COLUMN(TrackSign, trackSign, int[2]);
108-
DECLARE_SOA_COLUMN(TrackPt, trackPt, float[2]);
109-
DECLARE_SOA_COLUMN(TrackEta, trackEta, float[2]);
110-
DECLARE_SOA_COLUMN(TrackPhi, trackPhi, float[2]);
127+
DECLARE_SOA_COLUMN(PosTrackSign, posTrackSign, int);
128+
DECLARE_SOA_COLUMN(NegTrackSign, negTrackSign, int);
129+
DECLARE_SOA_COLUMN(PosTrackPt, posTrackPt, float);
130+
DECLARE_SOA_COLUMN(NegTrackPt, negTrackPt, float);
131+
DECLARE_SOA_COLUMN(PosTrackEta, posTrackEta, float);
132+
DECLARE_SOA_COLUMN(NegTrackEta, negTrackEta, float);
133+
DECLARE_SOA_COLUMN(PosTrackPhi, posTrackPhi, float);
134+
DECLARE_SOA_COLUMN(NegTrackPhi, negTrackPhi, float);
111135
} // namespace mc_tree
112136
DECLARE_SOA_TABLE(McTree, "AOD", "MCTREE",
113137
mc_tree::LocalBc, mc_tree::RunNumber,
114138
mc_tree::PosX, mc_tree::PosY, mc_tree::PosZ,
115-
mc_tree::PhiRandom, mc_tree::PhiCharge, mc_tree::TrackSign, mc_tree::TrackPt, mc_tree::TrackEta, mc_tree::TrackPhi);
139+
mc_tree::PhiRandom, mc_tree::PhiCharge,
140+
mc_tree::PosTrackSign, mc_tree::NegTrackSign,
141+
mc_tree::PosTrackPt, mc_tree::NegTrackPt,
142+
mc_tree::PosTrackEta, mc_tree::NegTrackEta,
143+
mc_tree::PosTrackPhi, mc_tree::NegTrackPhi);
116144
} // namespace o2::aod
117145

118146
struct UpcRhoAnalysis {
@@ -262,6 +290,7 @@ struct UpcRhoAnalysis {
262290
rQC.add("QC/tracks/hPiPIDRadius", ";#it{n#sigma}(#pi) radius;counts", kTH1D, {{1000, 0.0, 10.0}});
263291
rQC.add("QC/tracks/hElPIDRadius", ";#it{n#sigma}(e) radius;counts", kTH1D, {{1000, 0.0, 10.0}});
264292
rQC.add("QC/tracks/hKaPIDRadius", ";#it{n#sigma}(K) radius;counts", kTH1D, {{1000, 0.0, 10.0}});
293+
rQC.add("QC/tracks/hPrPIDRadius", ";#it{n#sigma}(p) radius;counts", kTH1D, {{1000, 0.0, 10.0}});
265294

266295
// TRACKS (2D)
267296
rTracks.add("tracks/trackSelections/unlike-sign/hPt", ";#it{p}_{T leading} (GeV/#it{c});#it{p}_{T subleading} (GeV/#it{c});counts", kTH2D, {ptAxis, ptAxis});
@@ -764,8 +793,8 @@ struct UpcRhoAnalysis {
764793
auto leadingMomentumTrack = momentum(cutTracks[0].px(), cutTracks[0].py(), cutTracks[0].pz()) > momentum(cutTracks[1].px(), cutTracks[1].py(), cutTracks[1].pz()) ? cutTracks[0] : cutTracks[1];
765794
auto subleadingMomentumTrack = (leadingMomentumTrack == cutTracks[0]) ? cutTracks[1] : cutTracks[0];
766795

767-
auto positiveTrack = cutTracks[0].sign() > 0 ? cutTracks[0] : cutTracks[1];
768-
auto negativeTrack = cutTracks[0].sign() > 0 ? cutTracks[1] : cutTracks[0];
796+
auto positiveTrack = cutTracks[0].sign() == 1 ? cutTracks[0] : cutTracks[1];
797+
auto negativeTrack = cutTracks[0].sign() == -1 ? cutTracks[0] : cutTracks[1];
769798

770799
float leadingPt = leadingMomentumTrack.pt();
771800
float subleadingPt = subleadingMomentumTrack.pt();
@@ -778,21 +807,41 @@ struct UpcRhoAnalysis {
778807

779808
// fill recoTree
780809
int localBc = collision.globalBC() % o2::constants::lhc::LHCMaxBunches;
781-
int trackSigns[2] = {positiveTrack.sign(), negativeTrack.sign()};
782-
float trackPts[2] = {positiveTrack.pt(), negativeTrack.pt()};
783-
float trackEtas[2] = {eta(positiveTrack.px(), positiveTrack.py(), positiveTrack.pz()), eta(negativeTrack.px(), negativeTrack.py(), negativeTrack.pz())};
784-
float trackPhis[2] = {phi(positiveTrack.px(), positiveTrack.py()), phi(negativeTrack.px(), negativeTrack.py())};
785-
float trackPiPIDs[2] = {positiveTrack.tpcNSigmaPi(), negativeTrack.tpcNSigmaPi()};
786-
float trackElPIDs[2] = {positiveTrack.tpcNSigmaEl(), negativeTrack.tpcNSigmaEl()};
787-
float trackKaPIDs[2] = {positiveTrack.tpcNSigmaKa(), negativeTrack.tpcNSigmaKa()};
788-
float trackDcaXYs[2] = {positiveTrack.dcaXY(), negativeTrack.dcaXY()};
789-
float trackDcaZs[2] = {positiveTrack.dcaZ(), negativeTrack.dcaZ()};
790-
float trackTpcSignals[2] = {positiveTrack.tpcSignal(), negativeTrack.tpcSignal()};
810+
int trackSignPos = positiveTrack.sign();
811+
int trackSignNeg = negativeTrack.sign();
812+
float trackPtPos = positiveTrack.pt();
813+
float trackPtNeg = negativeTrack.pt();
814+
float trackEtaPos = eta(positiveTrack.px(), positiveTrack.py(), positiveTrack.pz());
815+
float trackEtaNeg = eta(negativeTrack.px(), negativeTrack.py(), negativeTrack.pz());
816+
float trackPhiPos = phi(positiveTrack.px(), positiveTrack.py());
817+
float trackPhiNeg = phi(negativeTrack.px(), negativeTrack.py());
818+
float trackPiPIDPos = positiveTrack.tpcNSigmaPi();
819+
float trackPiPIDNeg = negativeTrack.tpcNSigmaPi();
820+
float trackElPIDPos = positiveTrack.tpcNSigmaEl();
821+
float trackElPIDNeg = negativeTrack.tpcNSigmaEl();
822+
float trackKaPIDPos = positiveTrack.tpcNSigmaKa();
823+
float trackKaPIDNeg = negativeTrack.tpcNSigmaKa();
824+
float trackDcaXYPos = positiveTrack.dcaXY();
825+
float trackDcaXYNeg = negativeTrack.dcaXY();
826+
float trackDcaZPos = positiveTrack.dcaZ();
827+
float trackDcaZNeg = negativeTrack.dcaZ();
828+
float trackTpcSignalPos = positiveTrack.tpcSignal();
829+
float trackTpcSignalNeg = negativeTrack.tpcSignal();
791830
recoTree(collision.flags(), collision.runNumber(), localBc, collision.numContrib(), collision.posX(), collision.posY(), collision.posZ(),
792-
collision.totalFT0AmplitudeA(), collision.totalFT0AmplitudeC(), collision.totalFV0AmplitudeA(), collision.totalFDDAmplitudeA(), collision.totalFDDAmplitudeC(),
793-
collision.timeFT0A(), collision.timeFT0C(), collision.timeFV0A(), collision.timeFDDA(), collision.timeFDDC(),
794-
energyCommonZNA, energyCommonZNC, timeZNA, timeZNC, neutronClass,
795-
phiRandom, phiCharge, trackSigns, trackPts, trackEtas, trackPhis, trackPiPIDs, trackElPIDs, trackKaPIDs, trackDcaXYs, trackDcaZs, trackTpcSignals);
831+
collision.totalFT0AmplitudeA(), collision.totalFT0AmplitudeC(), collision.totalFV0AmplitudeA(), collision.totalFDDAmplitudeA(), collision.totalFDDAmplitudeC(),
832+
collision.timeFT0A(), collision.timeFT0C(), collision.timeFV0A(), collision.timeFDDA(), collision.timeFDDC(),
833+
energyCommonZNA, energyCommonZNC, timeZNA, timeZNC, neutronClass,
834+
phiRandom, phiCharge,
835+
trackSignPos, trackSignNeg,
836+
trackPtPos, trackPtNeg,
837+
trackEtaPos, trackEtaNeg,
838+
trackPhiPos, trackPhiNeg,
839+
trackPiPIDPos, trackPiPIDNeg,
840+
trackElPIDPos, trackElPIDNeg,
841+
trackKaPIDPos, trackKaPIDNeg,
842+
trackDcaXYPos, trackDcaXYNeg,
843+
trackDcaZPos, trackDcaZNeg,
844+
trackTpcSignalPos, trackTpcSignalNeg);
796845

797846
if (!tracksPassPID(cutTracks)) // apply PID cut
798847
return;
@@ -984,13 +1033,21 @@ struct UpcRhoAnalysis {
9841033
auto positivePion = cutMcParticles[0].pdgCode() > 0 ? cutMcParticles[0] : cutMcParticles[1];
9851034
auto negativePion = cutMcParticles[0].pdgCode() > 0 ? cutMcParticles[1] : cutMcParticles[0];
9861035
int localBc = mcCollision.globalBC() % o2::constants::lhc::LHCMaxBunches;
987-
int trackSigns[2] = {positivePion.pdgCode() / std::abs(positivePion.pdgCode()), negativePion.pdgCode() / std::abs(negativePion.pdgCode())};
988-
float trackPts[2] = {pt(positivePion.px(), positivePion.py()), pt(negativePion.px(), negativePion.py())};
989-
float trackEtas[2] = {eta(positivePion.px(), positivePion.py(), positivePion.pz()), eta(negativePion.px(), negativePion.py(), negativePion.pz())};
990-
float trackPhis[2] = {phi(positivePion.px(), positivePion.py()), phi(negativePion.px(), negativePion.py())};
991-
mcTree(localBc, runNumber,
992-
mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(),
993-
phiRandom, phiCharge, trackSigns, trackPts, trackEtas, trackPhis);
1036+
int trackSignPos = positivePion.pdgCode() / std::abs(positivePion.pdgCode());
1037+
int trackSignNeg = negativePion.pdgCode() / std::abs(negativePion.pdgCode());
1038+
float trackPtPos = pt(positivePion.px(), positivePion.py());
1039+
float trackPtNeg = pt(negativePion.px(), negativePion.py());
1040+
float trackEtaPos = eta(positivePion.px(), positivePion.py(), positivePion.pz());
1041+
float trackEtaNeg = eta(negativePion.px(), negativePion.py(), negativePion.pz());
1042+
float trackPhiPos = phi(positivePion.px(), positivePion.py());
1043+
float trackPhiNeg = phi(negativePion.px(), negativePion.py());
1044+
mcTree(localBc, runNumber,
1045+
mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(),
1046+
phiRandom, phiCharge,
1047+
trackSignPos, trackSignNeg,
1048+
trackPtPos, trackPtNeg,
1049+
trackEtaPos, trackEtaNeg,
1050+
trackPhiPos, trackPhiNeg);
9941051
}
9951052

9961053
template <typename C>

0 commit comments

Comments
 (0)