View Javadoc

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 }