View Javadoc

1   /*
2    * HitXYPlane1_Test.java
3    *
4    * Created on July 24, 2007, 10:31 PM
5    *
6    * $Id: HitXYPlane1_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.List;
13  import junit.framework.TestCase;
14  import org.lcsim.recon.tracking.trfbase.ETrack;
15  import org.lcsim.recon.tracking.trfbase.Hit;
16  import org.lcsim.recon.tracking.trfbase.HitDerivative;
17  import org.lcsim.recon.tracking.trfbase.TrackError;
18  import org.lcsim.recon.tracking.trfbase.TrackVector;
19  import org.lcsim.recon.tracking.trfutil.Assert;
20  import org.lcsim.recon.tracking.trfutil.TRFMath;
21  
22  /**
23   *
24   * @author Norman Graf
25   */
26  public class HitXYPlane1_Test extends TestCase
27  {
28      private boolean debug;
29      
30      static double wv = 0.001;
31      static double wz = 0.345;
32      
33      // calculate avz from a track vector
34      static double calc_avz(TrackVector vec)
35      {
36          double v_track = vec.get(SurfXYPlane.IV);
37          double z_track = vec.get(SurfXYPlane.IZ);
38          
39          return( wv*v_track + wz*z_track );
40      }
41      
42      // calculate eaxy from error matrix
43      static double calc_eavz(TrackError err)
44      {
45          double evv_track = err.get(SurfXYPlane.IV,SurfXYPlane.IV);
46          double evz_track = err.get(SurfXYPlane.IV,SurfXYPlane.IZ);
47          double ezz_track = err.get(SurfXYPlane.IZ,SurfXYPlane.IZ);
48          
49          return( evv_track*wv*wv + 2.*evz_track*wv*wz + ezz_track*wz*wz );
50      }
51      
52      /** Creates a new instance of HitXYPlane1_Test */
53      public void testHitXYPlane1()
54      {
55          String component = "HitXYPlane1";
56          String ok_prefix = component + " (I): ";
57          String error_prefix = component + " test (E): ";
58          
59          if(debug) System.out.println( ok_prefix
60                  + "-------- Testing component " + component
61                  + ". --------" );
62          
63          if(debug) System.out.println( ok_prefix + "Test cluster constructors." );
64          List mcids = new ArrayList();
65          mcids.add(new Integer(1));
66          mcids.add(new Integer(2));
67          double dist1 = 10.0;
68          double phi1 = Math.PI/3.;
69          double avz1 = 1.0;
70          double davz1 = 0.01;
71          SurfXYPlane szp1 = new SurfXYPlane(dist1,phi1);
72          ClusXYPlane1 tst1 = new ClusXYPlane1(dist1,phi1,wv,wz,avz1,davz1);
73          
74          ClusXYPlane1 tst1a = new ClusXYPlane1(dist1,phi1,wv,wz,avz1,davz1,mcids);
75          
76          if(debug) System.out.println( tst1 );
77          if(debug) System.out.println( tst1a );
78          //  ClusXYPlane1 hcp1c = hcp1;
79          //  if(debug) System.out.println( hcp1c );
80          double dist2 = 20.0;
81          double phi2 = Math.PI/4.;
82          double avz2 = 2.0;
83          double davz2 = 0.02;
84          ClusXYPlane1 tst2 = new ClusXYPlane1(dist2,phi2,wv,wz,avz2,davz2);
85          
86          Assert.assertTrue(tst1.mcIds().size()==0 );
87          Assert.assertTrue(tst1a.mcIds().size()==2 );
88          
89          
90          //********************************************************************
91          
92          if(debug) System.out.println( ok_prefix + "Test cluster type ID." );
93          if(debug) System.out.println( tst1.type() );
94          Assert.assertTrue( tst1.type() != null );
95          Assert.assertTrue( tst1.type().equals(tst2.type()) );
96          
97          //********************************************************************
98          
99          if(debug) System.out.println( ok_prefix + "Test cluster accessors." );
100         if(debug) System.out.println( tst1 );
101         if(debug) System.out.println( tst1.surface() );
102         if(debug) System.out.println( tst1.aVZ() );
103         if(debug) System.out.println( tst1.daVZ() );
104         if(debug) System.out.println( tst1.wV() );
105         if(debug) System.out.println( tst1.wZ() );
106         Assert.assertTrue( tst1.surface().equals(szp1) );
107         Assert.assertTrue( tst1.aVZ() == avz1 );
108         Assert.assertTrue( tst1.daVZ() == davz1 );
109         Assert.assertTrue( tst1.wV() == wv );
110         Assert.assertTrue( tst1.wZ() == wz );
111         
112         //********************************************************************
113         
114         if(debug) System.out.println( ok_prefix + "Generate a hit." );
115         TrackVector vec = new TrackVector();
116         TrackError err = new TrackError();
117         HitDerivative der_expect = new HitDerivative(1);
118         der_expect.set(0,0, wv);
119         der_expect.set(0,1, wz);
120         vec.set(SurfXYPlane.IV, 1.1);
121         vec.set(SurfXYPlane.IZ, 40.0);
122         err.set(SurfXYPlane.IV,SurfXYPlane.IV, 0.04);
123         err.set(SurfXYPlane.IV,SurfXYPlane.IZ, 0.03);
124         err.set(SurfXYPlane.IZ,SurfXYPlane.IZ, 0.02);
125         ETrack tre1 = new ETrack(szp1.newPureSurface(),vec,err);
126         List tclus11 = tst1.predict(tre1,tst1);
127         Assert.assertTrue( tclus11.size() == 1 );
128         Hit pre11 = (Hit) tclus11.get(0);
129         double maxdiff = 1.e-12;
130         if(debug) System.out.println( pre11.size() );
131         Assert.assertTrue( pre11.size() == 1);
132         if(debug) System.out.println( pre11.measuredVector() );
133         Assert.assertTrue( TRFMath.isEqual( pre11.measuredVector().get(0), avz1 ) );
134         if(debug) System.out.println( pre11.measuredError() );
135         Assert.assertTrue( TRFMath.isEqual( pre11.measuredError().get(0,0), davz1*davz1 ) );
136         if(debug) System.out.println( pre11.predictedVector() );
137         Assert.assertTrue( TRFMath.isEqual( pre11.predictedVector().get(0), calc_avz(vec) ) );
138         if(debug) System.out.println( pre11.predictedError() );
139         Assert.assertTrue( TRFMath.isEqual( pre11.predictedError().get(0,0), calc_eavz(err) ) );
140         if(debug) System.out.println( pre11.dHitdTrack() );
141         Assert.assertTrue( pre11.dHitdTrack().equals(der_expect ) );
142         if(debug) System.out.println( pre11.differenceVector() );
143         Assert.assertTrue( Math.abs(pre11.differenceVector().get(0) -
144                 calc_avz(vec) + avz1) < maxdiff );
145         
146         //********************************************************************
147         
148         if(debug) System.out.println( ok_prefix + "Generate hit for a different track."
149                 );
150         vec.set(SurfXYPlane.IV, 1.2);
151         ETrack tre2 = new ETrack(szp1.newPureSurface(),vec,err);
152         List tclus12 = tst1.predict(tre2,tst1);
153         Assert.assertTrue( tclus12.size() == 1 );
154         Hit pre12 = (Hit)tclus12.get(0);
155         if(debug) System.out.println( pre12.size() );
156         Assert.assertTrue( pre12.size() == 1);
157         if(debug) System.out.println( pre12.measuredVector() );
158         Assert.assertTrue( TRFMath.isEqual( pre12.measuredVector().get(0), avz1 ) );
159         if(debug) System.out.println( pre12.measuredError() );
160         Assert.assertTrue( TRFMath.isEqual( pre12.measuredError().get(0,0), davz1*davz1 ) );
161         if(debug) System.out.println( pre12.predictedVector() );
162         Assert.assertTrue( TRFMath.isEqual( pre12.predictedVector().get(0), calc_avz(vec) ) );
163         if(debug) System.out.println( pre12.predictedError() );
164         Assert.assertTrue( TRFMath.isEqual( pre12.predictedError().get(0,0), calc_eavz(err) ) );
165         if(debug) System.out.println( pre12.dHitdTrack() );
166         Assert.assertTrue( pre12.dHitdTrack().equals(der_expect ) );
167         if(debug) System.out.println( pre12.differenceVector() );
168         Assert.assertTrue( Math.abs(pre12.differenceVector().get(0) -
169                 calc_avz(vec) + avz1) < maxdiff );
170         // same cluster ==> same hit (even though track changes)
171         Assert.assertTrue( pre11.equals(pre11) );
172         Assert.assertTrue( ! ( pre11.notEquals(pre11) ) );
173         Assert.assertTrue( pre11.equals(pre12) );
174         
175         //********************************************************************
176         
177         if(debug) System.out.println( ok_prefix + "Generate hit for a different cluster."
178                 );
179         List tclus22 = tst2.predict(tre2,tst2);
180         Assert.assertTrue( tclus22.size() == 1 );
181         Hit pre22 = (Hit)tclus22.get(0);
182         if(debug) System.out.println( pre22.size() );
183         Assert.assertTrue( pre22.size() == 1);
184         if(debug) System.out.println( pre22.measuredVector() );
185         Assert.assertTrue( TRFMath.isEqual( pre22.measuredVector().get(0), avz2 ) );
186         if(debug) System.out.println( pre22.measuredError() );
187         Assert.assertTrue( TRFMath.isEqual( pre22.measuredError().get(0,0), davz2*davz2 ) );
188         if(debug) System.out.println( pre22.predictedVector() );
189         Assert.assertTrue( TRFMath.isEqual( pre22.predictedVector().get(0), calc_avz(vec) ) );
190         if(debug) System.out.println( pre22.predictedError() );
191         Assert.assertTrue( TRFMath.isEqual( pre22.predictedError().get(0,0), calc_eavz(err) ) );
192         if(debug) System.out.println( pre22.dHitdTrack() );
193         Assert.assertTrue( pre22.dHitdTrack().equals(der_expect)  );
194         if(debug) System.out.println( pre22.differenceVector() );
195         Assert.assertTrue( Math.abs(pre22.differenceVector().get(0) -
196                 calc_avz(vec) + avz2) < maxdiff );
197         // different cluster ==> different hit
198         Assert.assertTrue( pre22.notEquals(pre11) );
199         Assert.assertTrue( ! ( pre22.equals(pre11) ) );
200         Assert.assertTrue( pre22.notEquals(pre12) );
201         
202         //********************************************************************
203         
204         if(debug) System.out.println( ok_prefix + "Update hit." );
205         if(debug) System.out.println( pre11 );
206         pre11.update(tre2);
207         if(debug) System.out.println( pre11 );
208         Assert.assertTrue( pre11.size() == 1);
209         if(debug) System.out.println( pre11.measuredVector() );
210         Assert.assertTrue( TRFMath.isEqual( pre11.measuredVector().get(0), avz1 ) );
211         if(debug) System.out.println( pre11.measuredError() );
212         Assert.assertTrue( TRFMath.isEqual( pre11.measuredError().get(0,0), davz1*davz1 ) );
213         if(debug) System.out.println( pre11.predictedVector() );
214         Assert.assertTrue( TRFMath.isEqual( pre11.predictedVector().get(0), calc_avz(vec) ) );
215         if(debug) System.out.println( pre11.predictedError() );
216         Assert.assertTrue( TRFMath.isEqual( pre11.predictedError().get(0,0), calc_eavz(err) ) );
217         if(debug) System.out.println( pre11.dHitdTrack() );
218         Assert.assertTrue( pre11.dHitdTrack().equals(der_expect) );
219         if(debug) System.out.println( pre11.differenceVector() );
220         Assert.assertTrue( Math.abs(pre11.differenceVector().get(0) -
221                 calc_avz(vec) + avz1) < maxdiff );
222         
223         //********************************************************************
224         
225         if(debug) System.out.println( ok_prefix + "Check hit type and equality." );
226         if(debug) System.out.println( HitXYPlane1.staticType());
227         if(debug) System.out.println( pre11.type() );
228         if(debug) System.out.println( pre12.type() );
229         Assert.assertTrue( pre11.type() != null );
230         Assert.assertTrue( pre11.type().equals(HitXYPlane1.staticType()) );
231         Assert.assertTrue( pre11.type().equals(pre12.type()) );
232         
233         //********************************************************************
234         
235         //********************************************************************
236         
237         if(debug) System.out.println( ok_prefix
238                 + "------------- All tests passed. -------------" );
239         
240         //********************************************************************
241         
242     }
243     
244 }