@@ -376,7 +376,6 @@ struct ExclusiveRhoTo4Pi {
376376 int numPiPlus = 2 ;
377377 int numPiMinus = 2 ;
378378 float zeroPointEight = 0.8 ;
379- std::vector<float > trackSelectionParams;
380379 // Derived Data
381380 Produces<aod::SignalData> sigFromData;
382381 Produces<aod::BkgroundData> bkgFromData;
@@ -440,14 +439,14 @@ struct ExclusiveRhoTo4Pi {
440439 histosData.add (" vertexX" , " Vertex X; Vertex X [cm]; Counts" , kTH1F , {{2000 , -0.05 , 0.05 }});
441440 histosData.add (" vertexY" , " Vertex Y; Vertex Y [cm]; Counts" , kTH1F , {{2000 , -0.05 , 0.05 }});
442441 histosData.add (" vertexZ" , " Vertex Z; Vertex Z [cm]; Counts" , kTH1F , {{2000 , -15 , 15 }});
443- histosData.add (" GapSide" , " Gap Side;Gap Side; Events" , kTH1F , {{4 , - 1.5 , 2.5 }});
444- histosData.add (" TrueGapSide" , " True Gap Side; True Gap Side; Events" , kTH1F , {{4 , - 1.5 , 2.5 }});
442+ histosData.add (" GapSide" , " Gap Side;Gap Side; Events" , kTH1F , {{4 , 0 , 4 }});
443+ histosData.add (" TrueGapSide" , " True Gap Side; True Gap Side; Events" , kTH1F , {{4 , 0 , 4 }});
445444 histosData.add (" occupancy" , " Occupancy; Occupancy; Counts" , kTH1F , {{20000 , 0 , 20000 }});
446445 // QA plots: tracks
447- histosData.add (" dcaXY_all" , " dcaXY; dcaXY [cm]; Counts" , kTH1F , {{5000 , -1 , 1 }});
448- histosData.add (" dcaXY_pions" , " dcaXY_pions; dcaXY of Pions [cm]; Counts" , kTH1F , {{5000 , -1 , 1 }});
449- histosData.add (" dcaZ_all" , " dcaZ; dcaZ [cm]; Counts" , kTH1F , {{5000 , -1 , 1 }});
450- histosData.add (" dcaZ_pions" , " dcaZ_pions; dcaZ of Pions [cm]; Counts" , kTH1F , {{5000 , -1 , 1 }});
446+ histosData.add (" dcaXY_all" , " dcaXY; dcaXY [cm]; Counts" , kTH1F , {{2000 , -0. 1 , 0. 1 }});
447+ histosData.add (" dcaXY_pions" , " dcaXY_pions; dcaXY of Pions [cm]; Counts" , kTH1F , {{2000 , -0. 1 , 0. 1 }});
448+ histosData.add (" dcaZ_all" , " dcaZ; dcaZ [cm]; Counts" , kTH1F , {{2000 , -0. 1 , 0. 1 }});
449+ histosData.add (" dcaZ_pions" , " dcaZ_pions; dcaZ of Pions [cm]; Counts" , kTH1F , {{2000 , -0. 1 , 0. 1 }});
451450 histosData.add (" itsChi2NCl_all" , " ITS Chi2/NCl; Chi2/NCl; Counts" , kTH1F , {{250 , 0 , 50 }});
452451 histosData.add (" itsChi2_all" , " ITS Chi2; ITS Chi2; Counts" , kTH1F , {{500 , 0 , 50 }});
453452 histosData.add (" tpcChi2NCl_all" , " TPC Chi2/NCl; Chi2/NCl; Counts" , kTH1F , {{250 , 0 , 50 }});
@@ -904,7 +903,7 @@ struct ExclusiveRhoTo4Pi {
904903 } // End of Analysis for non 0 charge events
905904 } // End of 4 Pion Analysis Process function for Pass5 Data
906905
907- void processCounter (UDCollisions::iterator const & collision, UDtracks const & tracks)
906+ void processEventCounter (UDCollisions::iterator const & collision, soa::Filtered< UDtracks> const & tracks)
908907 {
909908
910909 histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 0 );
@@ -977,6 +976,59 @@ struct ExclusiveRhoTo4Pi {
977976 std::vector<decltype (tracks.begin ())> selectedPionPlusTracks;
978977 std::vector<decltype (tracks.begin ())> selectedPionMinusTracks;
979978
979+ for (const auto & t0 : tracks) {
980+ if (!isSelectedTrack (t0, pTcut, etaCut, dcaXYcut, dcaZcut, useITStracksOnly, useTPCtracksOnly, itsChi2NClsCut, tpcChi2NClsCut, tpcNClsFindableCut)) {
981+ continue ;
982+ }
983+ if (selectionPIDPion (t0, useTOF, nSigmaTPCcut, nSigmaTOFcut)) {
984+ selectedPionTracks.push_back (t0);
985+ if (t0.sign () == 1 ) {
986+ selectedPionPlusTracks.push_back (t0);
987+ }
988+ if (t0.sign () == -1 ) {
989+ selectedPionMinusTracks.push_back (t0);
990+ }
991+ } // End of Selection PID Pion
992+ } // End of loop over tracks
993+
994+ int numSelectedPionTracks = static_cast <int >(selectedPionTracks.size ());
995+ int numPiPlusTracks = static_cast <int >(selectedPionPlusTracks.size ());
996+ int numPionMinusTracks = static_cast <int >(selectedPionMinusTracks.size ());
997+ // Events with 4 pions
998+ if (numSelectedPionTracks != numFourPionTracks) {
999+ return ;
1000+ }
1001+ histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 12 );
1002+
1003+ // Selecting Events with net charge = 0
1004+ if (numPionMinusTracks == numPiMinus && numPiPlusTracks == numPiPlus) {
1005+ histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 13 );
1006+ ROOT::Math::PxPyPzMVector p1 (selectedPionPlusTracks[0 ].px (), selectedPionPlusTracks[0 ].py (), selectedPionPlusTracks[0 ].pz (), o2::constants::physics::MassPionCharged);
1007+ ROOT::Math::PxPyPzMVector p2 (selectedPionPlusTracks[1 ].px (), selectedPionPlusTracks[1 ].py (), selectedPionPlusTracks[1 ].pz (), o2::constants::physics::MassPionCharged);
1008+ ROOT::Math::PxPyPzMVector p3 (selectedPionMinusTracks[0 ].px (), selectedPionMinusTracks[0 ].py (), selectedPionMinusTracks[0 ].pz (), o2::constants::physics::MassPionCharged);
1009+ ROOT::Math::PxPyPzMVector p4 (selectedPionMinusTracks[1 ].px (), selectedPionMinusTracks[1 ].py (), selectedPionMinusTracks[1 ].pz (), o2::constants::physics::MassPionCharged);
1010+ ROOT::Math::PxPyPzMVector p1234 = p1 + p2 + p3 + p4;
1011+
1012+ if ((p1234.Pt () < rhoPtCut) && (std::abs (p1234.Rapidity ()) < rhoRapCut)) {
1013+ histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 14 );
1014+ if ((rhoMassMin < p1234.M ()) && (p1234.M () < rhoMassMax)) {
1015+ histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 15 );
1016+ }
1017+ }
1018+ } // End of Zero Charge Events
1019+
1020+ if (numPionMinusTracks != numPiMinus && numPiPlusTracks != numPiPlus) {
1021+ histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 16 );
1022+ } // End of Non Zero Charge Events
1023+
1024+ } // End of processCounter function
1025+
1026+ void processTrackCounter (soa::Filtered<UDCollisions>::iterator const & collision, UDtracks const & tracks)
1027+ {
1028+ // Check if the Event is reconstructed in UPC mode
1029+ if (ifCheckUPCmode && (collision.flags () != 1 )) {
1030+ return ;
1031+ }
9801032 for (const auto & track : tracks) {
9811033 histosCounter.fill (HIST (" TracksCounts_vs_runNo" ), collision.runNumber (), 0 );
9821034 ROOT::Math::PxPyPzMVector trackVector (track.px (), track.py (), track.pz (), o2::constants::physics::MassPionCharged);
@@ -1036,52 +1088,19 @@ struct ExclusiveRhoTo4Pi {
10361088 // Selection PID Pion
10371089 if (selectionPIDPion (track, useTOF, nSigmaTPCcut, nSigmaTOFcut)) {
10381090 histosCounter.fill (HIST (" TracksCounts_vs_runNo" ), collision.runNumber (), 11 );
1039- selectedPionTracks.push_back (track);
10401091 if (track.sign () == 1 ) {
10411092 histosCounter.fill (HIST (" TracksCounts_vs_runNo" ), collision.runNumber (), 12 );
1042- selectedPionPlusTracks.push_back (track);
10431093 }
10441094 if (track.sign () == -1 ) {
10451095 histosCounter.fill (HIST (" TracksCounts_vs_runNo" ), collision.runNumber (), 13 );
1046- selectedPionMinusTracks.push_back (track);
10471096 }
10481097 } // End of Selection PID Pion
10491098 } // End of loop over tracks
1050-
1051- int numSelectedPionTracks = static_cast <int >(selectedPionTracks.size ());
1052- int numPiPlusTracks = static_cast <int >(selectedPionPlusTracks.size ());
1053- int numPionMinusTracks = static_cast <int >(selectedPionMinusTracks.size ());
1054- // Events with 4 pions
1055- if (numSelectedPionTracks != numFourPionTracks) {
1056- return ;
1057- }
1058- histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 12 );
1059-
1060- // Selecting Events with net charge = 0
1061- if (numPionMinusTracks == numPiMinus && numPiPlusTracks == numPiPlus) {
1062- histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 13 );
1063- ROOT::Math::PxPyPzMVector p1 (selectedPionPlusTracks[0 ].px (), selectedPionPlusTracks[0 ].py (), selectedPionPlusTracks[0 ].pz (), o2::constants::physics::MassPionCharged);
1064- ROOT::Math::PxPyPzMVector p2 (selectedPionPlusTracks[1 ].px (), selectedPionPlusTracks[1 ].py (), selectedPionPlusTracks[1 ].pz (), o2::constants::physics::MassPionCharged);
1065- ROOT::Math::PxPyPzMVector p3 (selectedPionMinusTracks[0 ].px (), selectedPionMinusTracks[0 ].py (), selectedPionMinusTracks[0 ].pz (), o2::constants::physics::MassPionCharged);
1066- ROOT::Math::PxPyPzMVector p4 (selectedPionMinusTracks[1 ].px (), selectedPionMinusTracks[1 ].py (), selectedPionMinusTracks[1 ].pz (), o2::constants::physics::MassPionCharged);
1067- ROOT::Math::PxPyPzMVector p1234 = p1 + p2 + p3 + p4;
1068-
1069- if ((p1234.Pt () < rhoPtCut) && (std::abs (p1234.Rapidity ()) < rhoRapCut)) {
1070- histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 14 );
1071- if ((rhoMassMin < p1234.M ()) && (p1234.M () < rhoMassMax)) {
1072- histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 15 );
1073- }
1074- }
1075- } // End of Zero Charge Events
1076-
1077- if (numPionMinusTracks != numPiMinus && numPiPlusTracks != numPiPlus) {
1078- histosCounter.fill (HIST (" EventsCounts_vs_runNo" ), collision.runNumber (), 16 );
1079- } // End of Non Zero Charge Events
1080-
10811099 } // End of processCounter function
10821100
1083- PROCESS_SWITCH (ExclusiveRhoTo4Pi, processData, " The Process for 4 Pion Analysis from data" , true );
1084- PROCESS_SWITCH (ExclusiveRhoTo4Pi, processCounter, " The Process for 4 Pion Analysis from data" , true );
1101+ PROCESS_SWITCH (ExclusiveRhoTo4Pi, processData, " Data Analysis Function" , true );
1102+ PROCESS_SWITCH (ExclusiveRhoTo4Pi, processEventCounter, " Event Counter Function" , true );
1103+ PROCESS_SWITCH (ExclusiveRhoTo4Pi, processTrackCounter, " Track Counter Function" , true );
10851104
10861105 double cosThetaCollinsSoperFrame (ROOT::Math::PtEtaPhiMVector pair1, ROOT::Math::PtEtaPhiMVector pair2, ROOT::Math::PtEtaPhiMVector fourpion)
10871106 {
@@ -1143,7 +1162,6 @@ struct ExclusiveRhoTo4Pi {
11431162 float tpcchi2nclscut,
11441163 float tpcnclsfindablecut)
11451164 {
1146-
11471165 ROOT::Math::PxPyPzMVector trackVector (track.px (), track.py (), track.pz (), o2::constants::physics::MassPionCharged);
11481166 // pt cut
11491167 if (trackVector.Pt () < ptcut) {
@@ -1187,6 +1205,7 @@ struct ExclusiveRhoTo4Pi {
11871205 // All cuts passed
11881206 return true ;
11891207 } // End of Track Selection function
1208+
11901209}; // End of Struct exclusiveRhoTo4Pi
11911210
11921211WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments