SimpleTrackingMM method - checks in CanTrack

At this time, the SimpleTrackingMM method implements a check on the number of MicroMega hits for tracking, using the CanTrack() function. CanTrack() checks on upstream and downstream MM. For Downstream MM, the code is:

bool MManager::DownStreamOK() const
{

 const unsigned int Nup = downstream.size();
 if(Nup < 1)     return false; //TODO: in theory is possible with just one
 else return true;
}

So, even if only one of the downstream MM has a valid cluster, the code will return true. It seems to me this is inconsistent with SimpleTrackingMM, that relies on the two hits after the magnet (see https://gitlab.cern.ch/P348/p348-daq/-/blob/master/p348reco/tracking.h?ref_type=heads#L47).

I checked the following:

  • DownStreamOK() is called only in CanTrack()
  • CanTrack() is used in SimpleTrackingMM(), PointDeflectionTracking(), PrintMM(), GenfitTrack()

It looks that PointDeflectionTracking has to do with old (2018!) visible-mode data. My proposal: change DownStreamOK() to DownStreamOK(bool requireAtLeastTwo=false), and set requireAtLeastTwo=true for SimpleTrackingMM

May I ask your opinion @bbantoob @mituzi? I know that for appropriate tracking we do not rely on this code, but this is useful in early stage of analysis.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information