Skip to content
Open
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
37 changes: 0 additions & 37 deletions PWGCF/TwoParticleCorrelations/DataModel/LongRangeDerived.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
#ifndef PWGCF_TWOPARTICLECORRELATIONS_DATAMODEL_LONGRANGEDERIVED_H_
#define PWGCF_TWOPARTICLECORRELATIONS_DATAMODEL_LONGRANGEDERIVED_H_

#include "PWGMM/Mult/DataModel/bestCollisionTable.h"

#include "Common/DataModel/Multiplicity.h"

#include <Framework/ASoA.h>
Expand Down Expand Up @@ -76,14 +74,6 @@ DECLARE_SOA_TABLE(LRFt0cMcTracks, "AOD", "LRFT0CMCTRACK",
lrcorrmctrktable::Phi);
using LRFt0cMcTrack = LRFt0cMcTracks::iterator;

DECLARE_SOA_TABLE(LRMftMcTracks, "AOD", "LRMFTMCTRACK",
o2::soa::Index<>,
lrcorrmctrktable::LRMcCollisionId,
lrcorrmctrktable::Pt,
lrcorrmctrktable::Eta,
lrcorrmctrktable::Phi);
using LRMftMcTrack = LRMftMcTracks::iterator;

namespace lrcorrcolltable
{
DECLARE_SOA_INDEX_COLUMN(LRMcCollision, lrMcCollision);
Expand Down Expand Up @@ -221,20 +211,6 @@ DECLARE_SOA_TABLE(LRV0Tracks, "AOD", "LRV0TRACK",
lrcorrtrktable::V0Type);
using LRV0Track = LRV0Tracks::iterator;

DECLARE_SOA_TABLE(LRMftTracks, "AOD", "LRMFTTRACK",
o2::soa::Index<>,
lrcorrtrktable::LRCollisionId,
lrcorrtrktable::AmbDegree,
lrcorrtrktable::Pt,
lrcorrtrktable::Eta,
lrcorrtrktable::Phi,
fwdtrack::NClusters,
fwdtrack::BestDCAXY,
fwdtrack::BestDCAZ,
lrcorrtrktable::IsCA,
lrcorrtrktable::IsReassigned);
using LRMftTrack = LRMftTracks::iterator;

DECLARE_SOA_TABLE(UpcLRMidTracks, "AOD", "UPCLRMIDTRACK",
o2::soa::Index<>,
lrcorrtrktable::UpcLRCollisionId,
Expand Down Expand Up @@ -280,19 +256,6 @@ DECLARE_SOA_TABLE(UpcLRV0Tracks, "AOD", "UPCLRV0TRACK",
lrcorrtrktable::V0Type);
using UpcLRV0Track = UpcLRV0Tracks::iterator;

DECLARE_SOA_TABLE(UpcLRMftTracks, "AOD", "UPCLRMFTTRACK",
o2::soa::Index<>,
lrcorrtrktable::UpcLRCollisionId,
lrcorrtrktable::AmbDegree,
lrcorrtrktable::Pt,
lrcorrtrktable::Eta,
lrcorrtrktable::Phi,
fwdtrack::NClusters,
fwdtrack::BestDCAXY,
fwdtrack::BestDCAZ,
lrcorrtrktable::IsCA,
lrcorrtrktable::IsReassigned);
using UpcLRMftTrack = UpcLRMftTracks::iterator;
} // namespace o2::aod

#endif // PWGCF_TWOPARTICLECORRELATIONS_DATAMODEL_LONGRANGEDERIVED_H_
204 changes: 11 additions & 193 deletions PWGCF/TwoParticleCorrelations/TableProducer/longrangeMaker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
#include "PWGCF/Core/CorrelationContainer.h"
#include "PWGCF/TwoParticleCorrelations/DataModel/LongRangeDerived.h"
#include "PWGLF/DataModel/LFStrangenessTables.h"
#include "PWGMM/Mult/DataModel/bestCollisionTable.h"
#include "PWGUD/Core/SGCutParHolder.h"
#include "PWGUD/Core/SGSelector.h"
#include "PWGUD/Core/UDHelpers.h"
Expand Down Expand Up @@ -62,6 +61,7 @@

#include <algorithm>
#include <array>
#include <bitset>
#include <chrono>
#include <cmath>
#include <cstdint>
Expand Down Expand Up @@ -152,20 +152,6 @@ struct LongrangeMaker {
Configurable<std::string> cfgEffccdbPath{"cfgEffccdbPath", "Users/a/abmodak/Efficiency/OO/default", "Browse track eff object from CCDB"};
} cfgtrksel;

struct : ConfigurableGroup {
std::string prefix = "MftTrackSelection_group";
Configurable<bool> cfgUseChi2Cut{"cfgUseChi2Cut", false, "Use condition on MFT track: chi2/Nclusters"};
Configurable<bool> useMftPtCut{"useMftPtCut", true, "Choose to apply MFT track pT cut"};
Configurable<int> cfgMftCluster{"cfgMftCluster", 5, "cut on MFT Cluster"};
Configurable<float> cfgMftEtaMax{"cfgMftEtaMax", -2.4f, "Maximum MFT eta cut"};
Configurable<float> cfgMftEtaMin{"cfgMftEtaMin", -3.6f, "Minimum MFT eta cut"};
Configurable<float> cfgMftDcaxy{"cfgMftDcaxy", 2.0f, "cut on DCA xy for MFT tracks"};
Configurable<float> cfgMftDcaz{"cfgMftDcaz", 2.0f, "cut on DCA z for MFT tracks"};
Configurable<float> cfgMftPtCutMin{"cfgMftPtCutMin", 0.f, "minimum accepted MFT track pT"};
Configurable<float> cfgMftPtCutMax{"cfgMftPtCutMax", 10.f, "maximum accepted MFT track pT"};
Configurable<float> cfgMaxChi2NCl{"cfgMaxChi2NCl", 1.f, "Cut on MFT track: chi2/Nclusters"};
} cfgmfttrksel;

struct : ConfigurableGroup {
std::string prefix = "FitTrackSelection_group";
Configurable<float> cfgFt0aEtaMax{"cfgFt0aEtaMax", 4.9f, "Maximum FT0A eta cut"};
Expand Down Expand Up @@ -214,7 +200,6 @@ struct LongrangeMaker {
std::string prefix = "ConfigAxis_group";
ConfigurableAxis axisAmplitude{"axisAmplitude", {5000, 0, 10000}, "FT0 amplitude"};
ConfigurableAxis axisChannel{"axisChannel", {208, 0, 208}, "FT0 channel"};
ConfigurableAxis axisMFTAmbDegree{"axisMFTAmbDegree", {50, -0.5, 49.5}, "Track Ambiguity axis"};
ConfigurableAxis axisEta = {"axisEta", {100, -5, 5}, "eta axis"};
ConfigurableAxis axisPhi{"axisPhi", {72, 0, TwoPI}, "#phi axis"};

Expand Down Expand Up @@ -302,25 +287,6 @@ struct LongrangeMaker {

histos.add("hSelectionResult", "hSelectionResult", kTH1I, {{5, -0.5, 4.5}});

histos.add("hMftTrkSel", "hMftTrkSel", kTH1D, {axisTrackSel}, false);
auto hMftTrkStat = histos.get<TH1>(HIST("hMftTrkSel"));
auto* xMftTrk = hMftTrkStat->GetXaxis();
xMftTrk->SetBinLabel(1, "All");
xMftTrk->SetBinLabel(2, "Cluster selection");
xMftTrk->SetBinLabel(3, "Chi2/NCluster selection");
xMftTrk->SetBinLabel(4, "eta selection");
xMftTrk->SetBinLabel(5, "pT selection");
xMftTrk->SetBinLabel(6, "CA track selection");

histos.add("hMftBestTrkSel", "hMftBestTrkSel", kTH1D, {axisTrackSel}, false);
auto hMftBestTrkStat = histos.get<TH1>(HIST("hMftBestTrkSel"));
auto* xMftBestTrk = hMftBestTrkStat->GetXaxis();
xMftBestTrk->SetBinLabel(1, "All");
xMftBestTrk->SetBinLabel(2, "BestSelCollID selection");
xMftBestTrk->SetBinLabel(3, "Orphan track selection");
xMftBestTrk->SetBinLabel(4, "DCAxy selection");
xMftBestTrk->SetBinLabel(5, "DCAz selection");

histos.add("FT0A_Amp", "FT0A_Amp", kTH1D, {cfgAxis.axisAmplitude});
histos.add("FT0A_Amp_gaincorrected", "FT0A_Amp_gaincorrected", kTH1D, {cfgAxis.axisAmplitude});
histos.add("FT0A_Channel_vs_Amp", "FT0A_Channel_vs_Amp", kTH2D, {cfgAxis.axisChannel, cfgAxis.axisAmplitude});
Expand Down Expand Up @@ -374,14 +340,12 @@ struct LongrangeMaker {
Produces<aod::LRMidMcTracks> lrmidmctracks;
Produces<aod::LRFt0aMcTracks> lrft0amctracks;
Produces<aod::LRFt0cMcTracks> lrft0cmctracks;
Produces<aod::LRMftMcTracks> lrmftmctracks;

Produces<aod::LRCollisions> lrcollision;
Produces<aod::LRCollLabels> lrcollisionMcLabel;
Produces<aod::LRMidTracks> lrmidtracks;
Produces<aod::LRFt0aTracks> lrft0atracks;
Produces<aod::LRFt0cTracks> lrft0ctracks;
Produces<aod::LRMftTracks> lrmfttracks;
Produces<aod::LRV0Tracks> lrv0tracks;

Produces<aod::UpcLRCollisions> upclrcollision;
Expand All @@ -391,21 +355,19 @@ struct LongrangeMaker {
Produces<aod::UpcLRMidTracks> upclrmidtracks;
Produces<aod::UpcLRFt0aTracks> upclrft0atracks;
Produces<aod::UpcLRFt0cTracks> upclrft0ctracks;
Produces<aod::UpcLRMftTracks> upclrmfttracks;
Produces<aod::UpcLRV0Tracks> upclrv0tracks;

Filter fTracksEta = nabs(aod::track::eta) < cfgtrksel.cfgEtaCut;
Filter fTracksPt = (aod::track::pt > cfgtrksel.cfgPtCutMin) && (aod::track::pt < cfgtrksel.cfgPtCutMax);

using CollTable = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0Ms>;
using TrksTable = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::pidTOFbeta, aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>>;
using MftTrkTable = aod::MFTTracks;
using BCs = soa::Join<aod::BCsWithTimestamps, aod::BcSels, aod::Run3MatchedToBCSparse>;

std::vector<float> ft0gainvalues{};
void processData(CollTable::iterator const& col, TrksTable const& tracks,
aod::FT0s const&, MftTrkTable const&,
soa::SmallGroups<aod::BestCollisionsFwd3d> const& reassoMftTracks,
void processData(CollTable::iterator const& col,
TrksTable const& tracks,
aod::FT0s const&,
aod::V0Datas const& V0s, aod::BCsWithTimestamps const&)
{
if (!isEventSelected(col)) {
Expand Down Expand Up @@ -548,28 +510,6 @@ struct LongrangeMaker {
}
}

// mft tracks
for (const auto& reassoMftTrack : reassoMftTracks) {
if (!isMftBestTrackSelected(reassoMftTrack))
continue;
auto itrack = reassoMftTrack.template mfttrack_as<MftTrkTable>();
if (!isMftTrackSelected(itrack)) {
continue;
}
auto phi = itrack.phi();
o2::math_utils::bringTo02Pi(phi);
lrmfttracks(lrcollision.lastIndex(),
reassoMftTrack.ambDegree(),
itrack.pt(),
itrack.eta(),
phi,
itrack.nClusters(),
reassoMftTrack.bestDCAXY(),
reassoMftTrack.bestDCAZ(),
itrack.isCA(),
itrack.collisionId() != reassoMftTrack.bestCollisionId());
}

// v0 loop
for (const auto& v0 : V0s) {
if (!isSelectV0Track(v0)) { // Quality selection for V0 prongs
Expand Down Expand Up @@ -624,9 +564,7 @@ struct LongrangeMaker {
void processUpc(CollTable::iterator const& col, BCs const& bcs,
TrksTable const& tracks, aod::Zdcs const&,
aod::FV0As const& fv0as, aod::FT0s const& ft0s,
aod::FDDs const& fdds, MftTrkTable const&,
soa::SmallGroups<aod::BestCollisionsFwd3d> const& reassoMftTracks,
aod::V0Datas const& V0s)
aod::FDDs const& fdds, aod::V0Datas const& V0s)
{
if (!isEventSelected(col)) {
return;
Expand Down Expand Up @@ -728,27 +666,6 @@ struct LongrangeMaker {
}
}

for (const auto& reassoMftTrack : reassoMftTracks) {
if (!isMftBestTrackSelected(reassoMftTrack))
continue;
auto itrack = reassoMftTrack.template mfttrack_as<MftTrkTable>();
if (!isMftTrackSelected(itrack)) {
continue;
}
auto phi = itrack.phi();
o2::math_utils::bringTo02Pi(phi);
upclrmfttracks(upclrcollision.lastIndex(),
reassoMftTrack.ambDegree(),
itrack.pt(),
itrack.eta(),
phi,
itrack.nClusters(),
reassoMftTrack.bestDCAXY(),
reassoMftTrack.bestDCAZ(),
itrack.isCA(),
itrack.collisionId() != reassoMftTrack.bestCollisionId());
}

// v0 loop
for (const auto& v0 : V0s) {
if (!isSelectV0Track(v0)) { // Quality selection for V0 prongs
Expand Down Expand Up @@ -804,13 +721,14 @@ struct LongrangeMaker {
using ColMCTrueTable = soa::Join<aod::McCollisions, aod::MultMCExtras, aod::McCollsExtra>;
using ColMCRecTable = soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0Ms>>;
using TrksMCRecTable = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::McTrackLabels, aod::TrackSelection, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::pidTOFbeta, aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>>;
using MftTrkMCRecTable = soa::Join<aod::MFTTracks, aod::McMFTTrackLabels>;
Preslice<TrksMCRecTable> perColMidtrack = aod::track::collisionId;
PresliceUnsorted<aod::BestCollisionsFwd3d> perColMftTrack = aod::fwdtrack::bestCollisionId;

void processMCRec(ColMCTrueTable::iterator const& mcCollision, ColMCRecTable const& RecCols, TrksMCRecTable const& RecTracks,
aod::FT0s const&, MftTrkMCRecTable const&, aod::BestCollisionsFwd3d const& reassoMftTracks,
aod::McParticles const& mcparticles, aod::BCsWithTimestamps const&)
void processMCRec(ColMCTrueTable::iterator const& mcCollision,
ColMCRecTable const& RecCols,
TrksMCRecTable const& RecTracks,
aod::FT0s const&,
aod::McParticles const& mcparticles,
aod::BCsWithTimestamps const&)
{
auto multiplicity = 0;
for (const auto& particle : mcparticles) {
Expand Down Expand Up @@ -958,28 +876,6 @@ struct LongrangeMaker {
}
}

auto recMftTracksPart = reassoMftTracks.sliceBy(perColMftTrack, RecCol.globalIndex());
for (const auto& reassoMftTrack : recMftTracksPart) {
if (!isMftBestTrackSelected(reassoMftTrack))
continue;
auto itrack = reassoMftTrack.template mfttrack_as<MftTrkMCRecTable>();
if (!isMftTrackSelected(itrack)) {
continue;
}
auto phi = itrack.phi();
o2::math_utils::bringTo02Pi(phi);
lrmfttracks(lrcollision.lastIndex(),
reassoMftTrack.ambDegree(),
itrack.pt(),
itrack.eta(),
phi,
itrack.nClusters(),
reassoMftTrack.bestDCAXY(),
reassoMftTrack.bestDCAZ(),
itrack.isCA(),
itrack.collisionId() != reassoMftTrack.bestCollisionId());
}

for (const auto& particle : mcparticles) {
if (!isGenPartSelected(particle)) {
continue;
Expand All @@ -992,9 +888,6 @@ struct LongrangeMaker {
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 && particle.pt() > cfgmfttrksel.cfgMftPtCutMin && particle.pt() < cfgmfttrksel.cfgMftPtCutMax)
lrmftmctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi());
}
}
}
Expand Down Expand Up @@ -1028,9 +921,6 @@ struct LongrangeMaker {
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 && particle.pt() > cfgmfttrksel.cfgMftPtCutMin && particle.pt() < cfgmfttrksel.cfgMftPtCutMax)
lrmftmctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi());
}
}

Expand Down Expand Up @@ -1319,78 +1209,6 @@ struct LongrangeMaker {
return -std::log(std::tan(0.5 * theta));
}

template <bool fillHis = true, typename CheckMftTrack>
bool isMftTrackSelected(CheckMftTrack const& track)
{
if constexpr (fillHis) {
histos.fill(HIST("hMftTrkSel"), 1);
}
if (track.nClusters() < cfgmfttrksel.cfgMftCluster) {
return false;
}
if constexpr (fillHis) {
histos.fill(HIST("hMftTrkSel"), 2);
}
if (cfgmfttrksel.cfgUseChi2Cut) {
float nclMft = std::max(2.0f * track.nClusters() - 5.0f, 1.0f);
float mftChi2NCl = track.chi2() / nclMft;
if (mftChi2NCl > cfgmfttrksel.cfgMaxChi2NCl)
return false;
}
if constexpr (fillHis) {
histos.fill(HIST("hMftTrkSel"), 3);
}
if (track.eta() > cfgmfttrksel.cfgMftEtaMax || track.eta() < cfgmfttrksel.cfgMftEtaMin) {
return false;
}
if constexpr (fillHis) {
histos.fill(HIST("hMftTrkSel"), 4);
}
if (cfgmfttrksel.useMftPtCut && (track.pt() < cfgmfttrksel.cfgMftPtCutMin || track.pt() > cfgmfttrksel.cfgMftPtCutMax)) {
return false;
}
if constexpr (fillHis) {
histos.fill(HIST("hMftTrkSel"), 5);
}
if constexpr (fillHis) {
histos.fill(HIST("hMftTrkSel"), 6);
}
return true;
}

template <bool fillHis = true, typename CheckMftTrack>
bool isMftBestTrackSelected(CheckMftTrack const& mfttrack)
{
if constexpr (fillHis) {
histos.fill(HIST("hMftBestTrkSel"), 1);
}
if (mfttrack.bestCollisionId() < CintZero) {
return false;
}
if constexpr (fillHis) {
histos.fill(HIST("hMftBestTrkSel"), 2);
}
if (mfttrack.ambDegree() == CintZero) {
return false;
}
if constexpr (fillHis) {
histos.fill(HIST("hMftBestTrkSel"), 3);
}
if (std::abs(mfttrack.bestDCAXY()) >= cfgmfttrksel.cfgMftDcaxy) {
return false;
}
if constexpr (fillHis) {
histos.fill(HIST("hMftBestTrkSel"), 4);
}
if (std::abs(mfttrack.bestDCAZ()) >= cfgmfttrksel.cfgMftDcaz) {
return false;
}
if constexpr (fillHis) {
histos.fill(HIST("hMftBestTrkSel"), 5);
}
return true;
}

template <typename T1>
bool isSelectV0Track(const T1& v0)
{
Expand Down
Loading
Loading