View Javadoc

1   /*
2    * HitZPlane1Generator_Test.java
3    *
4    * Created on July 24, 2007, 11:07 PM
5    *
6    * $Id: HitZPlane1Generator_Test.java,v 1.1.1.1 2010/04/08 20:38:00 jeremy Exp $
7    */
8   
9   package org.lcsim.recon.tracking.trfzp;
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.TrackError;
19  import org.lcsim.recon.tracking.trfbase.TrackVector;
20  import org.lcsim.recon.tracking.trfbase.VTrack;
21  import org.lcsim.recon.tracking.trfutil.Assert;
22  import org.lcsim.recon.tracking.trfutil.TRFMath;
23  
24  /**
25   *
26   * @author Norman Graf
27   */
28  public class HitZPlane1Generator_Test extends TestCase
29  {
30      private boolean debug;
31      /** Creates a new instance of HitZPlane1Generator_Test */
32      public void testHitZPlane1Generator()
33      {
34          String component = "HitZPlane1Generator";
35          String ok_prefix = component + " (I): ";
36          String error_prefix = component + " test (E): ";
37          
38          if(debug) System.out.println( ok_prefix
39                  + "---------- Testing component " + component
40                  + ". ----------" );
41          
42          //********************************************************************
43          
44          if(debug) System.out.println( ok_prefix + "Test constructor." );
45          double zpos = 25.0;
46          double wx = 0.1;
47          double wy = 0.5;
48          double daxy = 0.01;
49          HitZPlane1Generator gen = new HitZPlane1Generator(zpos,wx,wy,daxy);
50          if(debug) System.out.println( gen );
51          //  Assert.assertTrue( new HitZPlane1Generator(zpos,wx,wy,daxy) != 0);
52          
53          //********************************************************************
54          
55          if(debug) System.out.println( ok_prefix + "Generate a list of hits." );
56          double x_track = 1.2345;
57          double y_track = 6.789;
58          double     axy = wx*x_track+wy*y_track;
59          SurfZPlane szp =  new SurfZPlane(zpos);
60          TrackVector vec = new TrackVector();
61          vec.set(SurfZPlane.IX, x_track);
62          vec.set(SurfZPlane.IY, y_track);
63          TrackError err = new TrackError();
64          VTrack trv = new VTrack(szp.newPureSurface(),vec);
65          ETrack tre = new ETrack(trv,err);
66          List clusters = new ArrayList();
67          int nclus = 20;
68          for ( int i=0; i<nclus; ++i )
69              clusters.add( gen.newCluster(trv) );
70          // Verify and display the list.
71          List hits = new ArrayList();
72          for ( Iterator iclu=clusters.iterator(); iclu.hasNext(); )
73          {
74              Cluster clu = (Cluster) iclu.next();
75              Assert.assertTrue( clu != null);
76              List newhits = clu.predict(tre,clu);
77              Assert.assertTrue( newhits.size() == 1 );
78              hits.add( newhits.get(0) );
79          }
80          Assert.assertTrue( hits.size() == nclus );
81          
82          //********************************************************************
83          
84          if(debug) System.out.println( ok_prefix + "Generate list of measured values." );
85          double avg = 0.0;
86          double sdev = 0.0;
87          for ( Iterator ihit=hits.iterator(); ihit.hasNext(); )
88          {
89              Hit hit = (Hit) ihit.next();
90              Assert.assertTrue( hit != null);
91              double mval = hit.measuredVector().get(0);
92              double merr = hit.measuredError().get(0,0);
93              double pval = hit.predictedVector().get(0);
94              double perr = hit.predictedError().get(0,0);
95              Assert.assertTrue( pval == axy);
96              Assert.assertTrue( TRFMath.isEqual(merr, daxy*daxy) );
97              if(debug) System.out.println( mval );
98              avg += mval;
99              sdev += (mval-pval)*(mval-pval);
100         }
101         avg /= nclus;
102         sdev = Math.sqrt(sdev/nclus);
103         if(debug) System.out.println( " Avg: " + avg );
104         if(debug) System.out.println( "Sdev: " + sdev );
105         Assert.assertTrue( Math.abs( avg - axy ) < daxy );
106         Assert.assertTrue( Math.abs( sdev - daxy ) < daxy );
107         
108         //********************************************************************
109         
110         if(debug) System.out.println( ok_prefix
111                 + "------------- All tests passed. -------------" );
112         
113         //********************************************************************
114         
115     }
116     
117 }