@@ -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