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
222 changes: 214 additions & 8 deletions PWGDQ/Core/CutsLibrary.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -3702,6 +3702,16 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
return cut;
}

if (nameStr == "pairD0Topology") {
cut->AddCut(GetAnalysisCut("pairD0Topology"));
return cut;
}

if (nameStr == "pairD0TopologyTight") {
cut->AddCut(GetAnalysisCut("pairD0TopologyTight"));
return cut;
}

if (nameStr == "pairD0HighPt1") {
cut->AddCut(GetAnalysisCut("pairLxyzProjected3sigma"));
cut->AddCut(GetAnalysisCut("pairPtLow5"));
Expand Down Expand Up @@ -3923,6 +3933,36 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
return cut;
}

if (nameStr == "alice3StandardTrackD0") {
cut->AddCut(GetAnalysisCut("alice3StandardKineD0"));
cut->AddCut(GetAnalysisCut("alice3TrackQuality"));
return cut;
}

if (nameStr == "alice3TOFEtaD0") {
cut->AddCut(GetAnalysisCut("alice3TOFEta"));
cut->AddCut(GetAnalysisCut("alice3TrackQuality"));
return cut;
}

if (nameStr == "alice3RICHEtaD0") {
cut->AddCut(GetAnalysisCut("alice3RICHEta"));
cut->AddCut(GetAnalysisCut("alice3TrackQuality"));
return cut;
}

if (nameStr == "alice3StandardTrackTOFAcceptanceD0") {
cut->AddCut(GetAnalysisCut("alice3KineTOFAcceptanceD0"));
cut->AddCut(GetAnalysisCut("alice3TrackQuality"));
return cut;
}

if (nameStr == "alice3StandardTrackRICHAcceptanceD0") {
cut->AddCut(GetAnalysisCut("alice3KineRICHAcceptanceD0"));
cut->AddCut(GetAnalysisCut("alice3TrackQuality"));
return cut;
}

if (nameStr == "alice3TightDCATrack") {
cut->AddCut(GetAnalysisCut("alice3StandardKine"));
cut->AddCut(GetAnalysisCut("alice3TrackQualityTightDCA"));
Expand Down Expand Up @@ -4005,6 +4045,32 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
return cut;
}

if (nameStr == "alice3EitherTOFPIDPi") {
auto* pidCut = new AnalysisCompositeCut(
"alice3EitherTOFPIDPi",
"iTOF OR oTOF pion PID",
kFALSE);

pidCut->AddCut(GetAnalysisCut("alice3iTOFPIDPi"));
pidCut->AddCut(GetAnalysisCut("alice3oTOFPIDPi"));

delete cut;
return pidCut;
}

if (nameStr == "alice3EitherTOFPIDKa") {
auto* pidCut = new AnalysisCompositeCut(
"alice3EitherTOFPIDKa",
"iTOF OR oTOF kaon PID",
kFALSE);

pidCut->AddCut(GetAnalysisCut("alice3iTOFPIDKa"));
pidCut->AddCut(GetAnalysisCut("alice3oTOFPIDKa"));

delete cut;
return pidCut;
}

if (nameStr == "alice3RICHPIDEl") {
cut->AddCut(GetAnalysisCut("alice3RICHPIDEl"));
return cut;
Expand Down Expand Up @@ -4108,6 +4174,32 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
return cut;
}

if (nameStr == "alice3TOFPIDPi") {
cut->AddCut(GetAnalysisCut("alice3iTOFPIDPi"));
cut->AddCut(GetAnalysisCut("alice3oTOFPIDPi"));
return cut;
}

if (nameStr == "alice3TOFPIDKaRej") {
cut->AddCut(GetAnalysisCut("alice3D0KaonTOFPID"));
return cut;
}

if (nameStr == "alice3TOFPIDPiRej") {
cut->AddCut(GetAnalysisCut("alice3D0PionTOFPID"));
return cut;
}

if (nameStr == "alice3RICHTOFPIDPiRej") {
cut->AddCut(GetAnalysisCut("alice3D0PionRICHTOFPID"));
return cut;
}

if (nameStr == "alice3RICHTOFPIDKaRej") {
cut->AddCut(GetAnalysisCut("alice3D0KaonRICHTOFPID"));
return cut;
}

delete cut;
LOGF(fatal, Form("Did not find cut %s. Returning nullptr", cutName));
return nullptr;
Expand Down Expand Up @@ -7083,6 +7175,35 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName)
return cut;
}

if (nameStr == "pairD0Topology") {
cut->AddCut(VarManager::kCosPointingAngle, 0.9, 1.0);
cut->AddCut(VarManager::kD0DcaDaughters, 0.0, 0.03);
cut->AddCut(VarManager::kD0ImpParProduct, -1000.0, 0.0);
cut->AddCut(VarManager::kDCAxy1, -0.1, 0.1);
cut->AddCut(VarManager::kDCAxy2, -0.1, 0.1);
return cut;
}

if (nameStr == "pairD0TopologyTight") {
cut->AddCut(VarManager::kCosPointingAngle, 0.8, 1.0, false, VarManager::kPt, 0.0, 1.0);
cut->AddCut(VarManager::kCosPointingAngle, 0.9, 1.0, false, VarManager::kPt, 1.0, 4.0);
cut->AddCut(VarManager::kCosPointingAngle, 0.85, 1.0, false, VarManager::kPt, 4.0, 50.0);
cut->AddCut(VarManager::kD0DcaDaughters, 0.035, 1000.0, false, VarManager::kPt, 0.0, 1.0);
cut->AddCut(VarManager::kD0DcaDaughters, 0.0, 0.03, false, VarManager::kPt, 1.0, 50.0);
cut->AddCut(VarManager::kD0ImpParProduct, -1000.0, 0.0);
cut->AddCut(VarManager::kDCAxy1, -0.1, 0.1);
cut->AddCut(VarManager::kDCAxy2, -0.1, 0.1);
cut->AddCut(VarManager::kPt1, 0.5, 100.0, false, VarManager::kPt, 0.0, 1.0);
cut->AddCut(VarManager::kPt1, 0.3, 100.0, false, VarManager::kPt, 1.0, 1.5);
cut->AddCut(VarManager::kPt1, 0.4, 100.0, false, VarManager::kPt, 1.5, 2.0);
cut->AddCut(VarManager::kPt1, 0.7, 100.0, false, VarManager::kPt, 2.0, 50.0);
cut->AddCut(VarManager::kPt2, 0.5, 100.0, false, VarManager::kPt, 0.0, 1.0);
cut->AddCut(VarManager::kPt2, 0.3, 100.0, false, VarManager::kPt, 1.0, 1.5);
cut->AddCut(VarManager::kPt2, 0.4, 100.0, false, VarManager::kPt, 1.5, 2.0);
cut->AddCut(VarManager::kPt2, 0.7, 100.0, false, VarManager::kPt, 2.0, 50.0);
return cut;
}

if (nameStr == "pairJpsi") {
cut->AddCut(VarManager::kMass, 2.8, 3.3);
return cut;
Expand Down Expand Up @@ -7339,6 +7460,35 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName)
return cut;
}

if (nameStr == "alice3StandardKineD0") {
cut->AddCut(VarManager::kPt, 0.7, 1000.0);
cut->AddCut(VarManager::kEta, -2.5, 2.5); // Total tracker acceptance in v3b geomety
return cut;
}

if (nameStr == "alice3TOFEta") {
cut->AddCut(VarManager::kPt, 0.7, 1000.0);
cut->AddCut(VarManager::kEta, -2.0, 2.0); // Total tracker acceptance in v3b geomety
return cut;
}

if (nameStr == "alice3RICHEta") {
cut->AddCut(VarManager::kEta, -0.8, 0.8); // Total tracker acceptance in v3b geomety
return cut;
}

if (nameStr == "alice3KineTOFAcceptanceD0") {
cut->AddCut(VarManager::kPt, 0.7, 1000.0);
cut->AddCut(VarManager::kEta, -2.0, 2.0); // TOF acceptance in v3b geomety
return cut;
}

if (nameStr == "alice3KineRICHAcceptanceD0") {
cut->AddCut(VarManager::kPt, 0.7, 1000.0);
cut->AddCut(VarManager::kEta, -0.8, 0.8); // TOF acceptance in v3b geomety
return cut;
}

if (nameStr == "alice3LambdaCKine") {
cut->AddCut(VarManager::kPt, 0.2, 1000.0);
cut->AddCut(VarManager::kEta, -2.0, 2.0);
Expand Down Expand Up @@ -7398,42 +7548,98 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName)
}

if (nameStr == "alice3iTOFPIDEl") {
cut->AddCut(VarManager::kInnerTOFnSigmaEl, -3.0, 3.0);
cut->AddCut(VarManager::kInnerTOFnSigmaEl, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5);
return cut;
}

if (nameStr == "alice3iTOFPIDPi") {
cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0);
cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5);
return cut;
}

if (nameStr == "alice3iTOFPIDKa") {
cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0);
cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5);
return cut;
}

if (nameStr == "alice3iTOFPIDPr") {
cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0);
cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5);
return cut;
}

if (nameStr == "alice3oTOFPIDEl") {
cut->AddCut(VarManager::kOuterTOFnSigmaEl, -3.0, 3.0);
cut->AddCut(VarManager::kOuterTOFnSigmaEl, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5);
return cut;
}

if (nameStr == "alice3oTOFPIDPi") {
cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0);
cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5);
return cut;
}

if (nameStr == "alice3oTOFPIDKa") {
cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0);
cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5);
return cut;
}

if (nameStr == "alice3oTOFPIDPr") {
cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0);
cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5);
return cut;
}

if (nameStr == "alice3D0KaonTOFPID") {
cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5);
cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5);

cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5);
cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5);

cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5);
cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5);
return cut;
}

if (nameStr == "alice3D0PionTOFPID") {
cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5);
cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5);

cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5);
cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5);

cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5);
cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5);
return cut;
}

if (nameStr == "alice3D0KaonRICHTOFPID") {
cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5);
cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5);
cut->AddCut(VarManager::kRICHnSigmaKa, -3.0, 3.0, false, VarManager::kP, 2.0, 1000.0, false, VarManager::kHasRICHSigKa, 0.5, 1.5);

cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5);
cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5);

cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5);
cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5);

cut->AddCut(VarManager::kRICHnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.57, 1000.0, false, VarManager::kRICHnSigmaPi, 0.5, 1.5);
cut->AddCut(VarManager::kRICHnSigmaPr, -3.0, 3.0, true, VarManager::kP, 3.8, 1000.0, false, VarManager::kRICHnSigmaPr, 0.5, 1.5);
return cut;
}

if (nameStr == "alice3D0PionRICHTOFPID") {
cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5);
cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5);
cut->AddCut(VarManager::kRICHnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.57, 1000.0, false, VarManager::kHasRICHSigKa, 0.5, 1.5);

cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5);
cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5);

cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5);
cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5);

cut->AddCut(VarManager::kRICHnSigmaKa, -3.0, 3.0, true, VarManager::kP, 2.0, 1000.0, false, VarManager::kRICHnSigmaPi, 0.5, 1.5);
cut->AddCut(VarManager::kRICHnSigmaPr, -3.0, 3.0, true, VarManager::kP, 3.8, 1000.0, false, VarManager::kRICHnSigmaPr, 0.5, 1.5);
return cut;
}

Expand Down
7 changes: 7 additions & 0 deletions PWGDQ/Core/HistogramsLibrary.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1403,6 +1403,13 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
}
hm->AddHistogram(histClass, "Mass_PtLong", "", false, 500, alice3MassBins.data(), VarManager::kMass, 20, pTBins.data(), VarManager::kPt);
}
if (subGroupStr.Contains("alice3pair")) {
hm->AddHistogram(histClass, "CosinePointingAngle", "cos(#theta_{p})", false, 2000.0, -1.0, 1.0, VarManager::kCosPointingAngle);
hm->AddHistogram(histClass, "DCADaughters", "DCA_{dau}", false, 2000.0, -10.0, 10.0, VarManager::kD0DcaDaughters);
hm->AddHistogram(histClass, "ImpParProduct", "d_{k} #times d_{#pi}", false, 2000.0, -100.0, 100.0, VarManager::kD0ImpParProduct);
hm->AddHistogram(histClass, "DCAxy1", "DCA_{xy, 1}", false, 2000.0, -10.0, 10.0, VarManager::kDCAxy1);
hm->AddHistogram(histClass, "DCAxy2", "DCA_{xy, 2}", false, 2000.0, -10.0, 10.0, VarManager::kDCAxy2);
}
if (subGroupStr.Contains("alice3pbpb")) {
hm->AddHistogram(histClass, "Mass_Cent", "", false, 125, 0.0, 5.0, VarManager::kMass, 20, 0.0, 100.0, VarManager::kCent);
hm->AddHistogram(histClass, "Pt_CentFT0C", "", false, 100, 0.0, 10.0, VarManager::kPt, 20, 0.0, 100.0, VarManager::kCent);
Expand Down
10 changes: 10 additions & 0 deletions PWGDQ/Core/MCSignalLibrary.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1754,6 +1754,16 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name)
signal = new MCSignal(name, "Kaons from D+/- decays", {prong}, {-1});
return signal;
}
if (nameStr == "KFromD0") {
MCProng prong(2, {321, Pdg::kD0}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
signal = new MCSignal(name, "Kaons from D0 decays", {prong}, {-1});
return signal;
}
if (nameStr == "PiFromD0") {
MCProng prong(2, {211, Pdg::kD0}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
signal = new MCSignal(name, "Pions from D0 decays", {prong}, {-1});
return signal;
}
if (nameStr == "LambdaC") {
MCProng prong(1, {Pdg::kLambdaCPlus}, {true}, {false}, {0}, {0}, {false});
signal = new MCSignal(name, "Lambda_c", {prong}, {-1});
Expand Down
6 changes: 6 additions & 0 deletions PWGDQ/Core/VarManager.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1347,6 +1347,10 @@ void VarManager::SetDefaultVarNames()
fgVariableUnits[kCosPointingAngle] = "";
fgVariableNames[kMCCosPointingAngle] = "MC cos(#theta_{pointing})";
fgVariableUnits[kMCCosPointingAngle] = "";
fgVariableNames[kD0DcaDaughters] = "DCA of D0 daughters";
fgVariableUnits[kD0DcaDaughters] = "";
fgVariableNames[kD0ImpParProduct] = "D0 impact parameter product";
fgVariableUnits[kD0ImpParProduct] = "";
fgVariableNames[kVertexingPz] = "Pz Pair";
fgVariableUnits[kVertexingPz] = "GeV/c";
fgVariableNames[kVertexingSV] = "Secondary Vertexing z";
Expand Down Expand Up @@ -2633,6 +2637,8 @@ void VarManager::SetDefaultVarNames()
fgVarNamesMap["kSignQuadDCAsigXY"] = kSignQuadDCAsigXY;
fgVarNamesMap["kCosPointingAngle"] = kCosPointingAngle;
fgVarNamesMap["kMCCosPointingAngle"] = kMCCosPointingAngle;
fgVarNamesMap["kD0ImpParProduct"] = kD0ImpParProduct;
fgVarNamesMap["kD0DcaDaughters"] = kD0DcaDaughters;
fgVarNamesMap["kImpParXYJpsi"] = kImpParXYJpsi;
fgVarNamesMap["kImpParXYK"] = kImpParXYK;
fgVarNamesMap["kDCATrackProd"] = kDCATrackProd;
Expand Down
20 changes: 20 additions & 0 deletions PWGDQ/Core/VarManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -874,6 +874,8 @@ class VarManager : public TObject
kQuadDCAsigXYZ,
kSignQuadDCAsigXY,
kCosPointingAngle,
kD0ImpParProduct,
kD0DcaDaughters,
kImpParXYJpsi,
kImpParXYK,
kDCATrackProd,
Expand Down Expand Up @@ -7688,6 +7690,14 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values)
if (fgUsedVars[kPairPhiv]) {
values[kPairPhiv] = calculatePhiV<pairType>(t1, t2);
}

if constexpr (pairType == kDecayToKPi) {
if constexpr ((fillMap & TrackDCA) > 0 || (fillMap & ReducedTrackBarrel) > 0) {
values[kDCAxy1] = t1.dcaXY();
values[kDCAxy2] = t2.dcaXY();
values[kD0ImpParProduct] = t1.dcaXY() * t2.dcaXY();
}
}
}

template <typename M, typename T>
Expand Down Expand Up @@ -7792,7 +7802,17 @@ void VarManager::FillPairVertexingAlice3(C const& collision, T const& t1, T cons
v1 = {trackParVar0.getPt(), trackParVar0.getEta(), trackParVar0.getPhi(), m1};
v2 = {trackParVar1.getPt(), trackParVar1.getEta(), trackParVar1.getPhi(), m2};
v12 = v1 + v2;

const auto pos1 = trackParVar0.getXYZGlo();
const auto pos2 = trackParVar1.getXYZGlo();

const double dx = pos1.X() - pos2.X();
const double dy = pos1.Y() - pos2.Y();
const double dz = pos1.Z() - pos2.Z();

values[kD0DcaDaughters] = std::sqrt(dx * dx + dy * dy + dz * dz);
}

double phi = std::atan2(secondaryVertex[1] - collision.posY(), secondaryVertex[0] - collision.posX());
double theta = std::atan2(secondaryVertex[2] - collision.posZ(),
std::sqrt((secondaryVertex[0] - collision.posX()) * (secondaryVertex[0] - collision.posX()) +
Expand Down
Loading