@@ -71,10 +71,10 @@ using namespace o2::framework;
7171using namespace o2 ::framework::expressions;
7272using namespace constants ::math;
7373
74- #define O2_DEFINE_CONFIGURABLE (NAME, TYPE, DEFAULT, HELP ) Configurable<TYPE > NAME {#NAME , DEFAULT , HELP };
74+ #define O2_DEFINE_CONFIGURABLE (NAME, TYPE, DEFAULT, HELP ) Configurable<TYPE > NAME {#NAME , ( DEFAULT ) , HELP };
7575
7676static constexpr float PairCutOff = -1 .f;
77- static constexpr float CfgPairCutDefaults[ 1 ][ 5 ] = {{ PairCutOff, PairCutOff, PairCutOff, PairCutOff, PairCutOff}};
77+ static constexpr std::array<std::array< float , 5 >, 1 > CfgPairCutDefaults{{{ PairCutOff, PairCutOff, PairCutOff, PairCutOff, PairCutOff} }};
7878
7979struct Nucleibalance {
8080 SliceCache cache;
@@ -172,14 +172,17 @@ struct Nucleibalance {
172172 {
173173 if (cfgTrigger.value == TriggerNone) {
174174 return true ;
175- } else if (cfgTrigger.value == TriggerSel8) {
175+ }
176+ if (cfgTrigger.value == TriggerSel8) {
176177 return collision.sel8 ();
177- } else if (cfgTrigger.value == TriggerSel8Quality) {
178+ }
179+ if (cfgTrigger.value == TriggerSel8Quality) {
178180 return collision.sel8 () &&
179181 collision.selection_bit (aod::evsel::kNoSameBunchPileup ) &&
180182 collision.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV ) &&
181183 collision.selection_bit (aod::evsel::kIsGoodITSLayersAll );
182- } else if (cfgTrigger.value == TriggerSel8OccQuality) {
184+ }
185+ if (cfgTrigger.value == TriggerSel8OccQuality) {
183186 const int occupancy = collision.trackOccupancyInTimeRange ();
184187 if (occupancy < cfgMinOcc.value || occupancy >= cfgMaxOcc.value ) {
185188 return false ;
@@ -189,7 +192,8 @@ struct Nucleibalance {
189192 collision.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV ) &&
190193 collision.selection_bit (aod::evsel::kNoCollInTimeRangeStandard ) &&
191194 collision.selection_bit (aod::evsel::kIsGoodITSLayersAll );
192- } else if (cfgTrigger.value == TriggerSel8NoSbpZvtx) {
195+ }
196+ if (cfgTrigger.value == TriggerSel8NoSbpZvtx) {
193197 return collision.sel8 () &&
194198 collision.selection_bit (aod::evsel::kNoSameBunchPileup ) &&
195199 collision.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV );
@@ -270,7 +274,7 @@ struct Nucleibalance {
270274 std::vector<float > efficiencyAssociatedCache;
271275
272276 std::unique_ptr<TFormula> multCutFormula;
273- std::array<uint, 4 > multCutFormulaParamIndex;
277+ std::array<uint, 4 > multCutFormulaParamIndex{} ;
274278
275279 struct Config {
276280 bool mPairCuts = false ;
@@ -282,7 +286,7 @@ struct Nucleibalance {
282286 HistogramRegistry registry{" registry" };
283287 PairCuts mPairCuts ;
284288
285- Service<o2::ccdb::BasicCCDBManager> ccdb;
289+ Service<o2::ccdb::BasicCCDBManager> ccdb{} ;
286290
287291 // AO2D-based tracks with PID for pi / K / p / d
288292 using TracksPID = soa::Join<aod::Tracks,
@@ -394,12 +398,17 @@ struct Nucleibalance {
394398 }
395399
396400 struct SimpleTrack {
397- float eta;
398- float phi;
399- float pt;
400- int charge;
401+ float eta{} ;
402+ float phi{} ;
403+ float pt{} ;
404+ int charge{} ;
401405 };
402406
407+ static SimpleTrack makeSimpleTrack (float eta, float phi, float pt, int charge)
408+ {
409+ return SimpleTrack{.eta = eta, .phi = phi, .pt = pt, .charge = charge};
410+ }
411+
403412 struct MixEventEntry {
404413 float multiplicity = 0 .f;
405414 float zvtx = 0 .f;
@@ -424,17 +433,22 @@ struct Nucleibalance {
424433 registry.add (" etaphi" , " multiplicity/centrality vs eta vs phi" , {HistType::kTH3F , {{100 , 0 , 100 , " multiplicity/centrality" }, {100 , -2 , 2 , " #eta" }, {200 , 0 , o2::constants::math::TwoPI, " #varphi" }}});
425434
426435 if (doprocessSameDerivedMultSet) {
427- if (cfgMultCorrelationsMask == 0 )
436+ if (cfgMultCorrelationsMask. value == 0u ) {
428437 LOGF (fatal, " cfgMultCorrelationsMask can not be 0 when MultSet process functions are in use." );
438+ }
429439 std::vector<AxisSpec> multAxes;
430- if (cfgMultCorrelationsMask & aod::cfmultset::CentFT0C)
440+ if (( cfgMultCorrelationsMask. value & aod::cfmultset::CentFT0C) != 0u ) {
431441 multAxes.emplace_back (100 , 0 , 100 , " FT0C centrality" );
432- if (cfgMultCorrelationsMask & aod::cfmultset::MultFV0A)
442+ }
443+ if ((cfgMultCorrelationsMask.value & aod::cfmultset::MultFV0A) != 0u ) {
433444 multAxes.emplace_back (1000 , 0 , 100000 , " V0A multiplicity" );
434- if (cfgMultCorrelationsMask & aod::cfmultset::MultNTracksPV)
445+ }
446+ if ((cfgMultCorrelationsMask.value & aod::cfmultset::MultNTracksPV) != 0u ) {
435447 multAxes.emplace_back (100 , 0 , 1000 , " Nch PV" );
436- if (cfgMultCorrelationsMask & aod::cfmultset::MultNTracksGlobal)
448+ }
449+ if ((cfgMultCorrelationsMask.value & aod::cfmultset::MultNTracksGlobal) != 0u ) {
437450 multAxes.emplace_back (100 , 0 , 1000 , " Nch Global" );
451+ }
438452 registry.add (" multCorrelations" , " Multiplicity correlations" , {HistType::kTHnSparseF , multAxes});
439453 }
440454 registry.add (" multiplicity" , " event multiplicity" , {HistType::kTH1F , {{1000 , 0 , 100 , " /multiplicity/centrality" }}});
@@ -502,8 +516,9 @@ struct Nucleibalance {
502516 same->setTrackEtaCut (cfgCutEta);
503517 mixed->setTrackEtaCut (cfgCutEta);
504518
505- if (!cfgEfficiencyAssociated.value .empty ())
519+ if (!cfgEfficiencyAssociated.value .empty ()) {
506520 efficiencyAssociatedCache.reserve (512 );
521+ }
507522
508523 // o2-ccdb-upload -p Users/jgrosseo/correlations/LHC15o -f /tmp/correction_2011_global.root -k correction
509524
@@ -698,10 +713,10 @@ struct Nucleibalance {
698713 if (cfg.efficiencyLoaded ) {
699714 return ;
700715 }
701- if (cfgEfficiencyTrigger.value .empty () == false ) {
716+ if (! cfgEfficiencyTrigger.value .empty ()) {
702717 if (cfgLocalEfficiency > 0 ) {
703718 TFile* fEfficiencyTrigger = TFile::Open (cfgEfficiencyTrigger.value .c_str (), " READ" );
704- cfg.mEfficiencyTrigger = reinterpret_cast <THn*>(fEfficiencyTrigger ->Get (" ccdb_object" ));
719+ cfg.mEfficiencyTrigger = dynamic_cast <THn*>(fEfficiencyTrigger ->Get (" ccdb_object" ));
705720 } else {
706721 cfg.mEfficiencyTrigger = ccdb->getForTimeStamp <THnT<float >>(cfgEfficiencyTrigger, timestamp);
707722 }
@@ -710,10 +725,10 @@ struct Nucleibalance {
710725 }
711726 LOGF (info, " Loaded efficiency histogram for trigger particles from %s (%p)" , cfgEfficiencyTrigger.value .c_str (), static_cast <void *>(cfg.mEfficiencyTrigger ));
712727 }
713- if (cfgEfficiencyAssociated.value .empty () == false ) {
728+ if (! cfgEfficiencyAssociated.value .empty ()) {
714729 if (cfgLocalEfficiency > 0 ) {
715730 TFile* fEfficiencyAssociated = TFile::Open (cfgEfficiencyAssociated.value .c_str (), " READ" );
716- cfg.mEfficiencyAssociated = reinterpret_cast <THn*>(fEfficiencyAssociated ->Get (" ccdb_object" ));
731+ cfg.mEfficiencyAssociated = dynamic_cast <THn*>(fEfficiencyAssociated ->Get (" ccdb_object" ));
717732 } else {
718733 cfg.mEfficiencyAssociated = ccdb->getForTimeStamp <THnT<float >>(cfgEfficiencyAssociated, timestamp);
719734 }
@@ -727,12 +742,12 @@ struct Nucleibalance {
727742
728743 double getEfficiencyCorrection (THn* eff, float eta, float pt, float multiplicity, float posZ)
729744 {
730- int effVars[ 4 ] ;
745+ std::array< int , 4 > effVars{} ;
731746 effVars[0 ] = eff->GetAxis (0 )->FindBin (eta);
732747 effVars[1 ] = eff->GetAxis (1 )->FindBin (pt);
733748 effVars[2 ] = eff->GetAxis (2 )->FindBin (multiplicity);
734749 effVars[3 ] = eff->GetAxis (3 )->FindBin (posZ);
735- return eff->GetBinContent (effVars);
750+ return eff->GetBinContent (effVars. data () );
736751 }
737752
738753 template <typename TTrack>
@@ -863,13 +878,13 @@ struct Nucleibalance {
863878
864879 if (passPIDForSpecies (trk, cfgTriggerSpecies.value )) {
865880 if (cfgTriggerCharge.value == 0 || trk.sign () == cfgTriggerCharge.value ) {
866- triggerTracks.push_back (SimpleTrack{ cftrk.eta (), cftrk.phi (), cftrk.pt (), trk.sign ()} );
881+ triggerTracks.push_back (makeSimpleTrack ( cftrk.eta (), cftrk.phi (), cftrk.pt (), trk.sign ()) );
867882 }
868883 }
869884
870885 if (passPIDForSpecies (trk, cfgAssociatedSpecies.value )) {
871886 if (cfgAssociatedCharge.value == 0 || trk.sign () == cfgAssociatedCharge.value ) {
872- associatedTracks.push_back (SimpleTrack{ cftrk.eta (), cftrk.phi (), cftrk.pt (), trk.sign ()} );
887+ associatedTracks.push_back (makeSimpleTrack ( cftrk.eta (), cftrk.phi (), cftrk.pt (), trk.sign ()) );
873888 }
874889 }
875890 }
@@ -952,7 +967,7 @@ struct Nucleibalance {
952967 }
953968
954969 // Save for multiplicity / QA (keep charge even if neutral)
955- eventTracks.push_back (SimpleTrack{ trk.eta (), trk.phi (), trk.pt (), static_cast <int >(trk.sign ())} );
970+ eventTracks.push_back (makeSimpleTrack ( trk.eta (), trk.phi (), trk.pt (), static_cast <int >(trk.sign ())) );
956971
957972 if (trk.sign () == 0 ) {
958973 continue ;
@@ -961,14 +976,14 @@ struct Nucleibalance {
961976 // Trigger selection: PID + charge
962977 if (passPIDForSpecies (trk, cfgTriggerSpecies.value )) {
963978 if (cfgTriggerCharge.value == 0 || trk.sign () == cfgTriggerCharge.value ) {
964- triggerTracks.push_back (SimpleTrack{ trk.eta (), trk.phi (), trk.pt (), trk.sign ()} );
979+ triggerTracks.push_back (makeSimpleTrack ( trk.eta (), trk.phi (), trk.pt (), trk.sign ()) );
965980 }
966981 }
967982
968983 // Associated selection: PID + charge
969984 if (passPIDForSpecies (trk, cfgAssociatedSpecies.value )) {
970985 if (cfgAssociatedCharge.value == 0 || trk.sign () == cfgAssociatedCharge.value ) {
971- associatedTracks.push_back (SimpleTrack{ trk.eta (), trk.phi (), trk.pt (), trk.sign ()} );
986+ associatedTracks.push_back (makeSimpleTrack ( trk.eta (), trk.phi (), trk.pt (), trk.sign ()) );
972987 }
973988 }
974989 }
@@ -1108,20 +1123,20 @@ struct Nucleibalance {
11081123 continue ;
11091124 }
11101125
1111- eventTracks.push_back (SimpleTrack{ trk.eta (), trk.phi (), trk.pt (), static_cast <int >(trk.sign ())} );
1126+ eventTracks.push_back (makeSimpleTrack ( trk.eta (), trk.phi (), trk.pt (), static_cast <int >(trk.sign ())) );
11121127
11131128 if (trk.sign () == 0 ) {
11141129 continue ;
11151130 }
11161131
11171132 if (passPIDForSpecies (trk, cfgTriggerSpecies.value ) &&
11181133 (cfgTriggerCharge.value == 0 || trk.sign () == cfgTriggerCharge.value )) {
1119- triggerTracks.push_back (SimpleTrack{ trk.eta (), trk.phi (), trk.pt (), trk.sign ()} );
1134+ triggerTracks.push_back (makeSimpleTrack ( trk.eta (), trk.phi (), trk.pt (), trk.sign ()) );
11201135 }
11211136
11221137 if (passPIDForSpecies (trk, cfgAssociatedSpecies.value ) &&
11231138 (cfgAssociatedCharge.value == 0 || trk.sign () == cfgAssociatedCharge.value )) {
1124- associatedTracks.push_back (SimpleTrack{ trk.eta (), trk.phi (), trk.pt (), trk.sign ()} );
1139+ associatedTracks.push_back (makeSimpleTrack ( trk.eta (), trk.phi (), trk.pt (), trk.sign ()) );
11251140 }
11261141 }
11271142
@@ -1395,7 +1410,7 @@ struct Nucleibalance {
13951410 }
13961411 if (passPIDForSpecies (trk, cfgTriggerSpecies.value )) {
13971412 if (cfgTriggerCharge.value == 0 || trk.sign () == cfgTriggerCharge.value ) {
1398- triggerTracks.push_back (SimpleTrack{ cftrk.eta (), cftrk.phi (), cftrk.pt (), trk.sign ()} );
1413+ triggerTracks.push_back (makeSimpleTrack ( cftrk.eta (), cftrk.phi (), cftrk.pt (), trk.sign ()) );
13991414 }
14001415 }
14011416 }
@@ -1408,7 +1423,7 @@ struct Nucleibalance {
14081423 }
14091424 if (passPIDForSpecies (trk, cfgAssociatedSpecies.value )) {
14101425 if (cfgAssociatedCharge.value == 0 || trk.sign () == cfgAssociatedCharge.value ) {
1411- associatedTracks.push_back (SimpleTrack{ cftrk.eta (), cftrk.phi (), cftrk.pt (), trk.sign ()} );
1426+ associatedTracks.push_back (makeSimpleTrack ( cftrk.eta (), cftrk.phi (), cftrk.pt (), trk.sign ()) );
14121427 }
14131428 }
14141429 }
@@ -1468,11 +1483,13 @@ struct Nucleibalance {
14681483 case PdgProton: // proton
14691484 case -PdgProton:
14701485 return 2 ;
1486+ default :
1487+ break ;
14711488 }
1472- if (std::find (cfgMcTriggerPDGs->begin (), cfgMcTriggerPDGs->end (), pdgCode) != cfgMcTriggerPDGs->end ())
1489+ if (std::find (cfgMcTriggerPDGs->begin (), cfgMcTriggerPDGs->end (), pdgCode) != cfgMcTriggerPDGs->end ()) {
14731490 return 4 ;
1474- else
1475- return 3 ;
1491+ }
1492+ return 3 ;
14761493 }
14771494
14781495 // NOTE SmallGroups includes soa::Filtered always
@@ -1573,11 +1590,13 @@ struct Nucleibalance {
15731590 bool useMCMultiplicity = (cfgCentBinsForMC == 0 );
15741591 auto getMultiplicity =
15751592 [&collisions, &useMCMultiplicity, this ](auto & col) {
1576- if (useMCMultiplicity)
1593+ if (useMCMultiplicity) {
15771594 return col.multiplicity ();
1595+ }
15781596 auto groupedCollisions = collisions.sliceBy (collisionPerMCCollision, col.globalIndex ());
1579- if (groupedCollisions.size () == 0 )
1597+ if (groupedCollisions.size () == 0 ) {
15801598 return -1 .0f ;
1599+ }
15811600 return groupedCollisions.begin ().multiplicity ();
15821601 };
15831602
@@ -1836,14 +1855,17 @@ struct Lambdastarproxy {
18361855 }
18371856 if (lstarCfgTrigger.value == TriggerNone) {
18381857 return true ;
1839- } else if (lstarCfgTrigger.value == TriggerSel8) {
1858+ }
1859+ if (lstarCfgTrigger.value == TriggerSel8) {
18401860 return collision.sel8 ();
1841- } else if (lstarCfgTrigger.value == TriggerSel8Quality) {
1861+ }
1862+ if (lstarCfgTrigger.value == TriggerSel8Quality) {
18421863 return collision.sel8 () &&
18431864 collision.selection_bit (aod::evsel::kNoSameBunchPileup ) &&
18441865 collision.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV ) &&
18451866 collision.selection_bit (aod::evsel::kIsGoodITSLayersAll );
1846- } else if (lstarCfgTrigger.value == TriggerSel8OccQuality) {
1867+ }
1868+ if (lstarCfgTrigger.value == TriggerSel8OccQuality) {
18471869 const int occupancy = collision.trackOccupancyInTimeRange ();
18481870 if (occupancy < lstarMinOcc.value || occupancy >= lstarMaxOcc.value ) {
18491871 return false ;
@@ -1853,7 +1875,8 @@ struct Lambdastarproxy {
18531875 collision.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV ) &&
18541876 collision.selection_bit (aod::evsel::kNoCollInTimeRangeStandard ) &&
18551877 collision.selection_bit (aod::evsel::kIsGoodITSLayersAll );
1856- } else if (lstarCfgTrigger.value == TriggerSel8NoSbpZvtx) {
1878+ }
1879+ if (lstarCfgTrigger.value == TriggerSel8NoSbpZvtx) {
18571880 return collision.sel8 () &&
18581881 collision.selection_bit (aod::evsel::kNoSameBunchPileup ) &&
18591882 collision.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV );
@@ -2815,7 +2838,7 @@ struct Lambdastarproxy {
28152838 const float pyProxy = ProxyMomentumScale * ptD * std::sin (phiD);
28162839 const float pzProxy = ProxyMomentumScale * ptD * std::sinh (etaD);
28172840
2818- proxyCands.push_back (ProxyCand{pxProxy, pyProxy, pzProxy, static_cast <int >(trkD.sign ()), static_cast <int >(trkD.globalIndex ())});
2841+ proxyCands.push_back (ProxyCand{. px = pxProxy, . py = pyProxy, . pz = pzProxy, . charge = static_cast <int >(trkD.sign ()), . tid = static_cast <int >(trkD.globalIndex ())});
28192842 }
28202843
28212844 // Proton candidates (for genuine pK #Lambda^{*} reconstruction)
@@ -2875,7 +2898,7 @@ struct Lambdastarproxy {
28752898 const float pyP = ptP * std::sin (phiP);
28762899 const float pzP = ptP * std::sinh (etaP);
28772900
2878- protonCands.push_back (ProtonCand{pxP, pyP, pzP, static_cast <int >(trkP.sign ()), static_cast <int >(trkP.globalIndex ())});
2901+ protonCands.push_back (ProtonCand{. px = pxP, . py = pyP, . pz = pzP, . charge = static_cast <int >(trkP.sign ()), . tid = static_cast <int >(trkP.globalIndex ())});
28792902 }
28802903
28812904 // Kaon candidates
@@ -2943,7 +2966,7 @@ struct Lambdastarproxy {
29432966 const float pyK = ptK * std::sin (phiK);
29442967 const float pzK = ptK * std::sinh (etaK);
29452968
2946- kaonCands.push_back (KaonCand{pxK, pyK, pzK, static_cast <int >(trkK.sign ()), static_cast <int >(trkK.globalIndex ())});
2969+ kaonCands.push_back (KaonCand{. px = pxK, . py = pyK, . pz = pzK, . charge = static_cast <int >(trkK.sign ()), . tid = static_cast <int >(trkK.globalIndex ())});
29472970 }
29482971
29492972 if (kaonCands.empty ()) {
@@ -3007,8 +3030,9 @@ struct Lambdastarproxy {
30073030 if (hasProxyCandidates) {
30083031 for (auto const & pr : proxyCands) {
30093032 for (auto const & k : kaonCands) {
3010- if (pr.tid == k.tid )
3033+ if (pr.tid == k.tid ) {
30113034 continue ; // sanity check: should never match, but just in case of bug in candidate-building logic
3035+ }
30123036 const double mass = invariantMass (pr.px , pr.py , pr.pz , MassProton, k.px , k.py , k.pz , MassKaonCharged);
30133037
30143038 const float pxTot = pr.px + k.px ;
0 commit comments