Skip to content

Commit 81d9ed6

Browse files
authored
[PWGCF] flowPtEfficiency: add pT-Nch; flowTask: remove group NUA (#10044)
1 parent b9352e4 commit 81d9ed6

File tree

2 files changed

+25
-73
lines changed

2 files changed

+25
-73
lines changed

PWGCF/Flow/Tasks/flowPtEfficiency.cxx

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ struct FlowPtEfficiency {
7676
ConfigurableAxis axisCentrality{"axisCentrality", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90}, "X axis for histograms"};
7777
ConfigurableAxis axisPhi{"axisPhi", {100, 0.0f, constants::math::TwoPI}, ""};
7878
ConfigurableAxis axisB{"axisB", {100, 0.0f, 20.0f}, "b (fm)"};
79+
ConfigurableAxis axisNch{"axisNch", {6000, 0, 6000}, "N_{ch}"};
7980

8081
// Filter the tracks
8182
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPtMin) && (aod::track::pt < cfgCutPtMax) && (aod::track::tpcChi2NCl < cfgCutChi2prTPCcls);
@@ -93,6 +94,8 @@ struct FlowPtEfficiency {
9394
Filter mccollisionFilter = nabs(aod::mccollision::posZ) < cfgCutVertex;
9495
using MyMcCollisions = soa::Filtered<aod::McCollisions>;
9596

97+
Preslice<aod::Tracks> perCollision = aod::track::collisionId;
98+
9699
// Additional filters for tracks
97100
TrackSelection myTrackSel;
98101

@@ -145,11 +148,12 @@ struct FlowPtEfficiency {
145148
// create histograms
146149
registry.add("eventCounter", "eventCounter", kTH1F, {axisCounter});
147150
registry.add("hPtMCRec", "Monte Carlo Reco", {HistType::kTH1D, {axisPt}});
148-
registry.add("hPtCentMCRec", "Reco production; pT (GeV/c); centrality (%)", {HistType::kTH2D, {axisPt, axisCentrality}});
151+
registry.add("hPtNchMCRec", "Reco production; pT (GeV/c); multiplicity", {HistType::kTH2D, {axisPt, axisNch}});
149152

150153
registry.add("mcEventCounter", "Monte Carlo Truth EventCounter", kTH1F, {axisCounter});
151154
registry.add("hPtMCGen", "Monte Carlo Truth", {HistType::kTH1D, {axisPt}});
152-
registry.add("hPtCentMCGen", "Truth production; pT (GeV/c); centrality (%)", {HistType::kTH2D, {axisPt, axisCentrality}});
155+
registry.add("hPtNchMCGen", "Truth production; pT (GeV/c); multiplicity", {HistType::kTH2D, {axisPt, axisNch}});
156+
registry.add("numberOfRecoCollisions", "numberOfRecoCollisions", kTH1F, {{10, -0.5f, 9.5f}});
153157

154158
if (cfgFlowEnabled) {
155159
registry.add("hImpactParameterReco", "hImpactParameterReco", {HistType::kTH1D, {axisB}});
@@ -393,7 +397,7 @@ struct FlowPtEfficiency {
393397
}
394398
if (isStable(mcParticle.pdgCode())) {
395399
registry.fill(HIST("hPtMCRec"), track.pt());
396-
registry.fill(HIST("hPtCentMCRec"), track.pt(), centrality);
400+
registry.fill(HIST("hPtNchMCRec"), track.pt(), tracks.size());
397401

398402
if (cfgFlowEnabled) {
399403
bool withinPtPOI = (cfgFlowCutPtPOIMin < track.pt()) && (track.pt() < cfgFlowCutPtPOIMax); // within POI pT range
@@ -425,20 +429,20 @@ struct FlowPtEfficiency {
425429
}
426430
PROCESS_SWITCH(FlowPtEfficiency, processReco, "process reconstructed information", true);
427431

428-
void processSim(MyMcCollisions::iterator const& collision, aod::BCsWithTimestamps const&, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions>> const& collisions, MyMcParticles const& mcParticles)
432+
void processSim(MyMcCollisions::iterator const& mcCollision, aod::BCsWithTimestamps const&, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions>> const& collisions, MyMcParticles const& mcParticles, MyTracks const& tracks)
429433
{
430434
if (cfgSelRunNumberEnabled) {
431-
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
435+
auto bc = mcCollision.bc_as<aod::BCsWithTimestamps>();
432436
int runNumber = bc.runNumber();
433437
if (!std::count(cfgRunNumberList.value.begin(), cfgRunNumberList.value.end(), runNumber))
434438
return;
435439
}
436440

437-
float imp = collision.impactParameter();
441+
float imp = mcCollision.impactParameter();
438442
float centrality = 0.;
439443
if (cfgFlowEnabled) {
440444
registry.fill(HIST("hImpactParameterTruth"), imp);
441-
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
445+
auto bc = mcCollision.bc_as<aod::BCsWithTimestamps>();
442446
loadCentVsIPTruth(bc.timestamp());
443447
centrality = mCentVsIPTruth->GetBinContent(mCentVsIPTruth->GetXaxis()->FindBin(imp));
444448
}
@@ -448,10 +452,20 @@ struct FlowPtEfficiency {
448452

449453
if (collisions.size() > -1) {
450454
registry.fill(HIST("mcEventCounter"), 0.5);
455+
456+
registry.fill(HIST("numberOfRecoCollisions"), collisions.size()); // number of times coll was reco-ed
457+
458+
std::vector<int> numberOfTracks;
459+
for (auto const& collision : collisions) {
460+
auto groupedTracks = tracks.sliceBy(perCollision, collision.globalIndex());
461+
numberOfTracks.emplace_back(groupedTracks.size());
462+
}
463+
451464
for (const auto& mcParticle : mcParticles) {
452465
if (mcParticle.isPhysicalPrimary() && isStable(mcParticle.pdgCode())) {
453466
registry.fill(HIST("hPtMCGen"), mcParticle.pt());
454-
registry.fill(HIST("hPtCentMCGen"), mcParticle.pt(), centrality);
467+
if (collisions.size() > 0)
468+
registry.fill(HIST("hPtNchMCGen"), mcParticle.pt(), numberOfTracks[0]);
455469

456470
if (cfgFlowEnabled) {
457471
bool withinPtPOI = (cfgFlowCutPtPOIMin < mcParticle.pt()) && (mcParticle.pt() < cfgFlowCutPtPOIMax); // within POI pT range

PWGCF/Flow/Tasks/flowTask.cxx

Lines changed: 3 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -89,19 +89,15 @@ struct FlowTask {
8989
O2_DEFINE_CONFIGURABLE(cfgNbootstrap, int, 30, "Number of subsamples")
9090
O2_DEFINE_CONFIGURABLE(cfgOutputNUAWeights, bool, false, "Fill and output NUA weights")
9191
O2_DEFINE_CONFIGURABLE(cfgOutputNUAWeightsRefPt, bool, false, "NUA weights are filled in ref pt bins")
92-
O2_DEFINE_CONFIGURABLE(cfgOutputGroupNUAWeights, bool, false, "Fill and output group NUA weights")
9392
O2_DEFINE_CONFIGURABLE(cfgEfficiency, std::string, "", "CCDB path to efficiency object")
9493
O2_DEFINE_CONFIGURABLE(cfgAcceptance, std::string, "", "CCDB path to acceptance object")
95-
O2_DEFINE_CONFIGURABLE(cfgAcceptanceGroup, std::string, "", "CCDB path to group acceptance object")
96-
O2_DEFINE_CONFIGURABLE(cfgAcceptanceGroupUse, bool, false, "Apply group acceptance, this option overrides cfgAcceptance")
9794
O2_DEFINE_CONFIGURABLE(cfgEvSelOccupancy, bool, true, "Occupancy cut")
9895
O2_DEFINE_CONFIGURABLE(cfgCutOccupancyHigh, int, 500, "High cut on TPC occupancy")
9996
O2_DEFINE_CONFIGURABLE(cfgCutOccupancyLow, int, 0, "Low cut on TPC occupancy")
10097
O2_DEFINE_CONFIGURABLE(cfgUseSmallMemory, bool, false, "Use small memory mode")
10198
Configurable<std::vector<std::string>> cfgUserDefineGFWCorr{"cfgUserDefineGFWCorr", std::vector<std::string>{"refN02 {2} refP02 {-2}", "refN12 {2} refP12 {-2}"}, "User defined GFW CorrelatorConfig"};
10299
Configurable<std::vector<std::string>> cfgUserDefineGFWName{"cfgUserDefineGFWName", std::vector<std::string>{"Ch02Gap22", "Ch12Gap22"}, "User defined GFW Name"};
103100
Configurable<std::vector<int>> cfgRunRemoveList{"cfgRunRemoveList", std::vector<int>{-1}, "excluded run numbers"};
104-
Configurable<std::vector<int>> cfgGroupSplitRunNumber{"cfgGroupSplitRunNumber", std::vector<int>{544510, 544653}, "runnumbers for group splitting (suppose run numbers are increasing monotonically) "};
105101

106102
ConfigurableAxis axisVertex{"axisVertex", {40, -20, 20}, "vertex axis for histograms"};
107103
ConfigurableAxis axisPhi{"axisPhi", {60, 0.0, constants::math::TwoPI}, "phi axis for histograms"};
@@ -123,7 +119,6 @@ struct FlowTask {
123119
// Corrections
124120
TH1D* mEfficiency = nullptr;
125121
GFWWeights* mAcceptance = nullptr;
126-
TList* mGroupAcceptanceList = nullptr;
127122
bool correctionsLoaded = false;
128123

129124
// Connect to ccdb
@@ -135,7 +130,6 @@ struct FlowTask {
135130
OutputObj<FlowContainer> fFC{FlowContainer("FlowContainer")};
136131
OutputObj<GFWWeights> fWeights{GFWWeights("weights")};
137132
HistogramRegistry registry{"registry"};
138-
OutputObj<TList> fGroupNUAList{"GroupNUAList", OutputObjHandlingPolicy::AnalysisObject, OutputObjSourceType::OutputObjSource};
139133

140134
// define global variables
141135
GFW* fGFW = new GFW();
@@ -156,7 +150,6 @@ struct FlowTask {
156150
std::unordered_map<int, TH2*> gHadronicRate;
157151
ctpRateFetcher mRateFetcher;
158152
TH2* gCurrentHadronicRate;
159-
std::vector<std::shared_ptr<GFWWeights>> groupNUAWeightPtr;
160153

161154
using AodCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, aod::CentFV0As, aod::Mults>>;
162155
using AodTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra, aod::TracksDCA>>;
@@ -261,27 +254,6 @@ struct FlowTask {
261254
fWeights->init(true, false);
262255
}
263256

264-
TList* groupNUAWeightlist = new TList();
265-
groupNUAWeightlist->SetOwner(true);
266-
fGroupNUAList.setObject(groupNUAWeightlist);
267-
268-
if (cfgOutputGroupNUAWeights) {
269-
groupNUAWeightPtr.resize(cfgGroupSplitRunNumber.value.size() + 1);
270-
for (uint i = 0; i < cfgGroupSplitRunNumber.value.size() + 1; i++) {
271-
GFWWeights* groupweight = nullptr;
272-
if (i < cfgGroupSplitRunNumber.value.size())
273-
groupweight = new GFWWeights(Form("groupweight_%d", cfgGroupSplitRunNumber.value[i]));
274-
else
275-
groupweight = new GFWWeights(Form("groupweight_last"));
276-
277-
groupweight->setPtBins(nPtBins, ptBins);
278-
groupweight->init(true, false);
279-
groupNUAWeightlist->Add(groupweight);
280-
std::shared_ptr<GFWWeights> sharePtrGroupWeight(groupweight);
281-
groupNUAWeightPtr[i] = sharePtrGroupWeight;
282-
}
283-
}
284-
285257
// add in FlowContainer to Get boostrap sample automatically
286258
TObjArray* oba = new TObjArray();
287259
oba->Add(new TNamed("ChGap22", "ChGap22"));
@@ -505,13 +477,6 @@ struct FlowTask {
505477
else
506478
LOGF(warning, "Could not load acceptance weights from %s (%p)", cfgAcceptance.value.c_str(), (void*)mAcceptance);
507479
}
508-
if (cfgAcceptanceGroup.value.empty() == false) {
509-
mGroupAcceptanceList = ccdb->getForTimeStamp<TList>(cfgAcceptance, timestamp);
510-
if (mGroupAcceptanceList == nullptr) {
511-
LOGF(fatal, "Could not load grouped acceptance weights from %s", cfgAcceptanceGroup.value.c_str());
512-
}
513-
LOGF(info, "Loaded grouped acceptance weights from %s (%p)", cfgAcceptanceGroup.value.c_str(), (void*)mGroupAcceptanceList);
514-
}
515480
if (cfgEfficiency.value.empty() == false) {
516481
mEfficiency = ccdb->getForTimeStamp<TH1D>(cfgEfficiency, timestamp);
517482
if (mEfficiency == nullptr) {
@@ -522,7 +487,7 @@ struct FlowTask {
522487
correctionsLoaded = true;
523488
}
524489

525-
bool setCurrentParticleWeights(float& weight_nue, float& weight_nua, float phi, float eta, float pt, float vtxz, int groupNUAIndex = 0)
490+
bool setCurrentParticleWeights(float& weight_nue, float& weight_nua, float phi, float eta, float pt, float vtxz)
526491
{
527492
float eff = 1.;
528493
if (mEfficiency)
@@ -532,14 +497,7 @@ struct FlowTask {
532497
if (eff == 0)
533498
return false;
534499
weight_nue = 1. / eff;
535-
if (cfgAcceptanceGroupUse) {
536-
if (mGroupAcceptanceList && mGroupAcceptanceList->At(groupNUAIndex)) {
537-
weight_nua = reinterpret_cast<GFWWeights*>(mGroupAcceptanceList->At(groupNUAIndex))->getNUA(phi, eta, vtxz);
538-
} else {
539-
weight_nua = 1;
540-
}
541-
return true;
542-
}
500+
543501
if (mAcceptance)
544502
weight_nua = mAcceptance->getNUA(phi, eta, vtxz);
545503
else
@@ -764,17 +722,6 @@ struct FlowTask {
764722
if (cfgUseNch)
765723
independent = static_cast<float>(tracks.size());
766724

767-
int groupNUAIndex = 0;
768-
if (cfgOutputGroupNUAWeights || cfgAcceptanceGroupUse) {
769-
for (uint i = 0; i < cfgGroupSplitRunNumber.value.size(); i++) {
770-
if (currentRunNumber < cfgGroupSplitRunNumber.value.at(i)) {
771-
break;
772-
} else {
773-
groupNUAIndex++;
774-
}
775-
}
776-
}
777-
778725
for (const auto& track : tracks) {
779726
if (!trackSelected(track))
780727
continue;
@@ -788,16 +735,7 @@ struct FlowTask {
788735
fWeights->fill(track.phi(), track.eta(), vtxz, track.pt(), cent, 0);
789736
}
790737
}
791-
if (cfgOutputGroupNUAWeights) {
792-
if (cfgOutputNUAWeightsRefPt) {
793-
if (withinPtRef) {
794-
groupNUAWeightPtr[groupNUAIndex]->fill(track.phi(), track.eta(), vtxz, track.pt(), cent, 0);
795-
}
796-
} else {
797-
groupNUAWeightPtr[groupNUAIndex]->fill(track.phi(), track.eta(), vtxz, track.pt(), cent, 0);
798-
}
799-
}
800-
if (!setCurrentParticleWeights(weff, wacc, track.phi(), track.eta(), track.pt(), vtxz, groupNUAIndex))
738+
if (!setCurrentParticleWeights(weff, wacc, track.phi(), track.eta(), track.pt(), vtxz))
801739
continue;
802740
registry.fill(HIST("hPt"), track.pt());
803741
if (withinPtRef) {

0 commit comments

Comments
 (0)