Skip to content

Commit e96f130

Browse files
committed
add centrality in MC gen
1 parent 03c9faa commit e96f130

1 file changed

Lines changed: 95 additions & 45 deletions

File tree

‎PWGHF/HFC/Tasks/taskFlow.cxx‎

Lines changed: 95 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ struct HfTaskFlow {
399399
using SmallGroupMcCollisions = soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSel, aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, aod::CentFV0As, aod::Mults>>;
400400
// using FilteredMcCollisionsWMult = soa::Filtered<soa::Join<aod::McCollisions, aod::MultMCExtras>>;
401401
using FilteredMcCollisionsWMult = soa::Join<aod::McCollisions, aod::MultMCExtras>;
402-
using FilteredMcCollisionsWMultWCollsExtra = soa::Filtered<soa::Join<aod::McCollisions, aod::McCollsExtra, aod::MultMCExtras>>;
402+
using FilteredMcCollisionsWMultWCollsExtra = soa::Join<aod::McCollisions, aod::McCollsExtra, aod::MultMCExtras>;
403403
// using FilteredMcParticles = soa::Filtered<aod::McParticles>;
404404
using FilteredMcParticles = aod::McParticles;
405405

@@ -3088,7 +3088,7 @@ struct HfTaskFlow {
30883088

30893089
float centralityWeight = 1.0f;
30903090
if (configCollision.useCentrality) {
3091-
getCentralityWeight(centralityWeight, getCentralityEstimator(collision1, true));
3091+
getCentralityWeight(centralityWeight, getCentralityEstimator(collision1, false));
30923092
if (getCentralityEstimator(collision1, false) < configCollision.minCentrality || getCentralityEstimator(collision1, false) >= configCollision.maxCentrality) {
30933093
continue;
30943094
}
@@ -3200,7 +3200,7 @@ struct HfTaskFlow {
32003200
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
32013201
loadEfficiencyCorrection(bc.timestamp());
32023202
float multiplicity = 0.f;
3203-
float centrality = 0.f;
3203+
float centrality = -1.f;
32043204
float centralityWeight = 1.f;
32053205

32063206
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3239,7 +3239,7 @@ struct HfTaskFlow {
32393239
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
32403240
loadEfficiencyCorrection(bc.timestamp());
32413241
float multiplicity = 0.f;
3242-
float centrality = 0.f;
3242+
float centrality = -1.f;
32433243
float centralityWeight = 1.f;
32443244

32453245
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3278,7 +3278,7 @@ struct HfTaskFlow {
32783278
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
32793279
loadEfficiencyCorrection(bc.timestamp());
32803280
float multiplicity = 0.f;
3281-
float centrality = 0.f;
3281+
float centrality = -1.f;
32823282
float centralityWeight = 1.f;
32833283

32843284
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3310,7 +3310,7 @@ struct HfTaskFlow {
33103310
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
33113311
loadEfficiencyCorrection(bc.timestamp());
33123312
float multiplicity = 0.f;
3313-
float centrality = 0.f;
3313+
float centrality = -1.f;
33143314
float centralityWeight = 1.f;
33153315

33163316
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3346,7 +3346,7 @@ struct HfTaskFlow {
33463346
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
33473347
loadEfficiencyCorrection(bc.timestamp());
33483348
float multiplicity = 0.f;
3349-
float centrality = 0.f;
3349+
float centrality = -1.f;
33503350
float centralityWeight = 1.f;
33513351

33523352
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3382,7 +3382,7 @@ struct HfTaskFlow {
33823382
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
33833383
loadEfficiencyCorrection(bc.timestamp());
33843384
float multiplicity = 0.f;
3385-
float centrality = 0.f;
3385+
float centrality = -1.f;
33863386
float centralityWeight = 1.f;
33873387

33883388
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3428,7 +3428,7 @@ struct HfTaskFlow {
34283428
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
34293429
loadEfficiencyCorrection(bc.timestamp());
34303430
float multiplicity = 0.f;
3431-
float centrality = 0.f;
3431+
float centrality = -1.f;
34323432
float centralityWeight = 1.f;
34333433

34343434
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3469,7 +3469,7 @@ struct HfTaskFlow {
34693469
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
34703470
loadEfficiencyCorrection(bc.timestamp());
34713471
float multiplicity = 0.f;
3472-
float centrality = 0.f;
3472+
float centrality = -1.f;
34733473
float centralityWeight = 1.f;
34743474

34753475
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3495,7 +3495,7 @@ struct HfTaskFlow {
34953495
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
34963496
loadEfficiencyCorrection(bc.timestamp());
34973497
float multiplicity = 0.f;
3498-
float centrality = 0.f;
3498+
float centrality = -1.f;
34993499
float centralityWeight = 1.f;
35003500

35013501
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3531,7 +3531,7 @@ struct HfTaskFlow {
35313531
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
35323532
loadEfficiencyCorrection(bc.timestamp());
35333533
float multiplicity = 0.f;
3534-
float centrality = 0.f;
3534+
float centrality = -1.f;
35353535
float centralityWeight = 1.f;
35363536

35373537
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3557,7 +3557,7 @@ struct HfTaskFlow {
35573557
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
35583558
loadEfficiencyCorrection(bc.timestamp());
35593559
float multiplicity = 0.f;
3560-
float centrality = 0.f;
3560+
float centrality = -1.f;
35613561
float centralityWeight = 1.f;
35623562

35633563
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3769,7 +3769,7 @@ struct HfTaskFlow {
37693769
registry.fill(HIST("Data/hNTracks"), tracks.size());
37703770
}
37713771
float multiplicity = 0.f;
3772-
float centrality = 0.f;
3772+
float centrality = -1.f;
37733773
float centralityWeight = 1.f;
37743774

37753775
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3808,7 +3808,7 @@ struct HfTaskFlow {
38083808
loadGain(bc);
38093809
const auto& ft0 = collision.foundFT0();
38103810
float multiplicity = 0.f;
3811-
float centrality = 0.f;
3811+
float centrality = -1.f;
38123812
float centralityWeight = 1.f;
38133813

38143814
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3842,7 +3842,7 @@ struct HfTaskFlow {
38423842
loadGain(bc);
38433843
const auto& ft0 = collision.foundFT0();
38443844
float multiplicity = 0.f;
3845-
float centrality = 0.f;
3845+
float centrality = -1.f;
38463846
float centralityWeight = 1.f;
38473847

38483848
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3876,7 +3876,7 @@ struct HfTaskFlow {
38763876
loadGain(bc);
38773877
const auto& ft0 = collision.foundFT0();
38783878
float multiplicity = 0.f;
3879-
float centrality = 0.f;
3879+
float centrality = -1.f;
38803880
float centralityWeight = 1.f;
38813881

38823882
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3913,7 +3913,7 @@ struct HfTaskFlow {
39133913
loadGain(bc);
39143914
const auto& ft0 = collision.foundFT0();
39153915
float multiplicity = 0.f;
3916-
float centrality = 0.f;
3916+
float centrality = -1.f;
39173917
float centralityWeight = 1.f;
39183918

39193919
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3950,7 +3950,7 @@ struct HfTaskFlow {
39503950
loadGain(bc);
39513951
const auto& ft0 = collision.foundFT0();
39523952
float multiplicity = 0.f;
3953-
float centrality = 0.f;
3953+
float centrality = -1.f;
39543954
float centralityWeight = 1.f;
39553955

39563956
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -3986,7 +3986,7 @@ struct HfTaskFlow {
39863986
loadGain(bc);
39873987
const auto& ft0 = collision.foundFT0();
39883988
float multiplicity = 0.f;
3989-
float centrality = 0.f;
3989+
float centrality = -1.f;
39903990
float centralityWeight = 1.f;
39913991

39923992
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -4027,7 +4027,7 @@ struct HfTaskFlow {
40274027
registry.fill(HIST("Data/hNTracks"), tracks.size());
40284028
}
40294029
float multiplicity = 0.f;
4030-
float centrality = 0.f;
4030+
float centrality = -1.f;
40314031
float centralityWeight = 1.f;
40324032

40334033
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -4061,7 +4061,7 @@ struct HfTaskFlow {
40614061
loadGain(bc);
40624062
const auto& ft0 = collision.foundFT0();
40634063
float multiplicity = 0.f;
4064-
float centrality = 0.f;
4064+
float centrality = -1.f;
40654065
float centralityWeight = 1.f;
40664066

40674067
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -4095,7 +4095,7 @@ struct HfTaskFlow {
40954095
loadGain(bc);
40964096
const auto& ft0 = collision.foundFT0();
40974097
float multiplicity = 0.f;
4098-
float centrality = 0.f;
4098+
float centrality = -1.f;
40994099
float centralityWeight = 1.f;
41004100

41014101
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -4128,7 +4128,7 @@ struct HfTaskFlow {
41284128
loadGain(bc);
41294129
const auto& ft0 = collision.foundFT0();
41304130
float multiplicity = 0.f;
4131-
float centrality = 0.f;
4131+
float centrality = -1.f;
41324132
float centralityWeight = 1.f;
41334133

41344134
if (!isAcceptedEventActivity(collision, tracks, multiplicity, centrality, centralityWeight)) {
@@ -4145,7 +4145,7 @@ struct HfTaskFlow {
41454145
// MONTE-CARLO
41464146
// ===================================================================================================================================================================================================================================================================
41474147

4148-
void processSameMcGen(FilteredMcCollisionsWMult::iterator const& mcCollision,
4148+
void processSameMcGen(FilteredMcCollisionsWMultWCollsExtra::iterator const& mcCollision,
41494149
FilteredMcParticles const& mcParticles,
41504150
SmallGroupMcCollisions const& collisions)
41514151
{
@@ -4154,6 +4154,10 @@ struct HfTaskFlow {
41544154
return;
41554155
}
41564156

4157+
if (collisions.size() == 0) {
4158+
return;
4159+
}
4160+
41574161
float multiplicity = 0.f;
41584162
if (configCollision.useMultiplicityFromTracks) {
41594163
for (const auto& track : mcParticles) {
@@ -4165,12 +4169,27 @@ struct HfTaskFlow {
41654169
multiplicity = mcCollision.multMCPVz();
41664170
}
41674171

4168-
if ((multiplicity < configCollision.minMultiplicity) || (multiplicity >= configCollision.maxMultiplicity)) {
4169-
return;
4172+
float centrality = -1.f;
4173+
for (const auto& collision : collisions) {
4174+
// if (!collision.sel8()) {
4175+
// continue;
4176+
// }
4177+
// if (collision.globalIndex() != mcCollision.bestCollisionIndex()) {
4178+
// continue;
4179+
// }
4180+
centrality = getCentralityEstimator(collision, false);
4181+
// break;
41704182
}
41714183

4172-
if (collisions.size() == 0) {
4173-
return;
4184+
if (configCollision.useCentrality) {
4185+
if (centrality < configCollision.minCentrality || centrality >= configCollision.maxCentrality) {
4186+
return;
4187+
}
4188+
}
4189+
if (!configCollision.useCentrality) {
4190+
if ((multiplicity < configCollision.minMultiplicity) || (multiplicity >= configCollision.maxMultiplicity)) {
4191+
return;
4192+
}
41744193
}
41754194

41764195
sameEvent->fillEvent(multiplicity, CorrelationContainer::kCFStepAll);
@@ -4539,12 +4558,12 @@ struct HfTaskFlow {
45394558
// MONTE-CARLO
45404559
// ===================================================================================================================================================================================================================================================================
45414560

4542-
void processMixedMcGen(FilteredMcCollisionsWMult const& mcCollisions,
4561+
void processMixedMcGen(FilteredMcCollisionsWMultWCollsExtra const& mcCollisions,
45434562
FilteredMcParticles const& mcParticles,
45444563
SmallGroupMcCollisions const& collisions)
45454564
{
45464565

4547-
auto getTracksSize = [&mcParticles, this](soa::Join<aod::McCollisions, aod::MultMCExtras>::iterator const& mcCollision) {
4566+
auto getTracksSize = [&mcParticles, this](soa::Join<aod::McCollisions, aod::McCollsExtra, aod::MultMCExtras>::iterator const& mcCollision) {
45484567
auto associatedTracks = mcParticles.sliceByCached(o2::aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), this->cache);
45494568
float multiplicity = 0.f;
45504569
if (configCollision.useMultiplicityFromTracks) {
@@ -4564,17 +4583,26 @@ struct HfTaskFlow {
45644583

45654584
auto tracksTuple = std::make_tuple(mcParticles, mcParticles);
45664585

4567-
Pair<FilteredMcCollisionsWMult, FilteredMcParticles, FilteredMcParticles, MixedBinning> pairs{binningOnVtxAndMult, configTask.nMixedEvents, -1, mcCollisions, tracksTuple, &cache}; // -1 is the number of the bin to skip
4586+
Pair<FilteredMcCollisionsWMultWCollsExtra, FilteredMcParticles, FilteredMcParticles, MixedBinning> pairs{binningOnVtxAndMult, configTask.nMixedEvents, -1, mcCollisions, tracksTuple, &cache}; // -1 is the number of the bin to skip
45684587

45694588
for (auto it = pairs.begin(); it != pairs.end(); it++) {
45704589
auto& [collision1, tracks1, collision2, tracks2] = *it;
45714590

45724591
if (tracks1.size() == 0 || tracks2.size() == 0) { // guard against empty filtered batch
4573-
return;
4592+
continue;
45744593
}
45754594

4576-
auto multiplicityCollision1 = 0;
4577-
auto multiplicityCollision2 = 0;
4595+
auto groupedCollisions1 = collisions.sliceBy(collisionPerMcCollision, collision1.globalIndex());
4596+
auto groupedCollisions2 = collisions.sliceBy(collisionPerMcCollision, collision2.globalIndex());
4597+
if (groupedCollisions1.size() == 0) {
4598+
continue;
4599+
}
4600+
if (groupedCollisions2.size() == 0) {
4601+
continue;
4602+
}
4603+
4604+
float multiplicityCollision1 = 0.f;
4605+
float multiplicityCollision2 = 0.f;
45784606

45794607
if (configCollision.useMultiplicityFromTracks) {
45804608
for (const auto& track : tracks1) {
@@ -4592,20 +4620,42 @@ struct HfTaskFlow {
45924620
multiplicityCollision2 = collision2.multMCPVz();
45934621
}
45944622

4595-
if ((multiplicityCollision1 < configCollision.minMultiplicity || multiplicityCollision1 >= configCollision.maxMultiplicity)) {
4596-
continue;
4623+
float centralityCollision1 = 999.f;
4624+
float centralityCollision2 = 999.f;
4625+
for (const auto& reconstructedCollision1 : groupedCollisions1) {
4626+
// if (!collision1.sel8()) {
4627+
// continue;
4628+
// }
4629+
// if (reconstructedCollision1.globalIndex() != collision1.bestCollisionIndex()) {
4630+
// continue;
4631+
// }
4632+
centralityCollision1 = getCentralityEstimator(reconstructedCollision1, false);
4633+
// break;
45974634
}
4598-
if ((multiplicityCollision2 < configCollision.minMultiplicity || multiplicityCollision2 >= configCollision.maxMultiplicity)) {
4599-
continue;
4635+
for (const auto& reconstructedCollision2 : groupedCollisions2) {
4636+
// if (reconstructedCollision2.globalIndex() != collision2.bestCollisionIndex()) {
4637+
// continue;
4638+
// }
4639+
centralityCollision2 = getCentralityEstimator(reconstructedCollision2, false);
4640+
// break;
46004641
}
46014642

4602-
auto groupedCollisions1 = collisions.sliceBy(collisionPerMcCollision, collision1.globalIndex());
4603-
auto groupedCollisions2 = collisions.sliceBy(collisionPerMcCollision, collision2.globalIndex());
4604-
if (groupedCollisions1.size() == 0) {
4605-
continue;
4643+
if (configCollision.useCentrality) {
4644+
if (centralityCollision1 < configCollision.minCentrality || centralityCollision1 >= configCollision.maxCentrality) {
4645+
continue;
4646+
}
4647+
if (centralityCollision2 < configCollision.minCentrality || centralityCollision2 >= configCollision.maxCentrality) {
4648+
continue;
4649+
}
46064650
}
4607-
if (groupedCollisions2.size() == 0) {
4608-
continue;
4651+
4652+
if (!configCollision.useCentrality) {
4653+
if ((multiplicityCollision1 < configCollision.minMultiplicity || multiplicityCollision1 >= configCollision.maxMultiplicity)) {
4654+
continue;
4655+
}
4656+
if ((multiplicityCollision2 < configCollision.minMultiplicity || multiplicityCollision2 >= configCollision.maxMultiplicity)) {
4657+
continue;
4658+
}
46094659
}
46104660

46114661
mixedEvent->fillEvent(multiplicityCollision1, CorrelationContainer::kCFStepAll);

0 commit comments

Comments
 (0)