|
24 | 24 | #include "Common/DataModel/Multiplicity.h" |
25 | 25 | #include "Common/DataModel/PIDResponseTPC.h" |
26 | 26 | #include "Common/DataModel/TrackSelectionTables.h" |
27 | | - |
| 27 | +#include "Common/Core/TrackSelection.h" |
| 28 | +#include "Common/Core/TrackSelectionDefaults.h" |
28 | 29 | #include <CommonConstants/MathConstants.h> |
29 | 30 | #include <Framework/AnalysisDataModel.h> |
30 | 31 | #include <Framework/AnalysisHelpers.h> |
@@ -120,6 +121,7 @@ enum { |
120 | 121 | kRecTrkTypeend |
121 | 122 | }; |
122 | 123 |
|
| 124 | + |
123 | 125 | static constexpr TrackSelectionFlags::flagtype TrackSelectionIts = |
124 | 126 | TrackSelectionFlags::kITSNCls | TrackSelectionFlags::kITSChi2NDF | |
125 | 127 | TrackSelectionFlags::kITSHits; |
@@ -159,7 +161,7 @@ struct HeavyionMultiplicity { |
159 | 161 |
|
160 | 162 | Configurable<float> etaRange{"etaRange", 1.0f, "Eta range to consider"}; |
161 | 163 | Configurable<float> vtxRange{"vtxRange", 10.0f, "Vertex Z range to consider"}; |
162 | | - Configurable<float> dcaZ{"dcaZ", 0.2f, "Custom DCA Z cut (ignored if negative)"}; |
| 164 | + Configurable<float> dcaZ{"dcaZ", 0.2f, "Custom DCA Z cut"}; |
163 | 165 | Configurable<float> v0radiusK0SCut{"v0radiusK0SCut", 1.2f, "K0S RadiusCut"}; |
164 | 166 | Configurable<float> dcapostopvK0SCut{"dcapostopvK0SCut", 0.05f, "K0S dcapostopvCut"}; |
165 | 167 | Configurable<float> dcanegtopvK0SCut{"dcanegtopvK0SCut", 0.05f, "K0S dcanegtopvCut"}; |
@@ -219,9 +221,16 @@ struct HeavyionMultiplicity { |
219 | 221 | Configurable<bool> selectTVX{"selectTVX", true, "BC analysis: select TVX"}; |
220 | 222 | Configurable<bool> selectFV0OrA{"selectFV0OrA", true, "BC analysis: select FV0OrA"}; |
221 | 223 | Configurable<bool> isApplyDCAstandardcuts{"isApplyDCAstandardcuts",true, "Apply DCA standard run 2 cuts"}; |
| 224 | + Configurable<bool> isApplyDCAcustomcuts{"isApplyDCAcustomcuts", false, "Apply DCA custom cuts"}; |
| 225 | + Configurable<float> cDcazP0 {"cDcazP0", 1.0f,"dca parameter"}; |
| 226 | + Configurable<float> cDcazP1 {"cDcazP1", 1.0f,"dca parameter"}; |
| 227 | + Configurable<float> cDcazP2 {"cDcazP2", 1.0f,"dca parameter"}; |
| 228 | + Configurable<float> cDcaxyP0{"cDcaxyP0",1.0f,"dca parameter"}; |
| 229 | + Configurable<float> cDcaxyP1{"cDcaxyP1",1.0f,"dca parameter"}; |
| 230 | + Configurable<float> cDcaxyP2{"cDcaxyP2",1.0f,"dca parameter"}; |
222 | 231 |
|
223 | 232 | void init(InitContext const&) |
224 | | - { |
| 233 | + { |
225 | 234 | AxisSpec axisMult = {multHistBin, "Mult", "MultAxis"}; |
226 | 235 | AxisSpec axisPV = {pvHistBin, "PV", "PVAxis"}; |
227 | 236 | AxisSpec axisFv0aMult = {fv0aMultHistBin, "fv0a", "FV0AMultAxis"}; |
@@ -498,6 +507,12 @@ struct HeavyionMultiplicity { |
498 | 507 | template <typename CheckTrack> |
499 | 508 | bool isTrackSelected(CheckTrack const& track) |
500 | 509 | { |
| 510 | + if(isApplyDCAcustomcuts) { |
| 511 | + if(std::abs(track.dcaXY()) > cDcaxyP0 + cDcaxyP1 / pow(track.pt(), cDcaxyP2)) |
| 512 | + return false; |
| 513 | + if(std::abs(track.dcaZ()) > cDcazP0 + cDcazP1 / pow(track.pt(), cDcazP2)) |
| 514 | + return false; |
| 515 | + } |
501 | 516 | if (std::abs(track.eta()) >= etaRange) { |
502 | 517 | return false; |
503 | 518 | } |
@@ -540,7 +555,7 @@ struct HeavyionMultiplicity { |
540 | 555 | ncheckbit(aod::track::trackCutFlag, TrackSelectionIts) && |
541 | 556 | ifnode(ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::TPC), |
542 | 557 | ncheckbit(aod::track::trackCutFlag, TrackSelectionTpc), true) && |
543 | | - ifnode(isApplyDCAstandardcuts.node() /*&& (dcaZ.node() > 0.f)*/, nabs(aod::track::dcaZ) <= dcaZ && ncheckbit(aod::track::trackCutFlag, TrackSelectionDcaxyOnly), true); |
| 558 | + ifnode(isApplyDCAstandardcuts.node(), nabs(aod::track::dcaZ) <= dcaZ && ncheckbit(aod::track::trackCutFlag, TrackSelectionDcaxyOnly), true); |
544 | 559 |
|
545 | 560 |
|
546 | 561 | void processDCAvsptData(CollisionDataTable::iterator const& cols, FilTrackDataTable const& tracks) { |
@@ -586,7 +601,7 @@ struct HeavyionMultiplicity { |
586 | 601 |
|
587 | 602 | auto mcpart = Rectrack.mcParticle(); |
588 | 603 |
|
589 | | - if (mcpart.isPhysicalPrimary()) { |
| 604 | + if (!isGenTrackSelected(mcpart)) { |
590 | 605 | histos.fill(HIST("hdcaxyvsptMCprimary"), Rectrack.dcaXY(), Rectrack.pt()); |
591 | 606 | histos.fill(HIST("hdcazvsptMCprimary"), Rectrack.dcaZ(), Rectrack.pt()); |
592 | 607 | } |
|
0 commit comments