From 854aa0949dbb21dca12d8a7d376f4a51c162bf87 Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Fri, 8 Oct 2021 14:58:24 +0800
Subject: [PATCH] add protection not exist TrackState

---
 .../include/Tracking/TrackingHelper.h         | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/Reconstruction/Tracking/include/Tracking/TrackingHelper.h b/Reconstruction/Tracking/include/Tracking/TrackingHelper.h
index d3bcd2ef..9881d83a 100644
--- a/Reconstruction/Tracking/include/Tracking/TrackingHelper.h
+++ b/Reconstruction/Tracking/include/Tracking/TrackingHelper.h
@@ -28,22 +28,29 @@ inline edm4hep::TrackState getTrackStateAt(edm4hep::ConstTrack track, int locati
 }
 
 inline std::array<float,15> getCovMatrix(const edm4hep::ConstTrack &track) {
-    return track.getTrackStates(0).covMatrix;
+  if(track.trackStates_size()>0) return track.getTrackStates(0).covMatrix;
+  std::array<float,15> dummy{};
+  return dummy;
 }
 inline float getTanLambda(const edm4hep::ConstTrack &track) {
-    return track.getTrackStates(0).tanLambda;
+  if(track.trackStates_size()>0) return track.getTrackStates(0).tanLambda;
+  return 0;
 }
 inline float getOmega(const edm4hep::ConstTrack &track) {
-    return track.getTrackStates(0).omega;
+  if(track.trackStates_size()>0) return track.getTrackStates(0).omega;
+  return 0;
 }
 inline float getD0(const edm4hep::ConstTrack &track) {
-    return track.getTrackStates(0).D0;
+  if(track.trackStates_size()>0) return track.getTrackStates(0).D0;
+  return 0;
 }
 inline float getZ0(const edm4hep::ConstTrack &track) {
-    return track.getTrackStates(0).Z0;
+  if(track.trackStates_size()>0) return track.getTrackStates(0).Z0;
+  return 0;
 }
 inline float getPhi(const edm4hep::ConstTrack &track) {
-    return track.getTrackStates(0).phi;
+  if(track.trackStates_size()>0) return track.getTrackStates(0).phi;
+  return 0;
 }
 
 
-- 
GitLab