I've been trying to make different track finders work together in a single
job, mainly to test the calorimeter assisted tracking performance in various
modes, and the deficiencies of standard Track and TrackerHit interfaces
really get in the way.
The biggest problem with TrackerHit (besides being unusable for describing
2-dimensional hits like those in silicon strips) is that it's completely
detached from any detector related objects, like layers or surfaces. I
cannot even extract this information from underlying simulated hits in any
reliable way since what kind of hits getRawHits() returns is up to
implementation. I ended up using reflection framework to analyze hits I get
from other track finders, which slows things down quite a bit.
Problems with org.lcsim.Track have been discussed recently, so just one more
observation: getTrackParameter(int i) seems to be a source of bugs, since
mapping of indices to parameters is not defined in the interface. May be it
should be complemented by getTrackParameter(Track.ParameterName par), and/or
ParameterName should be extended to associate index with the parameter, like
enum ParameterName {
d0(0),
phi0(1),
omega(2),
z0(3),
s(4)
public final int index;
private ParameterName(int index) {this.index = index;}
}
- Dima.
|