Skip to content

Commit fa3fb72

Browse files
authored
Add signal and event loss corrections
1 parent cb44e4c commit fa3fb72

File tree

1 file changed

+84
-8
lines changed

1 file changed

+84
-8
lines changed

PWGLF/Tasks/GlobalEventProperties/heavyionMultiplicity.cxx

Lines changed: 84 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ AxisSpec axisMassLambda = {200, 1.07, 1.17, "Lambda/AntiLamda Mass", "Lambda/Ant
115115
AxisSpec axisTracks{9, 0.5, 9.5, "#tracks", "TrackAxis"};
116116
auto static constexpr kMinCharge = 3.f;
117117
auto static constexpr kMinpTcut = 0.1f;
118+
auto static constexpr kEtaInelgt0 = 1.0f;
118119
auto static constexpr kNItslayers = 7;
119120

120121
struct HeavyionMultiplicity {
@@ -147,6 +148,7 @@ struct HeavyionMultiplicity {
147148
ConfigurableAxis centralityBinning{"centralityBinning", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, ""};
148149
ConfigurableAxis occupancyBin{"occupancyBin", {VARIABLE_WIDTH, 0, 500, 1000, 2000, 5000, 10000}, ""};
149150
ConfigurableAxis centBinGen{"centBinGen", {VARIABLE_WIDTH, 0, 500, 1000, 2000, 5000, 10000}, ""};
151+
ConfigurableAxis binsImpactPar{"binsImpactPar", {VARIABLE_WIDTH, 0.0, 3.00065, 4.28798, 6.14552, 7.6196, 8.90942, 10.0897, 11.2002, 12.2709, 13.3167, 14.4173, 23.2518}, "Binning of the impact parameter axis"};
150152

151153
Configurable<bool> isApplySameBunchPileup{"isApplySameBunchPileup", true, "Enable SameBunchPileup cut"};
152154
Configurable<bool> isApplyGoodZvtxFT0vsPV{"isApplyGoodZvtxFT0vsPV", true, "Enable GoodZvtxFT0vsPV cut"};
@@ -178,6 +180,7 @@ struct HeavyionMultiplicity {
178180
AxisSpec axisPt = {ptHistBin, "pT", "pTAxis"};
179181
AxisSpec axisOccupancy = {occupancyBin, "occupancy", "OccupancyAxis"};
180182
AxisSpec axisCentBinGen = {centBinGen, "GenCentrality", "CentGenAxis"};
183+
AxisSpec impactParAxis = {binsImpactPar, "Impact Parameter"};
181184

182185
histos.add("EventHist", "EventHist", kTH1D, {axisEvent}, false);
183186
histos.add("VtxZHist", "VtxZHist", kTH1D, {axisVtxZ}, false);
@@ -269,6 +272,21 @@ struct HeavyionMultiplicity {
269272
histos.add("mult10_vs_FT0C", "mult10_vs_FT0C", kTH2F, {axisMult, axisCentBinGen}, true);
270273
histos.add("mult10_vs_FT0A", "mult10_vs_FT0A", kTH2F, {axisMult, axisCentBinGen}, true);
271274
}
275+
276+
if (doprocessEvtLossSigLossMC) {
277+
histos.add("MCEventHist", "MCEventHist", kTH1F, {axisEvent}, false);
278+
auto hstat = histos.get<TH1>(HIST("MCEventHist"));
279+
auto* x = hstat->GetXaxis();
280+
x->SetBinLabel(1, "All MC events");
281+
x->SetBinLabel(2, "MC events with atleast one reco event");
282+
histos.add("hImpactParameterGen", "Impact parameter of generated MC events", kTH1F, {impactParAxis});
283+
histos.add("hImpactParameterRec", "Impact parameter of selected MC events", kTH1F, {impactParAxis});
284+
histos.add("hImpactParvsCentrRec", "Impact parameter of selected MC events vs centrality", kTH2F, {axisCent, impactParAxis});
285+
histos.add("hgendndetaBeforeEvtSel", "Eta of all generated particles", kTH1F, {axisEta});
286+
histos.add("hgendndetaAfterEvtSel", "Eta of generated particles after EvtSel", kTH1F, {axisEta});
287+
histos.add("hgendndetaVscentBeforeEvtSel", "hgendndetaBeforeEvtSel vs centrality", kTH2F, {axisEta, impactParAxis});
288+
histos.add("hgendndetaVscentAfterEvtSel", "hgendndetaAfterEvtSel vs centrality", kTH2F, {axisEta, impactParAxis});
289+
}
272290
}
273291

274292
template <typename CheckCol>
@@ -416,7 +434,6 @@ struct HeavyionMultiplicity {
416434
}
417435
}
418436
}
419-
PROCESS_SWITCH(HeavyionMultiplicity, processData, "process data CentFT0C", false);
420437

421438
void processCorrelation(CollisionDataTable::iterator const& cols, FilTrackDataTable const& tracks)
422439
{
@@ -441,7 +458,6 @@ struct HeavyionMultiplicity {
441458
histos.fill(HIST("GlobalMult_vs_FV0A"), nchTracks, cols.multFV0A());
442459
histos.fill(HIST("NPVtracks_vs_GlobalMult"), cols.multNTracksPV(), nchTracks);
443460
}
444-
PROCESS_SWITCH(HeavyionMultiplicity, processCorrelation, "do correlation study in data", false);
445461

446462
void processMonteCarlo(CollisionMCTrueTable::iterator const&, CollisionMCRecTable const& RecCols, TrackMCTrueTable const& GenParticles, FilTrackMCRecTable const& RecTracks)
447463
{
@@ -541,7 +557,6 @@ struct HeavyionMultiplicity {
541557
} // track (mcgen) loop
542558
} // collision loop
543559
}
544-
PROCESS_SWITCH(HeavyionMultiplicity, processMonteCarlo, "process MC CentFT0C", false);
545560

546561
void processMCpTefficiency(CollisionMCTrueTable::iterator const&, CollisionMCRecTable const& RecCols, TrackMCTrueTable const& GenParticles, FilTrackMCRecTable const& RecTracks)
547562
{
@@ -589,7 +604,6 @@ struct HeavyionMultiplicity {
589604
}
590605
}
591606
}
592-
PROCESS_SWITCH(HeavyionMultiplicity, processMCpTefficiency, "process MC pTefficiency", false);
593607

594608
void processMCcheckFakeTracks(CollisionMCTrueTable::iterator const&, CollisionMCRecTable const& RecCols, FilTrackMCRecTable const& RecTracks)
595609
{
@@ -628,7 +642,6 @@ struct HeavyionMultiplicity {
628642
}
629643
}
630644
}
631-
PROCESS_SWITCH(HeavyionMultiplicity, processMCcheckFakeTracks, "Check Fake tracks", false);
632645

633646
void processStrangeYield(CollisionDataTable::iterator const& cols, V0TrackCandidates const&, aod::V0Datas const& v0data)
634647
{
@@ -671,7 +684,6 @@ struct HeavyionMultiplicity {
671684
histos.fill(HIST("AntiLambdaCentEtaMass"), selColCent(cols), v0track.eta(), v0track.mAntiLambda());
672685
}
673686
}
674-
PROCESS_SWITCH(HeavyionMultiplicity, processStrangeYield, "Strange particle yield", false);
675687

676688
void processppData(ColDataTablepp::iterator const& cols, FilTrackDataTable const& tracks)
677689
{
@@ -696,7 +708,6 @@ struct HeavyionMultiplicity {
696708
}
697709
} // track loop
698710
}
699-
PROCESS_SWITCH(HeavyionMultiplicity, processppData, "process pp data", false);
700711

701712
void processppMonteCarlo(CollisionMCTrueTable::iterator const&, ColMCRecTablepp const& RecCols, TrackMCTrueTable const& GenParticles, FilTrackMCRecTable const& RecTracks)
702713
{
@@ -796,7 +807,6 @@ struct HeavyionMultiplicity {
796807
} // track (mcgen) loop
797808
} // collision loop
798809
}
799-
PROCESS_SWITCH(HeavyionMultiplicity, processppMonteCarlo, "process pp MC", false);
800810

801811
void processGen(aod::McCollisions::iterator const&, aod::McParticles const& GenParticles)
802812
{
@@ -836,7 +846,73 @@ struct HeavyionMultiplicity {
836846
histos.fill(HIST("dndeta10_vs_FT0C"), particle.eta(), multFT0C);
837847
}
838848
}
849+
850+
void processEvtLossSigLossMC(soa::Join<CollisionMCTrueTable, aod::MultMCExtras>::iterator const& mcCollision, CollisionMCRecTable const& RecCols, TrackMCTrueTable const& GenParticles)
851+
{
852+
if (isApplyInelgt0 && !mcCollision.isInelGt0()) {
853+
return;
854+
}
855+
if (std::abs(mcCollision.posZ()) >= vtxRange) {
856+
return;
857+
}
858+
// All generated events
859+
histos.fill(HIST("MCEventHist"), 1);
860+
histos.fill(HIST("hImpactParameterGen"), mcCollision.impactParameter());
861+
862+
bool atLeastOne = false;
863+
auto centrality = -999.;
864+
auto numcontributors = -999;
865+
for (const auto& RecCol : RecCols) {
866+
if (!isEventSelected(RecCol)) {
867+
continue;
868+
}
869+
if (std::abs(RecCol.posZ()) >= vtxRange) {
870+
continue;
871+
}
872+
if (RecCol.numContrib() <= numcontributors) {
873+
continue;
874+
} else {
875+
numcontributors = RecCol.numContrib();
876+
}
877+
centrality = selColCent(RecCol);
878+
atLeastOne = true;
879+
}
880+
881+
// Generated events with at least one reconstructed collision (event loss estimation)
882+
if (atLeastOne) {
883+
histos.fill(HIST("MCEventHist"), 2);
884+
histos.fill(HIST("hImpactParameterRec"), mcCollision.impactParameter());
885+
histos.fill(HIST("hImpactParvsCentrRec"), centrality, mcCollision.impactParameter());
886+
}
887+
888+
for (const auto& particle : GenParticles) {
889+
890+
if (!isGenTrackSelected(particle)) {
891+
continue;
892+
}
893+
894+
// All generated particles
895+
histos.fill(HIST("hgendndetaBeforeEvtSel"), particle.eta());
896+
histos.fill(HIST("hgendndetaVscentBeforeEvtSel"), particle.eta(), mcCollision.impactParameter());
897+
898+
if (atLeastOne) {
899+
// All generated particles with at least one reconstructed collision (signal loss estimation)
900+
histos.fill(HIST("hgendndetaAfterEvtSel"), particle.eta());
901+
histos.fill(HIST("hgendndetaVscentAfterEvtSel"), particle.eta(), mcCollision.impactParameter());
902+
}
903+
}
904+
}
905+
906+
PROCESS_SWITCH(HeavyionMultiplicity, processData, "process data CentFT0C", false);
907+
PROCESS_SWITCH(HeavyionMultiplicity, processCorrelation, "do correlation study in data", false);
908+
PROCESS_SWITCH(HeavyionMultiplicity, processMonteCarlo, "process MC CentFT0C", false);
909+
PROCESS_SWITCH(HeavyionMultiplicity, processMCpTefficiency, "process MC pTefficiency", false);
910+
PROCESS_SWITCH(HeavyionMultiplicity, processMCcheckFakeTracks, "Check Fake tracks", false);
911+
PROCESS_SWITCH(HeavyionMultiplicity, processStrangeYield, "Strange particle yield", false);
912+
PROCESS_SWITCH(HeavyionMultiplicity, processppData, "process pp data", false);
913+
PROCESS_SWITCH(HeavyionMultiplicity, processppMonteCarlo, "process pp MC", false);
839914
PROCESS_SWITCH(HeavyionMultiplicity, processGen, "process pure MC gen", false);
915+
PROCESS_SWITCH(HeavyionMultiplicity, processEvtLossSigLossMC, "process Signal Loss, Event Loss", false);
840916
};
841917

842918
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)