1 /* 2 * HitXYPlane2Generator_Test.java 3 * 4 * Created on July 24, 2007, 10:30 PM 5 * 6 * $Id: HitXYPlane2Generator_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.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 HitXYPlane2Generator_Test extends TestCase 29 { 30 private boolean debug; 31 /** Creates a new instance of HitXYPlane2Generator_Test */ 32 public void testHitXYPlane2Generator() 33 { 34 String component = "HitXYPlane2Generator"; 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 dist = 25.0; 44 double phi = 1.; 45 HitError dhm = new HitError(2); 46 dhm.set(ClusXYPlane2.IV,ClusXYPlane2.IV, 0.02); 47 dhm.set(ClusXYPlane2.IV,ClusXYPlane2.IZ, -0.01); 48 dhm.set(ClusXYPlane2.IZ,ClusXYPlane2.IZ, 0.03); 49 HitXYPlane2Generator gen = new HitXYPlane2Generator(dist,phi,dhm); 50 if(debug) System.out.println( gen ); 51 52 //******************************************************************** 53 54 if(debug) System.out.println( ok_prefix + "Generate a list of hits." ); 55 double v_track = 1.2345; 56 double z_track = 6.789; 57 SurfXYPlane sxyp = new SurfXYPlane(dist,phi); 58 TrackVector vec = new TrackVector(); 59 vec.set(SurfXYPlane.IV, v_track); 60 vec.set(SurfXYPlane.IZ, z_track); 61 TrackError err = new TrackError(); 62 VTrack trv = new VTrack(sxyp.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 for ( Iterator ihit=hits.iterator(); ihit.hasNext(); ) 88 { 89 Hit hit = (Hit) ihit.next(); 90 double mval1 = hit.measuredVector().get(0); 91 double mval2 = hit.measuredVector().get(1); 92 double merr11 = hit.measuredError().get(0,0); 93 double merr12 = hit.measuredError().get(0,1); 94 double merr22 = hit.measuredError().get(1,1); 95 double pval1 = hit.predictedVector().get(0); 96 double pval2 = hit.predictedVector().get(1); 97 double perr11 = hit.predictedError().get(0,0); 98 double perr12 = hit.predictedError().get(0,1); 99 double perr22 = hit.predictedError().get(1,1); 100 Assert.assertTrue( pval1 == v_track); 101 Assert.assertTrue( pval2 == z_track); 102 Assert.assertTrue( merr11 == dhm.get(ClusXYPlane2.IV,ClusXYPlane2.IV)); 103 Assert.assertTrue( merr12 == dhm.get(ClusXYPlane2.IV,ClusXYPlane2.IZ)); 104 Assert.assertTrue( merr22 == dhm.get(ClusXYPlane2.IZ,ClusXYPlane2.IZ)); 105 if(debug) System.out.println( mval1 + " "+ mval2); 106 avg1 += mval1; 107 avg2 += mval2; 108 sdev11 += (mval1-pval1)*(mval1-pval1); 109 sdev12 += (mval1-pval1)*(mval2-pval2); 110 sdev22 += (mval2-pval2)*(mval2-pval2); 111 } 112 avg1 /= nclus; 113 avg2 /= nclus; 114 sdev11 /= nclus; 115 sdev12 /= nclus; 116 sdev22 /= nclus; 117 if(debug) System.out.println( " Avg1: " + avg1+ " Avg2: " + avg2 ); 118 if(debug) System.out.println( "Sdev:[ " + sdev11+" | "+ sdev12+" | "+ sdev22+" ]" ); 119 double dvv = Math.sqrt(dhm.get(ClusXYPlane2.IV,ClusXYPlane2.IV)); 120 double dzz = Math.sqrt(dhm.get(ClusXYPlane2.IZ,ClusXYPlane2.IZ)); 121 Assert.assertTrue( Math.abs( avg1 - v_track ) < dvv); 122 Assert.assertTrue( Math.abs( avg2 - z_track ) < dzz ); 123 Assert.assertTrue( Math.abs( Math.sqrt(sdev11) - dvv) < dvv ); 124 Assert.assertTrue( Math.abs( Math.sqrt(sdev22) - dzz) < dzz ); 125 double dvz = dhm.get(ClusXYPlane2.IV,ClusXYPlane2.IZ); 126 Assert.assertTrue( Math.abs( sdev12 - dvz) < Math.abs(dvz) ); 127 128 //******************************************************************** 129 130 if(debug) System.out.println( ok_prefix 131 + "------------- All tests passed. -------------" ); 132 133 //******************************************************************** 134 135 } 136 137 }