1 /* 2 * FullFitKalman_Test.java 3 * 4 * Created on July 24, 2007, 5:00 PM 5 * 6 * $Id: FullFitKalman_Test.java,v 1.1.1.1 2010/04/08 20:38:00 jeremy Exp $ 7 */ 8 9 package org.lcsim.recon.tracking.trffit; 10 11 import java.util.ArrayList; 12 import java.util.Iterator; 13 import java.util.List; 14 import junit.framework.TestCase; 15 import org.lcsim.recon.tracking.trfbase.Cluster; 16 import org.lcsim.recon.tracking.trfbase.ETrack; 17 import org.lcsim.recon.tracking.trfbase.Hit; 18 import org.lcsim.recon.tracking.trfbase.Propagator; 19 import org.lcsim.recon.tracking.trfbase.SurfTest; 20 import org.lcsim.recon.tracking.trfbase.TrackError; 21 import org.lcsim.recon.tracking.trfbase.TrackVector; 22 import org.lcsim.recon.tracking.trflayer.PropTest; 23 import org.lcsim.recon.tracking.trfutil.Assert; 24 import org.lcsim.recon.tracking.trfutil.WAvg; 25 26 /** 27 * 28 * @author Norman Graf 29 */ 30 public class FullFitKalman_Test extends TestCase 31 { 32 private boolean debug = false; 33 /** Creates a new instance of FullFitKalman_Test */ 34 public void testFullFitKalman() 35 { 36 String component = "FullFitKalman"; 37 String ok_prefix = component + " (I): "; 38 String error_prefix = component + " test (E): "; 39 40 if(debug) System.out.println(ok_prefix + "-------- Testing component " + component 41 + ". --------" ); 42 43 //******************************************************************** 44 45 // Create starting surface and track. 46 47 SurfTest stest = new SurfTest(1); 48 double tvec = 2.1; 49 double terr = 0.014; 50 TrackVector vec = new TrackVector(); 51 TrackError err = new TrackError(); 52 vec.set(0, tvec); 53 err.set(0,0, terr); 54 err.set(1,1, 0.000001); 55 err.set(2,2, 0.000001); 56 err.set(3,3, 0.000001); 57 err.set(4,4, 0.000001); 58 ETrack tre = new ETrack( stest.newPureSurface(), vec, err ); 59 WAvg avg = new WAvg(); 60 avg.addPair(tvec,terr); 61 62 //******************************************************************** 63 64 if(debug) System.out.println(ok_prefix + "Create clusters and generate prediction." 65 ); 66 List clusters = new ArrayList(); 67 int nmsmt = 5; 68 double msmt[] = { 2.00, 2.33, 1.94, 2.22, 1.87 }; 69 double emsmt[] = { 0.01, 0.015, 0.016, 0.023, 0.012 }; 70 int i; 71 for ( i=0; i<nmsmt; ++i ) 72 { 73 clusters.add( new ClusTestFit1(stest,msmt[i],emsmt[i]) ); 74 avg.addPair(msmt[i],emsmt[i]); 75 }; 76 if(debug) System.out.println("avg = "+avg ); 77 78 //******************************************************************** 79 80 // Create hits. 81 List hits = new ArrayList(); 82 83 for( Iterator iclu=clusters.iterator(); iclu.hasNext(); ) 84 { 85 Cluster clu = (Cluster)iclu.next(); 86 List newhits = clu.predict(tre, clu); 87 hits.add( newhits.get(newhits.size()-1) ); 88 } 89 // Check the list of Hits 90 if(debug) 91 { 92 for ( Iterator ihit=hits.iterator(); ihit.hasNext(); ) 93 { 94 System.out.println("Hit= "+ihit.next()); 95 } 96 } 97 98 //******************************************************************** 99 100 // Put hit on an HTrack. 101 HTrack trh = new HTrack(tre); 102 for ( Iterator ihit=hits.iterator(); ihit.hasNext(); ) 103 { 104 trh.addHit((Hit)ihit.next()); 105 } 106 107 //******************************************************************** 108 109 if(debug) System.out.println(ok_prefix + "Construct fitter." ); 110 Propagator pprop = new PropTest(); 111 FullFitKalman fitk = new FullFitKalman(pprop); 112 if(debug) System.out.println(fitk ); 113 114 //******************************************************************** 115 if(debug) System.out.println("tre= \n"+tre); 116 if(debug) System.out.println("trh= \n"+trh); 117 if(debug) System.out.println(ok_prefix + "Fit with all hits." ); 118 Assert.assertTrue( ! trh.isFit() ); 119 fitk.fit(trh); 120 if(debug) System.out.println( "trh= "+trh ); 121 double small = 1.e-10; 122 Assert.assertTrue( trh.isFit() ); 123 if(debug) System.out.println(Math.abs( trh.newTrack().vector().get(0) - avg.average())); 124 Assert.assertTrue( Math.abs( trh.newTrack().vector().get(0) - avg.average() ) 125 < small ); 126 Assert.assertTrue( Math.abs( trh.newTrack().error().get(0,0) - avg.error() ) 127 < small ); 128 if(debug) System.out.println("dchisq="+Math.abs( trh.chisquared() - avg.chiSquared() ) ); 129 Assert.assertTrue( Math.abs( trh.chisquared() - avg.chiSquared() ) 130 < small ); 131 132 //******************************************************************** 133 134 if(debug) System.out.println(ok_prefix 135 + "------------- All tests passed. -------------" ); 136 137 //******************************************************************** 138 } 139 140 }