Skip to content

Commit 9a8d0fb

Browse files
added 2 different track selection criteria
1 parent f4af283 commit 9a8d0fb

File tree

1 file changed

+138
-68
lines changed

1 file changed

+138
-68
lines changed

PWGUD/Tasks/exclusiveRhoTo4Pi.cxx

Lines changed: 138 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ struct ExclusiveRhoTo4Pi {
381381
Produces<aod::BkgroundData> bkgFromData;
382382
// Histogram Registry
383383
HistogramRegistry histosData{"histosData", {}, OutputObjHandlingPolicy::AnalysisObject, true, true};
384-
// Configurable Event parameters:1
384+
// Configurable Event parameters
385385
Configurable<bool> ifCheckUPCmode{"ifCheckUPCmode", false, "Enable UPC reconstruction only"};
386386
Configurable<float> vZCut{"vZCut", 10., "Vertex Cut"};
387387
Configurable<float> fv0Cut{"fv0Cut", 50., "FV0A threshold"};
@@ -394,22 +394,28 @@ struct ExclusiveRhoTo4Pi {
394394
Configurable<int> itsROFbCut{"itsROFbCut", 1, "itsROFbCut"};
395395
Configurable<int> vtxITSTPCcut{"vtxITSTPCcut", 1, "vtxITSTPCcut"};
396396
Configurable<int> tfbCut{"tfbCut", 1, "tfbCut"};
397-
// Configurable Track parameters:1
397+
// track Selection mode
398+
Configurable<int> trackSelectionMode{"trackSelectionMode", 0, "Different modes of track selection"};
399+
// Configurable Track parameters common to mode 0 and 1
398400
Configurable<bool> useOnlyPVtracks{"useOnlyPVtracks", true, "Use Only PV tracks"};
399401
Configurable<bool> useITS{"useITS", true, "only use tracks with hit in ITS"};
402+
Configurable<bool> useTPC{"useTPC", true, "has TPC hit"};
403+
Configurable<float> tpcNClsFindableCut{"tpcNClsFindableCut", 70, "Min TPC Findable Clusters"};
404+
Configurable<float> pTcut{"pTcut", 0.1, "Track Pt"};
405+
Configurable<float> dcaZcut{"dcaZcut", 1, "dcaZ cut"};
406+
Configurable<float> etaCut{"etaCut", 0.9, "Track Pseudorapidity"};
407+
// Configurable Track parameters for mode 0 only
400408
Configurable<uint8_t> itsNClsCut{"itsNClsCut", 4, "Min No of itsNCls"};
401409
Configurable<uint8_t> itsClusterMapCut{"itsClusterMapCut", 1, "min no of ITS clusters in cluster map"};
402410
Configurable<float> itsChi2NClCut{"itsChi2NClCut", 3.0, "Max ITS Chi2/NCl"};
403-
Configurable<bool> useTPC{"useTPC", true, "has TPC hit"};
404411
Configurable<float> minFoundTPCclusters{"minFoundTPCclusters", 120, "Min TPC Findable Clusters"};
405412
Configurable<float> tpcChi2NClsMin{"tpcChi2NClsMin", 1.0, "Min TPC Chi2/NCls"};
406413
Configurable<float> tpcChi2NClsMax{"tpcChi2NClsMax", 3.0, "Max TPC Chi2/NCls"};
407-
Configurable<float> tpcNClsFindableCut{"tpcNClsFindableCut", 70, "Min TPC Findable Clusters"};
408414
Configurable<float> tpcNClsCrossedRowsCut{"tpcNClsCrossedRowsCut", 130, "Min TPC Crossed Rows"};
409415
Configurable<float> tpcCrossedRowsOverFindableCut{"tpcCrossedRowsOverFindableCut", 1.0, "Min TPC Crossed Rows over Findable Clusters"};
410-
Configurable<float> pTcut{"pTcut", 0.1, "Track Pt"};
411-
Configurable<float> dcaZcut{"dcaZcut", 1, "dcaZ cut"};
412-
Configurable<float> etaCut{"etaCut", 0.9, "Track Pseudorapidity"};
416+
// Configurable Track parameters for mode: 1 only
417+
Configurable<float> itsChi2Cut{"itsChi2Cut", 36, "ITS Chi2"};
418+
Configurable<float> tpcChi2Cut{"tpcChi2Cut", 4.0, "TPC Chi2"};
413419
// Configurable PID parameters
414420
Configurable<bool> useTOF{"useTOF", true, "has TOF for PID"};
415421
Configurable<float> nSigmaTPCcut{"nSigmaTPCcut", 3, "TPC cut"};
@@ -640,81 +646,145 @@ struct ExclusiveRhoTo4Pi {
640646
for (const auto& t0 : tracks) {
641647

642648
ROOT::Math::PxPyPzMVector trackVector(t0.px(), t0.py(), t0.pz(), o2::constants::physics::MassPionCharged);
643-
644649
// no Cuts
645650
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 0);
646651

647-
// is PV Contributor
648-
if (!(t0.isPVContributor() == useOnlyPVtracks)) {
649-
continue;
650-
}
651-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 1);
652+
if (trackSelectionMode == 0) {
652653

653-
// has ITS hit
654-
if ((useITS == true) && (t0.hasITS() != true)) {
655-
continue;
656-
}
657-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 2);
654+
// is PV Contributor
655+
if (!(t0.isPVContributor() == useOnlyPVtracks)) {
656+
continue;
657+
}
658+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 1);
658659

659-
// min no of itsNCls
660-
if (t0.itsNCls() < itsNClsCut) {
661-
continue;
662-
}
663-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 3);
660+
// has ITS hit
661+
if ((useITS == true) && (t0.hasITS() != true)) {
662+
continue;
663+
}
664+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 2);
664665

665-
// min ITS chi2NCl
666-
if (t0.itsChi2NCl() > itsChi2NClCut) {
667-
continue;
668-
}
669-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 4);
666+
// min no of itsNCls
667+
if (t0.itsNCls() < itsNClsCut) {
668+
continue;
669+
}
670+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 3);
670671

671-
// has TPC hit
672-
if ((useTPC == true) && (t0.hasTPC() != true)) {
673-
continue;
674-
}
675-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 5);
672+
// min ITS chi2NCl
673+
if (t0.itsChi2NCl() > itsChi2NClCut) {
674+
continue;
675+
}
676+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 4);
676677

677-
// min no of found TPC clusters
678-
if (t0.tpcNClsFindable() - t0.tpcNClsFindableMinusFound() < minFoundTPCclusters) {
679-
continue;
680-
}
681-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 6);
678+
// has TPC hit
679+
if ((useTPC == true) && (t0.hasTPC() != true)) {
680+
continue;
681+
}
682+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 5);
682683

683-
// range of tpcChi2NCl
684-
if (!((tpcChi2NClsMin < t0.tpcChi2NCl()) && (t0.tpcChi2NCl() < tpcChi2NClsMax))) {
685-
continue;
686-
}
687-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 7);
684+
// min no of found TPC clusters
685+
if (t0.tpcNClsFindable() - t0.tpcNClsFindableMinusFound() < minFoundTPCclusters) {
686+
continue;
687+
}
688+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 6);
688689

689-
// tpcNClsCrossedRows
690-
if (t0.tpcNClsCrossedRows() < tpcNClsCrossedRowsCut) {
691-
continue;
692-
}
693-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 8);
690+
// range of tpcChi2NCl
691+
if (!((tpcChi2NClsMin < t0.tpcChi2NCl()) && (t0.tpcChi2NCl() < tpcChi2NClsMax))) {
692+
continue;
693+
}
694+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 7);
694695

695-
// ratio of crossed TPC rows over findable clusters
696-
if ((t0.tpcNClsCrossedRows() / t0.tpcNClsFindable()) < tpcCrossedRowsOverFindableCut) {
697-
continue;
698-
}
699-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 9);
696+
// tpcNClsCrossedRows
697+
if (t0.tpcNClsCrossedRows() < tpcNClsCrossedRowsCut) {
698+
continue;
699+
}
700+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 8);
700701

701-
// pT cut
702-
if (trackVector.Pt() < pTcut) {
703-
continue;
704-
}
705-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 10);
702+
// ratio of crossed TPC rows over findable clusters
703+
if ((t0.tpcNClsCrossedRows() / t0.tpcNClsFindable()) < tpcCrossedRowsOverFindableCut) {
704+
continue;
705+
}
706+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 9);
706707

707-
// dcaZ cut
708-
if ((std::abs(t0.dcaZ()) > dcaZcut) || (t0.dcaXY() > getMaxDCAxy(trackVector.Pt()))) {
709-
continue;
710-
}
711-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 11);
708+
// pT cut
709+
if (trackVector.Pt() < pTcut) {
710+
continue;
711+
}
712+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 10);
712713

713-
// eta cut
714-
if (std::abs(trackVector.Eta()) > etaCut) {
715-
continue;
716-
}
717-
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 12);
714+
// dcaZ cut
715+
if ((std::abs(t0.dcaZ()) > dcaZcut) || (t0.dcaXY() > getMaxDCAxy(trackVector.Pt()))) {
716+
continue;
717+
}
718+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 11);
719+
720+
// eta cut
721+
if (std::abs(trackVector.Eta()) > etaCut) {
722+
continue;
723+
}
724+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 12);
725+
} // end of trackSelectionMode == 0
726+
727+
if (trackSelectionMode == 1) {
728+
// is PV Contributor
729+
if (!(t0.isPVContributor() == useOnlyPVtracks)) {
730+
continue;
731+
}
732+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 1);
733+
734+
// pT cut
735+
if (trackVector.Pt() < pTcut) {
736+
continue;
737+
}
738+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 2);
739+
740+
// eta cut
741+
if (std::abs(trackVector.Eta()) > etaCut) {
742+
continue;
743+
}
744+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 3);
745+
746+
// dcaZ cut
747+
if ((std::abs(t0.dcaZ()) > dcaZcut)) {
748+
continue;
749+
}
750+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 4);
751+
752+
// dcaXY cut
753+
if (std::abs(t0.dcaXY()) > getMaxDCAxy(trackVector.Pt())) {
754+
continue;
755+
}
756+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 5);
757+
758+
// has ITS hit
759+
if ((useITS == true) && (t0.hasITS() != true)) {
760+
continue;
761+
}
762+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 6);
763+
764+
// has TPC hit
765+
if ((useTPC == true) && (t0.hasTPC() != true)) {
766+
continue;
767+
}
768+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 7);
769+
770+
// ITS Chi2 Cut
771+
if (t0.itsChi2NCl() > itsChi2Cut) {
772+
continue;
773+
}
774+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 8);
775+
776+
// TPC Chi2 Cut
777+
if (t0.tpcChi2NCl() > tpcChi2Cut) {
778+
continue;
779+
}
780+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 9);
781+
782+
// TPC Clusters findable cut
783+
if (t0.tpcNClsFindable() < tpcNClsFindableCut) {
784+
continue;
785+
}
786+
histosData.fill(HIST("TracksCounts_vs_runNo"), collision.runNumber(), 10);
787+
} // end of trackSelectionMode == 1
718788

719789
selectedTracks.push_back(t0);
720790
if (selectionPIDPion(t0, useTOF, nSigmaTPCcut, nSigmaTOFcut)) {

0 commit comments

Comments
 (0)