View Javadoc

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