View Javadoc

1   /*
2    * HitZPlane1_Test.java
3    *
4    * Created on July 24, 2007, 11:06 PM
5    *
6    * $Id: HitZPlane1_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.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 HitZPlane1_Test extends TestCase
27  {
28      private boolean debug;
29      static double wx = 0.001;
30      static double wy = 0.345;
31      
32      // calculate axy from a track vector
33      static double calc_axy(TrackVector vec)
34      {
35          double x_track = vec.get(SurfZPlane.IX);
36          double y_track = vec.get(SurfZPlane.IY);
37          
38          return( wx*x_track + wy*y_track );
39      }
40      
41      // calculate eaxy from error matrix
42      static double calc_eaxy(TrackError err)
43      {
44          double exx_track = err.get(SurfZPlane.IX,SurfZPlane.IX);
45          double exy_track = err.get(SurfZPlane.IX,SurfZPlane.IY);
46          double eyy_track = err.get(SurfZPlane.IY,SurfZPlane.IY);
47          
48          return( exx_track*wx*wx + 2.*exy_track*wx*wy + eyy_track*wy*wy );
49      }
50      /** Creates a new instance of HitZPlane1_Test */
51      public void testHitZPlane1()
52      {
53          String component = "HitZPlane1";
54          String ok_prefix = component + " (I): ";
55          String error_prefix = component + " test (E): ";
56          
57          if(debug) System.out.println( ok_prefix
58                  + "-------- Testing component " + component
59                  + ". --------" );
60          
61          if(debug) System.out.println( ok_prefix + "Test cluster constructors." );
62          List mcids = new ArrayList();
63          mcids.add( new Integer(1));
64          mcids.add(new Integer(2));
65          double zpos1 = 10.0;
66          double axy1 = 1.0;
67          double daxy1 = 0.01;
68          SurfZPlane szp1 = new SurfZPlane(zpos1);
69          ClusZPlane1 hcp1 = new ClusZPlane1(zpos1,wx,wy,axy1,daxy1);
70          ClusZPlane1 hcp1a = new ClusZPlane1(zpos1,wx,wy,axy1,daxy1,mcids);
71          ClusZPlane1 hcp1b = new ClusZPlane1(hcp1a);
72          ClusZPlane1 hcp1d = new ClusZPlane1(hcp1);
73          Assert.assertTrue(hcp1.equals(hcp1a));
74          Assert.assertTrue(hcp1b.equals(hcp1a));
75          Assert.assertTrue(hcp1.equals(hcp1d));
76          Assert.assertTrue(hcp1.mcIds().size() == 0 );
77          Assert.assertTrue(hcp1d.mcIds().size() == 0 );
78          Assert.assertTrue(hcp1a.mcIds().size() == 2 );
79          Assert.assertTrue(hcp1b.mcIds().size() == 2 );
80          
81          double zpos2 = 20.0;
82          double axy2 = 2.0;
83          double daxy2 = 0.02;
84          ClusZPlane1 hcp2 = new ClusZPlane1(zpos2,wx,wy,axy2,daxy2);
85          
86          //********************************************************************
87          
88          if(debug) System.out.println( ok_prefix + "Test cluster type ID." );
89          if(debug) System.out.println( hcp1.type() );
90          if(debug) System.out.println( hcp2.type() );
91          Assert.assertTrue( hcp1.type() != null );
92          Assert.assertTrue( hcp1.type().equals(hcp2.type()) );
93          
94          //********************************************************************
95          
96          if(debug) System.out.println( ok_prefix + "Test cluster accessors." );
97          if(debug) System.out.println( hcp1 );
98          if(debug) System.out.println( hcp1.surface() );
99          if(debug) System.out.println( hcp1.aXY() );
100         if(debug) System.out.println( hcp1.daXY() );
101         if(debug) System.out.println( hcp1.wX() );
102         if(debug) System.out.println( hcp1.wY() );
103         Assert.assertTrue( hcp1.surface().equals(szp1) );
104         Assert.assertTrue( hcp1.aXY() == axy1 );
105         Assert.assertTrue( hcp1.daXY() == daxy1 );
106         Assert.assertTrue( hcp1.wX() == wx );
107         Assert.assertTrue( hcp1.wY() == wy );
108         
109         //********************************************************************
110         
111         if(debug) System.out.println( ok_prefix + "Generate a hit." );
112         TrackVector vec = new TrackVector();
113         TrackError err = new TrackError();
114         HitDerivative der_expect = new HitDerivative(1);
115         der_expect.set(0,0, wx);
116         der_expect.set(0,1, wy);
117         vec.set(SurfZPlane.IX, 1.1);
118         vec.set(SurfZPlane.IY, 40.0);
119         err.set(SurfZPlane.IX,SurfZPlane.IX, 0.04);
120         err.set(SurfZPlane.IX,SurfZPlane.IY, 0.03);
121         err.set(SurfZPlane.IY,SurfZPlane.IY, 0.02);
122         ETrack tre1 = new ETrack(szp1.newPureSurface(),vec,err);
123         List tclus11 = hcp1.predict(tre1,hcp1);
124         Assert.assertTrue( tclus11.size() == 1 );
125         Hit pre11 = (Hit) tclus11.get(0);
126         double maxdiff = 1.e-12;
127         if(debug) System.out.println( pre11.size() );
128         Assert.assertTrue( pre11.size() == 1);
129         if(debug) System.out.println( pre11.measuredVector() );
130         Assert.assertTrue( pre11.measuredVector().get(0) == axy1 );
131         if(debug) System.out.println( pre11.measuredError() );
132         Assert.assertTrue( TRFMath.isEqual( pre11.measuredError().get(0,0), daxy1*daxy1 ) );
133         if(debug) System.out.println( pre11.predictedVector() );
134         Assert.assertTrue( TRFMath.isEqual( pre11.predictedVector().get(0), calc_axy(vec) ) );
135         if(debug) System.out.println( pre11.predictedError() );
136         Assert.assertTrue( TRFMath.isEqual( pre11.predictedError().get(0,0), calc_eaxy(err) ) );
137         if(debug) System.out.println( pre11.dHitdTrack() );
138         Assert.assertTrue( pre11.dHitdTrack().equals(der_expect) );
139         if(debug) System.out.println( pre11.differenceVector() );
140         Assert.assertTrue( Math.abs(pre11.differenceVector().get(0) -
141                 calc_axy(vec) + axy1) < maxdiff );
142         
143         //********************************************************************
144         
145         if(debug) System.out.println( ok_prefix + "Generate hit for a different track."
146                 );
147         vec.set(SurfZPlane.IX, 1.2);
148         ETrack tre2 = new ETrack(szp1.newPureSurface(),vec,err);
149         List tclus12 = hcp1.predict(tre2,hcp1);
150         Assert.assertTrue( tclus12.size() == 1 );
151         Hit pre12 = (Hit) tclus12.get(0);
152         if(debug) System.out.println( pre12.size() );
153         Assert.assertTrue( pre12.size() == 1);
154         if(debug) System.out.println( pre12.measuredVector() );
155         Assert.assertTrue( TRFMath.isEqual( pre12.measuredVector().get(0), axy1 ) );
156         if(debug) System.out.println( pre12.measuredError() );
157         Assert.assertTrue( TRFMath.isEqual( pre12.measuredError().get(0,0), daxy1*daxy1 ) );
158         if(debug) System.out.println( pre12.predictedVector() );
159         Assert.assertTrue( TRFMath.isEqual( pre12.predictedVector().get(0), calc_axy(vec) ) );
160         if(debug) System.out.println( pre12.predictedError() );
161         Assert.assertTrue( TRFMath.isEqual( pre12.predictedError().get(0,0), calc_eaxy(err) ) );
162         if(debug) System.out.println( pre12.dHitdTrack() );
163         Assert.assertTrue(   pre12.dHitdTrack().equals(der_expect) );
164         if(debug) System.out.println( pre12.differenceVector() );
165         Assert.assertTrue( Math.abs(pre12.differenceVector().get(0) -
166                 calc_axy(vec) + axy1) < maxdiff );
167         // same cluster ==> same hit (even though track changes)
168         Assert.assertTrue( pre11.equals(pre11) );
169         Assert.assertTrue( ! ( pre11.notEquals(pre11) ) );
170         Assert.assertTrue( pre11.equals(pre12) );
171         
172         //********************************************************************
173         
174         if(debug) System.out.println( ok_prefix + "Generate hit for a different cluster."
175                 );
176         List tclus22 = hcp2.predict(tre2,hcp2);
177         Assert.assertTrue( tclus22.size() == 1 );
178         Hit pre22 = (Hit) tclus22.get(0);
179         if(debug) System.out.println( pre22.size() );
180         Assert.assertTrue( pre22.size() == 1);
181         if(debug) System.out.println( pre22.measuredVector() );
182         Assert.assertTrue( TRFMath.isEqual( pre22.measuredVector().get(0), axy2 ) );
183         if(debug) System.out.println( pre22.measuredError() );
184         Assert.assertTrue( TRFMath.isEqual( pre22.measuredError().get(0,0), daxy2*daxy2 ) );
185         if(debug) System.out.println( pre22.predictedVector() );
186         Assert.assertTrue( TRFMath.isEqual( pre22.predictedVector().get(0), calc_axy(vec) ) );
187         if(debug) System.out.println( pre22.predictedError() );
188         Assert.assertTrue( TRFMath.isEqual( pre22.predictedError().get(0,0), calc_eaxy(err) ) );
189         if(debug) System.out.println( pre22.dHitdTrack() );
190         Assert.assertTrue( pre22.dHitdTrack().equals(der_expect) );
191         if(debug) System.out.println( pre22.differenceVector() );
192         Assert.assertTrue( Math.abs(pre22.differenceVector().get(0) -
193                 calc_axy(vec) + axy2) < maxdiff );
194         // different cluster ==> different hit
195         Assert.assertTrue( pre22.notEquals(pre11) );
196         Assert.assertTrue( ! ( pre22.equals(pre11) ) );
197         Assert.assertTrue( pre22.notEquals(pre12) );
198         
199         //********************************************************************
200         
201         if(debug) System.out.println( ok_prefix + "Update hit." );
202         if(debug) System.out.println( pre11 );
203         pre11.update(tre2);
204         if(debug) System.out.println( pre11 );
205         Assert.assertTrue( pre11.size() == 1);
206         if(debug) System.out.println( pre11.measuredVector() );
207         Assert.assertTrue( TRFMath.isEqual( pre11.measuredVector().get(0), axy1 ) );
208         if(debug) System.out.println( pre11.measuredError() );
209         Assert.assertTrue( TRFMath.isEqual( pre11.measuredError().get(0,0), daxy1*daxy1 ) );
210         if(debug) System.out.println( pre11.predictedVector() );
211         Assert.assertTrue( TRFMath.isEqual( pre11.predictedVector().get(0), calc_axy(vec) ) );
212         if(debug) System.out.println( pre11.predictedError() );
213         Assert.assertTrue( TRFMath.isEqual( pre11.predictedError().get(0,0), calc_eaxy(err) ) );
214         if(debug) System.out.println( pre11.dHitdTrack() );
215         Assert.assertTrue( pre11.dHitdTrack().equals(der_expect) );
216         if(debug) System.out.println( pre11.differenceVector() );
217         Assert.assertTrue( Math.abs(pre11.differenceVector().get(0) -
218                 calc_axy(vec) + axy1) < maxdiff );
219         
220         //********************************************************************
221         
222         if(debug) System.out.println( ok_prefix + "Check hit type and equality." );
223         if(debug) System.out.println( HitZPlane1.staticType());
224         if(debug) System.out.println( pre11.type() );
225         if(debug) System.out.println( pre12.type() );
226         Assert.assertTrue( pre11.type() != null);
227         Assert.assertTrue( pre11.type().equals(HitZPlane1.staticType()) );
228         Assert.assertTrue( pre11.type().equals(pre12.type()) );
229         
230         
231         //********************************************************************
232         
233         if(debug) System.out.println( ok_prefix
234                 + "------------- All tests passed. -------------" );
235         
236         //********************************************************************
237     }
238     
239 }