99 static constexpr int POS = 0,
NEG = 1;
113 SVertexer(
bool enabCascades =
true,
bool enab3body =
false) : mEnableCascades{enabCascades}, mEnable3BodyDecays{enab3body}
132 mMeanVertex =
v->getMeanVertex();
154 template <
class TVI,
class TCI,
class T3I,
class TR>
155 void extractPVReferences(
const TVI& v0s, TR& vtx2V0Refs,
const TCI& cascades, TR& vtx2CascRefs,
const T3I& vtxs3, TR& vtx2body3Refs);
156 bool checkV0(
const TrackCand& seed0,
const TrackCand& seed1,
int iP,
int iN,
int ithread);
157 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);
158 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);
161 void updateTimeDependentParams();
164 float correctTPCTrack(TrackCand& trc,
const o2::tpc::TrackTPC& tTPC,
float tmus,
float tmusErr)
const;
168 return (uint64_t(id1) << 32) | id2;
174 gsl::span<const o2::tpc::TrackTPC> mTPCTracksArray;
175 gsl::span<const o2::tpc::TPCClRefElem> mTPCTrackClusIdx;
176 gsl::span<const unsigned char> mTPCRefitterShMap;
177 gsl::span<const unsigned int> mTPCRefitterOccMap;
179 std::unique_ptr<o2::gpu::GPUO2InterfaceRefit> mTPCRefitter;
181 gsl::span<const PVertex> mPVertices;
182 std::vector<std::vector<V0>> mV0sTmp;
183 std::vector<std::vector<Cascade>> mCascadesTmp;
184 std::vector<std::vector<Decay3Body>> m3bodyTmp;
185 std::vector<std::vector<V0Index>> mV0sIdxTmp;
186 std::vector<std::vector<CascadeIndex>> mCascadesIdxTmp;
187 std::vector<std::vector<Decay3BodyIndex>> m3bodyIdxTmp;
188 std::array<std::vector<TrackCand>, 2> mTracksPool{};
189 std::array<std::vector<int>, 2> mVtxFirstTrack{};
192 const SVertexerParams* mSVParams =
nullptr;
193 std::array<SVertexHypothesis, NHypV0> mV0Hyps;
194 std::array<SVertexHypothesis, NHypCascade> mCascHyps;
195 std::array<SVertex3Hypothesis, NHyp3body> m3bodyHyps;
196 std::vector<DCAFitterN<2>> mFitterV0;
197 std::vector<DCAFitterN<2>> mFitterCasc;
198 std::vector<DCAFitterN<3>> mFitter3body;
203 int mNV0s = 0, mNCascades = 0, mN3Bodies = 0, mNStrangeTracks = 0;
205 float mMinR2ToMeanVertex = 0;
206 float mMaxDCAXY2ToMeanVertex = 0;
207 float mMaxDCAXY2ToMeanVertexV0Casc = 0;
208 float mMaxDCAXY2ToMeanVertex3bodyV0 = 0;
209 float mMinR2DiffV0Casc = 0;
210 float mMaxR2ToMeanVertexCascV0 = 0;
211 float mMinPt2V0 = 1e-6;
212 float mMaxTgl2V0 = 2. * 2.;
213 float mMinPt2Casc = 1e-4;
214 float mMaxTgl2Casc = 2. * 2.;
215 float mMinPt23Body = 1e-4;
216 float mMaxTgl23Body = 2.f * 2.f;
219 float mTPCVDrift = 0;
220 float mTPCVDriftCorrFact = 1.;
221 float mTPCVDriftRef = 0;
222 float mTPCDriftTimeOffset = 0;
224 bool mEnableCascades =
true;
225 bool mEnable3BodyDecays =
false;