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 }