6363
6464#include < Rtypes.h>
6565
66- #include < algorithm>
6766#include < array>
6867#include < cmath>
6968#include < cstdint>
@@ -150,13 +149,13 @@ constexpr std::array<std::array<double, 6>, static_cast<int>(Species::kAllSpecie
150149 {-1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 }, // He3
151150 {-1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 } // hadron
152151}};
153- static const std::vector<std::string> kItsParNames {" p0" , " p1" , " p2" , " res0" , " res1" , " res2" };
152+ const std::vector<std::string> kItsParNames {" p0" , " p1" , " p2" , " res0" , " res1" , " res2" };
154153
155154constexpr std::array<std::array<double , 6 >, 1 > kBetheBlochDefault = {{{-1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 }}};
156- static const std::vector<std::string> kBetheBlochParNames {" p0" , " p1" , " p2" , " p3" , " p4" , " resolution" };
155+ const std::vector<std::string> kBetheBlochParNames {" p0" , " p1" , " p2" , " p3" , " p4" , " resolution" };
157156
158157constexpr std::array<std::array<double , 6 >, 1 > kBetheBlochCorrectionDefault = {{{0.0 , -1 .e32 , -1 .e32 , 0.0 , -1 .e32 , -1 .e32 }}};
159- static const std::vector<std::string> kBetheBlochCorrectionParNames {" p0" , " p1" , " p2" , " p3" , " p4" , " p5" };
158+ const std::vector<std::string> kBetheBlochCorrectionParNames {" p0" , " p1" , " p2" , " p3" , " p4" , " p5" };
160159
161160constexpr std::array<std::array<double , 4 >, static_cast <int >(Species::kAllSpecies )> kDCAxyResDefault = {{
162161 {1.09e-4 , 0.0011 , 0.0065 , 1.0399 }, // He3
@@ -166,7 +165,7 @@ constexpr std::array<std::array<double, 4>, static_cast<int>(Species::kAllSpecie
166165 {9.36e-5 , 0.0019 , 0.0080 , 1.416 }, // He3
167166 {1.18e-4 , 0.0020 , 0.0025 , 1.3460 } // Pr
168167}};
169- static const std::vector<std::string> kDCAResParNames {" res0" , " res1" , " res2" , " mean" };
168+ const std::vector<std::string> kDCAResParNames {" res0" , " res1" , " res2" , " mean" };
170169
171170constexpr std::array<double , 3 > kHePidTrkPtParamsHeDefault = {0.3101 , -0.1759 , 0.0262 };
172171constexpr std::array<double , 3 > kHePidTrkPParamsHeDefault = {0 ., 0 ., 0 .};
@@ -175,12 +174,14 @@ constexpr std::array<double, 3> kHePidTrkPParamsHeDefault = {0., 0., 0.};
175174
176175struct He3HadCandidate {
177176
178- float recoPtHe3 () const { return signHe3 * std::hypot (momHe3[0 ], momHe3[1 ]); }
179- float recoPhiHe3 () const { return std::atan2 (momHe3[1 ], momHe3[0 ]); }
180- float recoEtaHe3 () const { return std::asinh (momHe3[2 ] / std::abs (recoPtHe3 ())); }
181- float recoPtHad () const { return signHad * std::hypot (momHad[0 ], momHad[1 ]); }
182- float recoPhiHad () const { return std::atan2 (momHad[1 ], momHad[0 ]); }
183- float recoEtaHad () const { return std::asinh (momHad[2 ] / std::abs (recoPtHad ())); }
177+ [[nodiscard]] float recoPtHe3 () const { return signHe3 * std::hypot (momHe3[0 ], momHe3[1 ]); }
178+ [[nodiscard]] float recoPhiHe3 () const { return std::atan2 (momHe3[1 ], momHe3[0 ]); }
179+ [[nodiscard]] float recoEtaHe3 () const { return std::asinh (momHe3[2 ] / std::abs (recoPtHe3 ())); }
180+ [[nodiscard]] float recoPtHad () const { return signHad * std::hypot (momHad[0 ], momHad[1 ]); }
181+ [[nodiscard]] float recoPhiHad () const { return std::atan2 (momHad[1 ], momHad[0 ]); }
182+ [[nodiscard]] float recoEtaHad () const { return std::asinh (momHad[2 ] / std::abs (recoPtHad ())); }
183+ [[nodiscard]] float recoKstar () const { return getkstar (recoPtHe3 (), recoEtaHe3 (), recoPhiHe3 (), constants::physics::MassHelium3, 1 .f ,
184+ recoPtHad (), recoEtaHad (), recoPhiHad (), constants::physics::MassProton, 1 .f ); }
184185
185186 std::array<float , 3 > momHe3 = {99 .f , 99 .f , 99 .f };
186187 std::array<float , 3 > momHad = {99 .f , 99 .f , 99 .f };
@@ -335,13 +336,13 @@ struct he3HadronFemto {
335336 SameKindPair<CollisionsFull, TrackCandidates, BinningType> mPair {binningPolicy, settingNoMixedEvents, -1 , &cache};
336337
337338 struct He3HadronParams {
338- std::array<float , 6 > betheBlochParams = { 0 . 0f , 0 . 0f , 0 . 0f , 0 . 0f , 0 . 0f , 0 . 0f };
339- std::array<float , 6 > betheBlochCorrectionParams = { 0 . 0f , 0 . 0f , 0 . 0f , 0 . 0f , 0 . 0f , 0 . 0f };
340- std::array<std::array<float , 6 >, static_cast <int >(Species::kAllSpecies )> itsParams;
341- std::array<std::array<float , 4 >, static_cast <int >(Species::kAllSpecies )> dcaxyResParams;
342- std::array<std::array<float , 4 >, static_cast <int >(Species::kAllSpecies )> dcazResParams;
343- std::array<float , 3 > hePidTrkPtParams = { 0 . 0f , 0 . 0f , 0 . 0f };
344- std::array<float , 3 > hePidTrkPParams = { 0 . 0f , 0 . 0f , 0 . 0f };
339+ std::array<float , 6 > betheBlochParams{ };
340+ std::array<float , 6 > betheBlochCorrectionParams{ };
341+ std::array<std::array<float , 6 >, static_cast <int >(Species::kAllSpecies )> itsParams{} ;
342+ std::array<std::array<float , 4 >, static_cast <int >(Species::kAllSpecies )> dcaxyResParams{} ;
343+ std::array<std::array<float , 4 >, static_cast <int >(Species::kAllSpecies )> dcazResParams{} ;
344+ std::array<float , 3 > hePidTrkPtParams{ };
345+ std::array<float , 3 > hePidTrkPParams{ };
345346 } mHe3HadronParams ;
346347
347348 o2::aod::ITSResponse mResponseITS ;
@@ -497,8 +498,8 @@ struct he3HadronFemto {
497498 mRunNumber = bc.runNumber ();
498499 const float defaultBzValue = -999 .0f ;
499500 auto run3GrpTimestamp = bc.timestamp ();
500- o2::parameters::GRPObject* grpo = mCcdb ->getForTimeStamp <o2::parameters::GRPObject>(settingGrpPath, run3GrpTimestamp);
501- o2::parameters::GRPMagField* grpmag = 0x0 ;
501+ auto grpo = mCcdb ->getForTimeStamp <o2::parameters::GRPObject>(settingGrpPath, run3GrpTimestamp);
502+ o2::parameters::GRPMagField* grpmag = nullptr ;
502503 if (grpo) {
503504 o2::base::Propagator::initFieldFromGRP (grpo);
504505 if (settingDbz < defaultBzValue) {
@@ -575,8 +576,9 @@ struct he3HadronFemto {
575576
576577 float correctPtHe3TrackedAsTriton (const float pt, const uint32_t pidForTracking)
577578 {
578- if (pt < 2.5 && pidForTracking == o2::track::PID ::Triton)
579+ if (pt < 2.5 && pidForTracking == o2::track::PID ::Triton) {
579580 return pt * (1 . - mHe3HadronParams .hePidTrkPtParams [0 ] - mHe3HadronParams .hePidTrkPtParams [1 ] * pt - mHe3HadronParams .hePidTrkPtParams [2 ] * pt * pt);
581+ }
580582
581583 return pt;
582584 }
@@ -587,16 +589,17 @@ struct he3HadronFemto {
587589 float correctedTPCinnerParam = (heliumPID && settingCompensatePIDinTracking) ? tpcInnerParam / 2 .f : tpcInnerParam;
588590
589591 correctedTPCinnerParam *= 2 .f ; // rigidity to momentum
590- if (correctedTPCinnerParam < 2.5 && pidForTracking == o2::track::PID ::Triton)
592+ if (correctedTPCinnerParam < 2.5 && pidForTracking == o2::track::PID ::Triton) {
591593 return correctedTPCinnerParam * (1 . - mHe3HadronParams .hePidTrkPParams [0 ] - mHe3HadronParams .hePidTrkPParams [1 ] * correctedTPCinnerParam - mHe3HadronParams .hePidTrkPParams [2 ] * correctedTPCinnerParam * correctedTPCinnerParam);
594+ }
592595
593596 return correctedTPCinnerParam;
594597 }
595598
596599 float computeNsigmaDCA (const float pt, const float dca, const int iSpecies, const char * dcaType = " xy" )
597600 {
598601
599- std::array<float , 4 > parameters;
602+ std::array<float , 4 > parameters{{ 0 ., 0 ., 0 ., 0 .}} ;
600603 if (std::strcmp (dcaType, " xy" ) == 0 ) {
601604 parameters = mHe3HadronParams .dcaxyResParams [iSpecies];
602605 } else if (std::strcmp (dcaType, " z" ) == 0 ) {
@@ -616,8 +619,9 @@ struct he3HadronFemto {
616619 const float nsigmaDcaZ = computeNsigmaDCA (pt, dcaZ, ispecies, " z" );
617620
618621 if (std::abs (nsigmaDcaXy) > cutSettings.settingCutNsigmaDcaXy ||
619- std::abs (nsigmaDcaZ) > cutSettings.settingCutNsigmaDcaZ )
622+ std::abs (nsigmaDcaZ) > cutSettings.settingCutNsigmaDcaZ ) {
620623 return false ;
624+ }
621625
622626 return true ;
623627 }
@@ -787,8 +791,9 @@ struct he3HadronFemto {
787791 std::array<float , 3 > collisionVertex = getCollisionVertex (collisions, he3Hadcand.collisionID );
788792
789793 he3Hadcand.momHe3 = std::array{trackHe3.px (), trackHe3.py (), trackHe3.pz ()};
790- for (int i = 0 ; i < 3 ; i++)
794+ for (int i = 0 ; i < 3 ; i++) {
791795 he3Hadcand.momHe3 [i] = he3Hadcand.momHe3 [i] * 2 ;
796+ }
792797 he3Hadcand.momHad = std::array{trackHad.px (), trackHad.py (), trackHad.pz ()};
793798 float invMass = CommonInite;
794799 if (settingHadPDGCode == PDG_t::kPiPlus ) {
@@ -817,7 +822,7 @@ struct he3HadronFemto {
817822 } else {
818823 auto trackCovHe3 = getTrackParCov (trackHe3);
819824 auto trackCovHad = getTrackParCov (trackHad);
820- std::array<float , 2 > dcaInfo;
825+ std::array<float , 2 > dcaInfo{{- 999 ., - 999 .}} ;
821826 o2::base::Propagator::Instance ()->propagateToDCABxByBz ({collisionVertex[0 ], collisionVertex[1 ], collisionVertex[2 ]}, trackCovHe3, 2 .f , mFitter .getMatCorrType (), &dcaInfo);
822827 he3Hadcand.dcaxyHe3 = dcaInfo[0 ];
823828 he3Hadcand.dcazHe3 = dcaInfo[1 ];
@@ -1009,6 +1014,7 @@ struct he3HadronFemto {
10091014 mQaRegistry .fill (HIST (" He3/hHe3Pt" ), he3Hadcand.recoPtHe3 ());
10101015 mQaRegistry .fill (HIST (" Had/hHadronPt" ), he3Hadcand.recoPtHad ());
10111016 mQaRegistry .fill (HIST (" hhe3HadtInvMass" ), he3Hadcand.invMass );
1017+ mQaRegistry .fill (HIST (" hhe3HadKstar" ), he3Hadcand.recoKstar ());
10121018 mQaRegistry .fill (HIST (" He3/hDCAxyHe3" ), he3Hadcand.dcaxyHe3 );
10131019 mQaRegistry .fill (HIST (" He3/hDCAzHe3" ), he3Hadcand.dcazHe3 );
10141020 mQaRegistry .fill (HIST (" Had/hDCAxyHad" ), he3Hadcand.dcaxyHad );
@@ -1167,7 +1173,7 @@ struct he3HadronFemto {
11671173
11681174 pairTracksSameEvent (trackTableThisCollision, collision);
11691175
1170- if (mTrackPairs .size () == 0 ) {
1176+ if (mTrackPairs .empty () ) {
11711177 continue ;
11721178 }
11731179
@@ -1248,14 +1254,14 @@ struct he3HadronFemto {
12481254 he3Hadcand.flags |= Flags::kBothPrimaries ;
12491255 isMixedPair = false ;
12501256
1251- } else if ((he3Hadcand.flagsHe3 & ParticleFlags::kFromLi4 ) && (he3Hadcand.flagsHad & ParticleFlags::kFromLi4 )) {
1257+ } else if (static_cast < bool > (he3Hadcand.flagsHe3 & ParticleFlags::kFromLi4 ) && static_cast < bool > (he3Hadcand.flagsHad & ParticleFlags::kFromLi4 )) {
12521258
12531259 searchForCommonMotherTrack (motherHe3Idxs, motherHadIdxs, mcParticles, motherParticle, he3Hadcand, isMixedPair, Li4PDG);
12541260 if (!isMixedPair) {
12551261 he3Hadcand.flags |= Flags::kBothFromLi4 ;
12561262 }
12571263
1258- } else if ((he3Hadcand.flagsHe3 & ParticleFlags::kFromHypertriton ) && (he3Hadcand.flagsHad & ParticleFlags::kFromHypertriton )) {
1264+ } else if (static_cast < bool > (he3Hadcand.flagsHe3 & ParticleFlags::kFromHypertriton ) && static_cast < bool > (he3Hadcand.flagsHad & ParticleFlags::kFromHypertriton )) {
12591265
12601266 searchForCommonMotherTrack (motherHe3Idxs, motherHadIdxs, mcParticles, motherParticle, he3Hadcand, isMixedPair, H3LPDG );
12611267 if (!isMixedPair) {
@@ -1306,8 +1312,9 @@ struct he3HadronFemto {
13061312
13071313 for (const auto & track : tracks) {
13081314
1309- if (!selectTrack (track, Species::kHad ))
1315+ if (!selectTrack (track, Species::kHad )) {
13101316 continue ;
1317+ }
13111318
13121319 const float itsNSigmaHad = settingHadPDGCode == PDG_t::kProton ? mResponseITS .nSigmaITS <o2::track::PID ::Proton>(track.itsClusterSizes (), track.p (), track.eta ()) : mResponseITS .nSigmaITS <o2::track::PID ::Pion>(track.itsClusterSizes (), track.p (), track.eta ());
13131320 mQaRegistry .fill (HIST (" Had/h2NsigmaHadronITS_preselection" ), track.sign () * track.pt (), itsNSigmaHad, collision.centFT0C ());
@@ -1332,8 +1339,9 @@ struct he3HadronFemto {
13321339 const float itsNSigmaHe3 = mResponseITS .nSigmaITS <o2::track::PID ::Helium3>(track.itsClusterSizes (), 2 * track.p (), track.eta ());
13331340 mQaRegistry .fill (HIST (" He3/h2NsigmaHe3ITS_preselection" ), ptHe3Corrected, itsNSigmaHe3, collision.centFT0C ());
13341341
1335- if (!selectTrack (track, Species::kHe3 ) || !selectDcaNsigmaCut (ptHe3Corrected, track.dcaXY (), track.dcaZ (), Species::kHe3 ) || (itsNSigmaHe3 < cutSettings.settingCutNsigmaITSHe3 ))
1342+ if (!selectTrack (track, Species::kHe3 ) || !selectDcaNsigmaCut (ptHe3Corrected, track.dcaXY (), track.dcaZ (), Species::kHe3 ) || (itsNSigmaHe3 < cutSettings.settingCutNsigmaITSHe3 )) {
13361343 continue ;
1344+ }
13371345
13381346 mQaRegistry .fill (HIST (" He3/hHe3Pt" ), track.sign () * ptHe3Corrected);
13391347 mQaRegistry .fill (HIST (" He3/hDCAxyHe3" ), track.dcaXY ());
@@ -1353,17 +1361,20 @@ struct he3HadronFemto {
13531361
13541362 void processPurityMc (const CollisionsFullMC::iterator& collision, const TrackCandidatesMC& tracks, const aod::BCsWithTimestamps& bcs, const aod::McParticles& /* mcParticles*/ , const aod::McTrackLabels& /* mcTrackLabels*/ )
13551363 {
1356- if (!selectCollision</* isMC*/ false >(collision, bcs))
1364+ if (!selectCollision</* isMC*/ false >(collision, bcs)) {
13571365 return ;
1366+ }
13581367
13591368 for (const auto & track : tracks) {
13601369
1361- if (!track.has_mcParticle ())
1370+ if (!track.has_mcParticle ()) {
13621371 continue ;
1372+ }
13631373 const auto & particle = track.mcParticle_as <aod::McParticles>();
13641374
1365- if (!selectTrack (track, Species::kHad ))
1375+ if (!selectTrack (track, Species::kHad )) {
13661376 continue ;
1377+ }
13671378
13681379 if (selectDcaNsigmaCut (track.pt (), track.dcaXY (), track.dcaZ (), Species::kHad )) {
13691380 mQaRegistry .fill (HIST (" Had/hHadronPt" ), track.pt ());
@@ -1390,8 +1401,9 @@ struct he3HadronFemto {
13901401 }
13911402
13921403 const float ptHe3Corrected = correctPtHe3TrackedAsTriton (track.pt (), track.pidForTracking ());
1393- if (!selectTrack (track, Species::kHe3 ) || !selectDcaNsigmaCut (ptHe3Corrected, track.dcaXY (), track.dcaZ (), Species::kHe3 ))
1404+ if (!selectTrack (track, Species::kHe3 ) || !selectDcaNsigmaCut (ptHe3Corrected, track.dcaXY (), track.dcaZ (), Species::kHe3 )) {
13941405 continue ;
1406+ }
13951407
13961408 mQaRegistry .fill (HIST (" He3/hHe3Pt" ), ptHe3Corrected);
13971409 mQaRegistry .fill (HIST (" He3/hDCAxyHe3" ), track.dcaXY ());
0 commit comments