diff --git a/PWGUD/TableProducer/tauEventTableProducer.cxx b/PWGUD/TableProducer/tauEventTableProducer.cxx index 4cda2b55a43..194e6d3a7c8 100644 --- a/PWGUD/TableProducer/tauEventTableProducer.cxx +++ b/PWGUD/TableProducer/tauEventTableProducer.cxx @@ -68,6 +68,7 @@ struct TauEventTableProducer { Configurable useNumContribs{"useNumContribs", false, {"Use coll.numContribs as event cut"}}; Configurable cutRecoFlag{"cutRecoFlag", 1, {"0 = std mode, 1 = upc mode"}}; Configurable useRecoFlag{"useRecoFlag", false, {"Use coll.flags as event cut"}}; + Configurable cutRCTflag{"cutRCTflag", 0, {"0 = off, 1 = CBT, 2 = CBT+ZDC, 3 = CBThadron, 4 = CBThadron+ZDC"}}; Configurable cutTrueGapSideFV0{"cutTrueGapSideFV0", 180000, "FV0A threshold for SG selector"}; Configurable cutTrueGapSideFT0A{"cutTrueGapSideFT0A", 150., "FT0A threshold for SG selector"}; Configurable cutTrueGapSideFT0C{"cutTrueGapSideFT0C", 50., "FT0C threshold for SG selector"}; @@ -153,6 +154,23 @@ struct TauEventTableProducer { return true; } + template + bool isGoodRCTflag(C const& coll) + { + switch (cutSample.cutRCTflag) { + case 1: + return sgSelector.isCBTOk(coll); + case 2: + return sgSelector.isCBTZdcOk(coll); + case 3: + return sgSelector.isCBTHadronOk(coll); + case 4: + return sgSelector.isCBTHadronZdcOk(coll); + default: + return true; + } + } + template bool isGoodROFtime(C const& coll) { @@ -324,15 +342,16 @@ struct TauEventTableProducer { FullUDTracks const& tracks) { - int gapSide = collision.gapSide(); - int trueGapSide = sgSelector.trueGap(collision, cutSample.cutTrueGapSideFV0, cutSample.cutTrueGapSideFT0A, cutSample.cutTrueGapSideFT0C, cutSample.cutTrueGapSideZDC); - - if (cutSample.useTrueGap) - gapSide = trueGapSide; + if (!isGoodRCTflag(collision)) + return; if (!isGoodROFtime(collision)) return; + int gapSide = collision.gapSide(); + int trueGapSide = sgSelector.trueGap(collision, cutSample.cutTrueGapSideFV0, cutSample.cutTrueGapSideFT0A, cutSample.cutTrueGapSideFT0C, cutSample.cutTrueGapSideZDC); + if (cutSample.useTrueGap) + gapSide = trueGapSide; if (gapSide != cutSample.whichGapSide) return; diff --git a/PWGUD/TableProducer/twoTracksEventTableProducer.cxx b/PWGUD/TableProducer/twoTracksEventTableProducer.cxx index 95b8c6629e1..4f98b604852 100644 --- a/PWGUD/TableProducer/twoTracksEventTableProducer.cxx +++ b/PWGUD/TableProducer/twoTracksEventTableProducer.cxx @@ -73,6 +73,7 @@ struct TwoTracksEventTableProducer { Configurable useNumContribs{"useNumContribs", true, {"Use coll.numContribs as event cut"}}; Configurable cutRecoFlag{"cutRecoFlag", 1, {"0 = std mode, 1 = upc mode"}}; Configurable useRecoFlag{"useRecoFlag", false, {"Use coll.flags as event cut"}}; + Configurable cutRCTflag{"cutRCTflag", 0, {"0 = off, 1 = CBT, 2 = CBT+ZDC, 3 = CBThadron, 4 = CBThadron+ZDC"}}; Configurable cutTrueGapSideFV0{"cutTrueGapSideFV0", 180000, "FV0A threshold for SG selector"}; Configurable cutTrueGapSideFT0A{"cutTrueGapSideFT0A", 150., "FT0A threshold for SG selector"}; Configurable cutTrueGapSideFT0C{"cutTrueGapSideFT0C", 50., "FT0C threshold for SG selector"}; @@ -161,6 +162,23 @@ struct TwoTracksEventTableProducer { return true; } + template + bool isGoodRCTflag(C const& coll) + { + switch (cutSample.cutRCTflag) { + case 1: + return sgSelector.isCBTOk(coll); + case 2: + return sgSelector.isCBTZdcOk(coll); + case 3: + return sgSelector.isCBTHadronOk(coll); + case 4: + return sgSelector.isCBTHadronZdcOk(coll); + default: + return true; + } + } + template bool isGoodROFtime(C const& coll) { @@ -346,15 +364,18 @@ struct TwoTracksEventTableProducer { histos.get(HIST("Reco/hSelections"))->Fill(nSelection); nSelection++; + if (!isGoodRCTflag(collision)) + return; + histos.get(HIST("Reco/hSelections"))->Fill(nSelection); + nSelection++; + if (!isGoodROFtime(collision)) return; int gapSide = collision.gapSide(); int trueGapSide = sgSelector.trueGap(collision, cutSample.cutTrueGapSideFV0, cutSample.cutTrueGapSideFT0A, cutSample.cutTrueGapSideFT0C, cutSample.cutTrueGapSideZDC); - if (cutSample.useTrueGap) gapSide = trueGapSide; - if (gapSide != cutSample.whichGapSide) return; histos.get(HIST("Reco/hSelections"))->Fill(nSelection); diff --git a/PWGUD/Tasks/upcTauRl.cxx b/PWGUD/Tasks/upcTauRl.cxx index 4f791e2a11e..6e1c64ac4f1 100644 --- a/PWGUD/Tasks/upcTauRl.cxx +++ b/PWGUD/Tasks/upcTauRl.cxx @@ -151,6 +151,7 @@ struct UpcTauRl { Configurable useNumContribs{"useNumContribs", true, {"Use coll.numContribs as event cut"}}; Configurable cutRecoFlag{"cutRecoFlag", 1, {"0 = std mode, 1 = upc mode"}}; Configurable useRecoFlag{"useRecoFlag", false, {"Use coll.flags as event cut"}}; + Configurable cutRCTflag{"cutRCTflag", 0, {"0 = off, 1 = CBT, 2 = CBT+ZDC, 3 = CBThadron, 4 = CBThadron+ZDC"}}; Configurable cutTrueGapSideFV0{"cutTrueGapSideFV0", -1, "FV0A threshold for SG selector"}; Configurable cutTrueGapSideFT0A{"cutTrueGapSideFT0A", 150., "FT0A threshold for SG selector"}; Configurable cutTrueGapSideFT0C{"cutTrueGapSideFT0C", 50., "FT0C threshold for SG selector"}; @@ -863,6 +864,23 @@ struct UpcTauRl { return true; } + template + bool isGoodRCTflag(C const& coll) + { + switch (cutSample.cutRCTflag) { + case 1: + return sgSelector.isCBTOk(coll); + case 2: + return sgSelector.isCBTZdcOk(coll); + case 3: + return sgSelector.isCBTHadronOk(coll); + case 4: + return sgSelector.isCBTHadronZdcOk(coll); + default: + return true; + } + } + template bool isGoodROFtime(C const& coll) { @@ -2280,6 +2298,9 @@ struct UpcTauRl { fillRejectionReasonDG(reconstructedCollision); outputGlobalRejectionHistogram(); + if (!isGoodRCTflag(reconstructedCollision)) + return; + if (!isGoodROFtime(reconstructedCollision)) return; @@ -2313,6 +2334,9 @@ struct UpcTauRl { fillRejectionReasonSG(reconstructedCollision); outputGlobalRejectionHistogram(); + if (!isGoodRCTflag(reconstructedCollision)) + return; + int gapSide = reconstructedCollision.gapSide(); int trueGapSide = sgSelector.trueGap(reconstructedCollision, cutSample.cutTrueGapSideFV0, cutSample.cutTrueGapSideFT0A, cutSample.cutTrueGapSideFT0C, cutSample.cutTrueGapSideZDC);