Skip to content

Commit 7a64542

Browse files
ddobrigkalibuild
andauthored
PWGLF: Add centrality QA/testing mode for der data (#4653)
* PWGLF: Add centrality QA/testing mode for der data * Please consider the following formatting changes (#234) * Add feeddown matrix calculation for first test * Please consider the following formatting changes (#235) * Add plain QA mode for cross-checks * Fix minor bugs introduced in last commit --------- Co-authored-by: ALICE Builder <alibuild@users.noreply.github.com>
1 parent b5960b1 commit 7a64542

File tree

2 files changed

+236
-49
lines changed

2 files changed

+236
-49
lines changed

PWGLF/TableProducer/strangederivedbuilder.cxx

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ struct strangederivedbuilder {
129129

130130
ConfigurableAxis axisPt{"axisPt", {VARIABLE_WIDTH, 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f, 2.2f, 2.4f, 2.6f, 2.8f, 3.0f, 3.2f, 3.4f, 3.6f, 3.8f, 4.0f, 4.4f, 4.8f, 5.2f, 5.6f, 6.0f, 6.5f, 7.0f, 7.5f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 17.0f, 19.0f, 21.0f, 23.0f, 25.0f, 30.0f, 35.0f, 40.0f, 50.0f}, "p_{T} (GeV/c)"};
131131
ConfigurableAxis axisCentrality{"axisCentrality", {100, 0.0f, 100.0f}, "Centrality"};
132+
ConfigurableAxis axisRawCentrality{"axisRawCentrality", {VARIABLE_WIDTH, 0.000f, 52.320f, 75.400f, 95.719f, 115.364f, 135.211f, 155.791f, 177.504f, 200.686f, 225.641f, 252.645f, 281.906f, 313.850f, 348.302f, 385.732f, 426.307f, 470.146f, 517.555f, 568.899f, 624.177f, 684.021f, 748.734f, 818.078f, 892.577f, 973.087f, 1058.789f, 1150.915f, 1249.319f, 1354.279f, 1465.979f, 1584.790f, 1710.778f, 1844.863f, 1985.746f, 2134.643f, 2291.610f, 2456.943f, 2630.653f, 2813.959f, 3006.631f, 3207.229f, 3417.641f, 3637.318f, 3865.785f, 4104.997f, 4354.938f, 4615.786f, 4885.335f, 5166.555f, 5458.021f, 5762.584f, 6077.881f, 6406.834f, 6746.435f, 7097.958f, 7462.579f, 7839.165f, 8231.629f, 8635.640f, 9052.000f, 9484.268f, 9929.111f, 10389.350f, 10862.059f, 11352.185f, 11856.823f, 12380.371f, 12920.401f, 13476.971f, 14053.087f, 14646.190f, 15258.426f, 15890.617f, 16544.433f, 17218.024f, 17913.465f, 18631.374f, 19374.983f, 20136.700f, 20927.783f, 21746.796f, 22590.880f, 23465.734f, 24372.274f, 25314.351f, 26290.488f, 27300.899f, 28347.512f, 29436.133f, 30567.840f, 31746.818f, 32982.664f, 34276.329f, 35624.859f, 37042.588f, 38546.609f, 40139.742f, 41837.980f, 43679.429f, 45892.130f, 400000.000f}, "raw centrality signal"}; // for QA
133+
132134
ConfigurableAxis axisNVertices{"axisNVertices", {10, -0.5f, 9.5f}, "N(vertices)"};
133135

134136
Configurable<bool> fillEmptyCollisions{"fillEmptyCollisions", false, "fill collision entries without candidates"};
@@ -144,6 +146,8 @@ struct strangederivedbuilder {
144146
Configurable<bool> fillRawFV0A{"fillRawFV0A", false, "Fill raw FV0A information for debug"};
145147
Configurable<bool> fillRawNTracksEta1{"fillRawNTracksEta1", true, "Fill raw NTracks |eta|<1 information for debug"};
146148

149+
Configurable<bool> qaCentrality{"qaCentrality", false, "qa centrality flag: check base raw values"};
150+
147151
// For manual sliceBy
148152
Preslice<aod::V0Datas> V0perCollision = o2::aod::v0data::collisionId;
149153
Preslice<aod::CascDatas> CascperCollision = o2::aod::cascdata::collisionId;
@@ -180,6 +184,14 @@ struct strangederivedbuilder {
180184
}
181185

182186
histos.add("h2dNVerticesVsCentrality", "h2dNVerticesVsCentrality", kTH2D, {axisCentrality, axisNVertices});
187+
188+
// for QA and test purposes
189+
auto hRawCentrality = histos.add<TH1>("hRawCentrality", "hRawCentrality", kTH1F, {axisRawCentrality});
190+
191+
for (int ii = 1; ii < 101; ii++) {
192+
float value = 100.5f - static_cast<float>(ii);
193+
hRawCentrality->SetBinContent(ii, value);
194+
}
183195
}
184196

185197
void processCollisionsV0sOnly(soa::Join<aod::Collisions, aod::FT0Mults, aod::FV0Mults, aod::PVMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::EvSels> const& collisions, aod::V0Datas const& V0s, aod::BCsWithTimestamps const&)
@@ -213,6 +225,13 @@ struct strangederivedbuilder {
213225
{
214226
for (const auto& collision : collisions) {
215227
const uint64_t collIdx = collision.globalIndex();
228+
229+
float centrality = collision.centFT0C();
230+
if (qaCentrality) {
231+
auto hRawCentrality = histos.get<TH1>(HIST("hRawCentrality"));
232+
centrality = hRawCentrality->GetBinContent(hRawCentrality->FindBin(collision.multFT0C()));
233+
}
234+
216235
auto V0Table_thisColl = V0s.sliceBy(V0perCollision, collIdx);
217236
auto CascTable_thisColl = Cascades.sliceBy(CascperCollision, collIdx);
218237
auto KFCascTable_thisColl = KFCascades.sliceBy(KFCascperCollision, collIdx);
@@ -225,7 +244,7 @@ struct strangederivedbuilder {
225244
if (strange || fillEmptyCollisions) {
226245
strangeColl(collision.posX(), collision.posY(), collision.posZ());
227246
strangeCents(collision.centFT0M(), collision.centFT0A(),
228-
collision.centFT0C(), collision.centFV0A());
247+
centrality, collision.centFV0A());
229248
strangeEvSels(collision.sel8());
230249
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
231250
strangeStamps(bc.runNumber(), bc.timestamp());
@@ -487,7 +506,7 @@ struct strangederivedbuilder {
487506
}
488507
}
489508

490-
void processReconstructedSimulation(aod::McCollision const& mcCollision, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As>> const& collisions, aod::McParticles const& mcParticles)
509+
void processReconstructedSimulation(aod::McCollision const& mcCollision, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::FT0Mults>> const& collisions, aod::McParticles const& mcParticles)
491510
{
492511
// this process function also checks if a given collision was reconstructed and checks explicitly for splitting, etc
493512

@@ -498,6 +517,10 @@ struct strangederivedbuilder {
498517
if (biggestNContribs < collision.numContrib()) {
499518
biggestNContribs = collision.numContrib();
500519
bestCentrality = collision.centFT0C();
520+
if (qaCentrality) {
521+
auto hRawCentrality = histos.get<TH1>(HIST("hRawCentrality"));
522+
bestCentrality = hRawCentrality->GetBinContent(hRawCentrality->FindBin(collision.multFT0C()));
523+
}
501524
}
502525
}
503526
histos.fill(HIST("h2dNVerticesVsCentrality"), bestCentrality, collisions.size());

0 commit comments

Comments
 (0)