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
4 changes: 4 additions & 0 deletions PWGCF/FemtoDream/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,7 @@ o2physics_add_executable(femtodream-cutculator
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(femtodream-producer-v0
SOURCES femtoDreamProducerTaskV0Only.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore
COMPONENT_NAME Analysis)
13 changes: 10 additions & 3 deletions PWGCF/FemtoDream/FemtoDreamTrackSelection.h
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,11 @@ class FemtoDreamTrackSelection : public FemtoDreamObjectSelection<float, femtoDr
return outString;
}

int getSigmaPIDMax()
{
return nSigmaPIDMax;
}

private:
int nPtMinSel;
int nPtMaxSel;
Expand Down Expand Up @@ -410,13 +415,15 @@ bool FemtoDreamTrackSelection::isSelectedMinimal(T const& track)
if (nDCAMinSel > 0 && std::abs(dca) < dcaMin) {
return false;
}
if (std::abs(dca) > 1e3) {
return false;
}

if (nPIDnSigmaSel > 0) {
bool isFulfilled = false;
for (size_t i = 0; i < pidTPC.size(); ++i) {
auto pidTPCVal = pidTPC.at(i);
auto pidTOFVal = pidTOF.at(i);
auto pidComb = std::sqrt(pidTPCVal * pidTPCVal + pidTOFVal * pidTOFVal);
if (std::abs(pidTPCVal) < nSigmaPIDMax || pidComb < nSigmaPIDMax) {
if (std::abs(pidTPCVal) < nSigmaPIDMax) {
isFulfilled = true;
}
}
Expand Down
22 changes: 16 additions & 6 deletions PWGCF/FemtoDream/FemtoDreamV0Selection.h
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,6 @@ bool FemtoDreamV0Selection::isSelectedMinimal(C const& col, V const& v0, T const
if ((invMassLambda < fInvMassLowLimit or invMassLambda > fInvMassUpLimit) and (invMassAntiLambda < fInvMassLowLimit or invMassAntiLambda > fInvMassUpLimit)) {
return false;
}

if (nPtV0MinSel > 0 && pT < pTV0Min) {
return false;
}
Expand All @@ -329,15 +328,25 @@ bool FemtoDreamV0Selection::isSelectedMinimal(C const& col, V const& v0, T const
return false;
}
}
// const auto dcaXYpos = posTrack.dcaXY();
// const auto dcaZpos = posTrack.dcaZ();
// const auto dcapos = std::sqrt(pow(dcaXYpos, 2.) + pow(dcaZpos, 2.));
if (!PosDaughTrack.isSelectedMinimal(posTrack)) {
return false;
}
if (!NegDaughTrack.isSelectedMinimal(negTrack)) {
return false;
}

// check that track combinations for V0 or antiV0 would be fulfilling PID
int nSigmaPIDMax = PosDaughTrack.getSigmaPIDMax();
// antiV0
auto nSigmaPrNeg = negTrack.tpcNSigmaPr();
auto nSigmaPiPos = posTrack.tpcNSigmaPi();
// v0
auto nSigmaPiNeg = negTrack.tpcNSigmaPi();
auto nSigmaPrPos = posTrack.tpcNSigmaPr();
if (!(abs(nSigmaPrNeg) < nSigmaPIDMax and abs(nSigmaPiPos) < nSigmaPIDMax) and !(abs(nSigmaPrPos) < nSigmaPIDMax and abs(nSigmaPiNeg) < nSigmaPIDMax)) {
return false;
}

return true;
}

Expand Down Expand Up @@ -411,16 +420,17 @@ std::array<cutContainerType, 5> FemtoDreamV0Selection::getCutContainer(C const&
for (auto& sel : mSelections) {
const auto selVariable = sel.getSelectionVariable();
if (selVariable == femtoDreamV0Selection::kV0Sign) {
int nSigmaPIDMax = PosDaughTrack.getSigmaPIDMax();
if (sel.getSelectionValue() < 0) {
auto nSigmaPr = negTrack.tpcNSigmaPr();
auto nSigmaPi = posTrack.tpcNSigmaPi();
if (abs(nSigmaPr) < 5 && abs(nSigmaPi) < 5) {
if (abs(nSigmaPr) < nSigmaPIDMax && abs(nSigmaPi) < nSigmaPIDMax) {
sign = -1.;
}
} else {
auto nSigmaPi = negTrack.tpcNSigmaPi();
auto nSigmaPr = posTrack.tpcNSigmaPr();
if (abs(nSigmaPr) < 5 && abs(nSigmaPi) < 5) {
if (abs(nSigmaPr) < nSigmaPIDMax && abs(nSigmaPi) < nSigmaPIDMax) {
sign = 1.;
}
}
Expand Down
6 changes: 3 additions & 3 deletions PWGCF/FemtoDream/femtoDreamProducerTask.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ struct femtoDreamProducerTask {
Configurable<std::vector<float>> ConfV0DaughDCAMin{"ConfV0DaughDCAMin", std::vector<float>{0.05f, 0.06f}, "V0 Daugh sel: Max. DCA Daugh to PV (cm)"};
Configurable<std::vector<float>> ConfV0DaughPIDnSigmaMax{"ConfV0DaughPIDnSigmaMax", std::vector<float>{5.f, 4.f}, "V0 Daugh sel: Max. PID nSigma TPC"};

Configurable<std::vector<int>> ConfV0DaughTPIDspecies{"ConfV0DaughTPIDspecies", std::vector<int>{o2::track::PID::Pion, o2::track::PID::Kaon, o2::track::PID::Proton}, "V0 Daugh sel: Particles species for PID"};
Configurable<std::vector<int>> ConfV0DaughTPIDspecies{"ConfV0DaughTPIDspecies", std::vector<int>{o2::track::PID::Pion, o2::track::PID::Proton}, "V0 Daugh sel: Particles species for PID"};

Configurable<float> ConfInvMassLowLimit{"ConfInvMassLowLimit", 1.05, "Lower limit of the V0 invariant mass"};
Configurable<float> ConfInvMassUpLimit{"ConfInvMassUpLimit", 1.30, "Upper limit of the V0 invariant mass"};
Expand Down Expand Up @@ -170,12 +170,12 @@ struct femtoDreamProducerTask {
v0Cuts.setChildCuts(femtoDreamV0Selection::kPosTrack, ConfTrkCharge, femtoDreamTrackSelection::kSign, femtoDreamSelection::kEqual);
v0Cuts.setChildCuts(femtoDreamV0Selection::kPosTrack, ConfTrkEta, femtoDreamTrackSelection::kEtaMax, femtoDreamSelection::kAbsUpperLimit);
v0Cuts.setChildCuts(femtoDreamV0Selection::kPosTrack, ConfV0DaughTPCnclsMin, femtoDreamTrackSelection::kTPCnClsMin, femtoDreamSelection::kLowerLimit);
// v0Cuts.setChildCuts(femtoDreamV0Selection::kPosTrack, ConfV0DaughDCAMin, femtoDreamTrackSelection::kDCAMin, femtoDreamSelection::kAbsLowerLimit);
v0Cuts.setChildCuts(femtoDreamV0Selection::kPosTrack, ConfV0DaughDCAMin, femtoDreamTrackSelection::kDCAMin, femtoDreamSelection::kAbsLowerLimit);
v0Cuts.setChildCuts(femtoDreamV0Selection::kPosTrack, ConfV0DaughPIDnSigmaMax, femtoDreamTrackSelection::kPIDnSigmaMax, femtoDreamSelection::kAbsUpperLimit);
v0Cuts.setChildCuts(femtoDreamV0Selection::kNegTrack, ConfTrkCharge, femtoDreamTrackSelection::kSign, femtoDreamSelection::kEqual);
v0Cuts.setChildCuts(femtoDreamV0Selection::kNegTrack, ConfTrkEta, femtoDreamTrackSelection::kEtaMax, femtoDreamSelection::kAbsUpperLimit);
v0Cuts.setChildCuts(femtoDreamV0Selection::kNegTrack, ConfV0DaughTPCnclsMin, femtoDreamTrackSelection::kTPCnClsMin, femtoDreamSelection::kLowerLimit);
// v0Cuts.setChildCuts(femtoDreamV0Selection::kNegTrack, ConfV0DaughDCAMin, femtoDreamTrackSelection::kDCAMin, femtoDreamSelection::kAbsLowerLimit);
v0Cuts.setChildCuts(femtoDreamV0Selection::kNegTrack, ConfV0DaughDCAMin, femtoDreamTrackSelection::kDCAMin, femtoDreamSelection::kAbsLowerLimit);
v0Cuts.setChildCuts(femtoDreamV0Selection::kNegTrack, ConfV0DaughPIDnSigmaMax, femtoDreamTrackSelection::kPIDnSigmaMax, femtoDreamSelection::kAbsUpperLimit);
v0Cuts.setChildPIDSpecies(femtoDreamV0Selection::kPosTrack, ConfV0DaughTPIDspecies);
v0Cuts.setChildPIDSpecies(femtoDreamV0Selection::kNegTrack, ConfV0DaughTPIDspecies);
Expand Down
Loading