Skip to content

Commit 1a073d1

Browse files
lhusovaLucia Anna Tarasovicova
andauthored
[PWGLF] hStrangeCorrelation.cxx: new selection and mirroring option (#16741)
Co-authored-by: Lucia Anna Tarasovicova <lucia.anna.husova@cern.ch>
1 parent a77891f commit 1a073d1

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ struct HStrangeCorrelation {
126126
Configurable<bool> applyNewMCSelection{"applyNewMCSelection", false, "apply new MC Generated selection"};
127127
Configurable<bool> doSeparateFT0Prediction{"doSeparateFT0Prediction", false, "separate FT0M to FT0A and FT0C in prediction process"};
128128
Configurable<bool> useCentralityinPrediction{"useCentralityinPrediction", false, "if true, use centrality instead of multiplisity"};
129+
Configurable<bool> doMirroringInDelataEta{"doMirroringInDelataEta", false, "if true, fill only positive delta eta and mirror the negative side in post processing, Adjust the delta axis!"};
129130
} masterConfigurations;
130131

131132
// master analysis switches
@@ -204,13 +205,19 @@ struct HStrangeCorrelation {
204205
Configurable<bool> checksRequireTPCChi2{"checksRequireTPCChi2", false, "require TPC chi2 per cluster for trigger and associated primary tracks"};
205206
Configurable<bool> requireClusterInITS{"requireClusterInITS", false, "require cluster in ITS for V0 and cascade daughter tracks"};
206207
Configurable<int> minITSClustersForDaughterTracks{"minITSClustersForDaughterTracks", 1, "Minimum number of ITS clusters for V0 daughter tracks"};
208+
Configurable<bool> requireDCAzCut{"requireDCAzCut", false, "require DCAz cut for trigger and associated primary tracks"};
207209

208210
// --- Trigger: DCA variation from basic formula: |DCAxy| < 0.004f + (0.013f / pt)
209211
Configurable<float> dcaXYconstant{"dcaXYconstant", 0.004, "[0] in |DCAxy| < [0]+[1]/pT"};
210212
Configurable<float> dcaXYpTdep{"dcaXYpTdep", 0.013, "[1] in |DCAxy| < [0]+[1]/pT"};
211213
// --- Assoc track: DCA variation from basic formula: |DCAxy| < 0.004f + (0.013f / pt)
212214
Configurable<float> dcaXYconstantAssoc{"dcaXYconstantAssoc", 0.004, "[0] in |DCAxy| < [0]+[1]/pT"};
213215
Configurable<float> dcaXYpTdepAssoc{"dcaXYpTdepAssoc", 0.013, "[1] in |DCAxy| < [0]+[1]/pT"};
216+
217+
Configurable<float> dcaZconstant{"dcaZconstant", 0.004, "[0] in |DCAz| < [0]+[1]/pT"};
218+
Configurable<float> dcaZpTdep{"dcaZpTdep", 0.013, "[1] in |DCAz| < [0]+[1]/pT"};
219+
Configurable<float> dcaZconstantAssoc{"dcaZconstantAssoc", 0.004, "[0] in |DCAz| < [0]+[1]/pT"};
220+
Configurable<float> dcaZpTdepAssoc{"dcaZpTdepAssoc", 0.013, "[1] in |DCAz| < [0]+[1]/pT"};
214221
Configurable<int> dEdxCompatibility{"dEdxCompatibility", 1, "0: loose, 1: normal, 2: tight. Defined in HStrangeCorrelationFilter"};
215222
} trackSelection;
216223
struct : ConfigurableGroup {
@@ -594,6 +601,10 @@ struct HStrangeCorrelation {
594601
if (std::abs(track.dcaXY()) > trackSelection.dcaXYconstant + trackSelection.dcaXYpTdep * std::abs(track.signed1Pt())) {
595602
return false;
596603
}
604+
// systematic variations: trigger DCAz
605+
if (trackSelection.requireDCAzCut && std::abs(track.dcaZ()) > trackSelection.dcaZconstant + trackSelection.dcaZpTdep * std::abs(track.signed1Pt())) {
606+
return false;
607+
}
597608
if (track.pt() > axisRanges[3][1] || track.pt() < axisRanges[3][0]) {
598609
return false;
599610
}
@@ -627,6 +638,10 @@ struct HStrangeCorrelation {
627638
if (std::abs(track.dcaXY()) > trackSelection.dcaXYconstantAssoc + trackSelection.dcaXYpTdepAssoc * std::abs(track.signed1Pt())) {
628639
return false;
629640
}
641+
// systematic variations: trigger DCAz
642+
if (trackSelection.requireDCAzCut && std::abs(track.dcaZ()) > trackSelection.dcaZconstantAssoc + trackSelection.dcaZpTdepAssoc * std::abs(track.signed1Pt())) {
643+
return false;
644+
}
630645
if (track.pt() > axisRanges[2][1] || track.pt() < axisRanges[2][0]) {
631646
return false;
632647
}
@@ -905,6 +920,9 @@ struct HStrangeCorrelation {
905920
if (efficiencyFlags.applyEfficiencyPropagation) {
906921
totalEffUncert = std::sqrt(std::pow(efficiencyTrigg * efficiencyError, 2) + std::pow(efficiencyTriggError * efficiency, 2));
907922
}
923+
if (masterConfigurations.doMirroringInDelataEta) {
924+
deltaeta = std::abs(deltaeta);
925+
}
908926
double binFillThn[6] = {deltaphi, deltaeta, ptassoc, pttrigger, pvz, mult};
909927
if (TESTBIT(doCorrelation, Index) && (!efficiencyFlags.applyEfficiencyCorrection || efficiency != 0) && (masterConfigurations.doPPAnalysis || (TESTBIT(selMap, Index) && TESTBIT(selMap, Index + 3)))) {
910928
if (assocCandidate.compatible(Index, trackSelection.dEdxCompatibility) && (!masterConfigurations.doMCassociation || assocCandidate.mcTrue(Index)) && (!doAssocPhysicalPrimary || assocCandidate.mcPhysicalPrimary()) && !mixing && -massWindowConfigurations.maxBgNSigma < assocCandidate.invMassNSigma(Index) && assocCandidate.invMassNSigma(Index) < -massWindowConfigurations.minBgNSigma) {
@@ -1025,6 +1043,9 @@ struct HStrangeCorrelation {
10251043
if (efficiencyFlags.applyEfficiencyPropagation) {
10261044
totalEffUncert = std::sqrt(std::pow(efficiencyTrigg * efficiencyAssocError, 2) + std::pow(efficiencyTriggError * efficiencyAssoc, 2));
10271045
}
1046+
if (masterConfigurations.doMirroringInDelataEta) {
1047+
deltaeta = std::abs(deltaeta);
1048+
}
10281049
double binFillThn[6] = {deltaphi, deltaeta, ptassoc, pttrigger, pvz, mult};
10291050
static_for<0, 2>([&](auto i) {
10301051
constexpr int Index = i.value;
@@ -1243,6 +1264,9 @@ struct HStrangeCorrelation {
12431264
if (efficiencyFlags.applyEfficiencyPropagation) {
12441265
totalEffUncert = std::sqrt(std::pow(efficiencyTrigg * efficiencyError, 2) + std::pow(efficiencyTriggError * efficiency, 2));
12451266
}
1267+
if (masterConfigurations.doMirroringInDelataEta) {
1268+
deltaeta = std::abs(deltaeta);
1269+
}
12461270
double binFillThn[6] = {deltaphi, deltaeta, ptassoc, pttrigger, pvz, mult};
12471271
if (TESTBIT(doCorrelation, Index + 3) && (!efficiencyFlags.applyEfficiencyCorrection || efficiency != 0) && (masterConfigurations.doPPAnalysis || (TESTBIT(cascselMap, Index) && TESTBIT(cascselMap, Index + 4) && TESTBIT(cascselMap, Index + 8) && TESTBIT(cascselMap, Index + 12)))) {
12481272
if (assocCandidate.compatible(Index, trackSelection.dEdxCompatibility) && (!masterConfigurations.doMCassociation || assocCandidate.mcTrue(Index)) && (!doAssocPhysicalPrimary || assocCandidate.mcPhysicalPrimary()) && !mixing && -massWindowConfigurations.maxBgNSigma < assocCandidate.invMassNSigma(Index) && assocCandidate.invMassNSigma(Index) < -massWindowConfigurations.minBgNSigma) {
@@ -1326,6 +1350,9 @@ struct HStrangeCorrelation {
13261350
if (efficiencyFlags.applyEfficiencyPropagation) {
13271351
totalEffUncert = std::sqrt(std::pow(efficiencyTrigg * efficiencyAssocError, 2) + std::pow(efficiencyTriggError * efficiencyAssoc, 2));
13281352
}
1353+
if (masterConfigurations.doMirroringInDelataEta) {
1354+
deltaeta = std::abs(deltaeta);
1355+
}
13291356
double binFillThn[6] = {deltaphi, deltaeta, ptassoc, pttrigger, pvz, mult};
13301357
static_for<0, 3>([&](auto i) {
13311358
constexpr int Index = i.value;
@@ -1483,6 +1510,9 @@ struct HStrangeCorrelation {
14831510
totalEffUncert = std::sqrt(std::pow(efficiencyTrigger * efficiencyUncertainty, 2) + std::pow(efficiencyTriggerError * efficiency, 2));
14841511
totalPurityUncert = std::sqrt(std::pow(purityTrigger * purityUncertainty, 2) + std::pow(purity * purityTriggerError, 2));
14851512
}
1513+
if (masterConfigurations.doMirroringInDelataEta) {
1514+
deltaeta = std::abs(deltaeta);
1515+
}
14861516
double binFillThn[6] = {deltaphi, deltaeta, ptassoc, pttrigger, pvz, mult};
14871517
double deltaPhiStar = calculateAverageDeltaPhiStar(triggForDeltaPhiStar, assocForDeltaPhiStar, bField);
14881518
if (!mixing) {

0 commit comments

Comments
 (0)