Skip to content

Commit 6700073

Browse files
authored
[PWGHF] taskFlow : solve efficiency correction issue, multiplicity issue (#16660)
1 parent 5206ce3 commit 6700073

1 file changed

Lines changed: 50 additions & 62 deletions

File tree

PWGHF/HFC/Tasks/taskFlow.cxx

Lines changed: 50 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ struct HfTaskFlow {
324324
o2::fv0::Geometry* fv0Det{};
325325
std::vector<float> cstFT0RelGain{};
326326
RCTFlagsChecker rctChecker;
327-
RCTFlagsChecker correlationAnalysisRctChecker{kFT0Bad, kITSBad, kTPCBadTracking, kTPCBadPID, kMFTBad};
327+
RCTFlagsChecker correlationAnalysisRctChecker{kFT0Bad, kITSBad, kTPCBadTracking, kTPCBadPID, kMFTBad, kITSLimAccMCRepr, kMFTLimAccMCRepr, kTPCLimAccMCRepr};
328328

329329
TH3D* mEfficiencyTpc = nullptr;
330330
TH3D* mEfficiencyMft = nullptr;
@@ -648,7 +648,7 @@ struct HfTaskFlow {
648648
addHistograms<Data, TpcMft, ChPartChPart>();
649649
addMftHistograms();
650650
registry.add("Data/hEfficiencyTrigger", "", {HistType::kTH3D, {{configAxis.axisPtTrigger}, {configAxis.axisEtaTrigger}, {configAxis.axisVertex}}});
651-
registry.add("Data/hEfficiencyAssociated", "", {HistType::kTH3D, {{configAxis.axisPtTrigger}, {configAxis.axisEtaTrigger}, {configAxis.axisVertex}}});
651+
registry.add("Data/hEfficiencyAssociated", "", {HistType::kTH3D, {{configAxis.axisPtAssoc}, {configAxis.axisEtaAssociated}, {configAxis.axisVertex}}});
652652

653653
if (!configTask.doEtaDependentFlow && !configTask.doVariationContainers) {
654654
registry.add("Trig_hist_TPC_MFT", "", {HistType::kTHnSparseF, {{configAxis.axisSamples, configAxis.axisVertex, configAxis.axisPtTrigger}}});
@@ -869,7 +869,7 @@ struct HfTaskFlow {
869869
if (doprocessSameMcGen) {
870870

871871
registry.add("MC/hEfficiencyTrigger", "", {HistType::kTH3D, {{configAxis.axisPtTrigger}, {configAxis.axisEtaTrigger}, {configAxis.axisVertex}}});
872-
registry.add("MC/hEfficiencyAssociated", "", {HistType::kTH3D, {{configAxis.axisPtTrigger}, {configAxis.axisEtaTrigger}, {configAxis.axisVertex}}});
872+
registry.add("MC/hEfficiencyAssociated", "", {HistType::kTH3D, {{configAxis.axisPtTrigger}, {configAxis.axisEtaAssociated}, {configAxis.axisVertex}}});
873873

874874
if (configTask.chooseCorrelationCase.value == static_cast<int>(CorrelationCase::TpcTpc)) {
875875
addHistograms<Mc, TpcTpc, ChPartChPart>();
@@ -902,27 +902,6 @@ struct HfTaskFlow {
902902
}
903903
}
904904

905-
// =========================
906-
// Initialization of histograms and CorrelationContainers for McGen cases
907-
// =========================
908-
909-
// if (doprocessSameMcGen) {
910-
911-
// if (!configTask.doEtaDependentFlow && !configTask.doVariationContainers) {
912-
// registry.add("Trig_hist", "", {HistType::kTHnSparseF, {{configAxis.axisSamples, configAxis.axisVertex, configAxis.axisPtTrigger}}});
913-
// sameEvent.setObject(new CorrelationContainer("sameEvent", "sameEvent", corrAxis, effAxis, {}));
914-
// mixedEvent.setObject(new CorrelationContainer("mixedEvent", "mixedEvent", corrAxis, effAxis, {}));
915-
// } else if (configTask.doEtaDependentFlow){
916-
// registry.add("Trig_hist", "", {HistType::kTHnSparseF, {{configAxis.axisSamples, configAxis.axisVertex, configAxis.axisEtaTrigger}}});
917-
// sameEvent.setObject(new CorrelationContainer("sameEvent", "sameEvent", corrAxisEta, effAxis, {}));
918-
// mixedEvent.setObject(new CorrelationContainer("mixedEvent", "mixedEvent", corrAxisEta, effAxis, {}));
919-
// } else {
920-
// registry.add("Trig_hist", "", {HistType::kTHnSparseF, {{configAxis.axisSamples, configAxis.axisVertex, configAxis.axisPtTrigger}}});
921-
// sameEvent.setObject(new CorrelationContainer("sameEvent", "sameEvent", corrAxisVariations, effAxis, {}));
922-
// mixedEvent.setObject(new CorrelationContainer("mixedEvent", "mixedEvent", corrAxisVariations, effAxis, {}));
923-
// }
924-
// }
925-
926905
} // End of init() function
927906

928907
// =========================
@@ -1191,10 +1170,10 @@ struct HfTaskFlow {
11911170
float efficiencyTpc = 1.;
11921171

11931172
if (mEfficiencyTpc) {
1194-
int etaBin = mEfficiencyTpc->GetXaxis()->FindBin(eta);
1195-
int ptBin = mEfficiencyTpc->FindBin(pt);
1173+
int ptBin = mEfficiencyTpc->GetXaxis()->FindBin(pt);
1174+
int etaBin = mEfficiencyTpc->GetYaxis()->FindBin(eta);
11961175
int vertexBin = mEfficiencyTpc->GetZaxis()->FindBin(vertex);
1197-
efficiencyTpc = mEfficiencyTpc->GetBinContent(etaBin, ptBin, vertexBin);
1176+
efficiencyTpc = mEfficiencyTpc->GetBinContent(ptBin, etaBin, vertexBin);
11981177
}
11991178

12001179
if (efficiencyTpc == 0) {
@@ -1211,10 +1190,10 @@ struct HfTaskFlow {
12111190
float efficiencyMft = 1.;
12121191

12131192
if (mEfficiencyMft) {
1214-
int etaBin = mEfficiencyMft->GetXaxis()->FindBin(eta);
1215-
int ptBin = mEfficiencyMft->FindBin(pt);
1193+
int ptBin = mEfficiencyMft->GetXaxis()->FindBin(pt);
1194+
int etaBin = mEfficiencyMft->GetYaxis()->FindBin(eta);
12161195
int vertexBin = mEfficiencyMft->GetZaxis()->FindBin(vertex);
1217-
efficiencyMft = mEfficiencyMft->GetBinContent(etaBin, ptBin, vertexBin);
1196+
efficiencyMft = mEfficiencyMft->GetBinContent(ptBin, etaBin, vertexBin);
12181197
}
12191198

12201199
if (efficiencyMft == 0) {
@@ -2658,9 +2637,10 @@ struct HfTaskFlow {
26582637

26592638
auto bc = collision1.template bc_as<aod::BCsWithTimestamps>();
26602639
loadEfficiencyCorrection(bc.timestamp());
2640+
auto tracksForMultiplicity = tracksTpc.sliceByCached(o2::aod::track::collisionId, collision1.globalIndex(), cache);
26612641
auto multiplicity = 0;
26622642
if (configCollision.useMultiplicityFromTracks) {
2663-
multiplicity = tracksTpc.size();
2643+
multiplicity = tracksForMultiplicity.size();
26642644
} else {
26652645
multiplicity = getMultiplicityEstimator(collision1, false);
26662646
}
@@ -2685,8 +2665,8 @@ struct HfTaskFlow {
26852665
} // end of for loop
26862666
}
26872667

2688-
template <typename TCollisions, typename TTracksTrig, typename TTracksAssoc, typename TPreslice>
2689-
void mixCollisionsFIT(TCollisions const& collisions, CorrelationContainer::CFStep step,
2668+
template <typename TCollisions, typename TTracksTpc, typename TTracksTrig, typename TTracksAssoc, typename TPreslice>
2669+
void mixCollisionsFIT(TCollisions const& collisions, CorrelationContainer::CFStep step, TTracksTpc const& tracksTpc,
26902670
TTracksTrig const& tracks1, TTracksAssoc const& tracks2, TPreslice const& preslice,
26912671
OutputObj<CorrelationContainer>& corrContainer, int fitType, aod::BCsWithTimestamps const&)
26922672
{
@@ -2721,36 +2701,39 @@ struct HfTaskFlow {
27212701
auto bc = collision1.template bc_as<aod::BCsWithTimestamps>();
27222702
loadEfficiencyCorrection(bc.timestamp());
27232703

2724-
if constexpr (std::is_same_v<aod::FV0As, TTracksAssoc>) { // IF ASSOCIATED PARTICLE FROM FV0A
2725-
if (collision1.has_foundFV0() && collision2.has_foundFV0()) {
2704+
// if constexpr (std::is_same_v<aod::FV0As, TTracksAssoc>) { // IF ASSOCIATED PARTICLE FROM FV0A
2705+
// if (collision1.has_foundFV0() && collision2.has_foundFV0()) {
27262706

2727-
auto slicedTriggerTracks = tracks1.sliceBy(preslice, collision1.globalIndex());
2728-
const auto& fv0 = collision2.foundFV0();
2707+
// auto slicedTriggerTracks = tracks1.sliceBy(preslice, collision1.globalIndex());
2708+
// auto tracksForMultiplicity = tracksTpc.sliceByCached(o2::aod::track::collisionId, collision1.globalIndex(), cache);
2709+
// const auto& fv0 = collision2.foundFV0();
27292710

2730-
auto multiplicity = 0;
2731-
if (configCollision.useMultiplicityFromTracks) {
2732-
multiplicity = tracks1.size();
2733-
} else {
2734-
multiplicity = getMultiplicityEstimator(collision1, false);
2735-
}
2711+
// auto multiplicity = 0;
2712+
// if (configCollision.useMultiplicityFromTracks) {
2713+
// multiplicity = tracksForMultiplicity.size();
2714+
// } else {
2715+
// multiplicity = getMultiplicityEstimator(collision1, false);
2716+
// }
27362717

2737-
if (multiplicity < configCollision.minMultiplicity || multiplicity >= configCollision.maxMultiplicity) {
2738-
return;
2739-
}
2718+
// if (multiplicity < configCollision.minMultiplicity || multiplicity >= configCollision.maxMultiplicity) {
2719+
// return;
2720+
// }
27402721

2741-
corrContainer->fillEvent(multiplicity, step);
2742-
fillCorrelationsFIT(corrContainer, step, slicedTriggerTracks, fv0, tracks2, multiplicity, collision1.posZ(), false, fitType);
2743-
}
2744-
} // end of if condition for FV0s
2722+
// corrContainer->fillEvent(multiplicity, step);
2723+
// fillCorrelationsFIT(corrContainer, step, slicedTriggerTracks, fv0, tracks2, multiplicity, collision1.posZ(), false, fitType);
2724+
// }
2725+
// } // end of if condition for FV0s
27452726

27462727
if constexpr (std::is_same_v<aod::FT0s, TTracksAssoc>) {
27472728
if (collision1.has_foundFT0() && collision2.has_foundFT0()) {
27482729

27492730
auto slicedTriggerTracks = tracks1.sliceBy(preslice, collision1.globalIndex());
2731+
auto tracksForMultiplicity = tracksTpc.sliceByCached(o2::aod::track::collisionId, collision1.globalIndex(), cache);
27502732
const auto& ft0 = collision2.foundFT0();
2733+
27512734
auto multiplicity = 0;
27522735
if (configCollision.useMultiplicityFromTracks) {
2753-
multiplicity = tracks1.size();
2736+
multiplicity = tracksForMultiplicity.size();
27542737
} else {
27552738
multiplicity = getMultiplicityEstimator(collision1, false);
27562739
}
@@ -2806,13 +2789,13 @@ struct HfTaskFlow {
28062789

28072790
auto bc = collision1.template bc_as<aod::BCsWithTimestamps>();
28082791
loadEfficiencyCorrection(bc.timestamp());
2792+
auto tracksForMultiplicity = tracksTpc.sliceByCached(o2::aod::track::collisionId, collision1.globalIndex(), cache);
28092793
auto multiplicity = 0;
28102794
if (configCollision.useMultiplicityFromTracks) {
2811-
multiplicity = tracksTpc.size();
2795+
multiplicity = tracksForMultiplicity.size();
28122796
} else {
28132797
multiplicity = getMultiplicityEstimator(collision1, false);
28142798
}
2815-
28162799
if (multiplicity < configCollision.minMultiplicity || multiplicity >= configCollision.maxMultiplicity) {
28172800
return;
28182801
}
@@ -4066,9 +4049,9 @@ struct HfTaskFlow {
40664049
aod::BCsWithTimestamps const& bcs)
40674050
{
40684051
if (!configTask.doEtaDependentFlow && !configTask.doVariationContainers) {
4069-
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, ft0s, perColTracks, mixedEvent, isFT0A, bcs);
4052+
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, tracks, ft0s, perColTracks, mixedEvent, isFT0A, bcs);
40704053
} else {
4071-
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, ft0s, perColTracks, mixedEventTpcFt0a, isFT0A, bcs);
4054+
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, tracks, ft0s, perColTracks, mixedEventTpcFt0a, isFT0A, bcs);
40724055
}
40734056
}
40744057
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0aChCh, "DATA : Process mixed-event correlations for TPC-FT0-A h-h case", false);
@@ -4079,10 +4062,11 @@ struct HfTaskFlow {
40794062

40804063
void processMixedTpcFt0aD0Ch(FilteredCollisionsWSelMult const& collisions,
40814064
HfCandidatesSelD0 const& candidates,
4065+
FilteredTracksWDcaSel const& tracks,
40824066
aod::FT0s const& ft0s,
40834067
aod::BCsWithTimestamps const& bcs)
40844068
{
4085-
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, candidates, ft0s, perColD0s, mixedEventHf, isFT0A, bcs);
4069+
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, candidates, ft0s, perColD0s, mixedEventHf, isFT0A, bcs);
40864070
}
40874071
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0aD0Ch, "DATA : Process mixed-event correlations for TPC-FT0-A D0-h case", false);
40884072

@@ -4092,10 +4076,11 @@ struct HfTaskFlow {
40924076

40934077
void processMixedTpcFt0aLcCh(FilteredCollisionsWSelMult const& collisions,
40944078
HfCandidatesSelLc const& candidates,
4079+
FilteredTracksWDcaSel const& tracks,
40954080
aod::FT0s const& ft0s,
40964081
aod::BCsWithTimestamps const& bcs)
40974082
{
4098-
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, candidates, ft0s, perColLcs, mixedEventHf, isFT0A, bcs);
4083+
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, candidates, ft0s, perColLcs, mixedEventHf, isFT0A, bcs);
40994084
}
41004085
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0aLcCh, "DATA : Process mixed-event correlations for TPC-FT0-A Lc-h case", false);
41014086

@@ -4105,13 +4090,14 @@ struct HfTaskFlow {
41054090

41064091
void processMixedMftFt0aChCh(FilteredCollisionsWSelMult const& collisions,
41074092
FilteredMftTracks const& mftTracks,
4093+
FilteredTracksWDcaSel const& tracks,
41084094
aod::FT0s const& ft0s,
41094095
aod::BCsWithTimestamps const& bcs)
41104096
{
41114097
if (!configTask.doEtaDependentFlow && !configTask.doVariationContainers) {
4112-
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, mftTracks, ft0s, perColMftTracks, mixedEvent, isFT0A, bcs);
4098+
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, mftTracks, ft0s, perColMftTracks, mixedEvent, isFT0A, bcs);
41134099
} else {
4114-
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, mftTracks, ft0s, perColMftTracks, mixedEventMftFt0a, isFT0A, bcs);
4100+
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, mftTracks, ft0s, perColMftTracks, mixedEventMftFt0a, isFT0A, bcs);
41154101
}
41164102
}
41174103
PROCESS_SWITCH(HfTaskFlow, processMixedMftFt0aChCh, "DATA : Process mixed-event correlations for MFT-FT0-A h-h case", false);
@@ -4170,7 +4156,7 @@ struct HfTaskFlow {
41704156
aod::FT0s const& ft0s,
41714157
aod::BCsWithTimestamps const& bcs)
41724158
{
4173-
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, ft0s, perColTracks, mixedEvent, isFT0C, bcs);
4159+
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, tracks, ft0s, perColTracks, mixedEvent, isFT0C, bcs);
41744160
}
41754161
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0cChCh, "DATA : Process mixed-event correlations for TPC-FT0C h-h case", false);
41764162

@@ -4180,10 +4166,11 @@ struct HfTaskFlow {
41804166

41814167
void processMixedTpcFt0cD0Ch(FilteredCollisionsWSelMult const& collisions,
41824168
HfCandidatesSelD0 const& candidates,
4169+
FilteredTracksWDcaSel const& tracks,
41834170
aod::FT0s const& ft0s,
41844171
aod::BCsWithTimestamps const& bcs)
41854172
{
4186-
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, candidates, ft0s, perColD0s, mixedEventHf, isFT0C, bcs);
4173+
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, candidates, ft0s, perColD0s, mixedEventHf, isFT0C, bcs);
41874174
}
41884175
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0cD0Ch, "DATA : Process mixed-event correlations for TPC-FT0C D0-h case", false);
41894176

@@ -4193,10 +4180,11 @@ struct HfTaskFlow {
41934180

41944181
void processMixedTpcFt0cLcCh(FilteredCollisionsWSelMult const& collisions,
41954182
HfCandidatesSelLc const& candidates,
4183+
FilteredTracksWDcaSel const& tracks,
41964184
aod::FT0s const& ft0s,
41974185
aod::BCsWithTimestamps const& bcs)
41984186
{
4199-
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, candidates, ft0s, perColLcs, mixedEventHf, isFT0C, bcs);
4187+
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, candidates, ft0s, perColLcs, mixedEventHf, isFT0C, bcs);
42004188
}
42014189
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0cLcCh, "DATA : Process mixed-event correlations for TPC-FT0C Lc-h case", false);
42024190

0 commit comments

Comments
 (0)