From c74eeec628ce17209f59640778e53a98250f3558 Mon Sep 17 00:00:00 2001
From: Alexander Zinchenko <Alexander.Zinchenko@jinr.ru>
Date: Sat, 1 Apr 2017 16:11:08 +0400
Subject: [PATCH] Fix for very low multiplicity events (some topologies).

---
 lhetrack/MpdEctTrackFinderCpc.cxx | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/lhetrack/MpdEctTrackFinderCpc.cxx b/lhetrack/MpdEctTrackFinderCpc.cxx
index 54978f9..9417571 100644
--- a/lhetrack/MpdEctTrackFinderCpc.cxx
+++ b/lhetrack/MpdEctTrackFinderCpc.cxx
@@ -1029,7 +1029,9 @@ void MpdEctTrackFinderCpc::DoTracking(Int_t iPass)
     //Int_t laySkip = 2, layMax = ((MpdKalmanHit*)fKHits->Last())->GetLayer(), lay0 = layMax;
     Int_t laySkip = 2, layMax = ((MpdKalmanHit*)fKHits->First())->GetLayer(), lay0 = layMax;
     if (hit) lay0 = hit->GetLayer() - 1;
-    else if (track->GetPos() > 0 && layMax > fgkNlays2) lay0 = layMax - fgkNlays2;
+    //AZ else if (track->GetPos() > 0 && layMax > fgkNlays2) lay0 = layMax - fgkNlays2;
+    else if (track->GetPos() > 0 && layMax > fgkNlays2) lay0 = fgkNlays2; // AZ - 31.03.17
+    else if (track->GetPos() < 0 && layMax <= fgkNlays2) continue; // AZ - 31.03.17 - empty ECT at Z<0
     MpdEctKalmanTrack tracks[10];
 
     for (Int_t j = 0; j < laySkip; ++j) {
@@ -1153,7 +1155,7 @@ void MpdEctTrackFinderCpc::DoTracking(Int_t iPass)
       track->Print("");
       */
     }
-  }
+  } // for (Int_t i = 0; i < nCand;
 }
     
 //__________________________________________________________________________
@@ -1163,17 +1165,18 @@ Int_t MpdEctTrackFinderCpc::RunKalmanFilter(MpdEctKalmanTrack *track, Int_t layB
 
   const Double_t rMin = 49.2, rMax = 110.5; // min and max radial size of ECT - to be taken elsewhere
   //cout << fHits->GetEntriesFast() << endl;
-  Int_t layMax = ((MpdKalmanHit*)fKHits->Last())->GetLayer();
+  Int_t layMax = ((MpdKalmanHit*)fKHits->Last())->GetLayer(); // min. layer
   MpdKalmanHit *hitOK = 0x0;
   MpdKalmanTrack::TrackDir trackDir = track->GetDirection();
   //Int_t layBeg = layMax, layEnd = -1, dLay = -1, layOK = -1;
   Int_t layEnd = -1, dLay = -1, layOK = -1;
   if (track->GetPosNew() < 0) layEnd = fgkNlays2;
   if (trackDir == MpdKalmanTrack::kOutward) {
-    layEnd = layMax + 1;
     dLay = 1;
+    //AZ layEnd = layMax + 1;
     //AZ if (track->GetPosNew() > 0 && layMax > fgkNlays2) layEnd -= fgkNlays2;
-    if (track->GetPosNew() > 0 && layMax >= fgkNlays2) layEnd = fgkNlays2; //AZ - 28/03/17
+    layEnd = ((MpdKalmanHit*)fKHits->First())->GetLayer() + 1; //AZ - 31/03/17
+    if (track->GetPosNew() > 0 && layEnd > fgkNlays2+1) layEnd = fgkNlays2 + 1; //AZ - 31/03/17
   }
   
   //Int_t indxOK = hits->IndexOf(hitOK);
-- 
GitLab