@@ -49,11 +49,13 @@ void SVertexer::process(const o2::globaltracking::RecoContainer& recoData) // ac
4949 auto & seedP = mTracksPool [POS ][itp];
5050 int firstN = mVtxFirstTrack [NEG ][seedP.vBracket .getMin ()];
5151 if (firstN < 0 ) {
52+ LOG (DEBUG ) << " No partner is found for pos.track " << itp << " out of " << ntrP;
5253 continue ;
5354 }
5455 for (int itn = firstN; itn < ntrN; itn++) { // start from the 1st negative track of lowest-ID vertex of positive
5556 auto & seedN = mTracksPool [NEG ][itn];
5657 if (seedN.vBracket > seedP.vBracket ) { // all vertices compatible with seedN are in future wrt that of seedP
58+ LOG (DEBUG ) << " Brackets do not match" ;
5759 break ;
5860 }
5961#ifdef WITH_OPENMP
@@ -231,6 +233,7 @@ bool SVertexer::checkV0(const TrackCand& seedP, const TrackCand& seedN, int iP,
231233 float rv0 = std::sqrt (r2v0), drv0P = rv0 - seedP.minR , drv0N = rv0 - seedN.minR ;
232234 if (drv0P > mSVParams ->causalityRTolerance || drv0P < -mSVParams ->maxV0ToProngsRDiff ||
233235 drv0N > mSVParams ->causalityRTolerance || drv0N < -mSVParams ->maxV0ToProngsRDiff ) {
236+ LOG (DEBUG ) << " RejCausality " << drv0P << " " << drv0N;
234237 return false ;
235238 }
236239
@@ -250,9 +253,11 @@ bool SVertexer::checkV0(const TrackCand& seedP, const TrackCand& seedN, int iP,
250253 std::array<float , 3 > pV0 = {pP[0 ] + pN[0 ], pP[1 ] + pN[1 ], pP[2 ] + pN[2 ]};
251254 float pt2V0 = pV0[0 ] * pV0[0 ] + pV0[1 ] * pV0[1 ], prodXYv0 = dxv0 * pV0[0 ] + dyv0 * pV0[1 ], tDCAXY = prodXYv0 / pt2V0;
252255 if (pt2V0 < mMinPt2V0 ) { // pt cut
256+ LOG (DEBUG ) << " RejPt2 " << pt2V0;
253257 return false ;
254258 }
255259 if (pV0[2 ] * pV0[2 ] / pt2V0 > mMaxTgl2V0 ) { // tgLambda cut
260+ LOG (DEBUG ) << " RejTgL " << pV0[2 ] * pV0[2 ] / pt2V0;
256261 return false ;
257262 }
258263 float p2V0 = pt2V0 + pV0[2 ] * pV0[2 ], ptV0 = std::sqrt (pt2V0);
@@ -266,17 +271,19 @@ bool SVertexer::checkV0(const TrackCand& seedP, const TrackCand& seedN, int iP,
266271 goodHyp = hypCheckStatus[ipid] = true ;
267272 }
268273 }
269- if (!goodHyp) {
274+ if (!goodHyp && mSVParams ->checkV0Hypothesis ) {
275+ LOG (DEBUG ) << " RejHypo" ;
270276 return false ;
271277 }
272278
273- bool checkForCascade = mEnableCascades && r2v0 < mMaxR2ToMeanVertexCascV0 && (hypCheckStatus[HypV0::Lambda] || hypCheckStatus[HypV0::AntiLambda]);
279+ bool checkForCascade = mEnableCascades && r2v0 < mMaxR2ToMeanVertexCascV0 && (! mSVParams -> checkV0Hypothesis || ( hypCheckStatus[HypV0::Lambda] || hypCheckStatus[HypV0::AntiLambda]) );
274280 bool rejectIfNotCascade = false ;
275281 float dcaX = dxv0 - pV0[0 ] * tDCAXY, dcaY = dyv0 - pV0[1 ] * tDCAXY, dca2 = dcaX * dcaX + dcaY * dcaY;
276282 float cosPAXY = prodXYv0 / std::sqrt (r2v0 * pt2V0);
277283
278284 if (checkForCascade) { // use loser cuts for cascade v0 candidates
279285 if (dca2 > mMaxDCAXY2ToMeanVertexV0Casc || cosPAXY < mSVParams ->minCosPAXYMeanVertexCascV0 ) {
286+ LOG (DEBUG ) << " Rej for cascade DCAXY2: " << dca2 << " << cosPAXY: " << cosPAXY;
280287 return false ;
281288 }
282289 }
@@ -298,6 +305,7 @@ bool SVertexer::checkV0(const TrackCand& seedP, const TrackCand& seedN, int iP,
298305 float dx = v0XYZ[0 ] - pv.getX (), dy = v0XYZ[1 ] - pv.getY (), dz = v0XYZ[2 ] - pv.getZ (), prodXYZv0 = dx * pV0[0 ] + dy * pV0[1 ] + dz * pV0[2 ];
299306 float cosPA = prodXYZv0 / std::sqrt ((dx * dx + dy * dy + dz * dz) * p2V0);
300307 if (cosPA < bestCosPA) {
308+ LOG (DEBUG ) << " Rej. cosPA: " << cosPA;
301309 continue ;
302310 }
303311 if (!added) {
@@ -318,10 +326,10 @@ bool SVertexer::checkV0(const TrackCand& seedP, const TrackCand& seedN, int iP,
318326 // check cascades
319327 if (checkForCascade) {
320328 int nCascAdded = 0 ;
321- if (hypCheckStatus[HypV0::Lambda]) {
329+ if (hypCheckStatus[HypV0::Lambda] || ! mSVParams -> checkCascadeHypothesis ) {
322330 nCascAdded += checkCascades (rv0, pV0, p2V0, iN, NEG , ithread);
323331 }
324- if (hypCheckStatus[HypV0::AntiLambda]) {
332+ if (hypCheckStatus[HypV0::AntiLambda] || ! mSVParams -> checkCascadeHypothesis ) {
325333 nCascAdded += checkCascades (rv0, pV0, p2V0, iP, POS , ithread);
326334 }
327335 if (!nCascAdded && rejectIfNotCascade) { // v0 would be accepted only if it creates a cascade
0 commit comments