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 }