final lcio Track stores TrackerHits which can be accessed by track->getTrackerHits()
As well as separate subtracks that form this final lcio Track which can be accessed by track->getTracks()
One would always expect:
int n_hits_total = track->getTrackerHits().size();
int n_hits_vxd_sit = ( track->getTracks()[0] )->getTrackerHits().size();
int n_hits_tpc = ( track->getTracks()[1] )->getTrackerHits().size();
n_hits_total == n_hits_vxd_sit + n_hits_tpc; // always holds true
Issue
However sometimes track->getTracks()[0] corresponds to the TPC hits despite the fact that VXD and/or SIT hits are present.
Here is debug printout of such a case:
[ DEBUG6 "MySETAnalysis"] -- Final Track has 2 subtracks - will use these for displaying hits
[ VERBOSE "MySETAnalysis"] Track hits size:167
[ VERBOSE "MySETAnalysis"] VXD used: 2
[ VERBOSE "MySETAnalysis"] SIT used: 4
[ VERBOSE "MySETAnalysis"] FTD used: 0
[ VERBOSE "MySETAnalysis"] TPC used: 161
[ VERBOSE "MySETAnalysis"] SET used: 0
[ DEBUG6 "MySETAnalysis"] -- track i= 0 has 161 hits
[ DEBUG6 "MySETAnalysis"] -- track i= 1 has 12 hits // tpc hits from second curl
Track has 2 VXD hits, 4 SIT hits and 161 TPC hits (1st curl) = total 167
But despite having inner tracker hits one can see that subTrack for VXD and SIT hits is missing, so the total number of subtrack[0] and subtrack[1] hits doesn't add up to the 167!
Here is a debug printout example for a "good" track:
[ DEBUG6 "MySETAnalysis"] -- track has 2 subtracks - will use these for displaying hits
[ VERBOSE "MySETAnalysis"] Final track hits size:132
[ VERBOSE "MySETAnalysis"] VXD used: 0
[ VERBOSE "MySETAnalysis"] SIT used: 4
[ VERBOSE "MySETAnalysis"] FTD used: 0
[ VERBOSE "MySETAnalysis"] TPC used: 128
[ VERBOSE "MySETAnalysis"] SET used: 0
[ DEBUG6 "MySETAnalysis"] -- subTrack i= 0 has 4 hits
[ DEBUG6 "MySETAnalysis"] -- subTrack i= 1 has 128 hits
here is another example for the "good" track in case of additional curls in the TPC:
[ DEBUG6 "MySETAnalysis"] -- track has 3 subtracks - will use these for displaying hits
[ VERBOSE "MySETAnalysis"] Final track hits size:86
[ VERBOSE "MySETAnalysis"] VXD used: 6
[ VERBOSE "MySETAnalysis"] SIT used: 2
[ VERBOSE "MySETAnalysis"] FTD used: 0
[ VERBOSE "MySETAnalysis"] TPC used: 78
[ VERBOSE "MySETAnalysis"] SET used: 0
[ DEBUG6 "MySETAnalysis"] -- subTrack i= 0 has 8 hits
[ DEBUG6 "MySETAnalysis"] -- subTrack i= 1 has 78 hits
[ DEBUG6 "MySETAnalysis"] -- subTrack i= 2 has 68 hits
Maybe this happens when SiTrack and TPCTrack are failed to be combined?
But despite being failed to combine we are still using all hits in the final refit.. And Si hits most of the times are not outliers in the final refit.. But we don't write them int the subTrack?
Expected behaviour (?)
final lcio Track stores TrackerHits which can be accessed by
track->getTrackerHits()
As well as separate subtracks that form this final lcio Track which can be accessed by
track->getTracks()
One would always expect:
Issue
However sometimes
track->getTracks()[0]
corresponds to the TPC hits despite the fact that VXD and/or SIT hits are present.Here is debug printout of such a case:
Track has 2 VXD hits, 4 SIT hits and 161 TPC hits (1st curl) = total 167 But despite having inner tracker hits one can see that subTrack for VXD and SIT hits is missing, so the total number of subtrack[0] and subtrack[1] hits doesn't add up to the 167!
Here is a debug printout example for a "good" track:
here is another example for the "good" track in case of additional curls in the TPC:
Maybe this happens when SiTrack and TPCTrack are failed to be combined? But despite being failed to combine we are still using all hits in the final refit.. And Si hits most of the times are not outliers in the final refit.. But we don't write them int the subTrack?