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 createFullV0s = false;
34 bool createFullCascades = false;
35 bool createFull3Bodies = false;
36
37 bool useAbsDCA = true;
38 bool selectBestV0 = false;
39 float maxChi2 = 2.;
40 float minParamChange = 1e-3;
41 float minRelChi2Change = 0.9;
42 float maxDZIni = 5.;
43 float maxDXYIni = 4.;
44 float maxRIni = 150;
45 //
46 // propagation options
47 int matCorr = int(o2::base::Propagator::MatCorrType::USEMatCorrNONE);
48 float minRFor3DField = 40;
49 float maxStep = 2.;
50 float maxSnp = 0.95;
51 float minXSeed = -1.;
52 bool usePropagator = false;
53 bool refitWithMatCorr = false;
54 //
56 float minDCAToPV = 0.05;
57 float minRToMeanVertex = 0.5;
61 float minPtV0 = 0.01;
62 float minPtV0FromCascade = 0.3;
63 float maxTglV0 = 2.;
64
66 float maxV0ToProngsRDiff = 50.;
67
68 float minCosPAXYMeanVertex = 0.95;
71
72 float maxRToMeanVertexCascV0 = 80; // don't consider as a cascade V0 seed if above this R
73 float minCosPACascV0 = 0.8; // min cos of pointing angle to PV for cascade V0 candidates
74 float minCosPA3bodyV0 = 0.8; // min cos of PA to PV for 3body V0
75 float minCosPA = 0.9;
76
77 float minRDiffV0Casc = 0.2;
78 float maxRDiffV03body = 3;
79 float maxRIniCasc = 90.; // don't consider as a cascade seed (circles/line intersection) if its R exceeds this
80
81 float maxDCAXYCasc = 0.3; // max DCA of cascade to PV in XY // TODO RS: shall we use real chi2 to vertex?
82 float maxDCAZCasc = 0.3; // max DCA of cascade to PV in Z
83 float maxDCAXY3Body = 0.5; // max DCA of 3 body decay to PV in XY // TODO RS: shall we use real chi2 to vertex?
84 float maxDCAZ3Body = 1.; // max DCA of 3 body decay to PV in Z
85 float minCosPACasc = 0.7; // min cos of PA to PV for cascade candidates
86 float minCosPA3body = 0.8; // min cos of PA to PV for 3body decay candidates
87 float minPtCasc = 0.01; // cascade minimum pT
88 float maxTglCasc = 2.; // maximum tgLambda of cascade
89 float minPt3Body = 0.01; // minimum pT of 3body V0
90 float maxTgl3Body = 2.; // maximum tgLambda of 3body V0
91
92 float maxRIni3body = 90.; // don't consider as a 3body seed (circles/line intersection) if its R exceeds this
93
94 // Cuts for TPC only tracks
95 bool mExcludeTPCtracks = false; // don't loop over TPC tracks if true (if loaded, dEdx info is used instead)
96 float mTPCTrackMaxX = -1.; // don't use TPC standalone tracks with X exceeding this;
97 float mTPCTrack2Beam = 21.f; // straight line for TPC track back to beamline
98 bool mTPCTrackPhotonTune = true; // use TPC-only photon tuning
99 int mTPCTrackMinNClusters = -1; // minimum number of clusters
100 float mTPCTrackXY2Radius = 90.f; // check for realistic conversion point, e.g., in material
101 float mTPCTrackD2R = 4.f; // check for maximal distance of pairs and their radii
102 float mTPCTrackDR = 90.f; // check if preliminary conversion point can lie somewhere reasonable
103 float minTPCdEdx = 250; // starting from this dEdx value, tracks with p > minMomTPCdEdx are always accepted
104 float minMomTPCdEdx = 0.8; // minimum p for tracks with dEdx > mMinTPCdEdx to be accepted
105 float maxV0TglAbsDiff = 0.3;
106 float mTPCTrackMaxChi2 = 4.;
107 float mTPCTrackMaxDZIni = 8.;
110
111 uint8_t mITSSAminNclu = 6; // global requirement of at least this many ITS clusters if no TPC info present (N.B.: affects all secondary vertexing)
112 uint8_t mITSSAminNcluCascades = 6; // require at least this many ITS clusters if no TPC info present for cascade finding.
113 bool mRejectITSonlyOBtrack = false; // reject tracks in OB with 4 hits (keep false for more low pt conversions)
114 bool mRequireTPCforCascBaryons = true; // require that baryon daughter of cascade has TPC
115 bool mSkipTPCOnlyCascade = true; // skip TPC only tracks when doing cascade finding
116 bool mSkipTPCOnly3Body = true; // skip TPC only tracks when doing cascade finding
117
118 // 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.
119 float mFractiondEdxforCascBaryons = 2.f; // 0.36f;
120 // default: average 2023 from C. Sonnabend, Nov 2023: ([0.217553 4.02762 0.00850178 2.33324 0.880904 ])
121 // to-do: grab from CCDB when available -> discussion with TPC experts, not available yet
122 float mBBpars[5] = {0.217553, 4.02762, 0.00850178, 2.33324, 0.880904};
123
124 // cuts on different V0 PID params
125 bool checkV0Hypothesis = true; // enable Mass Hypothesis check
126 float pidCutsPhoton[SVertexHypothesis::NPIDParams] = {0.001, 20, 0.10, 20, 0.10, 0.0, 0.0, 0.0, 0.0}; // Photon
127 float pidCutsK0[SVertexHypothesis::NPIDParams] = {0., 20, 0., 5.0, 0.0, 2.84798e-03, 9.84206e-04, 3.31951e-03, 2.39438}; // K0
128 float pidCutsLambda[SVertexHypothesis::NPIDParams] = {0., 20, 0., 5.0, 0.0, 1.09004e-03, 2.62291e-04, 8.93179e-03, 2.83121}; // Lambda
129 float pidCutsHTriton[SVertexHypothesis::NPIDParams] = {0.0025, 14, 0.07, 14, 0.0, 0.5, 0.0, 0.0, 0.0}; // HyperTriton
130 float pidCutsHhydrog4[SVertexHypothesis::NPIDParams] = {0.0025, 14, 0.07, 14, 0.0, 0.5, 0.0, 0.0, 0.0}; // Hyperhydrog4 - Need to update
131 //
132 // cuts on different Cascade PID params
134 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
135 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
136 float maximalCascadeWidth = 0.006;
137 //
138 // cuts on different 3 body PID params
140 float pidCutsH3L3body[SVertex3Hypothesis::NPIDParams] = {0.0025, 14, 0.07, 0.5}; // H3L -> d p pi-
141 float pidCutsH4L3body[SVertex3Hypothesis::NPIDParams] = {0.0025, 14, 0.07, 0.5}; // H4L -> t p pi-
142 float pidCutsHe4L3body[SVertex3Hypothesis::NPIDParams] = {0.0025, 14, 0.07, 0.5}; // He4L -> He3 p pi-
143 float pidCutsHe5L3body[SVertex3Hypothesis::NPIDParams] = {0.0025, 14, 0.07, 0.5}; // He5L -> He4 p pi-
144
146};
147} // namespace vertexing
148
149namespace framework
150{
151template <typename T>
152struct is_messageable;
153template <>
155};
156} // namespace framework
157
158} // end namespace o2
159
160#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 createFullV0s
fill V0s prongs/kinematics
float maxTglV0
maximum tgLambda of V0