1 /* 2 * HitCylPhiZGenerator_Test.java 3 * 4 * Created on July 24, 2007, 8:40 PM 5 * 6 * $Id: HitCylPhiZGenerator_Test.java,v 1.1.1.1 2010/04/08 20:38:00 jeremy Exp $ 7 */ 8 9 package org.lcsim.recon.tracking.trfcyl; 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.Surface; 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 import org.lcsim.recon.tracking.trfutil.TRFMath; 24 25 /** 26 * 27 * @author Norman Graf 28 */ 29 public class HitCylPhiZGenerator_Test extends TestCase 30 { 31 private boolean debug; 32 /** Creates a new instance of HitCylPhiZGenerator_Test */ 33 public void testHitCylPhiZGenerator() 34 { 35 String component = "HitCylPhiZGenerator"; 36 String ok_prefix = component + " (I): "; 37 String error_prefix = component + " test (E): "; 38 39 if(debug) System.out.println( ok_prefix 40 + "---------- Testing component " + component 41 + ". ----------" ); 42 43 //******************************************************************** 44 45 if(debug) System.out.println( ok_prefix + "Test constructor." ); 46 double radius = 25.0; 47 double stereo = 0.1; 48 double dphiz = 0.01; 49 // nee to check on constructor here... 50 // HitCylPhiZGenerator gen = new HitCylPhiZGenerator(radius,stereo,dphiz); 51 SurfCylinder scyl = new SurfCylinder(radius); 52 HitCylPhiZGenerator gen = new HitCylPhiZGenerator(scyl,stereo,dphiz); 53 if(debug) System.out.println( gen ); 54 55 //******************************************************************** 56 57 if(debug) System.out.println( ok_prefix + "Generate a list of hits." ); 58 double phi0 = 1.2345; 59 Surface srf = new SurfCylinder(radius); 60 TrackVector vec = new TrackVector(); 61 vec.set(0 , phi0); 62 TrackError err = new TrackError(); 63 VTrack trv = new VTrack(srf,vec); 64 ETrack tre = new ETrack(trv,err); 65 List clusters = new ArrayList(); 66 int nclus = 20; 67 for ( int i=0; i<nclus; ++i ) 68 clusters.add( gen.newCluster(trv) ); 69 // Verify and display the list. 70 List hits = new ArrayList(); 71 for ( Iterator iclu=clusters.iterator(); iclu.hasNext(); ) 72 { 73 Cluster clu = (Cluster) iclu.next(); 74 Assert.assertTrue( clu != null ); 75 List newhits = clu.predict(tre,clu); 76 Assert.assertTrue( newhits.size() == 1 ); 77 hits.add( newhits.get(0) ); 78 } 79 Assert.assertTrue( hits.size() == nclus ); 80 81 //******************************************************************** 82 83 if(debug) System.out.println( ok_prefix + "Generate list of measured values." ); 84 double avg = 0.0; 85 double sdev = 0.0; 86 for ( Iterator ihit=hits.iterator(); ihit.hasNext(); ) 87 { 88 Hit hit = (Hit) ihit.next(); 89 Assert.assertTrue( hit != null ); 90 double mval = hit.measuredVector().get(0); 91 double merr = hit.measuredError().get(0,0); 92 double pval = hit.predictedVector().get(0); 93 double perr = hit.predictedError().get(0,0); 94 Assert.assertTrue( TRFMath.isEqual(pval,phi0) ); 95 Assert.assertTrue( TRFMath.isEqual(merr,dphiz*dphiz) ); 96 if(debug) System.out.println( mval ); 97 avg += mval; 98 sdev += (mval-pval)*(mval-pval); 99 } 100 avg /= nclus; 101 sdev = Math.sqrt(sdev/nclus); 102 if(debug) System.out.println( " Avg: " + avg ); 103 if(debug) System.out.println( "Sdev: " + sdev ); 104 Assert.assertTrue( Math.abs( avg - phi0 ) < dphiz ); 105 Assert.assertTrue( Math.abs( sdev - dphiz ) < dphiz ); 106 107 //******************************************************************** 108 109 if(debug) System.out.println( ok_prefix 110 + "------------- All tests passed. -------------" ); 111 //******************************************************************** 112 113 } 114 115 }