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.;
114114const float kMaxAmpV0A = 100 .;
115115const float kMaxZDCTime = 2 .;
116116const float kMaxZDCTimeHisto = 10 .;
117+ const float kInvalidFloat = -999 .;
118+ const int kMaxRelBCsV0A = 1 ;
119+ const int kNMuons = 2 ;
117120
118121struct 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