Skip to content

Commit 095857c

Browse files
committed
performance changes
1 parent 8f1de05 commit 095857c

1 file changed

Lines changed: 29 additions & 35 deletions

File tree

PWGUD/Tasks/upcFwdJpsiRl.cxx

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
#include <Framework/HistogramRegistry.h>
3333
#include <Framework/HistogramSpec.h>
3434
#include <Framework/InitContext.h>
35-
#include <Framework/O2DatabasePDGPlugin.h>
3635
#include <Framework/OutputObjHeader.h>
3736
#include <Framework/runDataProcessing.h>
3837

39-
#include <TLorentzVector.h>
38+
#include <Math/Vector4D.h>
39+
#include <Math/VectorUtil.h>
4040
#include <TRandom3.h>
4141

4242
#include <cmath>
@@ -114,11 +114,12 @@ const float kPtMin = 0.;
114114
const float kMaxAmpV0A = 100.;
115115
const float kMaxZDCTime = 2.;
116116
const float kMaxZDCTimeHisto = 10.;
117+
const float kInvalidFloat = -999.;
118+
const int kMaxRelBCsV0A = 1;
119+
const int kNMuons = 2;
117120

118121
struct UpcFwdJpsiRL {
119122

120-
Service<o2::framework::O2DatabasePDG> pdg;
121-
122123
using CandidatesFwd = soa::Join<o2::aod::UDCollisions, o2::aod::UDCollisionsSelsFwd>;
123124
using ForwardTracks = soa::Join<o2::aod::UDFwdTracks, o2::aod::UDFwdTracksExtra>;
124125

@@ -255,12 +256,7 @@ struct UpcFwdJpsiRL {
255256

256257
// FUNCTIONS
257258

258-
// retrieve particle mass from TDatabasePDG
259-
float particleMass(int pid)
260-
{
261-
auto mass = pdg->Mass(pid);
262-
return mass;
263-
}
259+
using LorentzVec = ROOT::Math::PxPyPzMVector;
264260

265261
// check if track is a GlobalMuonTrack (enum 0 or 1)
266262
template <typename TTrack>
@@ -334,13 +330,13 @@ struct UpcFwdJpsiRL {
334330
zdcPerCand[candId].enC = zdc.energyCommonZNC();
335331

336332
if (std::isinf(zdcPerCand[candId].timeA))
337-
zdcPerCand[candId].timeA = -999;
333+
zdcPerCand[candId].timeA = kInvalidFloat;
338334
if (std::isinf(zdcPerCand[candId].timeC))
339-
zdcPerCand[candId].timeC = -999;
335+
zdcPerCand[candId].timeC = kInvalidFloat;
340336
if (std::isinf(zdcPerCand[candId].enA))
341-
zdcPerCand[candId].enA = -999;
337+
zdcPerCand[candId].enA = kInvalidFloat;
342338
if (std::isinf(zdcPerCand[candId].enC))
343-
zdcPerCand[candId].enC = -999;
339+
zdcPerCand[candId].enC = kInvalidFloat;
344340
}
345341
}
346342

@@ -350,9 +346,8 @@ struct UpcFwdJpsiRL {
350346
{
351347
float rAbs = fwdTrack.rAtAbsorberEnd();
352348
float pDca = fwdTrack.pDca();
353-
TLorentzVector p;
354349
auto mMu = o2::constants::physics::MassMuon;
355-
p.SetXYZM(fwdTrack.px(), fwdTrack.py(), fwdTrack.pz(), mMu);
350+
LorentzVec p(fwdTrack.px(), fwdTrack.py(), fwdTrack.pz(), mMu);
356351
float eta = p.Eta();
357352
float pt = p.Pt();
358353
float pDcaMax = rAbs < kRAbsMid ? kPDca1 : kPDca2;
@@ -369,11 +364,11 @@ struct UpcFwdJpsiRL {
369364
}
370365

371366
// compute phi for azimuth anisotropy
372-
void computePhiAnis(TLorentzVector p1, TLorentzVector p2, int sign1, float& phiAverage, float& phiCharge)
367+
void computePhiAnis(LorentzVec p1, LorentzVec p2, int sign1, float& phiAverage, float& phiCharge)
373368
{
374-
TLorentzVector tSum, tDiffAv, tDiffCh;
375-
tSum = p1 + p2;
369+
auto tSum = p1 + p2;
376370
float halfUnity = 0.5;
371+
decltype(tSum) tDiffCh, tDiffAv;
377372
if (sign1 > 0) {
378373
tDiffCh = p1 - p2;
379374
if (gRandom->Rndm() > halfUnity)
@@ -388,8 +383,8 @@ struct UpcFwdJpsiRL {
388383
tDiffAv = p1 - p2;
389384
}
390385

391-
phiAverage = tSum.DeltaPhi(tDiffAv);
392-
phiCharge = tSum.DeltaPhi(tDiffCh);
386+
phiAverage = ROOT::Math::VectorUtil::DeltaPhi(tSum, tDiffAv);
387+
phiCharge = ROOT::Math::VectorUtil::DeltaPhi(tSum, tDiffCh);
393388
}
394389

395390
// process a single candidate
@@ -405,7 +400,7 @@ struct UpcFwdJpsiRL {
405400
const auto& ampsV0A = cand.amplitudesV0A();
406401
const auto& ampsRelBCsV0A = cand.ampRelBCsV0A();
407402
for (unsigned int i = 0; i < ampsV0A.size(); ++i) {
408-
if (std::abs(ampsRelBCsV0A[i]) <= 1) {
403+
if (std::abs(ampsRelBCsV0A[i]) <= kMaxRelBCsV0A) {
409404
if (ampsV0A[i] > kMaxAmpV0A)
410405
return;
411406
}
@@ -423,7 +418,7 @@ struct UpcFwdJpsiRL {
423418
nMIDs++;
424419
if (tr2.chi2MatchMCHMID() > 0)
425420
nMIDs++;
426-
if (nMIDs != 2)
421+
if (nMIDs != kNMuons)
427422
return;
428423

429424
// track selection
@@ -433,11 +428,10 @@ struct UpcFwdJpsiRL {
433428
return;
434429

435430
// form Lorentz vectors
436-
TLorentzVector p1, p2;
437431
auto mMu = o2::constants::physics::MassMuon;
438-
p1.SetXYZM(tr1.px(), tr1.py(), tr1.pz(), mMu);
439-
p2.SetXYZM(tr2.px(), tr2.py(), tr2.pz(), mMu);
440-
TLorentzVector p = p1 + p2;
432+
LorentzVec p1(tr1.px(), tr1.py(), tr1.pz(), mMu);
433+
LorentzVec p2(tr2.px(), tr2.py(), tr2.pz(), mMu);
434+
auto p = p1 + p2;
441435

442436
// cut on pair kinematics
443437
if (p.M() < lowMass || p.M() > highMass)
@@ -514,15 +508,15 @@ struct UpcFwdJpsiRL {
514508
dimuSel(cand.runNumber(),
515509
p.M(), p.E(), p.Px(), p.Py(), p.Pz(), p.Pt(), p.Rapidity(), p.Phi(),
516510
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()),
511+
p1.E(), p1.Px(), p1.Py(), p1.Pz(), p1.Pt(), p1.Eta(), p1.Phi(), static_cast<int>(tr1.trackType()),
512+
p2.E(), p2.Px(), p2.Py(), p2.Pz(), p2.Pt(), p2.Eta(), p2.Phi(), static_cast<int>(tr2.trackType()),
519513
zdc.timeA, zdc.enA, zdc.timeC, zdc.enC, znClass);
520514
} else {
521515
dimuSel(cand.runNumber(),
522516
p.M(), p.E(), p.Px(), p.Py(), p.Pz(), p.Pt(), p.Rapidity(), p.Phi(),
523517
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()),
518+
p2.E(), p2.Px(), p2.Py(), p2.Pz(), p2.Pt(), p2.Eta(), p2.Phi(), static_cast<int>(tr2.trackType()),
519+
p1.E(), p1.Px(), p1.Py(), p1.Pz(), p1.Pt(), p1.Eta(), p1.Phi(), static_cast<int>(tr1.trackType()),
526520
zdc.timeA, zdc.enA, zdc.timeC, zdc.enC, znClass);
527521
}
528522
}
@@ -550,10 +544,10 @@ struct UpcFwdJpsiRL {
550544
if (zdcPerCand.count(candID) != 0) {
551545
zdc = zdcPerCand.at(candID);
552546
} else {
553-
zdc.timeA = -999;
554-
zdc.timeC = -999;
555-
zdc.enA = -999;
556-
zdc.enC = -999;
547+
zdc.timeA = kInvalidFloat;
548+
zdc.timeC = kInvalidFloat;
549+
zdc.enA = kInvalidFloat;
550+
zdc.enC = kInvalidFloat;
557551
}
558552

559553
for (size_t i = 0; i < trkIds.size(); ++i) {

0 commit comments

Comments
 (0)