1313// / \brief Tasks processing derived data for Cascade analysis in PbPb collisions
1414// / \author Lucia Anna Tarasovicova (lucia.anna.husova@cern.ch)
1515
16- #include < string>
17- #include < vector>
18- #include " Framework/runDataProcessing.h"
19- #include " Framework/AnalysisTask.h"
20- #include " Framework/AnalysisDataModel.h"
21- #include " Framework/ASoAHelpers.h"
22- #include " Framework/O2DatabasePDGPlugin.h"
23- #include " ReconstructionDataFormats/Track.h"
24- #include " Common/Core/RecoDecay.h"
25- #include " Common/Core/trackUtilities.h"
26- #include " Common/CCDB/ctpRateFetcher.h"
27- #include " PWGLF/DataModel/LFStrangenessTables.h"
16+ #include " MetadataHelper.h"
17+
2818#include " PWGLF/DataModel/LFStrangenessPIDTables.h"
19+ #include " PWGLF/DataModel/LFStrangenessTables.h"
20+
21+ #include " Common/CCDB/EventSelectionParams.h"
22+ #include " Common/CCDB/TriggerAliases.h"
23+ #include " Common/CCDB/ctpRateFetcher.h"
24+ #include " Common/Core/RecoDecay.h"
2925#include " Common/Core/TrackSelection.h"
30- #include " Common/DataModel/TrackSelectionTables.h"
31- #include " Common/DataModel/EventSelection.h"
26+ #include " Common/Core/trackUtilities.h"
3227#include " Common/DataModel/Centrality.h"
28+ #include " Common/DataModel/EventSelection.h"
3329#include " Common/DataModel/PIDResponse.h"
34- #include " Framework/StaticFor .h"
30+ #include " Common/DataModel/TrackSelectionTables .h"
3531
36- #include " Framework/ConfigParamSpec.h"
37- #include " Common/CCDB/EventSelectionParams.h"
38- #include " Common/CCDB/TriggerAliases.h"
3932#include " CCDB/BasicCCDBManager.h"
4033#include " CommonConstants/LHCConstants.h"
41- #include " Framework/HistogramRegistry.h"
4234#include " DataFormatsFT0/Digit.h"
43- #include " DataFormatsParameters/GRPLHCIFData .h"
35+ #include " DataFormatsParameters/AggregatedRunInfo .h"
4436#include " DataFormatsParameters/GRPECSObject.h"
37+ #include " DataFormatsParameters/GRPLHCIFData.h"
38+ #include " Framework/ASoAHelpers.h"
39+ #include " Framework/AnalysisDataModel.h"
40+ #include " Framework/AnalysisTask.h"
41+ #include " Framework/ConfigParamSpec.h"
42+ #include " Framework/HistogramRegistry.h"
43+ #include " Framework/O2DatabasePDGPlugin.h"
44+ #include " Framework/StaticFor.h"
45+ #include " Framework/runDataProcessing.h"
4546#include " ITSMFTBase/DPLAlpideParam.h"
46- #include " MetadataHelper.h"
47- #include " DataFormatsParameters/AggregatedRunInfo.h"
47+ #include " ReconstructionDataFormats/Track.h"
4848
4949#include < TFile.h>
5050#include < TH2F.h>
51- #include < TProfile.h>
5251#include < TLorentzVector.h>
5352#include < TPDGCode.h>
53+ #include < TProfile.h>
54+
55+ #include < string>
56+ #include < vector>
5457
5558// constants
5659const float ctauxiPDG = 4.91 ; // from PDG
@@ -76,6 +79,7 @@ struct Derivedcascadeanalysis {
7679 ConfigurableAxis axisIR{" axisIR" , {510 , -1 , 50 }, " Binning for the interaction rate (kHz)" };
7780
7881 Configurable<bool > isXi{" isXi" , 1 , " Apply cuts for Xi identification" };
82+ Configurable<bool > ispO{" ispO" , 0 , " Analyse p--O collisions" };
7983 Configurable<bool > useCentralityFT0M{" useCentralityFT0M" , 0 , " If true, use centFT0M" };
8084 Configurable<bool > useCentralityFT0A{" useCentralityFT0A" , 0 , " If true, use centFT0A" };
8185 Configurable<bool > useCentralityFT0Cvar1{" useCentralityFT0Cvar1" , 0 , " If true, use centFT0FT0Cvar1" };
@@ -119,6 +123,18 @@ struct Derivedcascadeanalysis {
119123 Configurable<int > maxOccupancy{" maxOccupancy" , -1 , " Maximal occupancy" };
120124 Configurable<float > minOccupancyFT0{" minOccupancyFT0" , -1 , " Minimal occupancy" };
121125 Configurable<float > maxOccupancyFT0{" maxOccupancyFT0" , -1 , " Maximal occupancy" };
126+ Configurable<float > globalTracksCorrelpar0Low{" globalTracksCorrelpar0Low" , 81 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
127+ Configurable<float > globalTracksCorrelpar1Low{" globalTracksCorrelpar1Low" , -0.0431016 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
128+ Configurable<float > globalTracksCorrelpar2Low{" globalTracksCorrelpar2Low" , -6 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
129+ Configurable<float > globalTracksCorrelpar0High{" globalTracksCorrelpar0High" , 226 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
130+ Configurable<float > globalTracksCorrelpar1High{" globalTracksCorrelpar1High" , -0.0181686 , " [0]*exp([1]*centrality)+[2], mean plus 3*sigma" };
131+ Configurable<float > globalTracksCorrelpar2High{" globalTracksCorrelpar2High" , -22 , " [0]*exp([1]*centrality)+[2], mean plus 3*sigma" };
132+ Configurable<float > pvContribCorrelpar0Low{" pvcontribCorrelpar0Low" , 152 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
133+ Configurable<float > pvContribCorrelpar1Low{" pvcontribCorrelpar1Low" , -0.0431016 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
134+ Configurable<float > pvContribCorrelpar2Low{" pvcontribCorrelpar2Low" , -15.3776 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
135+ Configurable<float > pvContribCorrelpar0High{" pvcontribCorrelpar0High" , 384.861 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
136+ Configurable<float > pvContribCorrelpar1High{" pvcontribCorrelpar1High" , -0.0181686 , " [0]*exp([1]*centrality)+[2], mean plus 3*sigma" };
137+ Configurable<float > pvContribCorrelpar2High{" pvcontribCorrelpar2High" , -39 , " [0]*exp([1]*centrality)+[2], mean plus 3*sigma" };
122138 } eventSelectionRun3Flags;
123139
124140 struct : ConfigurableGroup {
@@ -219,6 +235,8 @@ struct Derivedcascadeanalysis {
219235 Configurable<float > rejcomp{" rejcomp" , 0.008 , " Competing Cascade rejection" };
220236 Configurable<float > masswin{" masswin" , 0.05 , " Mass window limit" };
221237 Configurable<float > rapCut{" rapCut" , 0.5 , " Rapidity acceptance" };
238+ Configurable<float > minRapCut{" minRapCut" , -0.845 , " minimal rapidity acceptance in case of p--o" };
239+ Configurable<float > maxRapCut{" maxRapCut" , 0.155 , " maximal rapidity acceptance in case of p--o" };
222240 Configurable<float > etaDauCut{" etaDauCut" , 0.8 , " Pseudorapidity acceptance of the cascade daughters" };
223241 Configurable<int > minITSclusters{" minITSclusters" , 3 , " minimal number of ITS hits for the daughter tracks" };
224242 } candidateSelectionValues;
@@ -302,6 +320,10 @@ struct Derivedcascadeanalysis {
302320 histos.add (" hNCrossedRowsPositive" , " " , kTH1F , {{400 , -200 , 200 }});
303321 histos.add (" hNCrossedRowsBachelor" , " " , kTH1F , {{400 , -200 , 200 }});
304322
323+ histos.add (" hPseudorapPosDaughter" , " " , kTH1F , {{50 , -1 , 1 }});
324+ histos.add (" hPseudorapNegDaughter" , " " , kTH1F , {{50 , -1 , 1 }});
325+ histos.add (" hPseudorapBachelor" , " " , kTH1F , {{50 , -1 , 1 }});
326+
305327 histos.add (" hEventNchCorrelationAfCuts" , " hEventNchCorrelationAfCuts" , kTH2F , {{5000 , 0 , 5000 }, {5000 , 0 , 2500 }});
306328 histos.add (" hEventPVcontributorsVsCentrality" , " hEventPVcontributorsVsCentrality" , kTH2F , {{100 , 0 , 100 }, {5000 , 0 , 5000 }});
307329 histos.add (" hEventGlobalTracksVsCentrality" , " hEventGlobalTracksVsCentrality" , kTH2F , {{100 , 0 , 100 }, {2500 , 0 , 2500 }});
@@ -660,9 +682,9 @@ struct Derivedcascadeanalysis {
660682 histos.fill (HIST (" hEventSelection" ), 11.5 /* Not at TF border */ );
661683
662684 if (eventSelectionRun3Flags.doMultiplicityCorrCut ) {
663- if (coll.multNTracksGlobal () < (1343.3 * std::exp (- 0.0443259 * centrality) - 50 ) || coll.multNTracksGlobal () > (2098.9 * std::exp (- 0.0332444 * centrality)))
685+ if (coll.multNTracksGlobal () < (eventSelectionRun3Flags. globalTracksCorrelpar0Low * std::exp (eventSelectionRun3Flags. globalTracksCorrelpar1Low * centrality) + eventSelectionRun3Flags. globalTracksCorrelpar2Low ) || coll.multNTracksGlobal () > (eventSelectionRun3Flags. globalTracksCorrelpar0High * std::exp (eventSelectionRun3Flags. globalTracksCorrelpar1High * centrality) + eventSelectionRun3Flags. globalTracksCorrelpar2High ))
664686 return false ;
665- if (coll.multNTracksPVeta1 () < (3703 * std::exp (- 0.0455483 * centrality) - 150 ) || coll.multNTracksPVeta1 () > (4937.33 * std::exp (- 0.0372668 * centrality) + 20 ))
687+ if (coll.multNTracksPVeta1 () < (eventSelectionRun3Flags. pvContribCorrelpar0Low * std::exp (eventSelectionRun3Flags. pvContribCorrelpar1Low * centrality) + eventSelectionRun3Flags. pvContribCorrelpar2Low ) || coll.multNTracksPVeta1 () > (eventSelectionRun3Flags. pvContribCorrelpar0High * std::exp (eventSelectionRun3Flags. pvContribCorrelpar1High * centrality) + eventSelectionRun3Flags. pvContribCorrelpar2High ))
666688 return false ;
667689 }
668690 if (fillHists)
@@ -826,21 +848,27 @@ struct Derivedcascadeanalysis {
826848 float cut = candidateSelectionValues.masswin ;
827849 histos.fill (HIST (" hCutValue" ), 1 , cut);
828850 cut = candidateSelectionValues.rapCut ;
851+ if (ispO)
852+ cut = candidateSelectionValues.maxRapCut ;
829853 histos.fill (HIST (" hCutValue" ), 2 , cut);
830854 if (isXi) {
831855 if (std::abs (casc.mXi () - o2::constants::physics::MassXiMinus) > candidateSelectionValues.masswin ) {
832856 return false ;
833857 }
834858 histos.fill (HIST (" hCandidate" ), ++counter);
835- if (std::abs (casc.yXi ()) > candidateSelectionValues.rapCut )
859+ if (ispO && (casc.yXi () < candidateSelectionValues.minRapCut || casc.yXi () > candidateSelectionValues.maxRapCut ))
860+ return false ;
861+ else if (std::abs (casc.yXi ()) > candidateSelectionValues.rapCut )
836862 return false ;
837863 histos.fill (HIST (" hCandidate" ), ++counter);
838864 } else {
839865 if (std::abs (casc.mOmega () - o2::constants::physics::MassOmegaMinus) > candidateSelectionValues.masswin ) {
840866 return false ;
841867 }
842868 histos.fill (HIST (" hCandidate" ), ++counter);
843- if (std::abs (casc.yOmega ()) > candidateSelectionValues.rapCut )
869+ if (ispO && (casc.yOmega () < candidateSelectionValues.minRapCut || casc.yOmega () > candidateSelectionValues.maxRapCut ))
870+ return false ;
871+ else if (std::abs (casc.yOmega ()) > candidateSelectionValues.rapCut )
844872 return false ;
845873 histos.fill (HIST (" hCandidate" ), ++counter);
846874 }
@@ -1161,6 +1189,10 @@ struct Derivedcascadeanalysis {
11611189 continue ;
11621190 histos.fill (HIST (" hCandidate" ), ++counter);
11631191
1192+ histos.fill (HIST (" hPseudorapPosDaughter" ), poseta);
1193+ histos.fill (HIST (" hPseudorapNegDaughter" ), negeta);
1194+ histos.fill (HIST (" hPseudorapBachelor" ), bacheta);
1195+
11641196 if (candidateSelectionFlags.doCascadeCosPaCut ) {
11651197 if (!isCosPAAccepted (casc, coll.posX (), coll.posY (), coll.posZ (), candidateSelectionFlags.doPtDepCosPaCut , true ))
11661198 continue ;
@@ -1434,7 +1466,9 @@ struct Derivedcascadeanalysis {
14341466 else if (std::abs (cascMC.pdgCode ()) == 3334 )
14351467 ymc = RecoDecay::y (std::array{cascMC.pxMC (), cascMC.pyMC (), cascMC.pzMC ()}, o2::constants::physics::MassOmegaMinus);
14361468
1437- if (std::abs (ymc) > candidateSelectionValues.rapCut )
1469+ if (ispO && (ymc > candidateSelectionValues.rapCutMax || yms < candidateSelectionValues.rapCutMin ))
1470+ continue ;
1471+ else if (std::abs (ymc) > candidateSelectionValues.rapCut )
14381472 continue ;
14391473
14401474 auto mcCollision = cascMC.template straMCCollision_as <soa::Join<aod::StraMCCollisions, aod::StraMCCollMults>>();
0 commit comments