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 inCanTrack() -
CanTrack()is used inSimpleTrackingMM(),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.