diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx
index 7c306ea5763a0ec1876ed81c46d5a4bebfb2638c..d00811462f2f48184cf57d8d9b3d975172d1e4d4 100644
--- a/reco/L1/CbmL1.cxx
+++ b/reco/L1/CbmL1.cxx
@@ -943,7 +943,12 @@ void CbmL1::Reconstruct(CbmEvent* event)
     }
   }
 
-  if ((fPerformance) && (fSTAPDataMode < 2)) { InputPerformance(); }
+  //
+  // tracker input performance is moved to external QA tasks.
+  // InputPerformance() method is not optimised to run with the event builder
+  // TODO: verify QA tasks and remove InputPerformance()
+  // if ((fPerformance) && (fSTAPDataMode < 2)) { InputPerformance(); }
+  //
 
   //  FieldApproxCheck();
   //  FieldIntegralCheck();
diff --git a/reco/L1/CbmL1Performance.cxx b/reco/L1/CbmL1Performance.cxx
index 547921ac25936b278c518c08f3fac39030d6f726..62e199a02c91af733f34891e36c8cb33d0fec9a3 100644
--- a/reco/L1/CbmL1Performance.cxx
+++ b/reco/L1/CbmL1Performance.cxx
@@ -1903,7 +1903,7 @@ void CbmL1::InputPerformance()
 
   map<unsigned int, unsigned int>::iterator it;
 
-  if (fpStsHits && fpStsHitMatches) {
+  if (fpStsHits && fpStsHitMatches && fpStsPoints) {
     for (int iH = 0; iH < fpStsHits->GetEntriesFast(); iH++) {
 
       const CbmStsHit* sh = L1_DYNAMIC_CAST<CbmStsHit*>(fpStsHits->At(iH));
@@ -1976,7 +1976,7 @@ void CbmL1::InputPerformance()
   }  // sts
 
 
-  if (fpMvdHits && fpMvdHitMatches) {
+  if (fpMvdHits && fpMvdHitMatches && fpMvdPoints) {
     Int_t nEnt = fpMvdHits->GetEntriesFast();
     for (int j = 0; j < nEnt; j++) {
 
@@ -2015,7 +2015,7 @@ void CbmL1::InputPerformance()
   }  // mvd
 
 
-  if (fpMuchPixelHits && fpMuchHitMatches) {
+  if (fpMuchPixelHits && fpMuchHitMatches && fpMuchPoints) {
     for (int iH = 0; iH < fpMuchPixelHits->GetEntriesFast(); iH++) {
 
       const CbmMuchPixelHit* sh = L1_DYNAMIC_CAST<CbmMuchPixelHit*>(fpMuchPixelHits->At(iH));
@@ -2072,7 +2072,7 @@ void CbmL1::InputPerformance()
   }  // much
 
 
-  if (fpTrdHits && fpTrdHitMatches) {
+  if (fpTrdHits && fpTrdHitMatches && fpTrdPoints) {
     for (int iH = 0; iH < fpTrdHits->GetEntriesFast(); iH++) {
 
       const CbmTrdHit* sh = L1_DYNAMIC_CAST<CbmTrdHit*>(fpTrdHits->At(iH));
@@ -2134,7 +2134,7 @@ void CbmL1::InputPerformance()
   }  // much
 
 
-  if (fpTofHits && fpTofHitMatches) {
+  if (fpTofHits && fpTofHitMatches && fpTofPoints) {
     for (int iH = 0; iH < fpTofHits->GetEntriesFast(); iH++) {
 
       const CbmTofHit* sh = L1_DYNAMIC_CAST<CbmTofHit*>(fpTofHits->At(iH));