Skip to content

Commit d1cc0b4

Browse files
authored
[PWGJE] Adding more multiplicity and centrality estimators (#11981)
1 parent 0f0a5cd commit d1cc0b4

25 files changed

+297
-248
lines changed

PWGJE/DataModel/JetReducedData.h

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,20 @@ DECLARE_SOA_INDEX_COLUMN(JBC, bc);
7171
DECLARE_SOA_COLUMN(PosX, posX, float);
7272
DECLARE_SOA_COLUMN(PosY, posY, float);
7373
DECLARE_SOA_COLUMN(PosZ, posZ, float);
74-
DECLARE_SOA_COLUMN(Multiplicity, multiplicity, float);
75-
DECLARE_SOA_COLUMN(Centrality, centrality, float);
74+
DECLARE_SOA_COLUMN(MultFV0A, multFV0A, float);
75+
DECLARE_SOA_COLUMN(MultFV0C, multFV0C, float);
76+
DECLARE_SOA_DYNAMIC_COLUMN(MultFV0M, multFV0M,
77+
[](float multFV0A, float multFV0C) -> float { return multFV0A + multFV0C; });
78+
DECLARE_SOA_COLUMN(MultFT0A, multFT0A, float);
79+
DECLARE_SOA_COLUMN(MultFT0C, multFT0C, float);
80+
DECLARE_SOA_DYNAMIC_COLUMN(MultFT0M, multFT0M,
81+
[](float multFT0A, float multFT0C) -> float { return multFT0A + multFT0C; });
82+
DECLARE_SOA_COLUMN(CentFV0A, centFV0A, float);
83+
DECLARE_SOA_COLUMN(CentFV0M, centFV0M, float); // only Run 2
84+
DECLARE_SOA_COLUMN(CentFT0A, centFT0A, float);
85+
DECLARE_SOA_COLUMN(CentFT0C, centFT0C, float);
86+
DECLARE_SOA_COLUMN(CentFT0M, centFT0M, float);
87+
DECLARE_SOA_COLUMN(CentFT0CVariant1, centFT0CVariant1, float);
7688
DECLARE_SOA_COLUMN(CentralityVariant1, centralityVariant1, float);
7789
DECLARE_SOA_COLUMN(HadronicRate, hadronicRate, float);
7890
DECLARE_SOA_COLUMN(Weight, weight, float);
@@ -107,9 +119,18 @@ DECLARE_SOA_TABLE_STAGED(JCollisions, "JCOLLISION",
107119
jcollision::PosX,
108120
jcollision::PosY,
109121
jcollision::PosZ,
110-
jcollision::Multiplicity,
111-
jcollision::Centrality,
112-
jcollision::CentralityVariant1,
122+
jcollision::MultFV0A,
123+
jcollision::MultFV0C,
124+
jcollision::MultFV0M<jcollision::MultFV0A, jcollision::MultFV0C>,
125+
jcollision::MultFT0A,
126+
jcollision::MultFT0C,
127+
jcollision::MultFT0M<jcollision::MultFT0A, jcollision::MultFT0C>,
128+
jcollision::CentFV0A,
129+
jcollision::CentFV0M,
130+
jcollision::CentFT0A,
131+
jcollision::CentFT0C,
132+
jcollision::CentFT0M,
133+
jcollision::CentFT0CVariant1,
113134
jcollision::HadronicRate,
114135
jcollision::TrackOccupancyInTimeRange,
115136
jcollision::EventSel,
@@ -168,6 +189,13 @@ DECLARE_SOA_INDEX_COLUMN(McCollision, mcCollision);
168189
DECLARE_SOA_COLUMN(PosX, posX, float);
169190
DECLARE_SOA_COLUMN(PosY, posY, float);
170191
DECLARE_SOA_COLUMN(PosZ, posZ, float);
192+
DECLARE_SOA_COLUMN(MultFV0A, multFV0A, float);
193+
DECLARE_SOA_COLUMN(MultFT0A, multFT0A, float);
194+
DECLARE_SOA_COLUMN(MultFT0C, multFT0C, float);
195+
DECLARE_SOA_COLUMN(CentFV0A, centFV0A, float);
196+
DECLARE_SOA_COLUMN(CentFT0A, centFT0A, float);
197+
DECLARE_SOA_COLUMN(CentFT0C, centFT0C, float);
198+
DECLARE_SOA_COLUMN(CentFT0M, centFT0M, float);
171199
DECLARE_SOA_COLUMN(Weight, weight, float);
172200
DECLARE_SOA_COLUMN(SubGeneratorId, subGeneratorId, int);
173201
DECLARE_SOA_COLUMN(Accepted, accepted, uint64_t);
@@ -182,6 +210,13 @@ DECLARE_SOA_TABLE_STAGED(JMcCollisions, "JMCCOLLISION",
182210
jmccollision::PosX,
183211
jmccollision::PosY,
184212
jmccollision::PosZ,
213+
jmccollision::MultFV0A,
214+
jmccollision::MultFT0A,
215+
jmccollision::MultFT0C,
216+
jmccollision::CentFV0A,
217+
jmccollision::CentFT0A,
218+
jmccollision::CentFT0C,
219+
jmccollision::CentFT0M,
185220
jmccollision::Weight,
186221
jmccollision::SubGeneratorId,
187222
jmccollision::Accepted,

PWGJE/JetFinders/jetFinder.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ struct JetFinderTask {
164164
}
165165

166166
aod::EMCALClusterDefinition clusterDefinition = aod::emcalcluster::getClusterDefinitionFromString(clusterDefinitionS.value);
167-
Filter collisionFilter = (nabs(aod::jcollision::posZ) < vertexZCut && aod::jcollision::centrality >= centralityMin && aod::jcollision::centrality < centralityMax && aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax && ((skipMBGapEvents.node() == false) || (aod::jcollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))));
167+
Filter collisionFilter = (nabs(aod::jcollision::posZ) < vertexZCut && aod::jcollision::centFT0M >= centralityMin && aod::jcollision::centFT0M < centralityMax && aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax && ((skipMBGapEvents.node() == false) || (aod::jcollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))));
168168
Filter mcCollisionFilter = ((skipMBGapEvents.node() == false) || (aod::jmccollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))); // should we add a posZ vtx cut here or leave it to analysers?
169169
Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta >= trackEtaMin && aod::jtrack::eta <= trackEtaMax && aod::jtrack::phi >= trackPhiMin && aod::jtrack::phi <= trackPhiMax); // do we need eta cut both here and in globalselection?
170170
Filter partCuts = (aod::jmcparticle::pt >= trackPtMin && aod::jmcparticle::pt < trackPtMax && aod::jmcparticle::eta >= trackEtaMin && aod::jmcparticle::eta <= trackEtaMax && aod::jmcparticle::phi >= trackPhiMin && aod::jmcparticle::phi <= trackPhiMax);

PWGJE/JetFinders/jetFinderHF.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ struct JetFinderHFTask {
168168
}
169169

170170
aod::EMCALClusterDefinition clusterDefinition = aod::emcalcluster::getClusterDefinitionFromString(clusterDefinitionS.value);
171-
Filter collisionFilter = (nabs(aod::jcollision::posZ) < vertexZCut && aod::jcollision::centrality >= centralityMin && aod::jcollision::centrality < centralityMax && aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax && ((skipMBGapEvents.node() == false) || (aod::jcollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))));
171+
Filter collisionFilter = (nabs(aod::jcollision::posZ) < vertexZCut && aod::jcollision::centFT0M >= centralityMin && aod::jcollision::centFT0M < centralityMax && aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax && ((skipMBGapEvents.node() == false) || (aod::jcollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))));
172172
Filter mcCollisionFilter = ((skipMBGapEvents.node() == false) || (aod::jmccollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))); // should we add a posZ vtx cut here or leave it to analysers?
173173
Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta >= trackEtaMin && aod::jtrack::eta <= trackEtaMax && aod::jtrack::phi >= trackPhiMin && aod::jtrack::phi <= trackPhiMax);
174174
Filter partCuts = (aod::jmcparticle::pt >= trackPtMin && aod::jmcparticle::pt < trackPtMax && aod::jmcparticle::eta >= trackEtaMin && aod::jmcparticle::eta <= trackEtaMax && aod::jmcparticle::phi >= trackPhiMin && aod::jmcparticle::phi <= trackPhiMax);

PWGJE/JetFinders/jetFinderV0.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ struct JetFinderV0Task {
157157
registry.add("hJetMCP", "sparse for mcp jets", {HistType::kTHnC, {{jetRadiiBins, ""}, {jetPtBinNumber, jetPtMinDouble, jetPtMaxDouble}, {40, -1.0, 1.0}, {18, 0.0, 7.0}}});
158158
}
159159

160-
Filter collisionFilter = (nabs(aod::jcollision::posZ) < vertexZCut && aod::jcollision::centrality >= centralityMin && aod::jcollision::centrality < centralityMax && aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax && ((skipMBGapEvents.node() == false) || (aod::jcollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))));
160+
Filter collisionFilter = (nabs(aod::jcollision::posZ) < vertexZCut && aod::jcollision::centFT0M >= centralityMin && aod::jcollision::centFT0M < centralityMax && aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax && ((skipMBGapEvents.node() == false) || (aod::jcollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))));
161161
Filter mcCollisionFilter = ((skipMBGapEvents.node() == false) || (aod::jmccollision::subGeneratorId != static_cast<int>(jetderiveddatautilities::JCollisionSubGeneratorId::mbGap))); // should we add a posZ vtx cut here or leave it to analysers?
162162
Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta >= trackEtaMin && aod::jtrack::eta <= trackEtaMax && aod::jtrack::phi >= trackPhiMin && aod::jtrack::phi <= trackPhiMax);
163163
Filter partCuts = (aod::jmcparticle::pt >= trackPtMin && aod::jmcparticle::pt < trackPtMax && aod::jmcparticle::eta >= trackEtaMin && aod::jmcparticle::eta <= trackEtaMax && aod::jmcparticle::phi >= trackPhiMin && aod::jmcparticle::phi <= trackPhiMax);

PWGJE/TableProducer/derivedDataProducer.cxx

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include "PWGJE/DataModel/JetReducedDataHF.h"
2727
#include "PWGJE/DataModel/JetReducedDataV0.h"
2828
#include "PWGLF/DataModel/LFStrangenessTables.h"
29+
#include "PWGLF/DataModel/mcCentrality.h"
2930

3031
#include "Common/CCDB/ctpRateFetcher.h"
3132
#include "Common/Core/RecoDecay.h"
@@ -189,7 +190,7 @@ struct JetDerivedDataProducerTask {
189190
}
190191
PROCESS_SWITCH(JetDerivedDataProducerTask, processBunchCrossings, "produces derived bunch crossing table", false);
191192

192-
void processCollisions(soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::CentFT0Cs, aod::CentFT0CVariant1s>::iterator const& collision, soa::Join<aod::BCs, aod::Timestamps> const&)
193+
void processCollisions(soa::Join<aod::Collisions, aod::EvSels, aod::FV0Mults, aod::FT0Mults, aod::CentFV0As, aod::CentFT0As, aod::CentFT0Cs, aod::CentFT0Ms, aod::CentFT0CVariant1s>::iterator const& collision, soa::Join<aod::BCs, aod::Timestamps> const&)
193194
{
194195
auto bc = collision.bc_as<soa::Join<aod::BCs, aod::Timestamps>>();
195196
if (includeHadronicRate) {
@@ -203,7 +204,7 @@ struct JetDerivedDataProducerTask {
203204
triggerDecider.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), jetderiveddatautilities::JTriggerMasks);
204205
triggerBit = jetderiveddatautilities::setTriggerSelectionBit(triggerDecider.getTriggerOfInterestResults(bc.globalBC()));
205206
}
206-
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
207+
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), collision.multFV0A(), collision.multFV0C(), collision.multFT0A(), collision.multFT0C(), collision.centFV0A(), -1.0, collision.centFT0A(), collision.centFT0C(), collision.centFT0M(), collision.centFT0CVariant1(), hadronicRate, collision.trackOccupancyInTimeRange(), jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit); // note change multFT0C to multFT0M when problems with multFT0A are fixed
207208
products.jCollisionsParentIndexTable(collision.globalIndex());
208209
products.jCollisionsBunchCrossingIndexTable(collision.bcId());
209210
}
@@ -217,23 +218,23 @@ struct JetDerivedDataProducerTask {
217218
triggerDecider.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), jetderiveddatautilities::JTriggerMasks);
218219
triggerBit = jetderiveddatautilities::setTriggerSelectionBit(triggerDecider.getTriggerOfInterestResults(bc.globalBC()));
219220
}
220-
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1.0, -1.0, -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit);
221+
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), triggerBit);
221222
products.jCollisionsParentIndexTable(collision.globalIndex());
222223
products.jCollisionsBunchCrossingIndexTable(collision.bcId());
223224
}
224225
PROCESS_SWITCH(JetDerivedDataProducerTask, processCollisionsWithoutCentralityAndMultiplicity, "produces derived collision tables without centrality or multiplicity", false);
225226

226-
void processCollisionsRun2(soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::CentRun2V0Ms>::iterator const& collision)
227+
void processCollisionsRun2(soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::CentRun2V0As, aod::CentRun2V0Ms>::iterator const& collision)
227228
{
228-
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
229+
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1.0, -1.0, collision.centRun2V0A(), collision.centRun2V0M(), -1.0, -1.0, -1.0, -1.0, 1.0, -1, jetderiveddatautilities::setEventSelectionBit(collision), collision.alias_raw(), 0); // note change multFT0C to multFT0M when problems with multFT0A are fixed
229230
products.jCollisionsParentIndexTable(collision.globalIndex());
230231
products.jCollisionsBunchCrossingIndexTable(collision.bcId());
231232
}
232233
PROCESS_SWITCH(JetDerivedDataProducerTask, processCollisionsRun2, "produces derived collision tables for Run 2 data", false);
233234

234235
void processCollisionsALICE3(aod::Collision const& collision)
235236
{
236-
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1.0, -1.0, -1, -1.0, 0, 0);
237+
products.jCollisionsTable(collision.posX(), collision.posY(), collision.posZ(), -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1, -1.0, 0, 0);
237238
products.jCollisionsParentIndexTable(collision.globalIndex());
238239
products.jCollisionsBunchCrossingIndexTable(-1);
239240
}
@@ -262,19 +263,33 @@ struct JetDerivedDataProducerTask {
262263
}
263264
PROCESS_SWITCH(JetDerivedDataProducerTask, processMcCollisionLabels, "produces derived MC collision labels table", false);
264265

265-
void processMcCollisions(aod::McCollision const& mcCollision)
266+
void processMcCollisions(soa::Join<aod::McCollisions, aod::HepMCXSections, aod::MultsExtraMC, aod::McCentFV0As, aod::McCentFT0As, aod::McCentFT0Cs, aod::McCentFT0Ms>::iterator const& mcCollision)
266267
{
267-
products.jMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), mcCollision.weight(), mcCollision.getSubGeneratorId(), 1, 1, 1.0, 1.0, 999.0);
268+
products.jMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), mcCollision.multMCFV0A(), mcCollision.multMCFT0A(), mcCollision.multMCFT0C(), mcCollision.centFV0A(), mcCollision.centFT0A(), mcCollision.centFT0C(), mcCollision.centFT0M(), mcCollision.weight(), mcCollision.getSubGeneratorId(), mcCollision.accepted(), mcCollision.attempted(), mcCollision.xsectGen(), mcCollision.xsectErr(), mcCollision.ptHard());
268269
products.jMcCollisionsParentIndexTable(mcCollision.globalIndex());
269270
}
270271
PROCESS_SWITCH(JetDerivedDataProducerTask, processMcCollisions, "produces derived MC collision table", false);
271272

272-
void processMcCollisionsWithXsection(soa::Join<aod::McCollisions, aod::HepMCXSections>::iterator const& mcCollision)
273+
void processMcCollisionsWithoutCentralityAndMultiplicity(soa::Join<aod::McCollisions, aod::HepMCXSections>::iterator const& mcCollision)
273274
{
274-
products.jMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), mcCollision.weight(), mcCollision.getSubGeneratorId(), mcCollision.accepted(), mcCollision.attempted(), mcCollision.xsectGen(), mcCollision.xsectErr(), mcCollision.ptHard());
275+
products.jMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, mcCollision.weight(), mcCollision.getSubGeneratorId(), mcCollision.accepted(), mcCollision.attempted(), mcCollision.xsectGen(), mcCollision.xsectErr(), mcCollision.ptHard());
275276
products.jMcCollisionsParentIndexTable(mcCollision.globalIndex());
276277
}
277-
PROCESS_SWITCH(JetDerivedDataProducerTask, processMcCollisionsWithXsection, "produces derived MC collision table with cross section information", false);
278+
PROCESS_SWITCH(JetDerivedDataProducerTask, processMcCollisionsWithoutCentralityAndMultiplicity, "produces derived MC collision table without centraility and multiplicity", false);
279+
280+
void processMcCollisionsWithoutXsection(soa::Join<aod::McCollisions, aod::MultsExtraMC, aod::McCentFV0As, aod::McCentFT0As, aod::McCentFT0Cs, aod::McCentFT0Ms>::iterator const& mcCollision)
281+
{
282+
products.jMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), mcCollision.multMCFV0A(), mcCollision.multMCFT0A(), mcCollision.multMCFT0C(), mcCollision.centFV0A(), mcCollision.centFT0A(), mcCollision.centFT0C(), mcCollision.centFT0M(), mcCollision.weight(), mcCollision.getSubGeneratorId(), 1, 1, 1.0, 1.0, 999.0);
283+
products.jMcCollisionsParentIndexTable(mcCollision.globalIndex());
284+
}
285+
PROCESS_SWITCH(JetDerivedDataProducerTask, processMcCollisionsWithoutXsection, "produces derived MC collision table without cross section information", false);
286+
287+
void processMcCollisionsWithoutCentralityAndMultiplicityAndXsection(aod::McCollision const& mcCollision)
288+
{
289+
products.jMcCollisionsTable(mcCollision.posX(), mcCollision.posY(), mcCollision.posZ(), -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, mcCollision.weight(), mcCollision.getSubGeneratorId(), 1, 1, 1.0, 1.0, 999.0);
290+
products.jMcCollisionsParentIndexTable(mcCollision.globalIndex());
291+
}
292+
PROCESS_SWITCH(JetDerivedDataProducerTask, processMcCollisionsWithoutCentralityAndMultiplicityAndXsection, "produces derived MC collision table without centrality, multiplicity and cross section information", false);
278293

279294
void processTracks(soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TracksDCA, aod::TracksDCACov, aod::TrackSelection, aod::TrackSelectionExtension>::iterator const& track, aod::Collisions const&)
280295
{

PWGJE/TableProducer/derivedDataSelector.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ struct JetDerivedDataSelector {
183183

184184
void processDoCollisionSelections(aod::JCollision const& collision)
185185
{ // can also add event selection like sel8 but goes a little against the derived data idea
186-
if (collision.centrality() < config.centralityMin || collision.centrality() >= config.centralityMax || collision.trackOccupancyInTimeRange() > config.trackOccupancyInTimeRangeMax || std::abs(collision.posZ()) > config.vertexZCut) {
186+
if (collision.centFT0M() < config.centralityMin || collision.centFT0M() >= config.centralityMax || collision.trackOccupancyInTimeRange() > config.trackOccupancyInTimeRangeMax || std::abs(collision.posZ()) > config.vertexZCut) {
187187
collisionFlag[collision.globalIndex()] = false;
188188
}
189189
}

0 commit comments

Comments
 (0)