Skip to content

Commit af5ec8d

Browse files
authored
[PWGHF] taskFlow.cxx: solve issues with FT0C, add 3D reassociation of MFT tracks (#13711)
1 parent cb2cd41 commit af5ec8d

File tree

1 file changed

+39
-19
lines changed

1 file changed

+39
-19
lines changed

PWGHF/HFC/Tasks/taskFlow.cxx

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ static constexpr std::string_view WhatDataType[] = {"Data/", "MC/"};
152152
static constexpr std::string_view WhatCorrelationCase[] = {"TpcTpc/", "TpcMft/", "TpcFv0a/", "MftFv0a/", "TpcFt0a/", "MftFt0a/", "TpcFt0c/", "Ft0aFt0c/"};
153153
static constexpr std::string_view WhatParticles[] = {"ChPartChPart/", "D0ChPart/", "LcChPart/"};
154154
static constexpr std::string_view WhatMultiplicityEstimator[] = {"multNTracksPV", "multNumContrib", "multFT0C", "multFT0M"};
155-
auto static constexpr kMinFt0cCell = 96;
155+
auto static constexpr MinFt0cCell = 96;
156156

157157
static constexpr TrackSelectionFlags::flagtype TrackSelectionIts =
158158
TrackSelectionFlags::kITSNCls | TrackSelectionFlags::kITSChi2NDF |
@@ -247,7 +247,7 @@ struct HfTaskFlow {
247247
Configurable<float> mftMaxDCAz{"mftMaxDCAz", 2.0f, "Cut on dcaZ for MFT tracks"};
248248
Configurable<int> nClustersMftTrack{"nClustersMftTrack", 5, "Minimum number of clusters for the reconstruction of MFT tracks"};
249249
Configurable<float> ptMftTrackMax{"ptMftTrackMax", 10.0f, "max value of MFT tracks pT when used in cut function"};
250-
Configurable<float> ptMftTrackMin{"ptMftTrackMin", 0.2f, "min value of MFT tracks pT when used in cut function"};
250+
Configurable<float> ptMftTrackMin{"ptMftTrackMin", 0.f, "min value of MFT tracks pT when used in cut function"};
251251
Configurable<bool> useMftPtCut{"useMftPtCut", false, "if true, use the Mft pt function cut"};
252252
} configMft;
253253

@@ -327,22 +327,22 @@ struct HfTaskFlow {
327327

328328
struct : ConfigurableGroup {
329329
std::string prefix = "ConfigAxis_group";
330-
ConfigurableAxis axisMass{"axisMass", {120, 1.5848, 2.1848}, "axis of invariant mass of candidates"};
330+
ConfigurableAxis axisMass{"axisMass", {1, 1.5848, 2.1848}, "axis of invariant mass of candidates"};
331331
ConfigurableAxis binsMixingMultiplicity{"binsMixingMultiplicity", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 100.1}, "multiplicity bins for event mixing"};
332-
ConfigurableAxis binsMixingVertex{"binsMixingVertex", {14, -7, 7}, "vertex bins for event mixing"};
333-
ConfigurableAxis axisEtaEfficiency{"axisEtaEfficiency", {20, -1.0, 1.0}, "eta axis for efficiency histograms"};
332+
ConfigurableAxis binsMixingVertex{"binsMixingVertex", {20, -10, 10}, "vertex bins for event mixing"};
333+
ConfigurableAxis axisEtaEfficiency{"axisEtaEfficiency", {1, -1.0, 1.0}, "eta axis for efficiency histograms"};
334334
ConfigurableAxis axisEtaAssociated{"axisEtaAssociated", {48, -4, -2}, "eta axis for MFT histograms"};
335335
ConfigurableAxis axisEtaTrigger{"axisEtaTrigger", {48, -1, 1}, "eta axis for TPC histograms"};
336336
ConfigurableAxis axisDeltaPhi{"axisDeltaPhi", {72, -PIHalf, PIHalf * 3}, "delta phi axis for histograms"};
337337
ConfigurableAxis axisDeltaEta{"axisDeltaEta", {48, -2.4, 2.4}, "delta eta axis for histograms"};
338338
ConfigurableAxis axisMultiplicity{"axisMultiplicity", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 100.1}, "multiplicity axis for histograms"};
339339
ConfigurableAxis axisPhi{"axisPhi", {72, 0, TwoPI}, "phi axis for histograms"};
340340
ConfigurableAxis axisPt{"axisPt", {72, 0, 36}, "pt axis for histograms"};
341-
ConfigurableAxis axisPtAssoc{"axisPtAssoc", {VARIABLE_WIDTH, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0}, "pt associated axis for histograms"};
342-
ConfigurableAxis axisPtEfficiency{"axisPtEfficiency", {VARIABLE_WIDTH, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.25, 3.5, 3.75, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0}, "pt axis for efficiency histograms"};
343-
ConfigurableAxis axisPtTrigger{"axisPtTrigger", {VARIABLE_WIDTH, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 8.0}, "pt trigger axis for histograms"};
344-
ConfigurableAxis axisVertex{"axisVertex", {14, -7, 7}, "vertex axis for histograms"};
345-
ConfigurableAxis axisVertexEfficiency{"axisVertexEfficiency", {10, -10, 10}, "vertex axis for efficiency histograms"};
341+
ConfigurableAxis axisPtAssoc{"axisPtAssoc", {VARIABLE_WIDTH, 0.2, 0.5, 1, 1.5, 2, 3, 4, 6, 10}, "pt associated axis for histograms"};
342+
ConfigurableAxis axisPtEfficiency{"axisPtEfficiency", {VARIABLE_WIDTH, 0.2, 10}, "pt axis for efficiency histograms"};
343+
ConfigurableAxis axisPtTrigger{"axisPtTrigger", {VARIABLE_WIDTH, 0.2, 0.5, 1, 1.5, 2, 3, 4, 6, 10}, "pt trigger axis for histograms"};
344+
ConfigurableAxis axisVertex{"axisVertex", {20, -10, 10}, "vertex axis for histograms"};
345+
ConfigurableAxis axisVertexEfficiency{"axisVertexEfficiency", {1, -10, 10}, "vertex axis for efficiency histograms"};
346346
} configAxis;
347347

348348
HistogramRegistry registry{"registry"};
@@ -500,8 +500,7 @@ struct HfTaskFlow {
500500
// Initialization of histograms and CorrelationContainers for TpcMft cases
501501
// =========================
502502

503-
// if (doprocessSameTpcMftChCh || doprocessSameTpcMftChChReassociated || doprocessSameTpcMftChChReassociated3d || doprocessSameTpcMftChChNonAmbiguous) {
504-
if (doprocessSameTpcMftChCh || doprocessSameTpcMftChChReassociated || doprocessSameTpcMftChChNonAmbiguous) {
503+
if (doprocessSameTpcMftChCh || doprocessSameTpcMftChChReassociated || doprocessSameTpcMftChChReassociated3d || doprocessSameTpcMftChChNonAmbiguous) {
505504
addHistograms<Data, TpcMft, ChPartChPart>();
506505
addMftHistograms();
507506

@@ -592,7 +591,7 @@ struct HfTaskFlow {
592591
// Initialization of histograms and CorrelationContainers for MftFt0a cases
593592
// =========================
594593

595-
if (doprocessSameMftFt0aChCh || doprocessSameMftFt0aChChReassociated || doprocessSameMftFt0aChChNonAmbiguous) {
594+
if (doprocessSameMftFt0aChCh || doprocessSameMftFt0aChChReassociated || doprocessSameMftFt0aChChReassociated3d || doprocessSameMftFt0aChChNonAmbiguous) {
596595
addHistograms<Data, MftFt0a, ChPartChPart>();
597596
addMftHistograms();
598597

@@ -784,7 +783,7 @@ struct HfTaskFlow {
784783
auto x = chPos.X() + (*offsetFT0)[i].getX();
785784
auto y = chPos.Y() + (*offsetFT0)[i].getY();
786785
auto z = chPos.Z() + (*offsetFT0)[i].getZ();
787-
if (chno >= kMinFt0cCell) {
786+
if (chno >= MinFt0cCell) {
788787
z = -z;
789788
}
790789
auto r = std::sqrt(x * x + y * y);
@@ -826,7 +825,7 @@ struct HfTaskFlow {
826825
void getChannel(TFT0s const& ft0, std::size_t const& iCh, int& id, int fitType)
827826
{
828827
if (fitType == isFT0C) {
829-
id = ft0.channelC()[iCh];
828+
id = ft0.channelC()[iCh] + MinFt0cCell;
830829
} else if (fitType == isFT0A) {
831830
id = ft0.channelA()[iCh];
832831
} else {
@@ -1229,7 +1228,7 @@ struct HfTaskFlow {
12291228
}
12301229

12311230
// FILL QA PLOTS for trigger particle
1232-
if (sameEvent && (cutAmbiguousTracks == false)) {
1231+
if (sameEvent) {
12331232
if constexpr (std::is_same_v<HfCandidatesSelD0, TTracksTrig>) {
12341233
fillTriggerQa<Data, TpcMft, D0ChPart>(multiplicity, eta1, phi1, pt1);
12351234
} else if constexpr (std::is_same_v<HfCandidatesSelLc, TTracksTrig>) {
@@ -1324,7 +1323,7 @@ struct HfTaskFlow {
13241323
}
13251324

13261325
// FILL QA PLOTS for associated particle
1327-
if (sameEvent && (loopCounter == 1) && (!cutAmbiguousTracks)) {
1326+
if (sameEvent && (loopCounter == 1)) {
13281327
if constexpr (std::is_same_v<HfCandidatesSelD0, TTracksTrig>) {
13291328
fillAssociatedQa<Data, TpcMft, D0ChPart>(multiplicity, eta2, phi2);
13301329
registry.fill(HIST("Data/Mft/hPtMft"), pt2);
@@ -1964,7 +1963,6 @@ struct HfTaskFlow {
19641963
}
19651964
PROCESS_SWITCH(HfTaskFlow, processSameTpcMftChChReassociated, "DATA : Process same-event correlations for TPC-MFT h-h case reassociated", false);
19661965

1967-
/*
19681966
void processSameTpcMftChChReassociated3d(FilteredCollisionsWSelMult::iterator const& collision,
19691967
soa::SmallGroups<aod::BestCollisionsFwd3d> const& reassociatedMftTracks,
19701968
FilteredTracksWDcaSel const& tracks,
@@ -1989,7 +1987,6 @@ struct HfTaskFlow {
19891987
fillCorrelationsReassociatedMftTracks(sameEvent, CorrelationContainer::CFStep::kCFStepReconstructed, tracks, reassociatedMftTracks, multiplicity, collision.posZ(), true, false);
19901988
}
19911989
PROCESS_SWITCH(HfTaskFlow, processSameTpcMftChChReassociated3d, "DATA : Process same-event correlations for TPC-MFT h-h case 3d reassociated", false);
1992-
*/
19931990

19941991
void processSameTpcMftChChNonAmbiguous(FilteredCollisionsWSelMult::iterator const& collision,
19951992
soa::SmallGroups<aod::BestCollisionsFwd> const& reassociatedMftTracks,
@@ -2425,6 +2422,29 @@ struct HfTaskFlow {
24252422
}
24262423
PROCESS_SWITCH(HfTaskFlow, processSameMftFt0aChChReassociated, "DATA : Process same-event correlations for MFT-FT0-A h-h case reassociated", false);
24272424

2425+
void processSameMftFt0aChChReassociated3d(FilteredCollisionsWSelMult::iterator const& collision,
2426+
soa::SmallGroups<aod::BestCollisionsFwd3d> const& reassociatedMftTracks,
2427+
FilteredMftTracks const&,
2428+
aod::FT0s const& ft0as)
2429+
{
2430+
if (!(isAcceptedCollision(collision, true))) {
2431+
return;
2432+
}
2433+
2434+
if (collision.has_foundFT0()) {
2435+
const auto& ft0 = collision.foundFT0();
2436+
const auto multiplicity = getMultiplicityEstimator(collision, true);
2437+
2438+
if (multiplicity < configCollision.minMultiplicity || multiplicity > configCollision.maxMultiplicity) {
2439+
return;
2440+
}
2441+
2442+
sameEvent->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
2443+
fillCorrelationsFITReassociatedMftTracks(sameEvent, CorrelationContainer::CFStep::kCFStepReconstructed, reassociatedMftTracks, ft0, ft0as, multiplicity, collision.posZ(), true, false, isFT0A);
2444+
}
2445+
}
2446+
PROCESS_SWITCH(HfTaskFlow, processSameMftFt0aChChReassociated3d, "DATA : Process same-event correlations for MFT-FT0-A h-h case reassociated 3d", false);
2447+
24282448
void processSameMftFt0aChChNonAmbiguous(FilteredCollisionsWSelMult::iterator const& collision,
24292449
soa::SmallGroups<aod::BestCollisionsFwd> const& reassociatedMftTracks,
24302450
FilteredMftTracks const&,

0 commit comments

Comments
 (0)