Skip to content

Commit 3b249b7

Browse files
authored
Add multiplicity classifier
1 parent 618df32 commit 3b249b7

File tree

1 file changed

+82
-1
lines changed

1 file changed

+82
-1
lines changed

PWGCF/TwoParticleCorrelations/Tasks/longrangeCorrelation.cxx

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,17 @@ static constexpr std::string_view kEvntType[] = {"SE/", "ME/"};
9393
auto static constexpr kMinFt0cCell = 96;
9494
AxisSpec axisEvent{10, 0.5, 9.5, "#Event", "EventAxis"};
9595

96+
namespace o2::aod
97+
{
98+
namespace longrangemultclass
99+
{
100+
DECLARE_SOA_COLUMN(Multiplicity, multiplicity, float); //! Centrality/multiplicity value
101+
} // namespace longrangemultclass
102+
DECLARE_SOA_TABLE(LRMultTables, "AOD", "LRMULTTABLE", longrangemultclass::Multiplicity); //! Transient multiplicity table
103+
104+
using LRMultTable = LRMultTables::iterator;
105+
} // namespace o2::aod
106+
96107
struct LongrangeCorrelation {
97108

98109
struct : ConfigurableGroup {
@@ -794,7 +805,77 @@ struct LongrangeCorrelation {
794805
PROCESS_SWITCH(LongrangeCorrelation, processFt0aFt0cME, "mixed event FT0a vs FT0c", false);
795806
};
796807

808+
struct MultiplicityClassifier {
809+
Produces<aod::LRMultTables> multvalue;
810+
Configurable<float> cfgEtaCut{"cfgEtaCut", 0.8f, "Eta range to consider"};
811+
Configurable<float> dcaZ{"dcaZ", 0.2f, "Custom DCA Z cut (ignored if negative)"};
812+
Configurable<float> cfgPtCutMin{"cfgPtCutMin", 0.2f, "minimum accepted track pT"};
813+
Configurable<float> cfgPtCutMax{"cfgPtCutMax", 3.0f, "maximum accepted track pT"};
814+
815+
Filter fTrackSelectionITS = ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::ITS) &&
816+
ncheckbit(aod::track::trackCutFlag, TrackSelectionIts);
817+
Filter fTrackSelectionTPC = ifnode(ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::TPC),
818+
ncheckbit(aod::track::trackCutFlag, TrackSelectionTpc), true);
819+
Filter fTrackSelectionDCA = ifnode(dcaZ.node() > 0.f, nabs(aod::track::dcaZ) <= dcaZ && ncheckbit(aod::track::trackCutFlag, TrackSelectionDcaxyOnly),
820+
ncheckbit(aod::track::trackCutFlag, TrackSelectionDca));
821+
Filter fTracksEta = nabs(aod::track::eta) < cfgEtaCut;
822+
Filter fTracksPt = (aod::track::pt > cfgPtCutMin) && (aod::track::pt < cfgPtCutMax);
823+
824+
void init(InitContext const&)
825+
{
826+
int enabledFunctions = 0;
827+
if (doprocessTracks) {
828+
enabledFunctions++;
829+
}
830+
if (doprocessFT0C) {
831+
enabledFunctions++;
832+
}
833+
if (doprocessFV0A) {
834+
enabledFunctions++;
835+
}
836+
if (doprocessFT0M) {
837+
enabledFunctions++;
838+
}
839+
if (enabledFunctions != 1) {
840+
LOGP(fatal, "{} multiplicity classifier enabled but we need exactly 1.", enabledFunctions);
841+
}
842+
}
843+
844+
void processTracks(aod::Collision const&, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection>> const& tracks)
845+
{
846+
multvalue(tracks.size());
847+
}
848+
849+
void processFT0C(aod::CentFT0Cs const& centralities)
850+
{
851+
for (auto& c : centralities) {
852+
multvalue(c.centFT0C());
853+
}
854+
}
855+
856+
void processFV0A(aod::CentFV0As const& centralities)
857+
{
858+
for (auto& c : centralities) {
859+
multvalue(c.centFV0A());
860+
}
861+
}
862+
863+
void processFT0M(aod::CentFT0Ms const& centralities)
864+
{
865+
for (auto& c : centralities) {
866+
multvalue(c.centFT0M());
867+
}
868+
}
869+
870+
PROCESS_SWITCH(MultiplicityClassifier, processTracks, "Select track count as multiplicity", false);
871+
PROCESS_SWITCH(MultiplicityClassifier, processFT0C, "Select FT0C centrality as multiplicity", false);
872+
PROCESS_SWITCH(MultiplicityClassifier, processFV0A, "Select FV0A centrality as multiplicity", false);
873+
PROCESS_SWITCH(MultiplicityClassifier, processFT0M, "Select FT0M centrality as multiplicity", false);
874+
};
875+
797876
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
798877
{
799-
return WorkflowSpec{adaptAnalysisTask<LongrangeCorrelation>(cfgc)};
878+
return WorkflowSpec{
879+
adaptAnalysisTask<LongrangeCorrelation>(cfgc),
880+
adaptAnalysisTask<MultiplicityClassifier>(cfgc)};
800881
}

0 commit comments

Comments
 (0)