98 static constexpr int POS = 0,
NEG = 1;
112 SVertexer(
bool enabCascades =
true,
bool enab3body =
false) : mEnableCascades{enabCascades}, mEnable3BodyDecays{enab3body}
131 mMeanVertex =
v->getMeanVertex();
153 template <
class TVI,
class TCI,
class T3I,
class TR>
154 void extractPVReferences(
const TVI& v0s, TR& vtx2V0Refs,
const TCI& cascades, TR& vtx2CascRefs,
const T3I& vtxs3, TR& vtx2body3Refs);
155 bool checkV0(
const TrackCand& seed0,
const TrackCand& seed1,
int iP,
int iN,
int ithread);
156 int checkCascades(
const V0Index& v0Idx,
const V0&
v0,
float rv0, std::array<float, 3> pV0,
float p2V0,
int avoidTrackID,
int posneg,
VBracket v0vlist,
int ithread);
157 int check3bodyDecays(
const V0Index& v0Idx,
const V0&
v0,
float rv0, std::array<float, 3> pV0,
float p2V0,
int avoidTrackID,
int posneg,
VBracket v0vlist,
int ithread);
160 void updateTimeDependentParams();
163 float correctTPCTrack(TrackCand& trc,
const o2::tpc::TrackTPC& tTPC,
float tmus,
float tmusErr)
const;
167 return (uint64_t(id1) << 32) | id2;
173 gsl::span<const o2::tpc::TrackTPC> mTPCTracksArray;
174 gsl::span<const o2::tpc::TPCClRefElem> mTPCTrackClusIdx;
175 gsl::span<const unsigned char> mTPCRefitterShMap;
176 gsl::span<const unsigned int> mTPCRefitterOccMap;
178 std::unique_ptr<o2::gpu::GPUO2InterfaceRefit> mTPCRefitter;
180 gsl::span<const PVertex> mPVertices;
181 std::vector<std::vector<V0>> mV0sTmp;
182 std::vector<std::vector<Cascade>> mCascadesTmp;
183 std::vector<std::vector<Decay3Body>> m3bodyTmp;
184 std::vector<std::vector<V0Index>> mV0sIdxTmp;
185 std::vector<std::vector<CascadeIndex>> mCascadesIdxTmp;
186 std::vector<std::vector<Decay3BodyIndex>> m3bodyIdxTmp;
187 std::array<std::vector<TrackCand>, 2> mTracksPool{};
188 std::array<std::vector<int>, 2> mVtxFirstTrack{};
191 const SVertexerParams* mSVParams =
nullptr;
192 std::array<SVertexHypothesis, NHypV0> mV0Hyps;
193 std::array<SVertexHypothesis, NHypCascade> mCascHyps;
194 std::array<SVertex3Hypothesis, NHyp3body> m3bodyHyps;
195 std::vector<DCAFitterN<2>> mFitterV0;
196 std::vector<DCAFitterN<2>> mFitterCasc;
197 std::vector<DCAFitterN<3>> mFitter3body;
202 int mNV0s = 0, mNCascades = 0, mN3Bodies = 0, mNStrangeTracks = 0;
204 float mMinR2ToMeanVertex = 0;
205 float mMaxDCAXY2ToMeanVertex = 0;
206 float mMaxDCAXY2ToMeanVertexV0Casc = 0;
207 float mMaxDCAXY2ToMeanVertex3bodyV0 = 0;
208 float mMinR2DiffV0Casc = 0;
209 float mMaxR2ToMeanVertexCascV0 = 0;
210 float mMinPt2V0 = 1e-6;
211 float mMaxTgl2V0 = 2. * 2.;
212 float mMinPt2Casc = 1e-4;
213 float mMaxTgl2Casc = 2. * 2.;
214 float mMinPt23Body = 1e-4;
215 float mMaxTgl23Body = 2.f * 2.f;
218 float mTPCVDrift = 0;
219 float mTPCVDriftCorrFact = 1.;
220 float mTPCVDriftRef = 0;
221 float mTPCDriftTimeOffset = 0;
223 bool mEnableCascades =
true;
224 bool mEnable3BodyDecays =
false;