99// granted to it by virtue of its status as an Intergovernmental Organization
1010// or submit itself to any jurisdiction.
1111
12+ // / \file dptdptfilter.cxx
13+ // / \brief Filters collisions and tracks according to selection criteria
14+ // / \author victor.gonzalez.sebastian@gmail.com
15+
1216#include < cmath>
1317#include < algorithm>
1418#include < string>
3135#include " Framework/runDataProcessing.h"
3236#include " Framework/RunningWorkflowInfo.h"
3337#include < TROOT.h>
34- #include < TDatabasePDG.h>
3538#include < TPDGCode.h>
3639#include < TParameter.h>
3740#include < TList.h>
@@ -90,6 +93,7 @@ const char* speciesName[kDptDptNoOfSpecies] = {"h", "e", "mu", "pi", "ka", "p"};
9093const char * speciesTitle[kDptDptNoOfSpecies ] = {" " , " e" , " #mu" , " #pi" , " K" , " p" };
9194
9295const char * eventSelectionSteps[knCollisionSelectionFlags] = {
96+ " IN" ,
9397 " MB" ,
9498 " INT7" ,
9599 " SEL7" ,
@@ -101,7 +105,8 @@ const char* eventSelectionSteps[knCollisionSelectionFlags] = {
101105 " ISVERTEXTRDMATCHED" ,
102106 " OCCUPANCY" ,
103107 " CENTRALITY" ,
104- " ZVERTEX" };
108+ " ZVERTEX" ,
109+ " SELECTED" };
105110
106111// ============================================================================================
107112// The DptDptFilter histogram objects
@@ -187,24 +192,24 @@ using namespace dptdptfilter;
187192// ////////////////////////////////////////////////////////////////////////////
188193
189194struct Multiplicity {
190- enum multest {
195+ enum MultEst {
191196 kV0M ,
192197 kCL1 ,
193198 kCL1GAP
194199 };
195200
196- float getMultiplicityClass () { return multiplicityclass ; }
201+ float getMultiplicityClass () { return multiplicityClass ; }
197202 float getMultiplicity () { return multiplicity; }
198203
199- multest classestimator = kV0M ;
204+ MultEst classestimator = kV0M ;
200205
201- float multiplicityclass = -1.0 ;
206+ float multiplicityClass = -1.0 ;
202207 float multiplicity = 0.0 ;
203208 bool inelgth0 = false ;
204- int V0AM = 0 ;
205- int V0CM = 0 ;
206- int CL1M = 0 ;
207- int CL1EtaGapM = 0 ;
209+ int v0am = 0 ;
210+ int v0cm = 0 ;
211+ int cl1m = 0 ;
212+ int cl1EtaGapM = 0 ;
208213 int dNchdEta = 0 ;
209214 int nPart = 0 ;
210215 TH1F* fhNPartTot = nullptr ; // /< total number of particles analyzed
@@ -269,11 +274,11 @@ struct Multiplicity {
269274 if (p.eta () < 1.0 && -1.0 < p.eta ()) {
270275 inelgth0 = true ;
271276 }
272- addTo (p, V0AM , 2.8 , 5.1 );
273- addTo (p, V0CM , -3.7 , -1.7 );
274- addTo (p, CL1M , -1.4 , 1.4 );
275- addTo (p, CL1EtaGapM , -1.4 , -0.8 );
276- addTo (p, CL1EtaGapM , 0.8 , 1.4 );
277+ addTo (p, v0am , 2.8 , 5.1 );
278+ addTo (p, v0cm , -3.7 , -1.7 );
279+ addTo (p, cl1m , -1.4 , 1.4 );
280+ addTo (p, cl1EtaGapM , -1.4 , -0.8 );
281+ addTo (p, cl1EtaGapM , 0.8 , 1.4 );
277282 addTo (p, dNchdEta, -0.5 , 0.5 );
278283 nPart++;
279284 }
@@ -287,17 +292,17 @@ struct Multiplicity {
287292 template <typename CollisionParticles>
288293 void extractMultiplicity (const CollisionParticles& particles)
289294 {
290- multiplicityclass = 105 ;
295+ multiplicityClass = 105 ;
291296 multiplicity = 0 ;
292297 inelgth0 = false ;
293298 nPart = 0 ;
294- V0AM = 0 ;
295- V0CM = 0 ;
296- CL1M = 0 ;
297- CL1EtaGapM = 0 ;
299+ v0am = 0 ;
300+ v0cm = 0 ;
301+ cl1m = 0 ;
302+ cl1EtaGapM = 0 ;
298303 dNchdEta = 0 ;
299304
300- for (auto particle : particles) {
305+ for (auto const & particle : particles) {
301306 addParticleToMultiplicity (particle);
302307 }
303308
@@ -306,37 +311,37 @@ struct Multiplicity {
306311 fhNPartTot->Fill (nPart);
307312 }
308313 if (fhV0Multiplicity != nullptr ) {
309- fhV0Multiplicity->Fill (V0AM + V0CM , dNchdEta);
314+ fhV0Multiplicity->Fill (v0am + v0cm , dNchdEta);
310315 }
311316 if (fhCL1Multiplicity != nullptr ) {
312- fhCL1Multiplicity->Fill (CL1M , dNchdEta);
317+ fhCL1Multiplicity->Fill (cl1m , dNchdEta);
313318 }
314319 if (fhCL1EtaGapMultiplicity != nullptr ) {
315- fhCL1EtaGapMultiplicity->Fill (CL1EtaGapM , dNchdEta);
320+ fhCL1EtaGapMultiplicity->Fill (cl1EtaGapM , dNchdEta);
316321 }
317322 switch (classestimator) {
318323 case kV0M :
319324 if (fhV0MMultPercentile != nullptr ) {
320- multiplicityclass = fhV0MMultPercentile->GetBinContent (fhV0MMultPercentile->FindFixBin (V0AM + V0CM ));
321- multiplicity = V0AM + V0CM ;
325+ multiplicityClass = fhV0MMultPercentile->GetBinContent (fhV0MMultPercentile->FindFixBin (v0am + v0cm ));
326+ multiplicity = v0am + v0cm ;
322327 }
323328 break ;
324329 case kCL1 :
325330 if (fhCL1MultPercentile != nullptr ) {
326- multiplicityclass = fhCL1MultPercentile->GetBinContent (fhCL1MultPercentile->FindFixBin (CL1M ));
327- multiplicity = CL1M ;
331+ multiplicityClass = fhCL1MultPercentile->GetBinContent (fhCL1MultPercentile->FindFixBin (cl1m ));
332+ multiplicity = cl1m ;
328333 }
329334 break ;
330335 case kCL1GAP :
331336 if (fhCL1EtaGapMultPercentile != nullptr ) {
332- multiplicityclass = fhCL1EtaGapMultPercentile->GetBinContent (fhCL1EtaGapMultPercentile->FindFixBin (CL1EtaGapM ));
333- multiplicity = CL1EtaGapM ;
337+ multiplicityClass = fhCL1EtaGapMultPercentile->GetBinContent (fhCL1EtaGapMultPercentile->FindFixBin (cl1EtaGapM ));
338+ multiplicity = cl1EtaGapM ;
334339 }
335340 break ;
336341 default :
337342 break ;
338343 }
339- fhMultiplicity->Fill (multiplicityclass );
344+ fhMultiplicity->Fill (multiplicityClass );
340345 }
341346 }
342347};
@@ -422,7 +427,7 @@ struct DptDptFilter {
422427
423428 if ((fDataType == kData ) || (fDataType == kDataNoEvtSel ) || (fDataType == kMC )) {
424429 /* create the reconstructed data histograms */
425- fhEventSelection = new TH1D (" EventSelection" , " ;counts" , knCollisionSelectionFlags, -0 .5f , static_cast <float >(knCollisionSelectionFlags) - 0 .5f );
430+ fhEventSelection = new TH1D (" EventSelection" , " ;; counts" , knCollisionSelectionFlags, -0 .5f , static_cast <float >(knCollisionSelectionFlags) - 0 .5f );
426431 for (int ix = 0 ; ix < knCollisionSelectionFlags; ++ix) {
427432 fhEventSelection->GetXaxis ()->SetBinLabel (ix + 1 , eventSelectionSteps[ix]);
428433 }
@@ -556,7 +561,7 @@ void DptDptFilter::processReconstructed(CollisionObject const& collision, Tracks
556561 fhVertexZB->Fill (collision.posZ ());
557562 uint8_t acceptedevent = uint8_t (false );
558563 float centormult = tentativecentmult;
559- if (IsEvtSelected (collision, centormult)) {
564+ if (isEventSelected (collision, centormult)) {
560565 acceptedevent = true ;
561566 fhCentMultA->Fill (centormult);
562567 fhMultA->Fill (mult);
@@ -616,7 +621,7 @@ bool DptDptFilter::processGenerated(CollisionObject const& mccollision, Particle
616621 using namespace dptdptfilter ;
617622
618623 uint8_t acceptedevent = uint8_t (false );
619- if (IsEvtSelected (mccollision, centormult)) {
624+ if (isEventSelected (mccollision, centormult)) {
620625 acceptedevent = uint8_t (true );
621626 }
622627 if (fullDerivedData) {
@@ -643,11 +648,11 @@ void DptDptFilter::processGeneratorLevel(aod::McCollision const& mccollision,
643648 }
644649
645650 bool processed = false ;
646- for (auto & tmpcollision : collisions) {
651+ for (auto const & tmpcollision : collisions) {
647652 if (tmpcollision.has_mcCollision ()) {
648653 if (tmpcollision.mcCollisionId () == mccollision.globalIndex ()) {
649654 typename AllCollisions::iterator const & collision = allcollisions.iteratorAt (tmpcollision.globalIndex ());
650- if (IsEvtSelected (collision, defaultcent)) {
655+ if (isEventSelected (collision, defaultcent)) {
651656 fhTrueVertexZAA->Fill ((mccollision.posZ ()));
652657 processGenerated (mccollision, mcparticles, defaultcent);
653658 processed = true ;
@@ -692,7 +697,7 @@ void DptDptFilter::processOnTheFlyGeneratorLevel(aod::McCollision const& mccolli
692697 fhTrueVertexZB->Fill (mccollision.posZ ());
693698 /* we assign a default value for the time being */
694699 float centormult = 50 .0f ;
695- if (IsEvtSelected (mccollision, centormult)) {
700+ if (isEventSelected (mccollision, centormult)) {
696701 acceptedEvent = true ;
697702 multiplicity.extractMultiplicity (mcparticles);
698703 fhTrueVertexZA->Fill ((mccollision.posZ ()));
@@ -711,7 +716,7 @@ void DptDptFilter::processVertexGenerated(aod::McCollisions const& mccollisions)
711716 fhTrueVertexZB->Fill (mccollision.posZ ());
712717 /* we assign a default value */
713718 float centmult = 50 .0f ;
714- if (IsEvtSelected (mccollision, centmult)) {
719+ if (isEventSelected (mccollision, centmult)) {
715720 fhTrueVertexZA->Fill ((mccollision.posZ ()));
716721 }
717722 }
@@ -727,10 +732,10 @@ T computeRMS(std::vector<T>& vec)
727732
728733 std::vector<T> diff (vec.size ());
729734 std::transform (vec.begin (), vec.end (), diff.begin (), [mean](T x) { return x - mean; });
730- T sq_sum = std::inner_product (diff.begin (), diff.end (), diff.begin (), 0.0 );
731- T stdev = std::sqrt (sq_sum / vec.size ());
735+ T sqSum = std::inner_product (diff.begin (), diff.end (), diff.begin (), 0.0 );
736+ T stdDev = std::sqrt (sqSum / vec.size ());
732737
733- return stdev ;
738+ return stdDev ;
734739}
735740
736741struct DptDptFilterTracks {
@@ -828,10 +833,10 @@ struct DptDptFilterTracks {
828833 auto insertInPIDselector = [&](auto cfg, uint sp) {
829834 if (cfg.value .mUseIt ) {
830835 if (cfg.value .mExclude ) {
831- pidselector.AddExclude (sp, &(cfg.value ));
836+ pidselector.addExcludedSpecies (sp, &(cfg.value ));
832837 LOGF (info, " Incorporated species: %s to PID selection for exclusion" , pidselector.spnames [sp].data ());
833838 } else {
834- pidselector.Add (sp, &(cfg.value ));
839+ pidselector.addSpecies (sp, &(cfg.value ));
835840 LOGF (info, " Incorporated species: %s to PID selection" , pidselector.spnames [sp].data ());
836841 }
837842 }
@@ -848,9 +853,9 @@ struct DptDptFilterTracks {
848853 fOutput .setObject (fOutputList );
849854
850855 /* incorporate configuration parameters to the output */
851- fOutputList ->Add (new TParameter<Int_t >(" TrackType" , cfgTrackType, ' f' ));
852- fOutputList ->Add (new TParameter<Int_t >(" TrackOneCharge" , 1 , ' f' ));
853- fOutputList ->Add (new TParameter<Int_t >(" TrackTwoCharge" , -1 , ' f' ));
856+ fOutputList ->Add (new TParameter<int >(" TrackType" , cfgTrackType, ' f' ));
857+ fOutputList ->Add (new TParameter<int >(" TrackOneCharge" , 1 , ' f' ));
858+ fOutputList ->Add (new TParameter<int >(" TrackTwoCharge" , -1 , ' f' ));
854859
855860 if ((fDataType == kData ) || (fDataType == kDataNoEvtSel ) || (fDataType == kMC )) {
856861 /* create the reconstructed data histograms */
@@ -1118,12 +1123,12 @@ struct DptDptFilterTracks {
11181123 if (!fullDerivedData) {
11191124 tracksinfo.reserve (tracks.size ());
11201125 }
1121- for (auto collision : collisions) {
1126+ for (auto const & collision : collisions) {
11221127 if (collision.collisionaccepted ()) {
11231128 ncollaccepted++;
11241129 }
11251130 }
1126- for (auto track : tracks) {
1131+ for (auto const & track : tracks) {
11271132 int8_t pid = -1 ;
11281133 if (track.has_collision () && (track.template collision_as <soa::Join<aod::Collisions, aod::DptDptCFCollisionsInfo>>()).collisionaccepted ()) {
11291134 pid = selectTrackAmbiguousCheck<outdebug>(collisions, track);
@@ -1169,13 +1174,13 @@ struct DptDptFilterTracks {
11691174 gentracksinfo.reserve (particles.size ());
11701175 }
11711176
1172- for (auto gencoll : gencollisions) {
1177+ for (auto const & gencoll : gencollisions) {
11731178 if (gencoll.collisionaccepted ()) {
11741179 acceptedcollisions++;
11751180 }
11761181 }
11771182
1178- for (auto & particle : particles) {
1183+ for (auto const & particle : particles) {
11791184 float charge = getCharge (particle);
11801185
11811186 int8_t pid = -1 ;
@@ -1348,7 +1353,7 @@ int8_t DptDptFilterTracks::selectTrack(TrackObject const& track)
13481353
13491354 /* track selection */
13501355 int8_t sp = -127 ;
1351- if (AcceptTrack <CollisionsObject>(track)) {
1356+ if (acceptTrack <CollisionsObject>(track)) {
13521357 /* the track has been accepted */
13531358 /* let's identify it */
13541359 sp = trackIdentification<outdebug>(track);
@@ -1403,22 +1408,22 @@ int8_t DptDptFilterTracks::selectTrackAmbiguousCheck(CollisionObjects const& col
14031408 }
14041409 }
14051410
1406- float multiplicityclass = (track.template collision_as <CollisionObjects>()).centmult ();
1411+ float multiplicityClass = (track.template collision_as <CollisionObjects>()).centmult ();
14071412 if (ambiguoustrack) {
14081413 /* keep track of ambiguous tracks */
1409- fhAmbiguousTrackType->Fill (ambtracktype, multiplicityclass );
1410- fhAmbiguousTrackPt->Fill (track.pt (), multiplicityclass );
1411- fhAmbiguityDegree->Fill (zvertexes.size (), multiplicityclass );
1414+ fhAmbiguousTrackType->Fill (ambtracktype, multiplicityClass );
1415+ fhAmbiguousTrackPt->Fill (track.pt (), multiplicityClass );
1416+ fhAmbiguityDegree->Fill (zvertexes.size (), multiplicityClass );
14121417 if (ambtracktype == 2 ) {
1413- fhCompatibleCollisionsZVtxRms->Fill (-computeRMS (zvertexes), multiplicityclass );
1418+ fhCompatibleCollisionsZVtxRms->Fill (-computeRMS (zvertexes), multiplicityClass );
14141419 } else {
1415- fhCompatibleCollisionsZVtxRms->Fill (computeRMS (zvertexes), multiplicityclass );
1420+ fhCompatibleCollisionsZVtxRms->Fill (computeRMS (zvertexes), multiplicityClass );
14161421 }
14171422 return -1 ;
14181423 } else {
14191424 if (checkAmbiguousTracks) {
14201425 /* feedback of no ambiguous tracks only if checks required */
1421- fhAmbiguousTrackType->Fill (ambtracktype, multiplicityclass );
1426+ fhAmbiguousTrackType->Fill (ambtracktype, multiplicityClass );
14221427 }
14231428 return selectTrack<outdebug, CollisionObjects>(track);
14241429 }
@@ -1507,7 +1512,7 @@ inline int8_t DptDptFilterTracks::selectParticle(ParticleObject const& particle,
15071512 fillParticleHistosBeforeSelection (particle, mccollision, charge);
15081513
15091514 /* track selection */
1510- if (AcceptParticle (particle, mccollision)) {
1515+ if (acceptParticle (particle, mccollision)) {
15111516 /* the particle has been accepted */
15121517 /* the particle is only accepted if it is a primary particle */
15131518 /* let's identify the particle */
@@ -1544,14 +1549,14 @@ void DptDptFilterTracks::fillParticleHistosBeforeSelection(ParticleObject const&
15441549 fhTruePtNegB->Fill (particle.pt ());
15451550 }
15461551
1547- float dcaxy = TMath::Sqrt ((particle.vx () - collision.posX ()) * (particle.vx () - collision.posX ()) +
1548- (particle.vy () - collision.posY ()) * (particle.vy () - collision.posY ()));
1552+ float dcaxy = std::sqrt ((particle.vx () - collision.posX ()) * (particle.vx () - collision.posX ()) +
1553+ (particle.vy () - collision.posY ()) * (particle.vy () - collision.posY ()));
15491554 if (traceDCAOutliers.mDoIt && (traceDCAOutliers.mLowValue < dcaxy) && (dcaxy < traceDCAOutliers.mUpValue )) {
15501555 fhTrueDCAxyBid->Fill (TString::Format (" %d" , particle.pdgCode ()).Data (), 1.0 );
15511556 }
15521557
1553- fhTrueDCAxyB->Fill (TMath::Sqrt ((particle.vx () - collision.posX ()) * (particle.vx () - collision.posX ()) +
1554- (particle.vy () - collision.posY ()) * (particle.vy () - collision.posY ())));
1558+ fhTrueDCAxyB->Fill (std::sqrt ((particle.vx () - collision.posX ()) * (particle.vx () - collision.posX ()) +
1559+ (particle.vy () - collision.posY ()) * (particle.vy () - collision.posY ())));
15551560 fhTrueDCAzB->Fill ((particle.vz () - collision.posZ ()));
15561561}
15571562
@@ -1560,16 +1565,16 @@ void DptDptFilterTracks::fillParticleHistosAfterSelection(ParticleObject const&
15601565{
15611566 fhTrueEtaA->Fill (particle.eta ());
15621567 fhTruePhiA->Fill (particle.phi ());
1563- float dcaxy = TMath::Sqrt ((particle.vx () - collision.posX ()) * (particle.vx () - collision.posX ()) +
1564- (particle.vy () - collision.posY ()) * (particle.vy () - collision.posY ()));
1568+ float dcaxy = std::sqrt ((particle.vx () - collision.posX ()) * (particle.vx () - collision.posX ()) +
1569+ (particle.vy () - collision.posY ()) * (particle.vy () - collision.posY ()));
15651570 if (traceDCAOutliers.mDoIt && (traceDCAOutliers.mLowValue < dcaxy) && (dcaxy < traceDCAOutliers.mUpValue )) {
15661571 LOGF (info, " DCAxy outlier: Particle with index %d and pdg code %d assigned to MC collision %d, pT: %f, phi: %f, eta: %f" ,
15671572 particle.globalIndex (), particle.pdgCode (), particle.mcCollisionId (), particle.pt (), particle.phi (), particle.eta ());
15681573 LOGF (info, " With status %d and flags %0X" , particle.statusCode (), particle.flags ());
15691574 }
15701575
1571- fhTrueDCAxyA->Fill (TMath::Sqrt ((particle.vx () - collision.posX ()) * (particle.vx () - collision.posX ()) +
1572- (particle.vy () - collision.posY ()) * (particle.vy () - collision.posY ())));
1576+ fhTrueDCAxyA->Fill (std::sqrt ((particle.vx () - collision.posX ()) * (particle.vx () - collision.posX ()) +
1577+ (particle.vy () - collision.posY ()) * (particle.vy () - collision.posY ())));
15731578 fhTrueDCAzA->Fill ((particle.vz () - collision.posZ ()));
15741579 fhTruePA[sp]->Fill (particle.p ());
15751580 fhTruePtA[sp]->Fill (particle.pt ());
0 commit comments