Skip to content

Commit d24e5db

Browse files
made the event and track counters seperate function
1 parent 407fb6c commit d24e5db

File tree

1 file changed

+64
-45
lines changed

1 file changed

+64
-45
lines changed

PWGUD/Tasks/exclusiveRhoTo4Pi.cxx

Lines changed: 64 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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

11921211
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)