Skip to content

Commit 2a727c1

Browse files
author
Lucia Anna Tarasovicova
committed
add an option to apply the cosPA selection based on the interpolation of an histogram stored in the ccdb
1 parent cb509c0 commit 2a727c1

1 file changed

Lines changed: 45 additions & 4 deletions

File tree

PWGLF/Tasks/Strangeness/derivedcascadeanalysis.cxx

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ struct Derivedcascadeanalysis {
8585
Configurable<int> nPtBinsForNsigmaTPC{"nPtBinsForNsigmaTPC", 100, ""};
8686
Configurable<std::string> irSource{"irSource", "T0VTX", "Estimator of the interaction rate (Recommended: pp --> T0VTX, Pb-Pb --> ZNC hadronic)"};
8787
Configurable<std::string> ccdburl{"ccdburl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
88+
Configurable<std::string> histoCCDBPath{"histoCCDBPath", "Users/l/lhusova/LHC2025/PointingAngleSelection", "Path for the selection histograms in the CCDB"};
8889

8990
o2::aod::rctsel::RCTFlagsChecker rctFlagsChecker{rctConfigurations.cfgRCTLabel.value};
9091

@@ -201,6 +202,7 @@ struct Derivedcascadeanalysis {
201202
Configurable<bool> doAtLeastOneTrackAB{"doAtLeastOneTrackAB", false, "require that at least one of the daughter tracks is from Afterburner"};
202203
Configurable<bool> doBachelorITSTracking{"doBachelorITSTracking", false, "require that the bachelor track is from the ITS tracking"};
203204
Configurable<bool> doAllTracksMinITSClusters{"doAllTracksMinITSClusters", false, "require that all daughter tracks have minimal ITS hits"};
205+
Configurable<bool> useInterpolationForCosPACut{"useInterpolationForCosPACut", true, "use interpolation for pt dependent cosPA cut"};
204206
} candidateSelectionFlags;
205207

206208
struct : ConfigurableGroup {
@@ -256,6 +258,11 @@ struct Derivedcascadeanalysis {
256258
Configurable<float> dcaCacsDauPtSelectionHigh{"dcaCacsDauPtSelectionHigh", 4.0, "high pt selection for range where DCA selection changes to Par2"};
257259
} candidateSelectionValues;
258260

261+
TH1F* hXiPointingAngleSelection = nullptr;
262+
TH1F* hOmegaPointingAngleSelection = nullptr;
263+
TH1F* hXiLambdaPointingAngleSelection = nullptr;
264+
TH1F* hOmegaLambdaPointingAngleSelection = nullptr;
265+
259266
o2::ccdb::CcdbApi ccdbApi;
260267
Service<o2::ccdb::BasicCCDBManager> ccdb;
261268
ctpRateFetcher rateFetcher;
@@ -574,6 +581,20 @@ struct Derivedcascadeanalysis {
574581
}
575582
}
576583
}
584+
void initCosPASelectionHistograms(float timeStamp)
585+
{
586+
587+
auto* listHistograms = ccdb->getForTimeStamp<TList>(histoCCDBPath, timeStamp);
588+
589+
if (!listHistograms) {
590+
LOG(fatal) << "Problem getting TList object with histograms!";
591+
}
592+
593+
hOmegaLambdaPointingAngleSelection = dynamic_cast<TH1F*>(listHistograms->FindObject("hOmegaLambdaPointingAngleSelection"));
594+
hXiPointingAngleSelection = dynamic_cast<TH1F*>(listHistograms->FindObject("hXiPointingAngleSelection"));
595+
hOmegaPointingAngleSelection = dynamic_cast<TH1F*>(listHistograms->FindObject("hOmegaPointingAngleSelection"));
596+
hXiLambdaPointingAngleSelection = dynamic_cast<TH1F*>(listHistograms->FindObject("hXiLambdaPointingAngleSelection"));
597+
}
577598
// Return slicing output
578599
template <bool run3, typename TCollisions>
579600
auto getGroupedCollisions(TCollisions const& collisions, int globalIndex)
@@ -590,12 +611,28 @@ struct Derivedcascadeanalysis {
590611

591612
if (ptdepcut) {
592613
double ptdepCut = -1;
593-
if (isCascPa) {
594-
ptdepCut = candidateSelectionValues.cosPApar0 + candidateSelectionValues.cosPApar1 * casc.pt();
614+
if (candidateSelectionFlags.useInterpolationForCosPACut) {
615+
if (isCascPa) {
616+
if (isXi) {
617+
ptdepCut = hXiPointingAngleSelection->Interpolate(casc.pt());
618+
} else {
619+
ptdepCut = hOmegaPointingAngleSelection->Interpolate(casc.pt());
620+
}
621+
} else {
622+
if (isXi) {
623+
ptdepCut = hXiLambdaPointingAngleSelection->Interpolate(casc.pt());
624+
} else {
625+
ptdepCut = hOmegaLambdaPointingAngleSelection->Interpolate(casc.pt());
626+
}
627+
}
595628
} else {
596-
ptdepCut = candidateSelectionValues.v0cosPApar0 + candidateSelectionValues.v0cosPApar1 * casc.pt();
629+
if (isCascPa) {
630+
ptdepCut = candidateSelectionValues.cosPApar0 + candidateSelectionValues.cosPApar1 * casc.pt();
631+
} else {
632+
ptdepCut = candidateSelectionValues.v0cosPApar0 + candidateSelectionValues.v0cosPApar1 * casc.pt();
633+
}
597634
}
598-
if (ptdepCut > candidateSelectionValues.ptdepCosPACutMaxValue && casc.pt() < candidateSelectionValues.minPtForCosPAcut) {
635+
if (ptdepCut > candidateSelectionValues.ptdepCosPACutMaxValue) {
599636
ptdepCut = candidateSelectionValues.ptdepCosPACutMaxValue;
600637
}
601638
if (ptdepCut < candidateSelectionValues.ptdepCosPACutMinValue) {
@@ -1209,6 +1246,10 @@ struct Derivedcascadeanalysis {
12091246
float nChEta1 = -1;
12101247
float occupancy = -2;
12111248

1249+
if (useInterpolationForCosPACut) {
1250+
initCosPASelectionHistograms(coll.timestamp());
1251+
}
1252+
12121253
if constexpr (requires { coll.centFT0C(); }) {
12131254
nChEta1 = coll.multNTracksPVeta1();
12141255
centrality = coll.centFT0C();

0 commit comments

Comments
 (0)