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 }