View Javadoc

1   /*
2    * HitZPlane2Generator_Test.java
3    *
4    * Created on July 24, 2007, 11:05 PM
5    *
6    * $Id: HitZPlane2Generator_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.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 HitZPlane2Generator_Test extends TestCase
29  {
30      private boolean debug;
31      /** Creates a new instance of HitZPlane2Generator_Test */
32      public void testHitZPlane2Generator()
33      {
34          String component = "HitZPlane2Generator";
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 zpos = 25.0;
44          HitError dhm = new HitError(2);
45          dhm.set(ClusZPlane2.IX,ClusZPlane2.IX, 0.01);
46          dhm.set(ClusZPlane2.IX,ClusZPlane2.IY, 0.001);
47          dhm.set(ClusZPlane2.IY,ClusZPlane2.IY, 0.02);
48          HitZPlane2Generator gen = new HitZPlane2Generator(zpos,dhm);
49          if(debug) System.out.println( gen );
50          Assert.assertTrue( new HitZPlane2Generator(zpos,dhm) != null);
51          
52          //********************************************************************
53          
54          if(debug) System.out.println( ok_prefix + "Generate a list of hits." );
55          double x_track = 1.2345;
56          double y_track = 6.789;
57          SurfZPlane szp = new SurfZPlane(zpos);
58          TrackVector vec = new TrackVector();
59          vec.set(SurfZPlane.IX, x_track);
60          vec.set(SurfZPlane.IY, y_track);
61          TrackError err = new TrackError();
62          VTrack trv = new VTrack(szp.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          
88          for ( Iterator ihit=hits.iterator(); ihit.hasNext(); )
89          {
90              Hit hit = (Hit) ihit.next();
91              double mval1 = hit.measuredVector().get(0);
92              double mval2 = hit.measuredVector().get(1);
93              double merr11 = hit.measuredError().get(0,0);
94              double merr12 = hit.measuredError().get(0,1);
95              double merr22 = hit.measuredError().get(1,1);
96              double pval1 = hit.predictedVector().get(0);
97              double pval2 = hit.predictedVector().get(1);
98              double perr11 = hit.predictedError().get(0,0);
99              double perr12 = hit.predictedError().get(0,1);
100             double perr22 = hit.predictedError().get(1,1);
101             Assert.assertTrue( pval1 == x_track);
102             Assert.assertTrue( pval2 == y_track);
103             Assert.assertTrue( merr11 ==  dhm.get(ClusZPlane2.IX,ClusZPlane2.IX));
104             Assert.assertTrue( merr12 ==  dhm.get(ClusZPlane2.IX,ClusZPlane2.IY));
105             Assert.assertTrue( merr22 ==  dhm.get(ClusZPlane2.IY,ClusZPlane2.IY));
106             if(debug) System.out.println( mval1 + " "+ mval2 );
107             avg1 += mval1;
108             avg2 += mval2;
109             sdev11 += (mval1-pval1)*(mval1-pval1);
110             sdev12 += (mval1-pval1)*(mval2-pval2);
111             sdev22 += (mval2-pval2)*(mval2-pval2);
112         }
113         avg1 /= nclus;
114         avg2 /= nclus;
115         sdev11 /= nclus;
116         sdev12 /= nclus;
117         sdev22 /= nclus;
118         if(debug) System.out.println( " Avg1: " + avg1+ " Avg2: " + avg2 );
119         if(debug) System.out.println( "Sdev:[ " + sdev11+" | "+ sdev12+" | "+ sdev22+" ]" );
120         double dxx = Math.sqrt(dhm.get(ClusZPlane2.IX,ClusZPlane2.IX));
121         double dyy = Math.sqrt(dhm.get(ClusZPlane2.IY,ClusZPlane2.IY));
122         Assert.assertTrue( Math.abs( avg1 - x_track ) < dxx);
123         Assert.assertTrue( Math.abs( avg2 - y_track ) < dyy );
124         Assert.assertTrue( Math.abs( Math.sqrt(sdev11) - dxx) < dxx );
125         Assert.assertTrue( Math.abs( Math.sqrt(sdev22) - dyy) < dyy );
126         double dxy = dhm.get(ClusZPlane2.IX,ClusZPlane2.IY);
127         Assert.assertTrue( Math.abs( sdev12 - dxy) < Math.abs(dxy) );
128         
129         //********************************************************************
130         
131         if(debug) System.out.println( ok_prefix
132                 + "------------- All tests passed. -------------" );
133         
134         
135         
136         //********************************************************************
137         
138     }
139     
140 }