Skip to content
Merged
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
2 changes: 2 additions & 0 deletions PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2022 CERN and copyright holders of ALICE O2.

Check warning on line 1 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Provide mandatory file documentation.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
Expand All @@ -13,7 +13,7 @@
/// \brief FemtoDreamParticleHisto - Histogram class for tracks, V0s and cascades
/// \author Andi Mathis, TU München, andreas.mathis@ph.tum.de
/// \author Georgios Mantzaridis, TU München, georgios.mantzaridis@tum.de
/// \author Anton Riedel, TU München, anton.riedel@tum.de

Check warning on line 16 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \file is missing, incorrect or misplaced.

#ifndef PWGCF_FEMTODREAM_CORE_FEMTODREAMPARTICLEHISTO_H_
#define PWGCF_FEMTODREAM_CORE_FEMTODREAMPARTICLEHISTO_H_
Expand All @@ -24,7 +24,7 @@
#include "Framework/HistogramRegistry.h"
#include "CommonConstants/PhysicsConstants.h"

using namespace o2::framework;

Check warning on line 27 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[using-directive]

Using directives are not allowed in headers.

namespace o2::analysis::femtoDream
{
Expand All @@ -49,13 +49,13 @@
/// \param tempFitVarpTAxis axis object for the pT axis in the pT vs. tempFitVar plots
/// \param tempFitVarAxis axis object for the tempFitVar axis
template <o2::aod::femtodreamMCparticle::MCType mc, typename T>
void init_base(std::string folderName, std::string tempFitVarAxisTitle, T& pTAxis, T& tempFitVarAxis, T& InvMassAxis, T& /*multAxis*/)

Check warning on line 52 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/function-variable]

Use lowerCamelCase for names of functions and variables.
{
std::string folderSuffix = static_cast<std::string>(o2::aod::femtodreamMCparticle::MCTypeName[mc]).c_str();
/// Histograms of the kinematic properties
mHistogramRegistry->add((folderName + folderSuffix + "/hPt").c_str(), "; #it{p}_{T} (GeV/#it{c}); Entries", kTH1F, {{240, 0, 6}});
mHistogramRegistry->add((folderName + folderSuffix + "/hEta").c_str(), "; #eta; Entries", kTH1F, {{200, -1.5, 1.5}});
mHistogramRegistry->add((folderName + folderSuffix + "/hPhi").c_str(), "; #phi; Entries", kTH1F, {{200, 0, TMath::TwoPi()}});

Check warning on line 58 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[external-pi]

Consider using the PI constant (and its multiples and fractions) defined in o2::constants::math.

/// particle specific histogramms for the TempFitVar column in FemtoDreamParticles
if constexpr (o2::aod::femtodreamMCparticle::MCType::kRecon == mc) {
Expand All @@ -82,8 +82,8 @@
std::string folderSuffix = static_cast<std::string>(o2::aod::femtodreamMCparticle::MCTypeName[mc]).c_str();

mHistogramRegistry->add((folderName + folderSuffix + "/hMomentumVsEta").c_str(), "; #it{p} (GeV/#it{c}); #eta", kTH2F, {{500, 0, 10}, {300, -1.5, 1.5}});
mHistogramRegistry->add((folderName + folderSuffix + "/hMomentumVsPhi").c_str(), "; #it{p} (GeV/#it{c}); #phi", kTH2F, {{500, 0, 10}, {360, 0., TMath::TwoPi()}});

Check warning on line 85 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[external-pi]

Consider using the PI constant (and its multiples and fractions) defined in o2::constants::math.
mHistogramRegistry->add((folderName + folderSuffix + "/hEtaVsPhi").c_str(), "; #eta; #phi", kTH2F, {{300, -1.5, 1.5}, {360, 0., TMath::TwoPi()}});

Check warning on line 86 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[external-pi]

Consider using the PI constant (and its multiples and fractions) defined in o2::constants::math.

if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kTrack || mParticleType == o2::aod::femtodreamparticle::ParticleType::kV0Child || mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascadeV0Child || mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascadeBachelor) {
mHistogramRegistry->add((folderName + folderSuffix + "/hCharge").c_str(), "; Charge; Entries", kTH1F, {{5, -2.5, 2.5}});
Expand Down Expand Up @@ -141,6 +141,7 @@
} else if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascade) {
mHistogramRegistry->add((folderName + folderSuffix + "/hDaughDCA").c_str(), "; DCA^{daugh} (cm); Entries", kTH1F, {{1000, 0, 10}});
mHistogramRegistry->add((folderName + folderSuffix + "/hTransRadius").c_str(), "; #it{r}_{xy} (cm); Entries", kTH1F, {{1500, 0, 150}});
mHistogramRegistry->add((folderName + folderSuffix + "/hTransRadius_pT").c_str(), "; p_{T}; #it{r}_{xy} (cm)", kTH2F, {{100, 0, 6}, {1500, 0, 150}});
mHistogramRegistry->add((folderName + folderSuffix + "/hDecayVtxX").c_str(), "; #it{Vtx}_{x} (cm); Entries", kTH1F, {{2000, 0, 200}});
mHistogramRegistry->add((folderName + folderSuffix + "/hDecayVtxY").c_str(), "; #it{Vtx}_{y} (cm)); Entries", kTH1F, {{2000, 0, 200}});
mHistogramRegistry->add((folderName + folderSuffix + "/hDecayVtxZ").c_str(), "; #it{Vtx}_{z} (cm); Entries", kTH1F, {{2000, 0, 200}});
Expand All @@ -166,7 +167,7 @@
mHistogramRegistry->add((folderName + folderSuffix + "/hNoMCtruthCounter").c_str(), "; Counter; Entries", kTH1I, {{1, -0.5, 0.5}});
mHistogramRegistry->add((folderName + folderSuffix + "/hPt_DiffTruthReco").c_str(), "; p^{truth}_{T}; (p^{reco}_{T} - p^{truth}_{T}) / p^{truth}_{T}", kTH2F, {tempFitVarpTAxis, {200, -1, 1}});
mHistogramRegistry->add((folderName + folderSuffix + "/hEta_DiffTruthReco").c_str(), "; #eta^{truth}; #eta^{reco} - #eta^{truth}", kTH2F, {{200, -1, 1}, {200, -1, 1}});
mHistogramRegistry->add((folderName + folderSuffix + "/hPhi_DiffTruthReco").c_str(), "; #varphi^{truth}; #varphi^{reco} - #varphi^{truth}", kTH2F, {{720, 0, TMath::TwoPi()}, {200, -1, 1}});

Check warning on line 170 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[external-pi]

Consider using the PI constant (and its multiples and fractions) defined in o2::constants::math.

if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kTrack || mParticleType == o2::aod::femtodreamparticle::ParticleType::kV0Child || mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascadeV0Child || mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascadeBachelor) {
/// Track histograms
Expand Down Expand Up @@ -394,7 +395,7 @@
float pidTPC = 0.;
float pidTOF = 0.;

switch (abs(mPDG)) {

Check warning on line 398 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
case kElectron:
pidTPC = part.tpcNSigmaEl();
pidTOF = part.tofNSigmaEl();
Expand Down Expand Up @@ -446,6 +447,7 @@
} else if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kCascade) {
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hDaughDCA"), part.daughDCA());
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hTransRadius"), part.transRadius());
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hTransRadius_pT"), part.pt(), part.transRadius());
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hDecayVtxX"), part.decayVtxX());
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hDecayVtxY"), part.decayVtxY());
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/hDecayVtxZ"), part.decayVtxZ());
Expand All @@ -472,7 +474,7 @@
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hEta_DiffTruthReco"), MCpart.eta(), (part.eta() - MCpart.eta()));
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hPhi_DiffTruthReco"), MCpart.phi(), (part.phi() - MCpart.phi()));

if (abs(pdgcode) == mPDG) { // fill this histogramm only for TRUE protons (independently of their origin) for the track purity estimation

Check warning on line 477 in PWGCF/FemtoDream/Core/femtoDreamParticleHisto.h

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
mHistogramRegistry->fill(HIST(o2::aod::femtodreamparticle::ParticleTypeName[mParticleType]) + HIST(mFolderSuffix[mFolderSuffixType]) + HIST("_MC/hPt_ReconNoFake"), part.pt());
}
if constexpr (mParticleType == o2::aod::femtodreamparticle::ParticleType::kTrack || mParticleType == o2::aod::femtodreamparticle::ParticleType::kV0Child) {
Expand Down
27 changes: 27 additions & 0 deletions PWGCF/FemtoDream/TableProducer/femtoDreamProducerTask.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,16 @@ struct femtoDreamProducerTask {
// (aod::v0data::v0radius > V0TranRadV0Min.value); to be added, not working
// for now do not know why

/// General options
struct : o2::framework::ConfigurableGroup {
Configurable<float> ConfTrkMinChi2PerClusterTPC{"ConfTrkMinChi2PerClusterTPC", 0.f, "Lower limit for chi2 of TPC; currently for testing only"};
Configurable<float> ConfTrkMaxChi2PerClusterTPC{"ConfTrkMaxChi2PerClusterTPC", 1000.f, "Upper limit for chi2 of TPC; currently for testing only"};
Configurable<float> ConfTrkMaxChi2PerClusterITS{"ConfTrkMaxChi2PerClusterITS", 1000.0f, "Minimal track selection: max allowed chi2 per ITS cluster"}; // 36.0 is default
Configurable<bool> ConfTrkTPCRefit{"ConfTrkTPCRefit", false, "True: require TPC refit"};
Configurable<bool> ConfTrkITSRefit{"ConfTrkITSRefit", false, "True: require ITS refit"};

} OptionTrackSpecialSelections;

HistogramRegistry qaRegistry{"QAHistos", {}, OutputObjHandlingPolicy::AnalysisObject};
HistogramRegistry TrackRegistry{"Tracks", {}, OutputObjHandlingPolicy::AnalysisObject};
HistogramRegistry V0Registry{"V0", {}, OutputObjHandlingPolicy::AnalysisObject};
Expand All @@ -270,6 +280,8 @@ struct femtoDreamProducerTask {

int CutBits = 8 * sizeof(o2::aod::femtodreamparticle::cutContainerType);
TrackRegistry.add("AnalysisQA/CutCounter", "; Bit; Counter", kTH1F, {{CutBits + 1, -0.5, CutBits + 0.5}});
TrackRegistry.add("AnalysisQA/Chi2ITSTPCperCluster", "; ITS_Chi2; TPC_Chi2", kTH2F, {{100, 0, 50}, {100, 0, 20}});
TrackRegistry.add("AnalysisQA/RefitITSTPC", "; ITS_Refit; TPC_Refit", kTH2F, {{2, 0, 2}, {2, 0, 2}});
TrackRegistry.add("AnalysisQA/getGenStatusCode", "; Bit; Entries", kTH1F, {{200, 0, 200}});
TrackRegistry.add("AnalysisQA/getProcess", "; Bit; Entries", kTH1F, {{200, 0, 200}});
TrackRegistry.add("AnalysisQA/Mother", "; Bit; Entries", kTH1F, {{4000, -4000, 4000}});
Expand Down Expand Up @@ -700,9 +712,24 @@ struct femtoDreamProducerTask {
/// if the most open selection criteria are not fulfilled there is no
/// point looking further at the track
trackCuts.fillQA<aod::femtodreamparticle::ParticleType::kTrack, aod::femtodreamparticle::TrackType::kNoChild, 0>(track);

if (track.tpcChi2NCl() < OptionTrackSpecialSelections.ConfTrkMinChi2PerClusterTPC || track.tpcChi2NCl() > OptionTrackSpecialSelections.ConfTrkMaxChi2PerClusterTPC) {
continue;
}
if (track.itsChi2NCl() > OptionTrackSpecialSelections.ConfTrkMaxChi2PerClusterITS) {
continue;
}
if ((OptionTrackSpecialSelections.ConfTrkTPCRefit && !track.hasTPC()) || (OptionTrackSpecialSelections.ConfTrkITSRefit && !track.hasITS())) {
continue;
}

if (!trackCuts.isSelectedMinimal(track)) {
continue;
}

TrackRegistry.fill(HIST("AnalysisQA/Chi2ITSTPCperCluster"), track.itsChi2NCl(), track.tpcChi2NCl());
TrackRegistry.fill(HIST("AnalysisQA/RefitITSTPC"), track.hasITS(), track.hasTPC());

trackCuts.fillQA<aod::femtodreamparticle::ParticleType::kTrack, aod::femtodreamparticle::TrackType::kNoChild, 1>(track);
// the bit-wise container of the systematic variations is obtained
std::array<o2::aod::femtodreamparticle::cutContainerType, 2> cutContainer;
Expand Down
20 changes: 18 additions & 2 deletions PWGCF/FemtoDream/Tasks/femtoDreamCollisionMasker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,8 @@ struct femoDreamCollisionMasker {
FilterTempFitVarMax.at(CollisionMasks::kPartOne).push_back(option.defaultValue.get<float>());
} else if (option.name.compare(std::string("ConfMinDCAxy")) == 0) {
FilterTempFitVarMin.at(CollisionMasks::kPartOne).push_back(option.defaultValue.get<float>());
} else if (option.name.compare(std::string("ConfDCACutPtDep")) == 0) {
TrackDCACutPtDep.push_back(option.defaultValue.get<bool>());
}
}
} else if (device.name.find("femto-dream-triplet-task-track-track-v0") != std::string::npos) {
Expand Down Expand Up @@ -308,6 +310,8 @@ struct femoDreamCollisionMasker {
FilterPtMin.at(CollisionMasks::kPartThree).push_back(option.defaultValue.get<float>());
} else if (option.name.compare(std::string("Conf_maxPt_V0")) == 0) {
FilterPtMax.at(CollisionMasks::kPartThree).push_back(option.defaultValue.get<float>());
} else if (option.name.compare(std::string("ConfDCACutPtDep")) == 0) {
TrackDCACutPtDep.push_back(option.defaultValue.get<bool>());
}
}
}
Expand Down Expand Up @@ -388,12 +392,24 @@ struct femoDreamCollisionMasker {
if (track.partType() != static_cast<uint8_t>(femtodreamparticle::kTrack)) {
continue;
}

// check filter cuts
if (track.pt() < FilterPtMin.at(P).at(index) || track.pt() > FilterPtMax.at(P).at(index) ||
track.tempFitVar() > FilterTempFitVarMax.at(P).at(index) || track.tempFitVar() < FilterTempFitVarMin.at(P).at(index)) {
if (track.pt() < FilterPtMin.at(P).at(index) || track.pt() > FilterPtMax.at(P).at(index)) {
// if they are not passed, skip the particle
continue;
}

if (TrackDCACutPtDep.at(index)) {
if (std::fabs(track.tempFitVar()) > 0.0105f + (0.035f / std::pow(track.pt(), 1.1f))) {
continue;
}
} else {
// or cut on the DCA directly
if (track.tempFitVar() < FilterTempFitVarMin.at(P).at(index) || track.tempFitVar() > FilterTempFitVarMax.at(P).at(index)) {
continue;
}
}

// set the bit at the index of the selection equal to one if the track passes all selections
// check track cuts
if ((track.cut() & TrackCutBits.at(P).at(index)) == TrackCutBits.at(P).at(index)) {
Expand Down
18 changes: 18 additions & 0 deletions PWGCF/FemtoDream/Tasks/femtoDreamDebugV0.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
#include <cstdint>
#include <iostream>
#include <vector>

#include "TVector3.h"

#include "Framework/AnalysisTask.h"
#include "Framework/runDataProcessing.h"
#include "Framework/HistogramRegistry.h"
Expand Down Expand Up @@ -84,6 +87,7 @@ struct femtoDreamDebugV0 {
posChildHistos.init(&V0Registry, ConfBinmult, ConfDummy, ConfV0ChildTempFitVarMomentumBins, ConfDummy, ConfDummy, ConfChildTempFitVarBins, ConfV0ChildNsigmaTPCBins, ConfV0ChildNsigmaTOFBins, ConfV0ChildNsigmaTPCTOFBins, ConfV0ChildNsigmaITSBins, ConfV0InvMassBins, false, ConfV01_ChildPos_PDGCode.value, true);
negChildHistos.init(&V0Registry, ConfBinmult, ConfDummy, ConfV0ChildTempFitVarMomentumBins, ConfDummy, ConfDummy, ConfChildTempFitVarBins, ConfV0ChildNsigmaTPCBins, ConfV0ChildNsigmaTOFBins, ConfV0ChildNsigmaTPCTOFBins, ConfV0ChildNsigmaITSBins, ConfV0InvMassBins, false, ConfV01_ChildNeg_PDGCode, true);
V0Histos.init(&V0Registry, ConfBinmult, ConfDummy, ConfV0TempFitVarMomentumBins, ConfDummy, ConfDummy, ConfV0TempFitVarBins, ConfV0ChildNsigmaTPCBins, ConfV0ChildNsigmaTOFBins, ConfV0ChildNsigmaTPCTOFBins, ConfV0ChildNsigmaITSBins, ConfV0InvMassBins, false, ConfV01_PDGCode.value, true);
V0Registry.add("hArmenterosPodolanski/hArmenterosPodolanskiPlot", "; #alpha; p_{T} (MeV/#it{c})", kTH2F, {{100, -1, 1}, {500, -0.3, 2}});
}

/// Porduce QA plots for V0 selection in FemtoDream framework
Expand Down Expand Up @@ -112,6 +116,20 @@ struct femtoDreamDebugV0 {
negChild.partType() == uint8_t(aod::femtodreamparticle::ParticleType::kV0Child) &&
(negChild.cut() & ConfV01_ChildNeg_CutBit) == ConfV01_ChildNeg_CutBit &&
(negChild.pidcut() & ConfV01_ChildNeg_TPCBit) == ConfV01_ChildNeg_TPCBit) {

TVector3 p_parent(part.px(), part.py(), part.pz()); // Parent momentum (px, py, pz)
TVector3 p_plus(posChild.px(), posChild.py(), posChild.pz()); // Daughter 1 momentum (px, py, pz)
TVector3 p_minus(negChild.px(), negChild.py(), negChild.pz()); // Daughter 2 momentum (px, py, pz)

double pL_plus = p_plus.Dot(p_parent) / p_parent.Mag();
double pL_minus = p_minus.Dot(p_parent) / p_parent.Mag();
float alpha = (pL_plus - pL_minus) / (pL_plus + pL_minus);

TVector3 p_perp = p_plus - (p_parent * (pL_plus / p_parent.Mag()));
double qtarm = p_perp.Mag();

V0Registry.fill(HIST("hArmenterosPodolanski/hArmenterosPodolanskiPlot"), alpha, qtarm);

V0Histos.fillQA<false, true>(part, static_cast<aod::femtodreamparticle::MomentumType>(ConfV0TempFitVarMomentum.value), col.multNtr(), col.multV0M());
posChildHistos.fillQA<false, true>(posChild, static_cast<aod::femtodreamparticle::MomentumType>(ConfV0TempFitVarMomentum.value), col.multNtr(), col.multV0M());
negChildHistos.fillQA<false, true>(negChild, static_cast<aod::femtodreamparticle::MomentumType>(ConfV0TempFitVarMomentum.value), col.multNtr(), col.multV0M());
Expand Down
14 changes: 10 additions & 4 deletions PWGCF/FemtoDream/Tasks/femtoDreamTripletTaskTrackTrackTrack.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ struct femtoDreamTripletTaskTrackTrackTrack {
Configurable<o2::aod::femtodreamparticle::cutContainerType> ConfTPCTOFPIDBit{"ConfTPCTOFPIDBit", 8, "PID TPCTOF bit from cutCulator"};
Configurable<bool> ConfIsMC{"ConfIsMC", false, "Enable additional Histogramms in the case of a MonteCarlo Run"};
Configurable<bool> ConfUse3D{"ConfUse3D", false, "Enable three dimensional histogramms (to be used only for analysis with high statistics): k* vs mT vs multiplicity"};
Configurable<bool> ConfDCACutPtDep{"ConfDCACutPtDep", false, "Use pt dependent dca cut for tracks"};

// Which particles to analyse; currently support only for same species and cuts triplets
Configurable<int> ConfPDGCodePart{"ConfPDGCodePart", 2212, "Particle PDG code"};
Expand All @@ -76,15 +77,20 @@ struct femtoDreamTripletTaskTrackTrackTrack {
(ncheckbit(aod::femtodreamparticle::cut, ConfCutPart)) &&
(aod::femtodreamparticle::pt < ConfMaxpT) &&
(aod::femtodreamparticle::pt > ConfMinpT) &&
(aod::femtodreamparticle::tempFitVar < ConfMaxDCAxy) &&
(aod::femtodreamparticle::tempFitVar > ConfMinDCAxy);
ifnode(ConfDCACutPtDep, (nabs(aod::femtodreamparticle::tempFitVar) <= 0.0105f + (0.035f / npow(aod::femtodreamparticle::pt, 1.1f))),
((aod::femtodreamparticle::tempFitVar >= ConfMinDCAxy) &&
(aod::femtodreamparticle::tempFitVar <= ConfMaxDCAxy)));
;

Partition<soa::Join<aod::FDParticles, aod::FDMCLabels>> SelectedPartsMC = (aod::femtodreamparticle::partType == uint8_t(aod::femtodreamparticle::ParticleType::kTrack)) &&
ifnode(aod::femtodreamparticle::pt * (nexp(aod::femtodreamparticle::eta) + nexp(-1.f * aod::femtodreamparticle::eta)) / 2.f <= ConfPIDthrMom, ncheckbit(aod::femtodreamparticle::pidcut, ConfTPCPIDBit), ncheckbit(aod::femtodreamparticle::pidcut, ConfTPCTOFPIDBit)) &&
(ncheckbit(aod::femtodreamparticle::cut, ConfCutPart)) &&
(aod::femtodreamparticle::pt < ConfMaxpT) &&
(aod::femtodreamparticle::pt > ConfMinpT) &&
(aod::femtodreamparticle::tempFitVar < ConfMaxDCAxy) &&
(aod::femtodreamparticle::tempFitVar > ConfMinDCAxy);
ifnode(ConfDCACutPtDep, (nabs(aod::femtodreamparticle::tempFitVar) <= 0.0105f + (0.035f / npow(aod::femtodreamparticle::pt, 1.1f))),
((aod::femtodreamparticle::tempFitVar >= ConfMinDCAxy) &&
(aod::femtodreamparticle::tempFitVar <= ConfMaxDCAxy)));
;

/// Histogramming of Selected Particles
FemtoDreamParticleHisto<aod::femtodreamparticle::ParticleType::kTrack, 1> trackHistoSelectedParts;
Expand Down
14 changes: 10 additions & 4 deletions PWGCF/FemtoDream/Tasks/femtoDreamTripletTaskTrackTrackV0.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -69,22 +69,28 @@ struct femtoDreamTripletTaskTrackTrackV0 {
Configurable<float> ConfPIDthrMom{"ConfPIDthrMom", 1.f, "Momentum threshold from which TPC and TOF are required for PID"};
Configurable<bool> ConfIsMC{"ConfIsMC", false, "Enable additional Histogramms in the case of a MonteCarlo Run"};
Configurable<bool> ConfUse3D{"ConfUse3D", false, "Enable three dimensional histogramms (to be used only for analysis with high statistics): k* vs mT vs multiplicity"};
Configurable<bool> ConfDCACutPtDep{"ConfDCACutPtDep", false, "Use pt dependent dca cut for tracks"};

/// Partition for selected particles
Partition<aod::FDParticles> SelectedParts = (aod::femtodreamparticle::partType == uint8_t(aod::femtodreamparticle::ParticleType::kTrack)) &&
ifnode(aod::femtodreamparticle::pt * (nexp(aod::femtodreamparticle::eta) + nexp(-1.f * aod::femtodreamparticle::eta)) / 2.f <= ConfPIDthrMom, ncheckbit(aod::femtodreamparticle::pidcut, ConfTPCPIDBit), ncheckbit(aod::femtodreamparticle::pidcut, ConfTPCTOFPIDBit)) &&
(ncheckbit(aod::femtodreamparticle::cut, ConfCutPart)) &&
(aod::femtodreamparticle::pt < ConfMaxpT) &&
(aod::femtodreamparticle::pt > ConfMinpT) &&
(aod::femtodreamparticle::tempFitVar < ConfMaxDCAxy) &&
(aod::femtodreamparticle::tempFitVar > ConfMinDCAxy);
ifnode(ConfDCACutPtDep, (nabs(aod::femtodreamparticle::tempFitVar) <= 0.0105f + (0.035f / npow(aod::femtodreamparticle::pt, 1.1f))),
((aod::femtodreamparticle::tempFitVar >= ConfMinDCAxy) &&
(aod::femtodreamparticle::tempFitVar <= ConfMaxDCAxy)));
;

Partition<soa::Join<aod::FDParticles, aod::FDMCLabels>> SelectedPartsMC = (aod::femtodreamparticle::partType == uint8_t(aod::femtodreamparticle::ParticleType::kTrack)) &&
ifnode(aod::femtodreamparticle::pt * (nexp(aod::femtodreamparticle::eta) + nexp(-1.f * aod::femtodreamparticle::eta)) / 2.f <= ConfPIDthrMom, ncheckbit(aod::femtodreamparticle::pidcut, ConfTPCPIDBit), ncheckbit(aod::femtodreamparticle::pidcut, ConfTPCTOFPIDBit)) &&
(ncheckbit(aod::femtodreamparticle::cut, ConfCutPart)) &&
(aod::femtodreamparticle::pt < ConfMaxpT) &&
(aod::femtodreamparticle::pt > ConfMinpT) &&
(aod::femtodreamparticle::tempFitVar < ConfMaxDCAxy) &&
(aod::femtodreamparticle::tempFitVar > ConfMinDCAxy);
ifnode(ConfDCACutPtDep, (nabs(aod::femtodreamparticle::tempFitVar) <= 0.0105f + (0.035f / npow(aod::femtodreamparticle::pt, 1.1f))),
((aod::femtodreamparticle::tempFitVar >= ConfMinDCAxy) &&
(aod::femtodreamparticle::tempFitVar <= ConfMaxDCAxy)));
;

/// Histogramming of selected tracks
FemtoDreamParticleHisto<aod::femtodreamparticle::ParticleType::kTrack, 1> trackHistoSelectedParts;
Expand Down
Loading