Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 50 additions & 62 deletions PWGHF/HFC/Tasks/taskFlow.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ struct HfTaskFlow {
o2::fv0::Geometry* fv0Det{};
std::vector<float> cstFT0RelGain{};
RCTFlagsChecker rctChecker;
RCTFlagsChecker correlationAnalysisRctChecker{kFT0Bad, kITSBad, kTPCBadTracking, kTPCBadPID, kMFTBad};
RCTFlagsChecker correlationAnalysisRctChecker{kFT0Bad, kITSBad, kTPCBadTracking, kTPCBadPID, kMFTBad, kITSLimAccMCRepr, kMFTLimAccMCRepr, kTPCLimAccMCRepr};

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

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

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

if (configTask.chooseCorrelationCase.value == static_cast<int>(CorrelationCase::TpcTpc)) {
addHistograms<Mc, TpcTpc, ChPartChPart>();
Expand Down Expand Up @@ -902,27 +902,6 @@ struct HfTaskFlow {
}
}

// =========================
// Initialization of histograms and CorrelationContainers for McGen cases
// =========================

// if (doprocessSameMcGen) {

// if (!configTask.doEtaDependentFlow && !configTask.doVariationContainers) {
// registry.add("Trig_hist", "", {HistType::kTHnSparseF, {{configAxis.axisSamples, configAxis.axisVertex, configAxis.axisPtTrigger}}});
// sameEvent.setObject(new CorrelationContainer("sameEvent", "sameEvent", corrAxis, effAxis, {}));
// mixedEvent.setObject(new CorrelationContainer("mixedEvent", "mixedEvent", corrAxis, effAxis, {}));
// } else if (configTask.doEtaDependentFlow){
// registry.add("Trig_hist", "", {HistType::kTHnSparseF, {{configAxis.axisSamples, configAxis.axisVertex, configAxis.axisEtaTrigger}}});
// sameEvent.setObject(new CorrelationContainer("sameEvent", "sameEvent", corrAxisEta, effAxis, {}));
// mixedEvent.setObject(new CorrelationContainer("mixedEvent", "mixedEvent", corrAxisEta, effAxis, {}));
// } else {
// registry.add("Trig_hist", "", {HistType::kTHnSparseF, {{configAxis.axisSamples, configAxis.axisVertex, configAxis.axisPtTrigger}}});
// sameEvent.setObject(new CorrelationContainer("sameEvent", "sameEvent", corrAxisVariations, effAxis, {}));
// mixedEvent.setObject(new CorrelationContainer("mixedEvent", "mixedEvent", corrAxisVariations, effAxis, {}));
// }
// }

} // End of init() function

// =========================
Expand Down Expand Up @@ -1191,10 +1170,10 @@ struct HfTaskFlow {
float efficiencyTpc = 1.;

if (mEfficiencyTpc) {
int etaBin = mEfficiencyTpc->GetXaxis()->FindBin(eta);
int ptBin = mEfficiencyTpc->FindBin(pt);
int ptBin = mEfficiencyTpc->GetXaxis()->FindBin(pt);
int etaBin = mEfficiencyTpc->GetYaxis()->FindBin(eta);
int vertexBin = mEfficiencyTpc->GetZaxis()->FindBin(vertex);
efficiencyTpc = mEfficiencyTpc->GetBinContent(etaBin, ptBin, vertexBin);
efficiencyTpc = mEfficiencyTpc->GetBinContent(ptBin, etaBin, vertexBin);
}

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

if (mEfficiencyMft) {
int etaBin = mEfficiencyMft->GetXaxis()->FindBin(eta);
int ptBin = mEfficiencyMft->FindBin(pt);
int ptBin = mEfficiencyMft->GetXaxis()->FindBin(pt);
int etaBin = mEfficiencyMft->GetYaxis()->FindBin(eta);
int vertexBin = mEfficiencyMft->GetZaxis()->FindBin(vertex);
efficiencyMft = mEfficiencyMft->GetBinContent(etaBin, ptBin, vertexBin);
efficiencyMft = mEfficiencyMft->GetBinContent(ptBin, etaBin, vertexBin);
}

if (efficiencyMft == 0) {
Expand Down Expand Up @@ -2658,9 +2637,10 @@ struct HfTaskFlow {

auto bc = collision1.template bc_as<aod::BCsWithTimestamps>();
loadEfficiencyCorrection(bc.timestamp());
auto tracksForMultiplicity = tracksTpc.sliceByCached(o2::aod::track::collisionId, collision1.globalIndex(), cache);
auto multiplicity = 0;
if (configCollision.useMultiplicityFromTracks) {
multiplicity = tracksTpc.size();
multiplicity = tracksForMultiplicity.size();
} else {
multiplicity = getMultiplicityEstimator(collision1, false);
}
Expand All @@ -2685,8 +2665,8 @@ struct HfTaskFlow {
} // end of for loop
}

template <typename TCollisions, typename TTracksTrig, typename TTracksAssoc, typename TPreslice>
void mixCollisionsFIT(TCollisions const& collisions, CorrelationContainer::CFStep step,
template <typename TCollisions, typename TTracksTpc, typename TTracksTrig, typename TTracksAssoc, typename TPreslice>
void mixCollisionsFIT(TCollisions const& collisions, CorrelationContainer::CFStep step, TTracksTpc const& tracksTpc,
TTracksTrig const& tracks1, TTracksAssoc const& tracks2, TPreslice const& preslice,
OutputObj<CorrelationContainer>& corrContainer, int fitType, aod::BCsWithTimestamps const&)
{
Expand Down Expand Up @@ -2721,36 +2701,39 @@ struct HfTaskFlow {
auto bc = collision1.template bc_as<aod::BCsWithTimestamps>();
loadEfficiencyCorrection(bc.timestamp());

if constexpr (std::is_same_v<aod::FV0As, TTracksAssoc>) { // IF ASSOCIATED PARTICLE FROM FV0A
if (collision1.has_foundFV0() && collision2.has_foundFV0()) {
// if constexpr (std::is_same_v<aod::FV0As, TTracksAssoc>) { // IF ASSOCIATED PARTICLE FROM FV0A
// if (collision1.has_foundFV0() && collision2.has_foundFV0()) {

auto slicedTriggerTracks = tracks1.sliceBy(preslice, collision1.globalIndex());
const auto& fv0 = collision2.foundFV0();
// auto slicedTriggerTracks = tracks1.sliceBy(preslice, collision1.globalIndex());
// auto tracksForMultiplicity = tracksTpc.sliceByCached(o2::aod::track::collisionId, collision1.globalIndex(), cache);
// const auto& fv0 = collision2.foundFV0();

auto multiplicity = 0;
if (configCollision.useMultiplicityFromTracks) {
multiplicity = tracks1.size();
} else {
multiplicity = getMultiplicityEstimator(collision1, false);
}
// auto multiplicity = 0;
// if (configCollision.useMultiplicityFromTracks) {
// multiplicity = tracksForMultiplicity.size();
// } else {
// multiplicity = getMultiplicityEstimator(collision1, false);
// }

if (multiplicity < configCollision.minMultiplicity || multiplicity >= configCollision.maxMultiplicity) {
return;
}
// if (multiplicity < configCollision.minMultiplicity || multiplicity >= configCollision.maxMultiplicity) {
// return;
// }

corrContainer->fillEvent(multiplicity, step);
fillCorrelationsFIT(corrContainer, step, slicedTriggerTracks, fv0, tracks2, multiplicity, collision1.posZ(), false, fitType);
}
} // end of if condition for FV0s
// corrContainer->fillEvent(multiplicity, step);
// fillCorrelationsFIT(corrContainer, step, slicedTriggerTracks, fv0, tracks2, multiplicity, collision1.posZ(), false, fitType);
// }
// } // end of if condition for FV0s

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

auto slicedTriggerTracks = tracks1.sliceBy(preslice, collision1.globalIndex());
auto tracksForMultiplicity = tracksTpc.sliceByCached(o2::aod::track::collisionId, collision1.globalIndex(), cache);
const auto& ft0 = collision2.foundFT0();

auto multiplicity = 0;
if (configCollision.useMultiplicityFromTracks) {
multiplicity = tracks1.size();
multiplicity = tracksForMultiplicity.size();
} else {
multiplicity = getMultiplicityEstimator(collision1, false);
}
Expand Down Expand Up @@ -2806,13 +2789,13 @@ struct HfTaskFlow {

auto bc = collision1.template bc_as<aod::BCsWithTimestamps>();
loadEfficiencyCorrection(bc.timestamp());
auto tracksForMultiplicity = tracksTpc.sliceByCached(o2::aod::track::collisionId, collision1.globalIndex(), cache);
auto multiplicity = 0;
if (configCollision.useMultiplicityFromTracks) {
multiplicity = tracksTpc.size();
multiplicity = tracksForMultiplicity.size();
} else {
multiplicity = getMultiplicityEstimator(collision1, false);
}

if (multiplicity < configCollision.minMultiplicity || multiplicity >= configCollision.maxMultiplicity) {
return;
}
Expand Down Expand Up @@ -4066,9 +4049,9 @@ struct HfTaskFlow {
aod::BCsWithTimestamps const& bcs)
{
if (!configTask.doEtaDependentFlow && !configTask.doVariationContainers) {
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, ft0s, perColTracks, mixedEvent, isFT0A, bcs);
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, tracks, ft0s, perColTracks, mixedEvent, isFT0A, bcs);
} else {
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, ft0s, perColTracks, mixedEventTpcFt0a, isFT0A, bcs);
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, tracks, ft0s, perColTracks, mixedEventTpcFt0a, isFT0A, bcs);
}
}
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0aChCh, "DATA : Process mixed-event correlations for TPC-FT0-A h-h case", false);
Expand All @@ -4079,10 +4062,11 @@ struct HfTaskFlow {

void processMixedTpcFt0aD0Ch(FilteredCollisionsWSelMult const& collisions,
HfCandidatesSelD0 const& candidates,
FilteredTracksWDcaSel const& tracks,
aod::FT0s const& ft0s,
aod::BCsWithTimestamps const& bcs)
{
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, candidates, ft0s, perColD0s, mixedEventHf, isFT0A, bcs);
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, candidates, ft0s, perColD0s, mixedEventHf, isFT0A, bcs);
}
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0aD0Ch, "DATA : Process mixed-event correlations for TPC-FT0-A D0-h case", false);

Expand All @@ -4092,10 +4076,11 @@ struct HfTaskFlow {

void processMixedTpcFt0aLcCh(FilteredCollisionsWSelMult const& collisions,
HfCandidatesSelLc const& candidates,
FilteredTracksWDcaSel const& tracks,
aod::FT0s const& ft0s,
aod::BCsWithTimestamps const& bcs)
{
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, candidates, ft0s, perColLcs, mixedEventHf, isFT0A, bcs);
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, candidates, ft0s, perColLcs, mixedEventHf, isFT0A, bcs);
}
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0aLcCh, "DATA : Process mixed-event correlations for TPC-FT0-A Lc-h case", false);

Expand All @@ -4105,13 +4090,14 @@ struct HfTaskFlow {

void processMixedMftFt0aChCh(FilteredCollisionsWSelMult const& collisions,
FilteredMftTracks const& mftTracks,
FilteredTracksWDcaSel const& tracks,
aod::FT0s const& ft0s,
aod::BCsWithTimestamps const& bcs)
{
if (!configTask.doEtaDependentFlow && !configTask.doVariationContainers) {
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, mftTracks, ft0s, perColMftTracks, mixedEvent, isFT0A, bcs);
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, mftTracks, ft0s, perColMftTracks, mixedEvent, isFT0A, bcs);
} else {
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, mftTracks, ft0s, perColMftTracks, mixedEventMftFt0a, isFT0A, bcs);
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, mftTracks, ft0s, perColMftTracks, mixedEventMftFt0a, isFT0A, bcs);
}
}
PROCESS_SWITCH(HfTaskFlow, processMixedMftFt0aChCh, "DATA : Process mixed-event correlations for MFT-FT0-A h-h case", false);
Expand Down Expand Up @@ -4170,7 +4156,7 @@ struct HfTaskFlow {
aod::FT0s const& ft0s,
aod::BCsWithTimestamps const& bcs)
{
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, ft0s, perColTracks, mixedEvent, isFT0C, bcs);
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, tracks, ft0s, perColTracks, mixedEvent, isFT0C, bcs);
}
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0cChCh, "DATA : Process mixed-event correlations for TPC-FT0C h-h case", false);

Expand All @@ -4180,10 +4166,11 @@ struct HfTaskFlow {

void processMixedTpcFt0cD0Ch(FilteredCollisionsWSelMult const& collisions,
HfCandidatesSelD0 const& candidates,
FilteredTracksWDcaSel const& tracks,
aod::FT0s const& ft0s,
aod::BCsWithTimestamps const& bcs)
{
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, candidates, ft0s, perColD0s, mixedEventHf, isFT0C, bcs);
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, candidates, ft0s, perColD0s, mixedEventHf, isFT0C, bcs);
}
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0cD0Ch, "DATA : Process mixed-event correlations for TPC-FT0C D0-h case", false);

Expand All @@ -4193,10 +4180,11 @@ struct HfTaskFlow {

void processMixedTpcFt0cLcCh(FilteredCollisionsWSelMult const& collisions,
HfCandidatesSelLc const& candidates,
FilteredTracksWDcaSel const& tracks,
aod::FT0s const& ft0s,
aod::BCsWithTimestamps const& bcs)
{
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, candidates, ft0s, perColLcs, mixedEventHf, isFT0C, bcs);
mixCollisionsFIT(collisions, CorrelationContainer::kCFStepReconstructed, tracks, candidates, ft0s, perColLcs, mixedEventHf, isFT0C, bcs);
}
PROCESS_SWITCH(HfTaskFlow, processMixedTpcFt0cLcCh, "DATA : Process mixed-event correlations for TPC-FT0C Lc-h case", false);

Expand Down
Loading