lcsim/src/org/lcsim/util/lcio
diff -u -r1.3 -r1.4
--- SIOTrack.java 23 Oct 2006 19:42:35 -0000 1.3
+++ SIOTrack.java 11 Sep 2007 18:18:04 -0000 1.4
@@ -7,60 +7,50 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.lcsim.event.Track;
import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseTrack;
/**
*
* @author Tony Johnson
- * @version $Id: SIOTrack.java,v 1.3 2006/10/23 19:42:35 tonyj Exp $
+ * @version $Id: SIOTrack.java,v 1.4 2007/09/11 18:18:04 tonyj Exp $
*/
-class SIOTrack implements Track
+class SIOTrack extends BaseTrack
{
private List<SIORef> tempHits;
private List<SIORef> tempTracks;
- private int type;
- private double[] parameters;
- private double[] referencePoint;
- private int[] hitNumbers;
- private float chi2;
- private int ndf;
- private float dEdx;
- private float dEdxError;
- private float radiusOfInnermostHit;
- private List<Track> tracks;
- private List<TrackerHit> hits;
- private SymmetricMatrix errorMatrix;
-
- SIOTrack(SIOInputStream in, int flag, int version) throws IOException
+ SIOTrack(SIOInputStream in, int flag, int version, double bField) throws IOException
{
- type = in.readInt();
- parameters = new double[5];
+ _type = in.readInt();
+ double[] parameters = new double[5];
for (int i=0; i<parameters.length; i++) parameters[i] = in.readFloat();
+ setTrackParameters(parameters,bField);
double[] covMatrix = new double[15];
for (int i=0; i<covMatrix.length; i++) covMatrix[i] = in.readFloat();
- errorMatrix = new SymmetricMatrix(5,covMatrix,true);
- referencePoint = new double[3];
- referencePoint[0] = in.readFloat();
- referencePoint[1] = in.readFloat();
- referencePoint[2] = in.readFloat();
- chi2 = in.readFloat();
- ndf = in.readInt() ;
- dEdx = in.readFloat();
- dEdxError = in.readFloat();
- radiusOfInnermostHit = in.readFloat() ;
+ _covMatrix = new SymmetricMatrix(5,covMatrix,true);
+ _refPoint = new double[3];
+ _refPoint[0] = in.readFloat();
+ _refPoint[1] = in.readFloat();
+ _refPoint[2] = in.readFloat();
+ _chi2 = in.readFloat();
+ _ndf = in.readInt() ;
+ _dEdx = in.readFloat();
+ _dEdxErr = in.readFloat();
+ _innermostHitRadius = in.readFloat() ;
int nHitNumbers = in.readInt() ;
- hitNumbers = new int[nHitNumbers] ;
+ _subdetId = new int[nHitNumbers] ;
for (int i = 0; i < nHitNumbers; i++)
{
- hitNumbers[i] = in.readInt() ;
+ _subdetId[i] = in.readInt() ;
}
int nTracks = in.readInt();
tempTracks = new ArrayList(nTracks);
- tracks = null;
+ _tracks = null;
for (int i=0; i<nTracks; i++)
{
tempTracks.add(in.readPntr());
@@ -69,7 +59,7 @@
{
int nHits = in.readInt();
tempHits = new ArrayList(nHits);
- hits = null;
+ _hits = null;
for (int i = 0; i < nHits; i++)
{
tempHits.add(in.readPntr());
@@ -118,134 +108,29 @@
public List<TrackerHit> getTrackerHits()
{
- if (hits == null && tempHits != null)
+ if (_hits == null && tempHits != null)
{
- hits = new ArrayList<TrackerHit>(tempHits.size());
+ _hits = new ArrayList<TrackerHit>(tempHits.size());
for (SIORef ref : tempHits)
{
- hits.add((TrackerHit) ref.getObject());
+ _hits.add((TrackerHit) ref.getObject());
}
tempHits = null;
}
- return hits;
+ return _hits == null ? Collections.<TrackerHit>emptyList() : _hits;
}
public List<Track> getTracks()
{
- if (tracks == null && tempTracks != null)
+ if (_tracks == null && tempTracks != null)
{
- tracks = new ArrayList<Track>(tempTracks.size());
+ _tracks = new ArrayList<Track>(tempTracks.size());
for (SIORef ref : tempTracks)
{
- tracks.add((Track) ref.getObject());
+ _tracks.add((Track) ref.getObject());
}
tempTracks = null;
}
- return tracks;
- }
-
- public double getTrackParameter(int i)
- {
- return parameters[i];
- }
-
- public boolean isReferencePointPCA()
- {
- return false;
- }
-
- public double getdEdxError()
- {
- return dEdxError;
- }
-
- public double getdEdx()
- {
- return dEdx;
- }
-
- public int getType()
- {
- return type;
- }
-
- public double[] getTrackParameters()
- {
- return parameters;
- }
-
- public int[] getSubdetectorHitNumbers()
- {
- return hitNumbers;
- }
-
- public double getReferencePointZ()
- {
- return referencePoint[2];
- }
-
- public double getReferencePointY()
- {
- return referencePoint[1];
- }
-
- public boolean fitSuccess()
- {
- return false;
- }
-
- public int getCharge()
- {
- return (int) Math.signum(parameters[2]);
- }
-
- public double getChi2()
- {
- return chi2;
- }
-
- public SymmetricMatrix getErrorMatrix()
- {
- return errorMatrix;
- }
-
- public double[] getMomentum()
- {
- return null;
- }
-
- public int getNDF()
- {
- return ndf;
- }
-
- public double getPX()
- {
- return Double.NaN;
- }
-
- public double getPY()
- {
- return Double.NaN;
- }
-
- public double getPZ()
- {
- return Double.NaN;
- }
-
- public double getRadiusOfInnermostHit()
- {
- return radiusOfInnermostHit;
- }
-
- public double[] getReferencePoint()
- {
- return referencePoint;
- }
-
- public double getReferencePointX()
- {
- return referencePoint[0];
+ return _tracks == null ? Collections.<Track>emptyList() : _tracks;
}
}
lcsim/src/org/lcsim/util/lcio
diff -u -r1.2 -r1.3
--- SIOTrackBlockHandler.java 2 Aug 2005 17:18:06 -0000 1.2
+++ SIOTrackBlockHandler.java 11 Sep 2007 18:18:04 -0000 1.3
@@ -2,6 +2,8 @@
import hep.lcd.io.sio.SIOInputStream;
import hep.lcd.io.sio.SIOOutputStream;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
import java.io.IOException;
@@ -13,12 +15,14 @@
*/
class SIOTrackBlockHandler extends AbstractBlockHandler
{
+ private static final Hep3Vector origin = new BasicHep3Vector();
public String getType() { return "Track"; }
public Class getClassForType() { return Track.class; }
void addCollectionElements(LCIOEvent event, LCIOCollection collection, SIOInputStream in, int n, int version) throws IOException
{
+ double bField = event.getDetector().getFieldMap().getField(origin).z();
for (int i = 0; i < n; i++)
- collection.add(new SIOTrack(in, collection.getFlags(), version));
+ collection.add(new SIOTrack(in, collection.getFlags(), version, bField));
}
void writeCollectionElement(Object element, SIOOutputStream out, int flags) throws IOException
{