View Javadoc

1   /*
2    * HitXYPlane2Generator_Test.java
3    *
4    * Created on July 24, 2007, 10:30 PM
5    *
6    * $Id: HitXYPlane2Generator_Test.java,v 1.1.1.1 2010/04/08 20:38:00 jeremy Exp $
7    */
8   
9   package org.lcsim.recon.tracking.trfxyp;
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.HitError;
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  
24  /**
25   *
26   * @author Norman Graf
27   */
28  public class HitXYPlane2Generator_Test extends TestCase
29  {
30      private boolean debug;
31      /** Creates a new instance of HitXYPlane2Generator_Test */
32      public void testHitXYPlane2Generator()
33      {
34          String component = "HitXYPlane2Generator";
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          if(debug) System.out.println( ok_prefix + "Test constructor." );
43          double dist = 25.0;
44          double phi = 1.;
45          HitError dhm = new HitError(2);
46          dhm.set(ClusXYPlane2.IV,ClusXYPlane2.IV, 0.02);
47          dhm.set(ClusXYPlane2.IV,ClusXYPlane2.IZ, -0.01);
48          dhm.set(ClusXYPlane2.IZ,ClusXYPlane2.IZ, 0.03);
49          HitXYPlane2Generator gen = new HitXYPlane2Generator(dist,phi,dhm);
50          if(debug) System.out.println( gen );
51          
52          //********************************************************************
53          
54          if(debug) System.out.println( ok_prefix + "Generate a list of hits." );
55          double v_track = 1.2345;
56          double z_track = 6.789;
57          SurfXYPlane sxyp = new SurfXYPlane(dist,phi);
58          TrackVector vec = new TrackVector();
59          vec.set(SurfXYPlane.IV, v_track);
60          vec.set(SurfXYPlane.IZ, z_track);
61          TrackError err =  new TrackError();
62          VTrack trv = new VTrack(sxyp.newPureSurface(),vec);
63          ETrack tre = new ETrack(trv,err);
64          List clusters = new ArrayList();
65          int nclus = 100;
66          for ( int i=0; i<nclus; ++i )
67              clusters.add( gen.newCluster(trv) );
68          // Verify and display the list.
69          List hits = new ArrayList();
70          for ( Iterator iclu=clusters.iterator(); iclu.hasNext(); )
71          {
72              Cluster clu = (Cluster) iclu.next();
73              List newhits = clu.predict(tre,clu);
74              Assert.assertTrue( newhits.size() == 1 );
75              hits.add( newhits.get(0) );
76          }
77          Assert.assertTrue( hits.size() == nclus );
78          
79          //********************************************************************
80          
81          if(debug) System.out.println( ok_prefix + "Generate list of measured values." );
82          double avg1 = 0.0;
83          double avg2 = 0.0;
84          double sdev11 = 0.0;
85          double sdev12 = 0.0;
86          double sdev22 = 0.0;
87          for ( Iterator ihit=hits.iterator(); ihit.hasNext(); )
88          {
89              Hit hit = (Hit) ihit.next();
90              double mval1 = hit.measuredVector().get(0);
91              double mval2 = hit.measuredVector().get(1);
92              double merr11 = hit.measuredError().get(0,0);
93              double merr12 = hit.measuredError().get(0,1);
94              double merr22 = hit.measuredError().get(1,1);
95              double pval1 = hit.predictedVector().get(0);
96              double pval2 = hit.predictedVector().get(1);
97              double perr11 = hit.predictedError().get(0,0);
98              double perr12 = hit.predictedError().get(0,1);
99              double perr22 = hit.predictedError().get(1,1);
100             Assert.assertTrue( pval1 == v_track);
101             Assert.assertTrue( pval2 == z_track);
102             Assert.assertTrue( merr11 ==  dhm.get(ClusXYPlane2.IV,ClusXYPlane2.IV));
103             Assert.assertTrue( merr12 ==  dhm.get(ClusXYPlane2.IV,ClusXYPlane2.IZ));
104             Assert.assertTrue( merr22 ==  dhm.get(ClusXYPlane2.IZ,ClusXYPlane2.IZ));
105             if(debug) System.out.println( mval1 + " "+ mval2);
106             avg1 += mval1;
107             avg2 += mval2;
108             sdev11 += (mval1-pval1)*(mval1-pval1);
109             sdev12 += (mval1-pval1)*(mval2-pval2);
110             sdev22 += (mval2-pval2)*(mval2-pval2);
111         }
112         avg1 /= nclus;
113         avg2 /= nclus;
114         sdev11 /= nclus;
115         sdev12 /= nclus;
116         sdev22 /= nclus;
117         if(debug) System.out.println( " Avg1: " + avg1+ " Avg2: " + avg2 );
118         if(debug) System.out.println( "Sdev:[ " + sdev11+" | "+ sdev12+" | "+ sdev22+" ]" );
119         double dvv = Math.sqrt(dhm.get(ClusXYPlane2.IV,ClusXYPlane2.IV));
120         double dzz = Math.sqrt(dhm.get(ClusXYPlane2.IZ,ClusXYPlane2.IZ));
121         Assert.assertTrue( Math.abs( avg1 - v_track ) < dvv);
122         Assert.assertTrue( Math.abs( avg2 - z_track ) < dzz );
123         Assert.assertTrue( Math.abs( Math.sqrt(sdev11) - dvv) < dvv );
124         Assert.assertTrue( Math.abs( Math.sqrt(sdev22) - dzz) < dzz );
125         double dvz = dhm.get(ClusXYPlane2.IV,ClusXYPlane2.IZ);
126         Assert.assertTrue( Math.abs( sdev12 - dvz) < Math.abs(dvz) );
127         
128         //********************************************************************
129         
130         if(debug) System.out.println( ok_prefix
131                 + "------------- All tests passed. -------------" );
132         
133         //********************************************************************
134         
135     }
136     
137 }