1 /* 2 * HitZPlane1Generator_Test.java 3 * 4 * Created on July 24, 2007, 11:07 PM 5 * 6 * $Id: HitZPlane1Generator_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.TrackError; 19 import org.lcsim.recon.tracking.trfbase.TrackVector; 20 import org.lcsim.recon.tracking.trfbase.VTrack; 21 import org.lcsim.recon.tracking.trfutil.Assert; 22 import org.lcsim.recon.tracking.trfutil.TRFMath; 23 24 /** 25 * 26 * @author Norman Graf 27 */ 28 public class HitZPlane1Generator_Test extends TestCase 29 { 30 private boolean debug; 31 /** Creates a new instance of HitZPlane1Generator_Test */ 32 public void testHitZPlane1Generator() 33 { 34 String component = "HitZPlane1Generator"; 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 //******************************************************************** 43 44 if(debug) System.out.println( ok_prefix + "Test constructor." ); 45 double zpos = 25.0; 46 double wx = 0.1; 47 double wy = 0.5; 48 double daxy = 0.01; 49 HitZPlane1Generator gen = new HitZPlane1Generator(zpos,wx,wy,daxy); 50 if(debug) System.out.println( gen ); 51 // Assert.assertTrue( new HitZPlane1Generator(zpos,wx,wy,daxy) != 0); 52 53 //******************************************************************** 54 55 if(debug) System.out.println( ok_prefix + "Generate a list of hits." ); 56 double x_track = 1.2345; 57 double y_track = 6.789; 58 double axy = wx*x_track+wy*y_track; 59 SurfZPlane szp = new SurfZPlane(zpos); 60 TrackVector vec = new TrackVector(); 61 vec.set(SurfZPlane.IX, x_track); 62 vec.set(SurfZPlane.IY, y_track); 63 TrackError err = new TrackError(); 64 VTrack trv = new VTrack(szp.newPureSurface(),vec); 65 ETrack tre = new ETrack(trv,err); 66 List clusters = new ArrayList(); 67 int nclus = 20; 68 for ( int i=0; i<nclus; ++i ) 69 clusters.add( gen.newCluster(trv) ); 70 // Verify and display the list. 71 List hits = new ArrayList(); 72 for ( Iterator iclu=clusters.iterator(); iclu.hasNext(); ) 73 { 74 Cluster clu = (Cluster) iclu.next(); 75 Assert.assertTrue( clu != null); 76 List newhits = clu.predict(tre,clu); 77 Assert.assertTrue( newhits.size() == 1 ); 78 hits.add( newhits.get(0) ); 79 } 80 Assert.assertTrue( hits.size() == nclus ); 81 82 //******************************************************************** 83 84 if(debug) System.out.println( ok_prefix + "Generate list of measured values." ); 85 double avg = 0.0; 86 double sdev = 0.0; 87 for ( Iterator ihit=hits.iterator(); ihit.hasNext(); ) 88 { 89 Hit hit = (Hit) ihit.next(); 90 Assert.assertTrue( hit != null); 91 double mval = hit.measuredVector().get(0); 92 double merr = hit.measuredError().get(0,0); 93 double pval = hit.predictedVector().get(0); 94 double perr = hit.predictedError().get(0,0); 95 Assert.assertTrue( pval == axy); 96 Assert.assertTrue( TRFMath.isEqual(merr, daxy*daxy) ); 97 if(debug) System.out.println( mval ); 98 avg += mval; 99 sdev += (mval-pval)*(mval-pval); 100 } 101 avg /= nclus; 102 sdev = Math.sqrt(sdev/nclus); 103 if(debug) System.out.println( " Avg: " + avg ); 104 if(debug) System.out.println( "Sdev: " + sdev ); 105 Assert.assertTrue( Math.abs( avg - axy ) < daxy ); 106 Assert.assertTrue( Math.abs( sdev - daxy ) < daxy ); 107 108 //******************************************************************** 109 110 if(debug) System.out.println( ok_prefix 111 + "------------- All tests passed. -------------" ); 112 113 //******************************************************************** 114 115 } 116 117 }