Skip to content

Commit 036003a

Browse files
authored
[PWGJE] adding new centrality and hadronic rate definitions (#10389)
1 parent 57c619f commit 036003a

13 files changed

+77
-19
lines changed

PWGJE/Core/JetDerivedDataUtilities.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,10 @@ std::vector<int> initialiseEventSelectionBits(std::string eventSelectionMasks)
121121
}
122122
if (eventSelectionMasksContainSelection(eventSelectionMasks, "selUnanchoredMC")) {
123123
eventSelectionMaskBits.push_back(JCollisionSel::selTVX);
124-
eventSelectionMaskBits.push_back(JCollisionSel::selNoTimeFrameBorder);
125124
}
126125
if (eventSelectionMasksContainSelection(eventSelectionMasks, "selMC")) {
127126
eventSelectionMaskBits.push_back(JCollisionSel::selTVX);
127+
eventSelectionMaskBits.push_back(JCollisionSel::selNoTimeFrameBorder);
128128
}
129129
if (eventSelectionMasksContainSelection(eventSelectionMasks, "selMCFull")) {
130130
eventSelectionMaskBits.push_back(JCollisionSel::selTVX);

PWGJE/DataModel/JetReducedData.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ DECLARE_SOA_COLUMN(PosY, posY, float);
6969
DECLARE_SOA_COLUMN(PosZ, posZ, float);
7070
DECLARE_SOA_COLUMN(Multiplicity, multiplicity, float);
7171
DECLARE_SOA_COLUMN(Centrality, centrality, float);
72+
DECLARE_SOA_COLUMN(CentralityVariant1, centralityVariant1, float);
73+
DECLARE_SOA_COLUMN(HadronicRate, hadronicRate, float);
7274
DECLARE_SOA_COLUMN(Weight, weight, float);
7375
DECLARE_SOA_COLUMN(SubGeneratorId, subGeneratorId, int);
7476
DECLARE_SOA_COLUMN(EventSel, eventSel, uint16_t);
@@ -102,6 +104,8 @@ DECLARE_SOA_TABLE_STAGED(JCollisions, "JCOLLISION",
102104
jcollision::PosZ,
103105
jcollision::Multiplicity,
104106
jcollision::Centrality,
107+
jcollision::CentralityVariant1,
108+
jcollision::HadronicRate,
105109
jcollision::TrackOccupancyInTimeRange,
106110
jcollision::EventSel,
107111
jcollision::Alias,
@@ -217,7 +221,13 @@ DECLARE_SOA_DYNAMIC_COLUMN(P, p,
217221
DECLARE_SOA_DYNAMIC_COLUMN(Energy, energy,
218222
[](float pt, float eta) -> float { return std::sqrt((pt * std::cosh(eta) * pt * std::cosh(eta)) + (jetderiveddatautilities::mPion * jetderiveddatautilities::mPion)); });
219223
DECLARE_SOA_DYNAMIC_COLUMN(Sign, sign,
220-
[](uint8_t trackSel) -> int { if (trackSel & (1 << jetderiveddatautilities::JTrackSel::trackSign)){ return 1;} else{return -1;} });
224+
[](uint8_t trackSel) -> int {
225+
if (trackSel & (1 << jetderiveddatautilities::JTrackSel::trackSign)) {
226+
return 1;
227+
} else {
228+
return -1;
229+
}
230+
});
221231
} // namespace jtrack
222232

223233
DECLARE_SOA_TABLE_STAGED(JTracks, "JTRACK",

PWGJE/DataModel/JetSubstructure.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@ DECLARE_SOA_COLUMN(EventSel, eventSel, uint8_t); //!
3636
DECLARE_SOA_COLUMN(EventWeight, eventWeight, float); //!
3737
} // namespace jetcollision
3838

39+
namespace jetmccollision
40+
{
41+
DECLARE_SOA_COLUMN(PosZ, posZ, float); //!
42+
DECLARE_SOA_COLUMN(Accepted, accepted, uint64_t); //!
43+
DECLARE_SOA_COLUMN(Attempted, attempted, uint64_t); //!
44+
DECLARE_SOA_COLUMN(XsectGen, xsectGen, float); //!
45+
DECLARE_SOA_COLUMN(XsectErr, xsectErr, float); //!
46+
DECLARE_SOA_COLUMN(EventWeight, eventWeight, float); //!
47+
} // namespace jetmccollision
48+
3949
namespace jetsubstructure
4050
{ //!
4151
DECLARE_SOA_COLUMN(EnergyMother, energyMother, std::vector<float>); //!
@@ -153,6 +163,20 @@ DECLARE_SOA_COLUMN(JetPerpConeRho, jetPerpConeRho, float); //!
153163
DECLARE_SOA_COLUMN(JetNConstituents, jetNConstituents, int); //!
154164
} // namespace jetoutput
155165

166+
#define MCCOLL_TABLE_DEF(_jet_type_, _jet_description_, _name_) \
167+
namespace _name_##mccollisionoutput \
168+
{ \
169+
DECLARE_SOA_DYNAMIC_COLUMN(Dummy##_jet_type_, dummy##_jet_type_, []() -> int { return 0; }); \
170+
} \
171+
DECLARE_SOA_TABLE(_jet_type_##MCCOs, "AOD", _jet_description_ "MCCO", \
172+
jetmccollision::PosZ, \
173+
jetmccollision::Accepted, \
174+
jetmccollision::Attempted, \
175+
jetmccollision::XsectGen, \
176+
jetmccollision::XsectErr, \
177+
jetmccollision::EventWeight, \
178+
_name_##mccollisionoutput::Dummy##_jet_type_<>);
179+
156180
// Defines the jet substrcuture table definition
157181
#define JETSUBSTRUCTURE_TABLE_DEF(_jet_type_, _jet_description_, _name_, _cand_type_, _cand_description_) \
158182
\
@@ -217,6 +241,7 @@ DECLARE_SOA_COLUMN(JetNConstituents, jetNConstituents, int); //!
217241
JETPAIRMATCHING_TABLE_DEF(_jet_type_full_##EventWiseSubtracted, _jet_type_full_, _jet_description_ "EWSSP2") \
218242
JETSUBSTRUCTURE_TABLE_DEF(_jet_type_##MCDJet, _jet_description_ "MCDJET", _jet_type_##mcdjet, _cand_type_mcd_, _cand_description_mcd_) \
219243
JETSUBSTRUCTURE_TABLE_DEF(_jet_type_##MCPJet, _jet_description_ "MCPJET", _jet_type_##mcpjet, _hfparticle_type_, _hfparticle_description_) \
244+
MCCOLL_TABLE_DEF(_jet_type_##MCPJet, _jet_description_ "MCPJET", _jet_type_##mcpjet) \
220245
JETMATCHING_TABLE_DEF(_jet_type_##MCDJet, _jet_type_##MCPJet, _jet_description_ "MCPJET", _jet_type_##mcdjet, _jet_description_ "MCDJET") \
221246
JETMATCHING_TABLE_DEF(_jet_type_##MCPJet, _jet_type_##MCDJet, _jet_description_ "MCDJET", _jet_type_##mcpjet, _jet_description_ "MCPJET") \
222247
JETSPLITTING_TABLE_DEF(_jet_type_full_##MCDetectorLevel, _jet_description_ "D", _jet_full_description_##mcdetectorlevel, _track_type_mcd_, _cand_type_mcd_) \

PWGJE/TableProducer/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ if(FastJet_FOUND)
1515

1616
o2physics_add_dpl_workflow(jet-deriveddata-producer
1717
SOURCES derivedDataProducer.cxx
18-
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore O2Physics::EventFilteringUtils
18+
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore O2Physics::EventFilteringUtils O2Physics::AnalysisCCDB
1919
COMPONENT_NAME Analysis)
2020

2121
o2physics_add_dpl_workflow(jet-deriveddata-trigger-producer

PWGJE/TableProducer/derivedDataProducer.cxx

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515

1616
#include <vector>
1717
#include <string>
18+
#include <map>
19+
#include <utility>
20+
#include <algorithm>
1821

1922
#include "Framework/runDataProcessing.h"
2023
#include "Framework/AnalysisTask.h"
@@ -37,6 +40,7 @@
3740
#include "Common/DataModel/TrackSelectionTables.h"
3841
#include "Common/DataModel/Centrality.h"
3942
#include "Common/Core/RecoDecay.h"
43+
#include "Common/CCDB/ctpRateFetcher.h"
4044
#include "Common/DataModel/CollisionAssociationTables.h"
4145
#include "PWGJE/DataModel/EMCALClusters.h"
4246

@@ -121,6 +125,7 @@ struct JetDerivedDataProducerTask {
121125

122126
Configurable<std::string> ccdbURL{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
123127
Configurable<bool> includeTriggers{"includeTriggers", false, "fill the collision information with software trigger decisions"};
128+
Configurable<bool> includeHadronicRate{"includeHadronicRate", true, "fill the collision information with the hadronic rate"};
124129

125130
Preslice<aod::EMCALClusterCells> perClusterCells = aod::emcalclustercell::emcalclusterId;
126131
Preslice<aod::EMCALMatchedTracks> perClusterTracks = aod::emcalclustercell::emcalclusterId;
@@ -133,11 +138,14 @@ struct JetDerivedDataProducerTask {
133138
Service<o2::framework::O2DatabasePDG> pdgDatabase;
134139
Zorro triggerDecider;
135140

141+
ctpRateFetcher rateFetcher;
136142
int runNumber;
143+
float hadronicRate;
137144
bool withCollisionAssociator;
138145
void init(InitContext const&)
139146
{
140-
if (doprocessTracksWithCollisionAssociator || includeTriggers) {
147+
hadronicRate = -1.0;
148+
if (doprocessTracksWithCollisionAssociator || includeHadronicRate || includeTriggers) {
141149
ccdb->setURL(ccdbUrl);
142150
ccdb->setCaching(true);
143151
ccdb->setLocalObjectValidityChecking();
@@ -169,15 +177,21 @@ struct JetDerivedDataProducerTask {
169177
}
170178
PROCESS_SWITCH(JetDerivedDataProducerTask, processBunchCrossings, "produces derived bunch crossing table", false);
171179

172-
void processCollisions(soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::CentFT0Cs>::iterator const& collision, soa::Join<aod::BCs, aod::Timestamps> const&)
180+
void processCollisions(soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::CentFT0Cs, aod::CentFT0CVariant1s>::iterator const& collision, soa::Join<aod::BCs, aod::Timestamps> const&)
173181
{
182+
auto bc = collision.bc_as<soa::Join<aod::BCs, aod::Timestamps>>();
183+
if (includeHadronicRate) {
184+
if (runNumber != bc.runNumber()) {
185+
runNumber = bc.runNumber();
186+
hadronicRate = rateFetcher.fetch(ccdb.service, bc.timestamp(), runNumber, "ZNC hadronic") * 0.001;
187+
}
188+
}
174189
uint64_t triggerBit = 0;
175190
if (includeTriggers) {
176-
auto bc = collision.bc_as<soa::Join<aod::BCs, aod::Timestamps>>();
177191
triggerDecider.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), jetderiveddatautilities::JTriggerMasks);
178192
triggerBit = jetderiveddatautilities::setTriggerSelectionBit(triggerDecider.getTriggerOfInterestResults(bc.globalBC()));
179193
}
180-
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multFT0C(), collision.centFT0C(), collision.trackOccupancyInTimeRange(), jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit); // note change multFT0C to multFT0M when problems with multFT0A are fixed
194+
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multFT0C(), collision.centFT0C(), collision.centFT0CVariant1(), hadronicRate, collision.trackOccupancyInTimeRange(), jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit); // note change multFT0C to multFT0M when problems with multFT0A are fixed
181195
products.jCollisionsParentIndexTable(collision.globalIndex());
182196
products.jCollisionsBunchCrossingIndexTable(collision.bcId());
183197
}
@@ -191,23 +205,23 @@ struct JetDerivedDataProducerTask {
191205
triggerDecider.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), jetderiveddatautilities::JTriggerMasks);
192206
triggerBit = jetderiveddatautilities::setTriggerSelectionBit(triggerDecider.getTriggerOfInterestResults(bc.globalBC()));
193207
}
194-
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit);
208+
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1.0, -1.0, -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit);
195209
products.jCollisionsParentIndexTable(collision.globalIndex());
196210
products.jCollisionsBunchCrossingIndexTable(collision.bcId());
197211
}
198212
PROCESS_SWITCH(JetDerivedDataProducerTask, processCollisionsWithoutCentralityAndMultiplicity, "produces derived collision tables without centrality or multiplicity", false);
199213

200214
void processCollisionsRun2(soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::CentRun2V0Ms>::iterator const& collision)
201215
{
202-
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multFT0C(), collision.centRun2V0M(), -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), 0); // note change multFT0C to multFT0M when problems with multFT0A are fixed
216+
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multFT0C(), collision.centRun2V0M(), -1.0, -1.0, -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), 0); // note change multFT0C to multFT0M when problems with multFT0A are fixed
203217
products.jCollisionsParentIndexTable(collision.globalIndex());
204218
products.jCollisionsBunchCrossingIndexTable(collision.bcId());
205219
}
206220
PROCESS_SWITCH(JetDerivedDataProducerTask, processCollisionsRun2, "produces derived collision tables for Run 2 data", false);
207221

208222
void processCollisionsALICE3(aod::Collision const& collision)
209223
{
210-
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1, -1.0, 0, 0);
224+
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1.0, -1.0, -1, -1.0, 0, 0);
211225
products.jCollisionsParentIndexTable(collision.globalIndex());
212226
products.jCollisionsBunchCrossingIndexTable(-1);
213227
}
@@ -274,6 +288,7 @@ struct JetDerivedDataProducerTask {
274288

275289
void processTracksWithCollisionAssociator(aod::Collisions const& collisions, soa::Join<aod::BCs, aod::Timestamps> const&, soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TracksDCA, aod::TracksDCACov, aod::TrackSelection, aod::TrackSelectionExtension> const&, aod::TrackAssoc const& assocCollisions)
276290
{
291+
runNumber = 0;
277292
for (auto const& collision : collisions) {
278293
auto collisionTrackIndices = assocCollisions.sliceBy(perCollisionTrackIndices, collision.globalIndex());
279294
for (auto const& collisionTrackIndex : collisionTrackIndices) {

PWGJE/TableProducer/derivedDataWriter.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ struct JetDerivedDataWriter {
292292
for (auto const& collision : collisions) {
293293
if (collision.isCollisionSelected()) {
294294

295-
products.storedJCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multiplicity(), collision.centrality(), collision.trackOccupancyInTimeRange(), collision.eventSel(), collision.alias_raw(), collision.triggerSel());
295+
products.storedJCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multiplicity(), collision.centrality(), collision.centralityVariant1(), collision.hadronicRate(), collision.trackOccupancyInTimeRange(), collision.eventSel(), collision.alias_raw(), collision.triggerSel());
296296
collisionMapping[collision.globalIndex()] = products.storedJCollisionsTable.lastIndex();
297297
products.storedJCollisionMcInfosTable(collision.weight(), collision.subGeneratorId());
298298
products.storedJCollisionsParentIndexTable(collision.collisionId());

0 commit comments

Comments
 (0)