Skip to content
Closed
Show file tree
Hide file tree
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
42 changes: 15 additions & 27 deletions PWGCF/TwoParticleCorrelations/TableProducer/longrangeMaker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ using namespace o2::constants::math;
auto static constexpr CintZero = 0;
auto static constexpr KminFt0cCell = 96;
auto static constexpr TotFt0Channels = 208;
AxisSpec axisEvent{20, 0.5, 20.5, "#Event", "EventAxis"};
AxisSpec axisEvent{15, 0.5, 15.5, "#Event", "EventAxis"};
AxisSpec axisTrackSel{10, 0.5, 10.5, "#Track", "TrackAxis"};
auto static constexpr KminCharge = 3.0f;
static constexpr std::string_view species[] = {"Pi", "Ka", "Pr"};
Expand Down Expand Up @@ -112,9 +112,7 @@ struct LongrangeMaker {
Configurable<bool> isApplyBestCollIndex{"isApplyBestCollIndex", true, "bestCollIndex"};
Configurable<bool> isrejectFlangeEvent{"isrejectFlangeEvent", false, "At least one channel with -350 TDC < time < -450 TDC"};
Configurable<bool> isApplyNoCollInTimeRangeStandard{"isApplyNoCollInTimeRangeStandard", false, "Enable NoCollInTimeRangeStandard cut"};
Configurable<bool> isApplyNoCollInTimeRangeStrict{"isApplyNoCollInTimeRangeStrict", false, "Enable NoCollInTimeRangeStrict cut"};
Configurable<bool> isApplyNoCollInRofStandard{"isApplyNoCollInRofStandard", false, "Enable NoCollInRofStandard cut"};
Configurable<bool> isApplyNoCollInRofStrict{"isApplyNoCollInRofStrict", false, "Enable NoCollInRofStrict cut"};
Configurable<bool> isApplyNoHighMultCollInPrevRof{"isApplyNoHighMultCollInPrevRof", false, "Enable NoHighMultCollInPrevRof cut"};
Configurable<bool> isApplyCentFT0C{"isApplyCentFT0C", false, "Centrality based on FT0C"};
Configurable<bool> isApplyCentFV0A{"isApplyCentFV0A", false, "Centrality based on FV0A"};
Expand Down Expand Up @@ -254,13 +252,11 @@ struct LongrangeMaker {
x->SetBinLabel(6, "ApplyGoodZvtxFT0vsPV");
x->SetBinLabel(7, "ApplyGoodITSLayersAll");
x->SetBinLabel(8, "ApplyExtraCorrCut");
x->SetBinLabel(9, "ApplyNoCollInRofStandard");
x->SetBinLabel(10, "ApplyNoCollInRofStrict");
x->SetBinLabel(11, "ApplyNoCollInTimeRangeStandard");
x->SetBinLabel(12, "ApplyNoCollInTimeRangeStrict");
x->SetBinLabel(13, "ApplyNoHighMultCollInPrevRof");
x->SetBinLabel(14, "ApplyOccupancySelection");
x->SetBinLabel(15, "reject flange event");
x->SetBinLabel(9, "ApplyNoCollInTimeRangeStandard");
x->SetBinLabel(10, "ApplyNoCollInRofStandard");
x->SetBinLabel(11, "ApplyNoHighMultCollInPrevRof");
x->SetBinLabel(12, "ApplyOccupancySelection");
x->SetBinLabel(13, "reject flange event");
histos.add("hSelectionResult", "hSelectionResult", kTH1I, {{5, -0.5, 4.5}});

histos.add("hMftTrkSel", "hMftTrkSel", kTH1D, {axisTrackSel}, false);
Expand Down Expand Up @@ -429,7 +425,7 @@ struct LongrangeMaker {
return;
}
}
histos.fill(HIST("EventHist"), 15);
histos.fill(HIST("EventHist"), 13);
for (std::size_t iCh = 0; iCh < ft0.channelA().size(); iCh++) {
auto chanelid = ft0.channelA()[iCh];
float ampl = ft0.amplitudeA()[iCh];
Expand Down Expand Up @@ -880,15 +876,15 @@ struct LongrangeMaker {
continue;
}
// Fill midrapidity tracks
if (std::abs(particle.eta()) < cfgtrksel.cfgEtaCut && particle.pt() > cfgtrksel.cfgPtCutMin && particle.pt() < cfgtrksel.cfgPtCutMult)
if (std::abs(particle.eta()) < cfgtrksel.cfgEtaCut && particle.pt() > cfgtrksel.cfgPtCutMin && particle.pt() < cfgtrksel.cfgPtCutMax)
lrmidmctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi(), particle.pdgCode(), particle.flags());
// Fill FT0 tracks
if (cfgfittrksel.cfgFt0aEtaMin < particle.eta() && particle.eta() < cfgfittrksel.cfgFt0aEtaMax)
lrft0amctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi());
if (cfgfittrksel.cfgFt0cEtaMin < particle.eta() && particle.eta() < cfgfittrksel.cfgFt0cEtaMax)
lrft0cmctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi());
// Fill MFT tracks
if (cfgmfttrksel.cfgMftEtaMin < particle.eta() && particle.eta() < cfgmfttrksel.cfgMftEtaMax)
if (cfgmfttrksel.cfgMftEtaMin < particle.eta() && particle.eta() < cfgmfttrksel.cfgMftEtaMax && particle.pt() > cfgmfttrksel.cfgMftPtCutMin && particle.pt() < cfgmfttrksel.cfgMftPtCutMax)
lrmftmctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi());
}
}
Expand All @@ -909,15 +905,15 @@ struct LongrangeMaker {
continue;
}
// Fill midrapidity tracks
if (std::abs(particle.eta()) < cfgtrksel.cfgEtaCut && particle.pt() > cfgtrksel.cfgPtCutMin && particle.pt() < cfgtrksel.cfgPtCutMult)
if (std::abs(particle.eta()) < cfgtrksel.cfgEtaCut && particle.pt() > cfgtrksel.cfgPtCutMin && particle.pt() < cfgtrksel.cfgPtCutMax)
lrmidmctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi(), particle.pdgCode(), particle.flags());
// Fill FT0 tracks
if (cfgfittrksel.cfgFt0aEtaMin < particle.eta() && particle.eta() < cfgfittrksel.cfgFt0aEtaMax)
lrft0amctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi());
if (cfgfittrksel.cfgFt0cEtaMin < particle.eta() && particle.eta() < cfgfittrksel.cfgFt0cEtaMax)
lrft0cmctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi());
// Fill MFT tracks
if (cfgmfttrksel.cfgMftEtaMin < particle.eta() && particle.eta() < cfgmfttrksel.cfgMftEtaMax)
if (cfgmfttrksel.cfgMftEtaMin < particle.eta() && particle.eta() < cfgmfttrksel.cfgMftEtaMax && particle.pt() > cfgmfttrksel.cfgMftPtCutMin && particle.pt() < cfgmfttrksel.cfgMftPtCutMax)
lrmftmctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi());
}
}
Expand Down Expand Up @@ -1092,30 +1088,22 @@ struct LongrangeMaker {
return false;
}
histos.fill(HIST("EventHist"), 8);
if (cfgevtsel.isApplyNoCollInRofStandard && !col.selection_bit(o2::aod::evsel::kNoCollInRofStandard)) {
if (cfgevtsel.isApplyNoCollInTimeRangeStandard && !col.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
return false;
}
histos.fill(HIST("EventHist"), 9);
if (cfgevtsel.isApplyNoCollInRofStrict && !col.selection_bit(o2::aod::evsel::kNoCollInRofStrict)) {
if (cfgevtsel.isApplyNoCollInRofStandard && !col.selection_bit(o2::aod::evsel::kNoCollInRofStandard)) {
return false;
}
histos.fill(HIST("EventHist"), 10);
if (cfgevtsel.isApplyNoCollInTimeRangeStandard && !col.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
return false;
}
histos.fill(HIST("EventHist"), 11);
if (cfgevtsel.isApplyNoCollInTimeRangeStrict && !col.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStrict)) {
return false;
}
histos.fill(HIST("EventHist"), 12);
if (cfgevtsel.isApplyNoHighMultCollInPrevRof && !col.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)) {
return false;
}
histos.fill(HIST("EventHist"), 13);
histos.fill(HIST("EventHist"), 11);
if (cfgevtsel.isApplyOccuSelection && (col.trackOccupancyInTimeRange() > cfgevtsel.cfgOccuCut)) {
return false;
}
histos.fill(HIST("EventHist"), 14);
histos.fill(HIST("EventHist"), 12);
return true;
}

Expand Down
92 changes: 92 additions & 0 deletions PWGCF/TwoParticleCorrelations/Tasks/longrangecorrDerived.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,38 @@ struct LongrangecorrDerived {
} // pair loop
} // process MC mixed

template <typename TTriggers, typename TAssocs>
void processMcGenSame(McCollsTable::iterator const& mccollision, TTriggers const& triggers, TAssocs const& assocs)
{
if (std::abs(mccollision.posZ()) >= cfgSel.cfgVtxCut) {
return;
}
fillCollQA(mccollision);
auto multiplicity = mccollision.multiplicity();
fillCorrHist<CorrelationContainer::kCFStepAll>(same, triggers, assocs, false, mccollision.posZ(), multiplicity, 1.0);
} // process MC gen same

template <typename... TrackTypes>
void processMcGenMixed(McCollsTable const& mccollisions, TrackTypes&&... tracks)
{
auto getMultiplicity = [this](auto& collision) {
(void)this;
return collision.multiplicity();
};
using MixedBinning = FlexibleBinningPolicy<std::tuple<decltype(getMultiplicity)>, aod::mccollision::PosZ, decltype(getMultiplicity)>;
MixedBinning binningOnVtxAndMult{{getMultiplicity}, {cfgAxis.axisVtxZME, cfgAxis.axisMultME}, true};
auto tracksTuple = std::make_tuple(std::forward<TrackTypes>(tracks)...);
using TupleAtrack = std::tuple_element<0, decltype(tracksTuple)>::type;
using TupleBtrack = std::tuple_element<std::tuple_size_v<decltype(tracksTuple)> - 1, decltype(tracksTuple)>::type;
Pair<McCollsTable, TupleAtrack, TupleBtrack, MixedBinning> pairs{binningOnVtxAndMult, cfgSel.cfgNmixedevent, -1, mccollisions, tracksTuple, &cache};
for (auto it = pairs.begin(); it != pairs.end(); it++) {
auto& [col1, tracks1, col2, tracks2] = *it;
float eventweight = 1.0f / it.currentWindowNeighbours();
auto multiplicity = getMultiplicity(col1);
fillCorrHist<CorrelationContainer::kCFStepAll>(mixed, tracks1, tracks2, true, col1.posZ(), multiplicity, eventweight);
} // pair loop
} // process MC gen mixed

void processTpcft0aSE(CollsTable::iterator const& col, TrksTable const& tracks, Ft0aTrksTable const& ft0as)
{
processSame(col, tracks, ft0as);
Expand Down Expand Up @@ -700,6 +732,56 @@ struct LongrangecorrDerived {
processMcMixed(mccollisions, collisions, ft0as, ft0cs);
}

void processMcGenTpcft0aSE(McCollsTable::iterator const& mccollision, McTrksTable const& tracks, McFt0aTrksTable const& ft0as)
{
processMcGenSame(mccollision, tracks, ft0as);
}

void processMcGenTpcft0cSE(McCollsTable::iterator const& mccollision, McTrksTable const& tracks, McFt0cTrksTable const& ft0cs)
{
processMcGenSame(mccollision, tracks, ft0cs);
}

void processMcGenTpcmftSE(McCollsTable::iterator const& mccollision, McTrksTable const& tracks, McMftTrksTable const& mfts)
{
processMcGenSame(mccollision, tracks, mfts);
}

void processMcGenMftft0aSE(McCollsTable::iterator const& mccollision, McMftTrksTable const& mfts, McFt0aTrksTable const& ft0as)
{
processMcGenSame(mccollision, mfts, ft0as);
}

void processMcGenFt0aft0cSE(McCollsTable::iterator const& mccollision, McFt0aTrksTable const& ft0as, McFt0cTrksTable const& ft0cs)
{
processMcGenSame(mccollision, ft0as, ft0cs);
}

void processMcGenTpcft0aME(McCollsTable const& mccollisions, McTrksTable const& tracks, McFt0aTrksTable const& ft0as)
{
processMcGenMixed(mccollisions, tracks, ft0as);
}

void processMcGenTpcft0cME(McCollsTable const& mccollisions, McTrksTable const& tracks, McFt0cTrksTable const& ft0cs)
{
processMcGenMixed(mccollisions, tracks, ft0cs);
}

void processMcGenTpcmftME(McCollsTable const& mccollisions, McTrksTable const& tracks, McMftTrksTable const& mfts)
{
processMcGenMixed(mccollisions, tracks, mfts);
}

void processMcGenMftft0aME(McCollsTable const& mccollisions, McMftTrksTable const& mfts, McFt0aTrksTable const& ft0as)
{
processMcGenMixed(mccollisions, mfts, ft0as);
}

void processMcGenFt0aft0cME(McCollsTable const& mccollisions, McFt0aTrksTable const& ft0as, McFt0cTrksTable const& ft0cs)
{
processMcGenMixed(mccollisions, ft0as, ft0cs);
}

PROCESS_SWITCH(LongrangecorrDerived, processTpcft0aSE, "same event TPC vs FT0A", false);
PROCESS_SWITCH(LongrangecorrDerived, processTpcft0aME, "mixed event TPC vs FT0A", false);
PROCESS_SWITCH(LongrangecorrDerived, processTpcft0cSE, "same event TPC vs FT0C", false);
Expand Down Expand Up @@ -736,6 +818,16 @@ struct LongrangecorrDerived {
PROCESS_SWITCH(LongrangecorrDerived, processMcMftft0aME, "mixed MC event MFT vs FT0A", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcFt0aft0cSE, "same MC event FT0A vs FT0C", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcFt0aft0cME, "mixed MC event FT0A vs FT0C", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenTpcft0aSE, "same MC gen event TPC vs FT0A", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenTpcft0aME, "mixed MC gen event TPC vs FT0A", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenTpcft0cSE, "same MC gen event TPC vs FT0C", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenTpcft0cME, "mixed MC gen event TPC vs FT0C", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenTpcmftSE, "same MC gen event TPC vs MFT", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenTpcmftME, "mixed MC gen event TPC vs MFT", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenMftft0aSE, "same MC gen event MFT vs FT0A", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenMftft0aME, "mixed MC gen event MFT vs FT0A", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenFt0aft0cSE, "same MC gen event FT0A vs FT0C", false);
PROCESS_SWITCH(LongrangecorrDerived, processMcGenFt0aft0cME, "mixed MC gen event FT0A vs FT0C", false);
};

WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
Expand Down
Loading