Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 42 additions & 10 deletions PWGCF/FemtoDream/TableProducer/femtoDreamProducerTask.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,10 @@ namespace o2::aod

using FemtoFullCollision = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Ms>::iterator;
using FemtoFullCollision_noCent = soa::Join<aod::Collisions, aod::EvSels, aod::Mults>::iterator;
using FemtoFullCollision_CentPbPb = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Cs>::iterator;
using FemtoFullCollisionMC = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Ms, aod::McCollisionLabels>::iterator;
using FemtoFullCollision_noCent_MC = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::McCollisionLabels>::iterator;
using FemtoFullCollisionMC_CentPbPb = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Cs, aod::McCollisionLabels>::iterator;
using FemtoFullMCgenCollisions = soa::Join<aod::McCollisions, MultsExtraMC>;
using FemtoFullMCgenCollision = FemtoFullMCgenCollisions::iterator;

Expand Down Expand Up @@ -102,7 +104,6 @@ struct femtoDreamProducerTask {
Configurable<bool> ConfIsDebug{"ConfIsDebug", true, "Enable Debug tables"};
Configurable<bool> ConfIsRun3{"ConfIsRun3", false, "Running on Run3 or pilot"};
Configurable<bool> ConfIsForceGRP{"ConfIsForceGRP", false, "Set true if the magnetic field configuration is not available in the usual CCDB directory (e.g. for Run 2 converted data or unanchorad Monte Carlo)"};

/// Event cuts
FemtoDreamCollisionSelection colCuts;
// Event cuts - Triggers
Expand Down Expand Up @@ -202,10 +203,10 @@ struct femtoDreamProducerTask {

void init(InitContext&)
{
if (doprocessData == false && doprocessData_noCentrality == false && doprocessMC == false && doprocessMC_noCentrality == false) {
if (doprocessData == false && doprocessData_noCentrality == false && doprocessData_CentPbPb == false && doprocessMC == false && doprocessMC_noCentrality == false && doprocessMC_CentPbPb == false) {
LOGF(fatal, "Neither processData nor processMC enabled. Please choose one.");
}
if ((doprocessData == true && doprocessMC == true) || (doprocessData == true && doprocessMC_noCentrality == true) || (doprocessMC == true && doprocessMC_noCentrality == true) || (doprocessData_noCentrality == true && doprocessData == true) || (doprocessData_noCentrality == true && doprocessMC == true) || (doprocessData_noCentrality == true && doprocessMC_noCentrality == true)) {
if ((doprocessData == true && doprocessMC == true) || (doprocessData == true && doprocessMC_noCentrality == true) || (doprocessMC == true && doprocessMC_noCentrality == true) || (doprocessData_noCentrality == true && doprocessData == true) || (doprocessData_noCentrality == true && doprocessMC == true) || (doprocessData_noCentrality == true && doprocessMC_noCentrality == true) || (doprocessData_CentPbPb == true && doprocessData == true) || (doprocessData_CentPbPb == true && doprocessData_noCentrality == true) || (doprocessData_CentPbPb == true && doprocessMC == true) || (doprocessData_CentPbPb == true && doprocessMC_noCentrality == true) || (doprocessData_CentPbPb == true && doprocessMC_CentPbPb == true)) {
LOGF(fatal,
"Cannot enable more than one process switch at the same time. "
"Please choose one.");
Expand Down Expand Up @@ -462,7 +463,7 @@ struct femtoDreamProducerTask {
outputCollsMCLabels(-1);
}
}
template <bool isMC, bool useCentrality, typename V0Type, typename TrackType, typename CollisionType>
template <bool isMC, bool useCentrality, bool analysePbPb, typename V0Type, typename TrackType, typename CollisionType>
void fillCollisionsAndTracksAndV0(CollisionType const& col, TrackType const& tracks, V0Type const& fullV0s)
{
// If triggering is enabled, select only events which were triggered wit our triggers
Expand All @@ -479,7 +480,11 @@ struct femtoDreamProducerTask {
int multNtr = 0;
if (ConfIsRun3) {
if constexpr (useCentrality) {
mult = col.centFT0M();
if constexpr (analysePbPb) {
mult = col.centFT0C();
} else {
mult = col.centFT0M();
}
} else {
mult = 0;
}
Expand Down Expand Up @@ -731,7 +736,7 @@ struct femtoDreamProducerTask {
// get magnetic field for run
initCCDB_Mag_Trig(col.bc_as<aod::BCsWithTimestamps>());
// fill the tables
fillCollisionsAndTracksAndV0<false, true>(col, tracks, fullV0s);
fillCollisionsAndTracksAndV0<false, true, false>(col, tracks, fullV0s);
}
PROCESS_SWITCH(femtoDreamProducerTask, processData,
"Provide experimental data", true);
Expand All @@ -745,11 +750,25 @@ struct femtoDreamProducerTask {
// get magnetic field for run
initCCDB_Mag_Trig(col.bc_as<aod::BCsWithTimestamps>());
// fill the tables
fillCollisionsAndTracksAndV0<false, false>(col, tracks, fullV0s);
fillCollisionsAndTracksAndV0<false, false, false>(col, tracks, fullV0s);
}
PROCESS_SWITCH(femtoDreamProducerTask, processData_noCentrality,
"Provide experimental data without centrality information", false);

void
processData_CentPbPb(aod::FemtoFullCollision_CentPbPb const& col,
aod::BCsWithTimestamps const&,
aod::FemtoFullTracks const& tracks,
o2::aod::V0Datas const& fullV0s)
{
// get magnetic field for run
initCCDB_Mag_Trig(col.bc_as<aod::BCsWithTimestamps>());
// fill the tables
fillCollisionsAndTracksAndV0<false, true, true>(col, tracks, fullV0s);
}
PROCESS_SWITCH(femtoDreamProducerTask, processData_CentPbPb,
"Provide experimental data with centrality information for PbPb collisions", false);

void processMC(aod::FemtoFullCollisionMC const& col,
aod::BCsWithTimestamps const&,
soa::Join<aod::FemtoFullTracks, aod::McTrackLabels> const& tracks,
Expand All @@ -760,7 +779,7 @@ struct femtoDreamProducerTask {
// get magnetic field for run
initCCDB_Mag_Trig(col.bc_as<aod::BCsWithTimestamps>());
// fill the tables
fillCollisionsAndTracksAndV0<true, true>(col, tracks, fullV0s);
fillCollisionsAndTracksAndV0<true, true, false>(col, tracks, fullV0s);
}
PROCESS_SWITCH(femtoDreamProducerTask, processMC, "Provide MC data", false);

Expand All @@ -774,11 +793,24 @@ struct femtoDreamProducerTask {
// get magnetic field for run
initCCDB_Mag_Trig(col.bc_as<aod::BCsWithTimestamps>());
// fill the tables
fillCollisionsAndTracksAndV0<true, false>(col, tracks, fullV0s);
fillCollisionsAndTracksAndV0<true, false, false>(col, tracks, fullV0s);
}
PROCESS_SWITCH(femtoDreamProducerTask, processMC_noCentrality, "Provide MC data without requiring a centrality calibration", false);
};

void processMC_CentPbPb(aod::FemtoFullCollisionMC_CentPbPb const& col,
aod::BCsWithTimestamps const&,
soa::Join<aod::FemtoFullTracks, aod::McTrackLabels> const& tracks,
aod::FemtoFullMCgenCollisions const&,
aod::McParticles const&,
soa::Join<o2::aod::V0Datas, aod::McV0Labels> const& fullV0s) /// \todo with FilteredFullV0s
{
// get magnetic field for run
initCCDB_Mag_Trig(col.bc_as<aod::BCsWithTimestamps>());
// fill the tables
fillCollisionsAndTracksAndV0<true, true, true>(col, tracks, fullV0s);
}
PROCESS_SWITCH(femtoDreamProducerTask, processMC_CentPbPb, "Provide MC data with centrality information for PbPb collisions", false);
};
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
{
WorkflowSpec workflow{adaptAnalysisTask<femtoDreamProducerTask>(cfgc)};
Expand Down
Loading