Skip to content

Commit e593adb

Browse files
author
Laura Serksnyte
committed
Updated derived-to-derived producer to include the bitmask check
1 parent 4e47704 commit e593adb

File tree

1 file changed

+65
-17
lines changed

1 file changed

+65
-17
lines changed

PWGCF/FemtoDream/TableProducer/femtoDreamProducerTaskForSpecificAnalysis.cxx

Lines changed: 65 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,26 @@
1313
/// \brief Tasks that reads the track tables and creates track triplets; only three identical particles can be used
1414
/// \author Laura Serksnyte, TU München, laura.serksnyte@tum.de
1515

16-
#include <vector>
17-
#include <string>
16+
#include "PWGCF/DataModel/FemtoDerived.h"
17+
#include "PWGCF/FemtoDream/Core/femtoDreamContainerThreeBody.h"
18+
#include "PWGCF/FemtoDream/Core/femtoDreamDetaDphiStar.h"
19+
#include "PWGCF/FemtoDream/Core/femtoDreamEventHisto.h"
20+
#include "PWGCF/FemtoDream/Core/femtoDreamPairCleaner.h"
21+
#include "PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h"
22+
#include "PWGCF/FemtoDream/Core/femtoDreamUtils.h"
23+
24+
#include "Framework/ASoAHelpers.h"
1825
#include "Framework/AnalysisTask.h"
19-
#include "Framework/runDataProcessing.h"
2026
#include "Framework/HistogramRegistry.h"
21-
#include "Framework/ASoAHelpers.h"
27+
#include "Framework/O2DatabasePDGPlugin.h"
2228
#include "Framework/RunningWorkflowInfo.h"
2329
#include "Framework/StepTHn.h"
24-
#include "Framework/O2DatabasePDGPlugin.h"
30+
#include "Framework/runDataProcessing.h"
31+
2532
#include "TDatabasePDG.h"
2633

27-
#include "PWGCF/DataModel/FemtoDerived.h"
28-
#include "PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h"
29-
#include "PWGCF/FemtoDream/Core/femtoDreamEventHisto.h"
30-
#include "PWGCF/FemtoDream/Core/femtoDreamPairCleaner.h"
31-
#include "PWGCF/FemtoDream/Core/femtoDreamContainerThreeBody.h"
32-
#include "PWGCF/FemtoDream/Core/femtoDreamDetaDphiStar.h"
33-
#include "PWGCF/FemtoDream/Core/femtoDreamUtils.h"
34+
#include <string>
35+
#include <vector>
3436

3537
using namespace o2;
3638
using namespace o2::analysis::femtoDream;
@@ -49,6 +51,10 @@ struct femtoDreamProducerTaskForSpecificAnalysis {
4951
float mMassOne = -999, mMassTwo = -999, mMassThree = -999;
5052
int collisions = 0;
5153

54+
// Require bitmask selection for candidates
55+
Configurable<bool> ConfRequireBitmask{"ConfRequireBitmask", false, "Require bitmask selection for candidates"};
56+
57+
// Number of candidates required
5258
Configurable<int> ConfNumberOfTracks{"ConfNumberOfTracks", 3, "Number of tracks"};
5359
Configurable<int> ConfNumberOfV0{"ConfNumberOfV0", 0, "Number of V0"};
5460
Configurable<int> ConfNumberOfCascades{"ConfNumberOfCascades", 0, "Number of Cascades"};
@@ -57,6 +63,8 @@ struct femtoDreamProducerTaskForSpecificAnalysis {
5763
Configurable<float> ConfPIDthrMom{"ConfPIDthrMom", 1.f, "Momentum threshold from which TPC and TOF are required for PID"};
5864
Configurable<o2::aod::femtodreamparticle::cutContainerType> ConfTPCPIDBit{"ConfTPCPIDBit", 16, "PID TPC bit from cutCulator "};
5965
Configurable<o2::aod::femtodreamparticle::cutContainerType> ConfTPCTOFPIDBit{"ConfTPCTOFPIDBit", 8, "PID TPCTOF bit from cutCulator"};
66+
Configurable<o2::aod::femtodreamparticle::cutContainerType> ConfCutPart{"ConfCutPart", 0, "Track - Selection bit from cutCulator for part"};
67+
Configurable<o2::aod::femtodreamparticle::cutContainerType> ConfCutPartAntiPart{"ConfCutPartAntiPart", 0, "Track - Selection bit from cutCulator for antipart"};
6068

6169
/// Partition for selected particles
6270
Partition<aod::FDParticles> SelectedParts = (aod::femtodreamparticle::partType == uint8_t(aod::femtodreamparticle::ParticleType::kTrack)) &&
@@ -67,6 +75,12 @@ struct femtoDreamProducerTaskForSpecificAnalysis {
6775
Configurable<float> Conf_maxInvMass_V0{"Conf_maxInvMass_V0", 1.15, "Maximum invariant mass of V0 (particle)"};
6876
Configurable<float> Conf_minInvMassAnti_V0{"Conf_minInvMassAnti_V0", 1.08, "Minimum invariant mass of V0 (antiparticle)"};
6977
Configurable<float> Conf_maxInvMassAnti_V0{"Conf_maxInvMassAnti_V0", 1.15, "Maximum invariant mass of V0 (antiparticle)"};
78+
Configurable<o2::aod::femtodreamparticle::cutContainerType> ConfCutV0_SameForAntipart{"ConfCutV0_SameForAntipart", 0, "V0 - Selection bit from cutCulator for part/antipart"};
79+
Configurable<o2::aod::femtodreamparticle::cutContainerType> Conf_ChildPos_CutV0{"Conf_ChildPos_CutV0", 149, "Selection bit for positive child of V0"};
80+
Configurable<o2::aod::femtodreamparticle::cutContainerType> Conf_ChildPos_TPCBitV0{"Conf_ChildPos_TPCBitV0", 2, "PID TPC bit for positive child of V0"};
81+
Configurable<o2::aod::femtodreamparticle::cutContainerType> Conf_ChildNeg_CutV0{"Conf_ChildNeg_CutV0", 149, "Selection bit for negative child of V0"};
82+
Configurable<o2::aod::femtodreamparticle::cutContainerType> Conf_ChildNeg_TPCBitV0{"Conf_ChildNeg_TPCBitV0", 2, "PID TPC bit for negative child of V0"};
83+
7084
/// Cascade selection
7185
Configurable<float> Conf_minInvMass_Cascade{"Conf_minInvMass_Cascade", 1.2, "Minimum invariant mass of Cascade (particle)"};
7286
Configurable<float> Conf_maxInvMass_Cascade{"Conf_maxInvMass_Cascade", 1.5, "Maximum invariant mass of Cascade (particle)"};
@@ -95,8 +109,12 @@ struct femtoDreamProducerTaskForSpecificAnalysis {
95109
void init(InitContext&)
96110
{
97111
EventRegistry.add("hStatistiscs", ";bin;Entries", kTH1F, {{3, 0, 3}});
98-
// get bit for the collision mask
112+
// Never run V0s and Cascades together as this will DOUBLE the track number and induce self correlations
113+
if ((doprocessCollisionsWithNTracksAndNCascades && doprocessCollisionsWithNTracksAndNV0)) {
114+
LOG(fatal) << "Never run V0s and Cascades together as this will DOUBLE the track number and induce self correlations!";
115+
}
99116
}
117+
100118
/// This function stores accepted collisions in derived data
101119
/// @tparam PartitionType
102120
/// @tparam PartType
@@ -112,9 +130,13 @@ struct femtoDreamProducerTaskForSpecificAnalysis {
112130
int antitracksCount = 0;
113131
for (auto& part : groupSelectedTracks) {
114132
if (part.cut() & 1) {
115-
antitracksCount++;
133+
if (!ConfRequireBitmask || ncheckbit(part.cut(), ConfCutPartAntiPart)) {
134+
antitracksCount++;
135+
}
116136
} else {
117-
tracksCount++;
137+
if (!ConfRequireBitmask || ncheckbit(part.cut(), ConfCutPart)) {
138+
tracksCount++;
139+
}
118140
}
119141
}
120142

@@ -123,9 +145,35 @@ struct femtoDreamProducerTaskForSpecificAnalysis {
123145
int antiV0Count = 0;
124146
for (auto& V0 : groupSelectedV0s) {
125147
if ((V0.mLambda() > Conf_minInvMass_V0) && (V0.mLambda() < Conf_maxInvMass_V0)) {
126-
V0Count++;
148+
if (ConfRequireBitmask) {
149+
if (ncheckbit(V0.cut(), ConfCutV0_SameForAntipart)) {
150+
const auto& posChild = parts.iteratorAt(V0.index() - 2);
151+
const auto& negChild = parts.iteratorAt(V0.index() - 1);
152+
if (((posChild.cut() & Conf_ChildPos_CutV0) == Conf_ChildPos_CutV0 &&
153+
(posChild.pidcut() & Conf_ChildPos_TPCBitV0) == Conf_ChildPos_TPCBitV0 &&
154+
(negChild.cut() & Conf_ChildNeg_CutV0) == Conf_ChildNeg_CutV0 &&
155+
(negChild.pidcut() & Conf_ChildNeg_TPCBitV0) == Conf_ChildNeg_TPCBitV0)) {
156+
V0Count++;
157+
}
158+
}
159+
} else {
160+
V0Count++;
161+
}
127162
} else if ((V0.mAntiLambda() > Conf_minInvMassAnti_V0) && (V0.mAntiLambda() < Conf_maxInvMassAnti_V0)) {
128-
antiV0Count++;
163+
if (ConfRequireBitmask) {
164+
if (ncheckbit(V0.cut(), ConfCutV0_SameForAntipart)) {
165+
const auto& posChild = parts.iteratorAt(V0.index() - 2);
166+
const auto& negChild = parts.iteratorAt(V0.index() - 1);
167+
if (((posChild.cut() & Conf_ChildPos_CutV0) == Conf_ChildPos_CutV0 &&
168+
(posChild.pidcut() & Conf_ChildNeg_TPCBitV0) == Conf_ChildNeg_TPCBitV0 && // exchanged values because checking antiparticle daughters and pid of particles exchange
169+
(negChild.cut() & Conf_ChildNeg_CutV0) == Conf_ChildNeg_CutV0 &&
170+
(negChild.pidcut() & Conf_ChildPos_TPCBitV0) == Conf_ChildPos_TPCBitV0)) { // exchanged values because checking antiparticle daughters and pid of particles exchange
171+
antiV0Count++;
172+
}
173+
}
174+
} else {
175+
antiV0Count++;
176+
}
129177
}
130178
}
131179

0 commit comments

Comments
 (0)