@@ -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