Project
Loading...
Searching...
No Matches
SVertexerParams.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
15
16#ifndef ALICEO2_SVERTEXER_PARAMS_H
17#define ALICEO2_SVERTEXER_PARAMS_H
18
23
24namespace o2
25{
26namespace vertexing
27{
28
29// These are configurable params for Primary Vertexer
30struct SVertexerParams : public o2::conf::ConfigurableParamHelper<SVertexerParams> {
31
32 // parameters
33 bool oldDCAFitterMode = true;
34 bool createFullV0s = false;
35 bool createFullCascades = false;
36 bool createFull3Bodies = false;
37
38 bool useAbsDCA = true;
39 bool selectBestV0 = false;
40 float maxChi2 = 2.;
41 float minParamChange = 1e-3;
42 float minRelChi2Change = 0.9;
43 float maxDZIni = 5.;
44 float maxDXYIni = 4.;
45 float maxRIni = 150;
46 //
47 // propagation options
48 int matCorr = int(o2::base::Propagator::MatCorrType::USEMatCorrNONE);
49 float minRFor3DField = 40;
50 float maxStep = 2.;
51 float maxSnp = 0.95;
52 float minXSeed = -1.;
53 bool usePropagator = false;
54 bool refitWithMatCorr = false;
55 //
57 float minDCAToPV = 0.05;
58 float minRToMeanVertex = 0.5;
62 float minPtV0 = 0.01;
63 float minPtV0FromCascade = 0.3;
64 float maxTglV0 = 2.;
65
67 float maxV0ToProngsRDiff = 50.;
68
69 float minCosPAXYMeanVertex = 0.95;
72
73 float maxRToMeanVertexCascV0 = 80; // don't consider as a cascade V0 seed if above this R
74 float minCosPACascV0 = 0.8; // min cos of pointing angle to PV for cascade V0 candidates
75 float minCosPA3bodyV0 = 0.8; // min cos of PA to PV for 3body V0
76 float minCosPA = 0.9;
77
78 float minRDiffV0Casc = 0.2;
79 float maxRDiffV03body = 3;
80 float maxRIniCasc = 90.; // don't consider as a cascade seed (circles/line intersection) if its R exceeds this
81
82 float maxDCAXYCasc = 0.3; // max DCA of cascade to PV in XY // TODO RS: shall we use real chi2 to vertex?
83 float maxDCAZCasc = 0.3; // max DCA of cascade to PV in Z
84 float maxDCAXY3Body = 0.5; // max DCA of 3 body decay to PV in XY // TODO RS: shall we use real chi2 to vertex?
85 float maxDCAZ3Body = 1.; // max DCA of 3 body decay to PV in Z
86 float minCosPACasc = 0.7; // min cos of PA to PV for cascade candidates
87 float minCosPA3body = 0.8; // min cos of PA to PV for 3body decay candidates
88 float minPtCasc = 0.01; // cascade minimum pT
89 float maxTglCasc = 2.; // maximum tgLambda of cascade
90 float minPt3Body = 0.01; // minimum pT of 3body V0
91 float maxTgl3Body = 2.; // maximum tgLambda of 3body V0
92
93 float maxRIni3body = 90.; // don't consider as a 3body seed (circles/line intersection) if its R exceeds this
94
95 // Cuts for TPC only tracks
96 bool mExcludeTPCtracks = false; // don't loop over TPC tracks if true (if loaded, dEdx info is used instead)
97 float mTPCTrackMaxX = -1.; // don't use TPC standalone tracks with X exceeding this;
98 float mTPCTrack2Beam = 21.f; // straight line for TPC track back to beamline
99 bool mTPCTrackPhotonTune = true; // use TPC-only photon tuning
100 int mTPCTrackMinNClusters = -1; // minimum number of clusters
101 float mTPCTrackXY2Radius = 90.f; // check for realistic conversion point, e.g., in material
102 float mTPCTrackD2R = 4.f; // check for maximal distance of pairs and their radii
103 float mTPCTrackDR = 90.f; // check if preliminary conversion point can lie somewhere reasonable
104 float minTPCdEdx = 250; // starting from this dEdx value, tracks with p > minMomTPCdEdx are always accepted
105 float minMomTPCdEdx = 0.8; // minimum p for tracks with dEdx > mMinTPCdEdx to be accepted
106 float maxV0TglAbsDiff = 0.3;
107 float mTPCTrackMaxChi2 = 4.;
108 float mTPCTrackMaxDZIni = 8.;
111
112 uint8_t mITSSAminNclu = 6; // global requirement of at least this many ITS clusters if no TPC info present (N.B.: affects all secondary vertexing)
113 uint8_t mITSSAminNcluCascades = 6; // require at least this many ITS clusters if no TPC info present for cascade finding.
114 bool mRejectITSonlyOBtrack = false; // reject tracks in OB with 4 hits (keep false for more low pt conversions)
115 bool mRequireTPCforCascBaryons = true; // require that baryon daughter of cascade has TPC
116 bool mSkipTPCOnlyCascade = true; // skip TPC only tracks when doing cascade finding
117 bool mSkipTPCOnly3Body = true; // skip TPC only tracks when doing cascade finding
118
119 // percent deviation from expected proton dEdx - to be replaced - estimated sigma from TPC for now 6%; a 6*sigma cut is therefore 36% = 0.36f. Any value above 1.0f will be ignored manually when checking.
120 float mFractiondEdxforCascBaryons = 2.f; // 0.36f;
121 // default: average 2023 from C. Sonnabend, Nov 2023: ([0.217553 4.02762 0.00850178 2.33324 0.880904 ])
122 // to-do: grab from CCDB when available -> discussion with TPC experts, not available yet
123 float mBBpars[5] = {0.217553, 4.02762, 0.00850178, 2.33324, 0.880904};
124
125 // cuts on different V0 PID params
126 bool checkV0Hypothesis = true; // enable Mass Hypothesis check
127 float pidCutsPhoton[SVertexHypothesis::NPIDParams] = {0.001, 20, 0.10, 20, 0.10, 0.0, 0.0, 0.0, 0.0}; // Photon
128 float pidCutsK0[SVertexHypothesis::NPIDParams] = {0., 20, 0., 5.0, 0.0, 2.84798e-03, 9.84206e-04, 3.31951e-03, 2.39438}; // K0
129 float pidCutsLambda[SVertexHypothesis::NPIDParams] = {0., 20, 0., 5.0, 0.0, 1.09004e-03, 2.62291e-04, 8.93179e-03, 2.83121}; // Lambda
130 float pidCutsHTriton[SVertexHypothesis::NPIDParams] = {0.0025, 14, 0.07, 14, 0.0, 0.5, 0.0, 0.0, 0.0}; // HyperTriton
131 float pidCutsHhydrog4[SVertexHypothesis::NPIDParams] = {0.0025, 14, 0.07, 14, 0.0, 0.5, 0.0, 0.0, 0.0}; // Hyperhydrog4 - Need to update
132 //
133 // cuts on different Cascade PID params
135 float pidCutsXiMinus[SVertexHypothesis::NPIDParams] = {0.0, 15, 0.01, 4.0, 0.0, 1.56315e-03, 2.23279e-04, 2.75136e-02, 3.309}; // XiMinus
136 float pidCutsOmegaMinus[SVertexHypothesis::NPIDParams] = {0.0, 15, 0.01, 4.0, 0.0, 1.43572e-03, 6.94416e-04, 2.13534e+05, 1.48889e+01}; // OmegaMinus
137 float maximalCascadeWidth = 0.006;
138 //
139 // cuts on different 3 body PID params
141 float pidCutsH3L3body[SVertex3Hypothesis::NPIDParams] = {0.0025, 14, 0.07, 0.5}; // H3L -> d p pi-
142 float pidCutsH4L3body[SVertex3Hypothesis::NPIDParams] = {0.0025, 14, 0.07, 0.5}; // H4L -> t p pi-
143 float pidCutsHe4L3body[SVertex3Hypothesis::NPIDParams] = {0.0025, 14, 0.07, 0.5}; // He4L -> He3 p pi-
144 float pidCutsHe5L3body[SVertex3Hypothesis::NPIDParams] = {0.0025, 14, 0.07, 0.5}; // He5L -> He4 p pi-
145
147};
148} // namespace vertexing
149
150namespace framework
151{
152template <typename T>
153struct is_messageable;
154template <>
155struct is_messageable<o2::vertexing::SVertexerParams> : std::true_type {
156};
157} // namespace framework
158
159} // end namespace o2
160
161#endif
V0 or Cascade and 3-body decay hypothesis checker.
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
int maxPVContributors
max number PV contributors to allow in V0
float pidCutsHhydrog4[SVertexHypothesis::NPIDParams]
float minCosPA
min cos of PA to PV for prompt V0 candidates
float pidCutsHe5L3body[SVertex3Hypothesis::NPIDParams]
float maxDCAXYToMeanVertex
max DCA of V0 from beam line (mean vertex) for prompt V0 candidates
float maxV0ToProngsRDiff
V0 radius cannot be lower than this ammount wrt minR of contributors.
float pidCutsPhoton[SVertexHypothesis::NPIDParams]
bool useAbsDCA
use abs dca minimization
bool usePropagator
use external propagator
float maxDCAXYToMeanVertex3bodyV0
max DCA of V0 from beam line (mean vertex) for 3body V0 candidates
float maxRIni
don't consider as a seed (circles intersection) if its R exceeds this
bool createFullCascades
fill cascades prongs/kinematics
float maxDCAXYToMeanVertexV0Casc
max DCA of V0 from beam line (mean vertex) for cascade V0 candidates
float minParamChange
stop when tracks X-params being minimized change by less that this value
float causalityRTolerance
V0 radius cannot exceed its contributors minR by more than this value.
float maxSnp
max snp when external propagator is used
float minXSeed
minimal X of seed in prong frame (within the radial resolution track should not go to negative X)
int matCorr
material correction to use
float maxV0TglAbsDiff
max absolute difference in Tgl for V0 for photons only
float maxDZIni
don't consider as a seed (circles intersection) if Z distance exceeds this
float maxStep
max step size when external propagator is used
float pidCutsK0[SVertexHypothesis::NPIDParams]
float pidCutsHe4L3body[SVertex3Hypothesis::NPIDParams]
float minPtV0FromCascade
v0 minimum pT for v0 to be used in cascading (lowest pT Run 2 lambda: 0.4)
float mTPCTrackMaxDCAXY2ToMeanVertex
max DCA^2 of V0 from beam line (mean vertex) for prompt V0 candidates, for photon TPC-only track only
float pidCutsLambda[SVertexHypothesis::NPIDParams]
bool createFull3Bodies
fill 3-body decays prongs/kinematics
float minRelChi2Change
stop when chi2 changes by less than this value
float maxChi2
max dca from prongs to vertex
bool selectBestV0
match only the best v0 for each cascade candidate
float minRFor3DField
above this radius use 3D field
bool refitWithMatCorr
refit V0 applying material corrections
float pidCutsH3L3body[SVertex3Hypothesis::NPIDParams]
float minRDiffV0Casc
cascade should be at least this radial distance below V0
O2ParamDef(SVertexerParams, "svertexer")
float pidCutsOmegaMinus[SVertexHypothesis::NPIDParams]
float minRToMeanVertex
min radial distance of V0 from beam line (mean vertex)
float pidCutsXiMinus[SVertexHypothesis::NPIDParams]
float maxRDiffV03body
Maximum difference between V0 and 3body radii.
float mTPCTrackMaxDXYIni
don't consider as a seed (circles intersection) if XY distance exceeds this, for photon TPC-only trac...
float minDCAToPV
min DCA to PV of single track to accept
float mTPCTrackMaxDZIni
don't consider as a seed (circles intersection) if Z distance exceeds this, for photon TPC-only track...
float minCosPAXYMeanVertexCascV0
min cos of PA to beam line (mean vertex) in tr. plane for V0 of cascade cand.
float pidCutsHTriton[SVertexHypothesis::NPIDParams]
float minCosPAXYMeanVertex3bodyV0
min cos of PA to beam line (mean vertex) in tr. plane for 3body V0 cand.
float maxDXYIni
don't consider as a seed (circles intersection) if XY distance exceeds this
float mTPCTrackMaxChi2
max DCA from prongs to vertex for photon TPC-only track only
float pidCutsH4L3body[SVertex3Hypothesis::NPIDParams]
float minCosPAXYMeanVertex
min cos of PA to beam line (mean vertex) in tr. plane for prompt V0 candidates
bool oldDCAFitterMode
pre(old) or post(new) PR15610+15784 behaviour of DCAFitter
bool createFullV0s
fill V0s prongs/kinematics
float maxTglV0
maximum tgLambda of V0