Skip to content

Commit 8215385

Browse files
authored
[PWGCF] updated systematic for phi meson (#13579)
1 parent ed5acbd commit 8215385

File tree

2 files changed

+36
-6
lines changed

2 files changed

+36
-6
lines changed

PWGCF/DataModel/CorrelationsDerived.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ enum ParticleDecay {
143143
PhiToKKPID1,
144144
PhiToKKPID2,
145145
PhiToKKPID3,
146+
PhiToKKPID3Loose,
147+
PhiToKKPID3Tight,
146148
K0stoPiPi,
147149
LambdatoPPi,
148150
AntiLambdatoPiP,

PWGCF/TableProducer/filter2Prong.cxx

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,17 @@ struct Filter2Prong {
123123
} grpV0;
124124

125125
struct : ConfigurableGroup {
126+
O2_DEFINE_CONFIGURABLE(storeLooseTightforphi, bool, true, "Store also loose and tight phi candidates for systematics");
126127
O2_DEFINE_CONFIGURABLE(ImMinInvMassPhiMeson, float, 0.98f, "Minimum invariant mass Phi meson (GeV)");
127128
O2_DEFINE_CONFIGURABLE(ImMaxInvMassPhiMeson, float, 1.07f, "Maximum invariant mass Phi meson (GeV)");
128129
O2_DEFINE_CONFIGURABLE(ITSPIDSelection, bool, true, "PID ITS");
129130
O2_DEFINE_CONFIGURABLE(ITSPIDPthreshold, float, 1.0, "Momentum threshold for ITS PID (GeV/c) (only used if ITSPIDSelection is true)");
130131
O2_DEFINE_CONFIGURABLE(lowITSPIDNsigma, float, 3.0, "lower cut on PID nsigma for ITS");
131132
O2_DEFINE_CONFIGURABLE(highITSPIDNsigma, float, 3.0, "higher cut on PID nsigma for ITS");
132133
O2_DEFINE_CONFIGURABLE(ITSclusterPhiMeson, int, 5, "Minimum number of ITS cluster for phi meson track");
133-
O2_DEFINE_CONFIGURABLE(TPCCrossedRowsPhiMeson, int, 80, "Minimum number of TPC Crossed Rows for phi meson track");
134-
O2_DEFINE_CONFIGURABLE(cutDCAxyPhiMeson, float, 0.1, "Maximum DCAxy for phi meson track");
135-
O2_DEFINE_CONFIGURABLE(cutDCAzPhiMeson, float, 0.1, "Maximum DCAz for phi meson track");
134+
O2_DEFINE_CONFIGURABLE(TPCCrossedRowsPhiMeson, std::vector<int>, (std::vector<int>{70, 80, 90}), "Minimum number of TPC Crossed Rows for phi meson track (Loose, Default, Tight)");
135+
O2_DEFINE_CONFIGURABLE(cutDCAxyPhiMeson, std::vector<float>, (std::vector<float>{0.12, 0.1, 0.08}), "Maximum DCAxy for phi meson tracks (Loose, Default, Tight)");
136+
O2_DEFINE_CONFIGURABLE(cutDCAzPhiMeson, std::vector<float>, (std::vector<float>{0.12, 0.1, 0.08}), "Maximum DCAz for phi meson tracks (Loose, Default, Tight)");
136137
O2_DEFINE_CONFIGURABLE(cutEtaPhiMeson, float, 0.8, "Maximum eta for phi meson track");
137138
O2_DEFINE_CONFIGURABLE(cutPTPhiMeson, float, 0.15, "Maximum pt for phi meson track");
138139
O2_DEFINE_CONFIGURABLE(isDeepAngle, bool, true, "Flag for applying deep angle");
@@ -318,7 +319,18 @@ struct Filter2Prong {
318319
template <typename T>
319320
bool selectionTrack(const T& candidate)
320321
{
321-
if (candidate.isGlobalTrack() && candidate.isPVContributor() && candidate.itsNCls() >= grpPhi.ITSclusterPhiMeson && candidate.tpcNClsCrossedRows() > grpPhi.TPCCrossedRowsPhiMeson && std::abs(candidate.dcaXY()) <= grpPhi.cutDCAxyPhiMeson && std::abs(candidate.dcaZ()) <= grpPhi.cutDCAzPhiMeson && std::abs(candidate.eta()) <= grpPhi.cutEtaPhiMeson && candidate.pt() >= grpPhi.cutPTPhiMeson) {
322+
if (candidate.isGlobalTrack() && candidate.isPVContributor() && candidate.itsNCls() >= grpPhi.ITSclusterPhiMeson && std::abs(candidate.eta()) <= grpPhi.cutEtaPhiMeson && candidate.pt() >= grpPhi.cutPTPhiMeson) {
323+
return true;
324+
}
325+
return false;
326+
}
327+
328+
template <typename T>
329+
bool selectionSys(const T& candidate, bool isLoose, bool isTight)
330+
{
331+
const int indexCut = isLoose ? 0 : (isTight ? 2 : 1);
332+
333+
if (std::abs(candidate.dcaXY()) <= grpPhi.cutDCAxyPhiMeson.value[indexCut] && std::abs(candidate.dcaZ()) <= grpPhi.cutDCAzPhiMeson.value[indexCut] && candidate.tpcNClsCrossedRows() > grpPhi.TPCCrossedRowsPhiMeson.value[indexCut]) {
322334
return true;
323335
}
324336
return false;
@@ -735,8 +747,24 @@ struct Filter2Prong {
735747
cftrack1.globalIndex(), cftrack2.globalIndex(), s.pt(), s.eta(), phi, s.M(), aod::cf2prongtrack::PhiToKKPID2);
736748
}
737749
if (selectionPID3(p1) && selectionPID3(p2)) {
738-
output2ProngTracks(cfcollisions.begin().globalIndex(),
739-
cftrack1.globalIndex(), cftrack2.globalIndex(), s.pt(), s.eta(), phi, s.M(), aod::cf2prongtrack::PhiToKKPID3);
750+
if (selectionSys(p1, false, false) && selectionSys(p2, false, false)) // default
751+
{
752+
output2ProngTracks(cfcollisions.begin().globalIndex(),
753+
cftrack1.globalIndex(), cftrack2.globalIndex(), s.pt(), s.eta(), phi, s.M(), aod::cf2prongtrack::PhiToKKPID3);
754+
}
755+
if (grpPhi.storeLooseTightforphi) // store also loose and tight K0s
756+
{
757+
if (selectionSys(p1, true, false) && selectionSys(p2, true, false)) // loose
758+
{
759+
output2ProngTracks(cfcollisions.begin().globalIndex(),
760+
cftrack1.globalIndex(), cftrack2.globalIndex(), s.pt(), s.eta(), phi, s.M(), aod::cf2prongtrack::PhiToKKPID3Loose);
761+
}
762+
if (selectionSys(p1, false, true) && selectionSys(p2, false, true)) // tight
763+
{
764+
output2ProngTracks(cfcollisions.begin().globalIndex(),
765+
cftrack1.globalIndex(), cftrack2.globalIndex(), s.pt(), s.eta(), phi, s.M(), aod::cf2prongtrack::PhiToKKPID3Tight);
766+
}
767+
}
740768
}
741769
} // end of loop over second track
742770
} // end of loop over first track

0 commit comments

Comments
 (0)