1 package org.lcsim.recon.tracking.trffit; 2 // Hit class to test fitter. 3 // Prediction is the first track parameter. 4 // Each hit returns one prediction. 5 // Measurement and error are specified in hit constructor. 6 import org.lcsim.recon.tracking.trfbase.ETrack; 7 import org.lcsim.recon.tracking.trfbase.Hit; 8 import org.lcsim.recon.tracking.trfbase.HitDerivative; 9 import org.lcsim.recon.tracking.trfbase.HitError; 10 import org.lcsim.recon.tracking.trfbase.HitVector; 11 import org.lcsim.recon.tracking.trfutil.Assert; 12 13 //********************************************************************** 14 15 public class HitTestFit1 extends Hit 16 { 17 18 // static methods 19 20 // Return the type name. 21 public static String typeName() 22 { return "HitTestFit1"; } 23 24 // Return the type. 25 public static String staticType() 26 { return typeName(); } 27 28 // data 29 private double _msmt; // measurement 30 private double _emsmt; // square of measured error 31 private double _pred; // prediction 32 private double _epred; // square of prediction error 33 34 // methods 35 36 // Output stream. 37 public String toString() 38 { 39 return "TestFit1 hit: \n" 40 + "measure = " + measuredVector().get(0) + " +/- " 41 + Math.sqrt(_emsmt) + "\n" 42 + "predict = " + predictedVector().get(0) + " +/- " 43 + Math.sqrt(_epred); 44 } 45 46 // Equality. 47 protected boolean equal( Hit hit) 48 { 49 Assert.assertTrue( hit.type() == type() ); 50 return cluster() == hit.cluster() && 51 _pred == (( HitTestFit1 ) hit)._pred; 52 }; 53 54 55 56 // Constructor. 57 public HitTestFit1(double msmt, double emsmt, ETrack tre) 58 {_msmt = msmt; 59 _emsmt = emsmt; 60 update(tre); 61 } 62 63 // Return the type. 64 public String type() 65 { return staticType(); } 66 67 // Return hit chractersistics. 68 public int size() 69 { return 1; } 70 public HitVector measuredVector() 71 { return new HitVector(_msmt); } 72 public HitError measuredError() 73 { return new HitError(_emsmt); } 74 public HitVector predictedVector() 75 { return new HitVector(_pred); } 76 public HitError predictedError() 77 { return new HitError(_epred); } 78 public HitDerivative dHitdTrack() 79 { 80 HitDerivative hder = new HitDerivative(1); 81 hder.set(0,0, 1.0); 82 return hder; 83 } 84 public HitVector differenceVector() 85 { return predictedVector().minus(measuredVector()); } 86 87 // Update. 88 public void update( ETrack tre ) 89 { 90 _pred = tre.vector().get(0); 91 _epred = tre.error().get(0,0); 92 } 93 94 }