@@ -71,6 +71,13 @@ constexpr static uint32_t GkEventMcFillMap = VarManager::ObjTypes::CollisionMC;
7171
7272constexpr static uint32_t GkTrackFillMapWithCov = VarManager::ObjTypes::Track | VarManager::ObjTypes::TrackExtra | VarManager::ObjTypes::TrackDCA | VarManager::ObjTypes::TrackSelection | VarManager::ObjTypes::TrackCov | VarManager::ObjTypes::TrackPID;
7373
74+ namespace dqefficiency_helpers
75+ {
76+ inline float * varValues () { return static_cast <float *>(VarManager::fgValues); }
77+ inline TString* varNames () { return static_cast <TString*>(VarManager::fgVariableNames); }
78+ inline TString* varUnits () { return static_cast <TString*>(VarManager::fgVariableUnits); }
79+ } // namespace dqefficiency_helpers
80+
7481struct Alice3DqTableMaker {
7582
7683 Produces<ReA3MCEvents> eventMC;
@@ -142,7 +149,7 @@ struct Alice3DqTableMaker {
142149
143150 fHistMan = new HistogramManager (" analysisHistos" , " aa" , VarManager::kNVars );
144151 fHistMan ->SetUseDefaultVariableNames (true );
145- fHistMan ->SetDefaultVarNames (VarManager::fgVariableNames, VarManager::fgVariableUnits );
152+ fHistMan ->SetDefaultVarNames (dqefficiency_helpers::varNames (), dqefficiency_helpers::varUnits () );
146153
147154 if (fConfigHistOutput .cfgQA && fConfigHistOutput .cfgDetailedQA ) {
148155 fDoDetailedQA = true ;
@@ -246,14 +253,14 @@ struct Alice3DqTableMaker {
246253 if (addTrackCutsStr != " " ) {
247254 std::vector<AnalysisCut*> addTrackCuts = dqcuts::GetCutsFromJSON (addTrackCutsStr.Data ());
248255 for (const auto & t : addTrackCuts) {
249- fTrackCuts .push_back (reinterpret_cast <AnalysisCompositeCut*>(t));
256+ fTrackCuts .push_back (dynamic_cast <AnalysisCompositeCut*>(t));
250257 }
251258 }
252259
253260 VarManager::SetUseVars (AnalysisCut::fgUsedVars); // provide the list of required variables so that VarManager knows what to fill
254261 }
255262
256- void defineHistograms (TString histClasses)
263+ void defineHistograms (const TString& histClasses)
257264 {
258265 std::unique_ptr<TObjArray> objArray (histClasses.Tokenize (" ;" ));
259266 for (int iclass = 0 ; iclass < objArray->GetEntries (); ++iclass) {
@@ -308,9 +315,9 @@ struct Alice3DqTableMaker {
308315 histTracks->GetXaxis ()->SetBinLabel (ibX, (*cut)->GetName ());
309316 }
310317 constexpr int NV0Tags = 5 ;
311- const char * v0TagNames[ NV0Tags] = {" Photon conversion" , " K^{0}_{s}" , " #Lambda" , " #bar{#Lambda}" , " #Omega" };
318+ const std::array<std::string, NV0Tags> v0TagNames = {" Photon conversion" , " K^{0}_{s}" , " #Lambda" , " #bar{#Lambda}" , " #Omega" };
312319 for (int ibY = 0 ; ibY < NV0Tags; ibY++) {
313- histTracks->GetXaxis ()->SetBinLabel (fTrackCuts .size () + 1 + ibY, v0TagNames[ibY]);
320+ histTracks->GetXaxis ()->SetBinLabel (fTrackCuts .size () + 1 + ibY, v0TagNames[ibY]. c_str () );
314321 }
315322 fStatsList ->Add (histTracks);
316323
@@ -335,7 +342,7 @@ struct Alice3DqTableMaker {
335342 for (const auto & mcCollision : mcCollisions) {
336343 VarManager::FillEventAlice3<GkEventMcFillMap>(mcCollision);
337344
338- fHistMan ->FillHistClass (" Event_MCTruth" , VarManager::fgValues );
345+ fHistMan ->FillHistClass (" Event_MCTruth" , dqefficiency_helpers::varValues () );
339346
340347 eventMC (mcCollision.generatorsID (), mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (),
341348 mcCollision.t (), mcCollision.weight (), mcCollision.impactParameter ()); // TODO: Determine and fill multiplicity values
@@ -353,7 +360,7 @@ struct Alice3DqTableMaker {
353360 fLabelsMapReversed .clear ();
354361 fMCFlags .clear ();
355362
356- uint16_t mcflags = static_cast <uint16_t >(0 ); // flags which will hold the decisions for each MC signal
363+ auto mcflags = static_cast <uint16_t >(0 ); // flags which will hold the decisions for each MC signal
357364 int trackCounter = 0 ;
358365
359366 for (const auto & mctrack : mcTracks) {
@@ -396,8 +403,8 @@ struct Alice3DqTableMaker {
396403
397404 int j = 0 ;
398405 for (auto signal = fMCSignals .begin (); signal != fMCSignals .end (); ++signal, ++j) {
399- if (mcflags & (static_cast <uint16_t >(1 ) << j)) {
400- fHistMan ->FillHistClass (Form (" MCTruth_%s" , (*signal)->GetName ()), VarManager::fgValues );
406+ if (( mcflags & (static_cast <uint16_t >(1 ) << j)) != 0u ) {
407+ fHistMan ->FillHistClass (Form (" MCTruth_%s" , (*signal)->GetName ()), dqefficiency_helpers::varValues () );
401408 }
402409 }
403410 }
@@ -414,7 +421,7 @@ struct Alice3DqTableMaker {
414421 // Loop over collisions
415422 for (const auto & collision : collisions) {
416423
417- (reinterpret_cast <TH2I *>(fStatsList ->At (0 )))->Fill (1.0 , static_cast <float >(o2::aod::evsel::kNsel ));
424+ (dynamic_cast <TH2I *>(fStatsList ->At (0 )))->Fill (1.0 , static_cast <float >(o2::aod::evsel::kNsel ));
418425
419426 VarManager::ResetValues (0 , VarManager::kNEventWiseVariables );
420427 VarManager::FillEventAlice3<GkEventFillMap>(collision); // extract event information and place it in the fValues array
@@ -425,15 +432,15 @@ struct Alice3DqTableMaker {
425432 }
426433
427434 if (fDoDetailedQA ) {
428- fHistMan ->FillHistClass (" Event_BeforeCuts" , VarManager::fgValues );
435+ fHistMan ->FillHistClass (" Event_BeforeCuts" , dqefficiency_helpers::varValues () );
429436 }
430437
431438 // Apply the user specified event selection
432- if (!fEventCut ->IsSelected (VarManager::fgValues )) {
439+ if (!fEventCut ->IsSelected (dqefficiency_helpers::varValues () )) {
433440 continue ;
434441 }
435442
436- (reinterpret_cast <TH2I *>(fStatsList ->At (0 )))->Fill (3.0 , static_cast <float >(o2::aod::evsel::kNsel ));
443+ (dynamic_cast <TH2I *>(fStatsList ->At (0 )))->Fill (3.0 , static_cast <float >(o2::aod::evsel::kNsel ));
437444
438445 // Fill historams after event cuts
439446 fHistMan ->FillHistClass (" Event_AfterCuts" , VarManager::fgValues);
@@ -459,16 +466,16 @@ struct Alice3DqTableMaker {
459466 // so in case of multiple associations, the variables depending on the collision association (e.g. DCA, secondary vertexing, etc)
460467 // have to be recomputed at analysis time for each association.
461468
462- uint64_t trackFilteringTag = static_cast <uint64_t >(0 );
463- uint32_t trackTempFilterMap = static_cast <uint32_t >(0 );
464- uint16_t mcflags = static_cast <uint16_t >(0 );
469+ auto trackFilteringTag = static_cast <uint64_t >(0 );
470+ auto trackTempFilterMap = static_cast <uint32_t >(0 );
471+ auto mcflags = static_cast <uint16_t >(0 );
465472 int trackCounter = fLabelsMap .size ();
466473
467474 for (const auto & assoc : assocs) {
468475
469476 auto track = assoc.template track_as <MyBarrelTracks>();
470477
471- if (fCollIndexMap .find (track.collisionId ()) == fCollIndexMap . end ( )) {
478+ if (! fCollIndexMap .contains (track.collisionId ())) {
472479 continue ;
473480 }
474481
@@ -479,26 +486,26 @@ struct Alice3DqTableMaker {
479486 VarManager::FillTrackAlice3<GkTrackFillMapWithCov>(track);
480487
481488 if (fDoDetailedQA ) {
482- fHistMan ->FillHistClass (" TrackBarrel_BeforeCuts" , VarManager::fgValues );
489+ fHistMan ->FillHistClass (" TrackBarrel_BeforeCuts" , dqefficiency_helpers::varValues () );
483490 }
484491
485492 int n = 0 ;
486493 for (auto cut = fTrackCuts .begin (); cut != fTrackCuts .end (); cut++, n++) {
487- if ((*cut)->IsSelected (VarManager::fgValues )) {
494+ if ((*cut)->IsSelected (dqefficiency_helpers::varValues () )) {
488495 trackTempFilterMap |= (static_cast <uint32_t >(1 ) << n);
489496 if (fConfigHistOutput .cfgQA ) {
490- fHistMan ->FillHistClass (Form (" TrackBarrel_%s" , (*cut)->GetName ()), VarManager::fgValues );
497+ fHistMan ->FillHistClass (Form (" TrackBarrel_%s" , (*cut)->GetName ()), dqefficiency_helpers::varValues () );
491498 }
492- (reinterpret_cast <TH1I *>(fStatsList ->At (1 )))->Fill (static_cast <float >(n));
499+ (dynamic_cast <TH1I *>(fStatsList ->At (1 )))->Fill (static_cast <float >(n));
493500 }
494501 }
495- if (! trackTempFilterMap) {
502+ if (trackTempFilterMap == 0u ) {
496503 continue ;
497504 }
498505
499506 // If this track is already present in the index map, it means it was already skimmed,
500507 // so we just store the association and we skip the track
501- if (fTrackIndexMap .find (track.globalIndex ()) != fTrackIndexMap . end ( )) {
508+ if (fTrackIndexMap .contains (track.globalIndex ())) {
502509 trackBarrelAssoc (fCollIndexMap [collision.globalIndex ()], fTrackIndexMap [track.globalIndex ()]);
503510 continue ;
504511 }
@@ -567,8 +574,8 @@ struct Alice3DqTableMaker {
567574 if (fDoDetailedQA ) {
568575 j = 0 ;
569576 for (const auto & cut : fTrackCuts ) {
570- if (trackTempFilterMap & (uint8_t (1 ) << j)) {
571- fHistMan ->FillHistClass (Form (" TrackBarrel_%s_%s" , cut->GetName (), sig->GetName ()), VarManager::fgValues ); // fill the reconstructed truth
577+ if (( trackTempFilterMap & (uint8_t (1 ) << j)) != 0u ) {
578+ fHistMan ->FillHistClass (Form (" TrackBarrel_%s_%s" , cut->GetName (), sig->GetName ()), dqefficiency_helpers::varValues () ); // fill the reconstructed truth
572579 }
573580 j++;
574581 }
@@ -579,7 +586,7 @@ struct Alice3DqTableMaker {
579586
580587 // if the MC truth particle corresponding to this reconstructed track is not already written,
581588 // add it to the skimmed stack
582- if (!(fLabelsMap .find (mctrack.globalIndex ()) != fLabelsMap . end ( ))) {
589+ if (!(fLabelsMap .contains (mctrack.globalIndex ()))) {
583590 fLabelsMap [mctrack.globalIndex ()] = trackCounter;
584591 fLabelsMapReversed [trackCounter] = mctrack.globalIndex ();
585592 fMCFlags [mctrack.globalIndex ()] = mcflags;
@@ -610,7 +617,7 @@ struct Alice3DqTableMaker {
610617
611618 skimCollisions (collisions);
612619
613- if (fCollIndexMap .size () == 0 )
620+ if (fCollIndexMap .empty () )
614621 return ;
615622
616623 skimMCParticles (mcParticles, mcCollisions);
@@ -627,7 +634,7 @@ struct Alice3DqTableMaker {
627634 trackBarrelLabels.reserve (tracksBarrel.size ());
628635 }
629636
630- if (fCollIndexMap .size () > 0 ) {
637+ if (! fCollIndexMap .empty () ) {
631638
632639 for (auto const & [origIdx, skimIdx] : fCollIndexMap ) {
633640 auto collision = collisions.rawIteratorAt (origIdx);
@@ -649,7 +656,7 @@ struct Alice3DqTableMaker {
649656 if (mctrack.has_mothers ()) {
650657 for (const auto & m : mctrack.mothersIds ()) {
651658 if (m < mcParticles.size ()) { // protect against bad mother indices
652- if (fLabelsMap .find (m) != fLabelsMap . end ( )) {
659+ if (fLabelsMap .contains (m )) {
653660 mothers.push_back (fLabelsMap .find (m)->second );
654661 }
655662 } else {
@@ -666,7 +673,7 @@ struct Alice3DqTableMaker {
666673 for (int d = mctrack.daughtersIds ()[0 ]; d <= mctrack.daughtersIds ()[1 ]; ++d) {
667674 // TODO: remove this check as soon as issues with MC production are fixed
668675 if (d < mcParticles.size ()) { // protect against bad daughter indices
669- if (fLabelsMap .find (d) != fLabelsMap . end ( )) {
676+ if (fLabelsMap .contains (d )) {
670677 daughters.push_back (fLabelsMap .find (d)->second );
671678 }
672679 } else {
@@ -675,26 +682,27 @@ struct Alice3DqTableMaker {
675682 }
676683 }
677684 }
678- int daughterRange[2 ] = {-1 , -1 };
679- if (daughters.size () > 0 ) {
685+ constexpr int NDaughters = 2 ;
686+ std::array<int , NDaughters> daughterRange = {-1 , -1 };
687+ if (daughters.empty ()) {
680688 daughterRange[0 ] = daughters[0 ];
681689 daughterRange[1 ] = daughters[daughters.size () - 1 ];
682690 }
683691
684692 // NOTE: Here we assume that MC collisions are not filtered, so there is no new vs old index map for translation
685693 auto mcCollision = mctrack.template mcCollision_as <MyEventsMC>();
686694 trackMC (mcCollision.globalIndex (), mctrack.pdgCode (), mctrack.statusCode (), mctrack.flags (),
687- mothers, daughterRange,
695+ mothers, daughterRange. data () ,
688696 mctrack.weight (), mctrack.pt (), mctrack.eta (), mctrack.phi (), mctrack.e (),
689697 mctrack.vx (), mctrack.vy (), mctrack.vz (), mctrack.vt (), mcflags);
690698
691699 for (unsigned int isig = 0 ; isig < fMCSignals .size (); isig++) {
692- if (mcflags & (static_cast <uint16_t >(1 ) << isig)) {
693- (reinterpret_cast <TH1I *>(fStatsList ->At (2 )))->Fill (static_cast <float >(isig));
700+ if (( mcflags & (static_cast <uint16_t >(1 ) << isig)) != 0u ) {
701+ (dynamic_cast <TH1I *>(fStatsList ->At (2 )))->Fill (static_cast <float >(isig));
694702 }
695703 }
696704 if (mcflags == 0 ) {
697- (reinterpret_cast <TH1I *>(fStatsList ->At (2 )))->Fill (static_cast <float >(fMCSignals .size ()));
705+ (dynamic_cast <TH1I *>(fStatsList ->At (2 )))->Fill (static_cast <float >(fMCSignals .size ()));
698706 }
699707 }
700708 }
0 commit comments