Skip to content

Commit 9e4be94

Browse files
authored
[PWGCF] FemtoUniverse: From modular to nested filling of trks (#8645)
1 parent c29fc9c commit 9e4be94

File tree

1 file changed

+47
-17
lines changed

1 file changed

+47
-17
lines changed

PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <algorithm>
2323
#include <set>
2424

25+
#include "Common/CCDB/ctpRateFetcher.h"
2526
#include "Common/Core/trackUtilities.h"
2627
#include "Common/DataModel/EventSelection.h"
2728
#include "Common/DataModel/Multiplicity.h"
@@ -101,6 +102,7 @@ int getRowDaughters(int daughID, T const& vecID)
101102

102103
struct femtoUniverseProducerTask {
103104
Produces<aod::FDCollisions> outputCollision;
105+
Produces<aod::FDExtCollisions> outputCollExtra;
104106
Produces<aod::FDParticles> outputParts;
105107
Produces<aod::FDMCParticles> outputPartsMC;
106108
Produces<aod::FDExtParticles> outputDebugParts;
@@ -178,6 +180,7 @@ struct femtoUniverseProducerTask {
178180
// V0
179181
FemtoUniverseV0Selection v0Cuts;
180182
struct : o2::framework::ConfigurableGroup {
183+
Configurable<bool> ConfIsFillV0s{"ConfIsFillV0s", false, "Choice to fill V0s"};
181184
Configurable<std::vector<float>> ConfV0Sign{FemtoUniverseV0Selection::getSelectionName(femtoUniverseV0Selection::kV0Sign, "ConfV0"), std::vector<float>{-1, 1}, FemtoUniverseV0Selection::getSelectionHelper(femtoUniverseV0Selection::kV0Sign, "V0 selection: ")};
182185
Configurable<std::vector<float>> ConfV0PtMin{FemtoUniverseV0Selection::getSelectionName(femtoUniverseV0Selection::kV0pTMin, "ConfV0"), std::vector<float>{0.3f, 0.4f, 0.5f}, FemtoUniverseV0Selection::getSelectionHelper(femtoUniverseV0Selection::kV0pTMin, "V0 selection: ")};
183186
Configurable<std::vector<float>> ConfV0PtMax{FemtoUniverseV0Selection::getSelectionName(femtoUniverseV0Selection::kV0pTMax, "ConfV0"), std::vector<float>{3.3f, 3.4f, 3.5f}, FemtoUniverseV0Selection::getSelectionHelper(femtoUniverseV0Selection::kV0pTMax, "V0 selection: ")};
@@ -226,6 +229,7 @@ struct femtoUniverseProducerTask {
226229
// CASCADE
227230
FemtoUniverseCascadeSelection cascadeCuts;
228231
struct : o2::framework::ConfigurableGroup {
232+
Configurable<bool> ConfIsFillCascades{"ConfIsFillCascades", false, "Choice to fill cascades"};
229233
Configurable<std::vector<float>> ConfCascSign{FemtoUniverseCascadeSelection::getSelectionName(femtoUniverseCascadeSelection::kCascadeSign, "ConfCasc"), std::vector<float>{-1, 1}, FemtoUniverseCascadeSelection::getSelectionHelper(femtoUniverseCascadeSelection::kCascadeSign, "Cascade selection: ")};
230234
Configurable<std::vector<float>> ConfCascPtMin{FemtoUniverseCascadeSelection::getSelectionName(femtoUniverseCascadeSelection::kCascadepTMin, "ConfCasc"), std::vector<float>{0.3f, 0.4f, 0.5f}, FemtoUniverseCascadeSelection::getSelectionHelper(femtoUniverseCascadeSelection::kCascadepTMin, "Cascade selection: ")};
231235
Configurable<std::vector<float>> ConfCascPtMax{FemtoUniverseCascadeSelection::getSelectionName(femtoUniverseCascadeSelection::kCascadepTMax, "ConfCasc"), std::vector<float>{3.3f, 3.4f, 3.5f}, FemtoUniverseCascadeSelection::getSelectionHelper(femtoUniverseCascadeSelection::kCascadepTMax, "Cascade selection: ")};
@@ -438,16 +442,17 @@ struct femtoUniverseProducerTask {
438442
HistogramRegistry qaRegistry{"QAHistos", {}, OutputObjHandlingPolicy::QAObject};
439443
HistogramRegistry cascadeQaRegistry{"CascadeQAHistos", {}, OutputObjHandlingPolicy::QAObject};
440444

441-
int mRunNumber;
445+
int mRunNumber = 0;
442446
float mMagField;
443447
Service<o2::ccdb::BasicCCDBManager> ccdb; /// Accessing the CCDB
448+
ctpRateFetcher mRateFetcher; // inspired by zdcSP.cxx in PWGLF
444449

445450
void init(InitContext&)
446451
{
447-
if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data || doprocessTrackV0CentRun3) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == false) {
452+
if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == false) {
448453
LOGF(fatal, "Neither processFullData nor processFullMC enabled. Please choose one.");
449454
}
450-
if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data || doprocessTrackV0CentRun3) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == true) {
455+
if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == true) {
451456
LOGF(fatal,
452457
"Cannot enable process Data and process MC at the same time. "
453458
"Please choose one.");
@@ -843,8 +848,8 @@ struct femtoUniverseProducerTask {
843848
}
844849
}
845850

846-
template <bool isMC, typename CollisionType, typename TrackType>
847-
void fillCollisionsCentRun3(CollisionType const& col, TrackType const& tracks)
851+
template <bool isMC, typename CollisionType, typename TrackType, typename V0Type, typename CascadeType>
852+
void fillCollisionsCentRun3(CollisionType const& col, TrackType const& tracks, V0Type const& fullV0s, CascadeType const& fullCascades, double irrate)
848853
{
849854
const auto vtxZ = col.posZ();
850855
int cent = 0;
@@ -871,9 +876,26 @@ struct femtoUniverseProducerTask {
871876
} else {
872877
outputCollision(vtxZ, cent, multNtr, 2, mMagField);
873878
}
879+
880+
fillCollisionsCentRun3ColExtra<isMC>(col, irrate);
881+
882+
fillTracks<isMC>(tracks);
883+
if (ConfV0Selection.ConfIsFillV0s) {
884+
fillV0<isMC>(col, fullV0s, tracks);
885+
}
886+
if (ConfCascadeSelection.ConfIsFillCascades) {
887+
fillCascade<isMC>(col, fullCascades, tracks);
888+
}
874889
}
875890
}
876891

892+
template <bool isMC, typename CollisionType>
893+
void fillCollisionsCentRun3ColExtra(CollisionType const& col, double irrate)
894+
{
895+
int occupancy = col.trackOccupancyInTimeRange();
896+
outputCollExtra(irrate, occupancy);
897+
}
898+
877899
template <bool isMC, typename TrackType>
878900
void fillTracks(TrackType const& tracks)
879901
{
@@ -1586,19 +1608,19 @@ struct femtoUniverseProducerTask {
15861608
}
15871609
PROCESS_SWITCH(femtoUniverseProducerTask, processTrackCascadeData, "Provide experimental data for track cascades", false);
15881610

1589-
void processTrackV0CentRun3(aod::FemtoFullCollisionCentRun3 const& col,
1611+
/*void processTrackV0CentRun3(aod::FemtoFullCollisionCentRun3 const& col,
15901612
aod::BCsWithTimestamps const&,
15911613
soa::Filtered<aod::FemtoFullTracks> const& tracks,
15921614
o2::aod::V0Datas const& fullV0s)
15931615
{
15941616
// get magnetic field for run
15951617
getMagneticFieldTesla(col.bc_as<aod::BCsWithTimestamps>());
15961618
// fill the tables
1597-
fillCollisionsCentRun3<false>(col, tracks);
1619+
fillCollisionsCentRun3<false>(col, tracks, fullV0s);
15981620
fillTracks<false>(tracks);
15991621
fillV0<false>(col, fullV0s, tracks);
16001622
}
1601-
PROCESS_SWITCH(femtoUniverseProducerTask, processTrackV0CentRun3, "Provide experimental data for track v0", false);
1623+
PROCESS_SWITCH(femtoUniverseProducerTask, processTrackV0CentRun3, "Provide experimental data for track v0", false);*/
16021624

16031625
void processFullMC(aod::FemtoFullCollisionMC const& col,
16041626
aod::BCsWithTimestamps const&,
@@ -1761,14 +1783,17 @@ struct femtoUniverseProducerTask {
17611783
soa::Join<aod::FemtoFullTracks, aod::McTrackLabels> const& tracks,
17621784
aod::McCollisions const&,
17631785
aod::McParticles const&,
1764-
soa::Join<o2::aod::V0Datas, aod::McV0Labels> const& fullV0s)
1786+
soa::Join<aod::V0Datas, aod::McV0Labels> const& fullV0s,
1787+
soa::Join<aod::CascDatas, aod::McCascLabels> const& fullCascades)
17651788
{
17661789
// get magnetic field for run
1767-
getMagneticFieldTesla(col.bc_as<aod::BCsWithTimestamps>());
1790+
auto bc = col.bc_as<aod::BCsWithTimestamps>();
1791+
getMagneticFieldTesla(bc);
1792+
double ir = 0.;
1793+
ir = mRateFetcher.fetch(ccdb.service, bc.timestamp(), mRunNumber, "ZNC hadronic") * 1.e-3; // fetch IR
1794+
17681795
// fill the tables
1769-
fillCollisionsCentRun3<true>(col, tracks);
1770-
fillTracks<true>(tracks);
1771-
fillV0<true>(col, fullV0s, tracks);
1796+
fillCollisionsCentRun3<true>(col, tracks, fullV0s, fullCascades, ir);
17721797
}
17731798
PROCESS_SWITCH(femtoUniverseProducerTask, processFullMCCent, "Provide MC data with centrality bins", false);
17741799

@@ -1786,13 +1811,18 @@ struct femtoUniverseProducerTask {
17861811

17871812
void processTrackCentRun3Data(aod::FemtoFullCollisionCentRun3 const& col,
17881813
aod::BCsWithTimestamps const&,
1789-
soa::Filtered<aod::FemtoFullTracks> const& tracks)
1814+
soa::Filtered<aod::FemtoFullTracks> const& tracks,
1815+
aod::V0Datas const& fullV0s,
1816+
aod::CascDatas const& fullCascades)
17901817
{
17911818
// get magnetic field for run
1792-
getMagneticFieldTesla(col.bc_as<aod::BCsWithTimestamps>());
1819+
auto bc = col.bc_as<aod::BCsWithTimestamps>();
1820+
getMagneticFieldTesla(bc);
1821+
double ir = 0.;
1822+
ir = mRateFetcher.fetch(ccdb.service, bc.timestamp(), mRunNumber, "ZNC hadronic") * 1.e-3; // fetch IR
1823+
17931824
// fill the tables
1794-
fillCollisionsCentRun3<false>(col, tracks);
1795-
fillTracks<false>(tracks);
1825+
fillCollisionsCentRun3<false>(col, tracks, fullV0s, fullCascades, ir);
17961826
}
17971827
PROCESS_SWITCH(femtoUniverseProducerTask, processTrackCentRun3Data, "Provide experimental data for Run 3 with centrality for track track", false);
17981828
};

0 commit comments

Comments
 (0)