1 /* 2 * CylElossSim_Test.java 3 * 4 * Created on July 24, 2007, 8:57 PM 5 * 6 * $Id: CylElossSim_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 junit.framework.TestCase; 12 import org.lcsim.recon.tracking.trfbase.ETrack; 13 import org.lcsim.recon.tracking.trfbase.Surface; 14 import org.lcsim.recon.tracking.trfbase.TrackError; 15 import org.lcsim.recon.tracking.trfbase.TrackVector; 16 import org.lcsim.recon.tracking.trfbase.VTrack; 17 import org.lcsim.recon.tracking.trfeloss.DeDx; 18 import org.lcsim.recon.tracking.trfeloss.DeDxFixed; 19 import org.lcsim.recon.tracking.trfutil.Assert; 20 21 /** 22 * 23 * @author Norman Graf 24 */ 25 public class CylElossSim_Test extends TestCase 26 { 27 private boolean debug; 28 /** Creates a new instance of CylElossSim_Test */ 29 public void testCylElossSim() 30 { 31 String component = "CylElossSim"; 32 String ok_prefix = component + " (I): "; 33 String error_prefix = component + " test (E): "; 34 35 if(debug) System.out.println( ok_prefix 36 + "---------- Testing component " + component 37 + ". ----------" ); 38 39 //******************************************************************** 40 TrackVector trv = new TrackVector(); 41 trv.set(0, 1.0); 42 trv.set(1, 1.0); 43 trv.set(2, 0.0); 44 trv.set(3, 0.0); 45 trv.set(4, 1.0); 46 Surface srf = new SurfCylinder( 20.0 ); 47 48 double density = 1.0; // g/cm^3 49 double thickness = 1.0; // cm 50 51 DeDx dedx = new DeDxFixed(density); 52 if(debug) System.out.println( ok_prefix + "Test constructor." ); 53 { 54 CylElossSim passIt = new CylElossSim(thickness, dedx); 55 56 Assert.assertTrue(passIt.thickness() == thickness); 57 Assert.assertTrue(passIt.dEdX().equals(dedx)); 58 59 VTrack tmpTrack = new VTrack( srf, trv); 60 tmpTrack.setTrackForward(); 61 62 TrackVector initialVector = tmpTrack.vector(); 63 if(debug) System.out.println("trackvector before interaction "+initialVector); 64 passIt.interact( tmpTrack ); 65 TrackVector finalVector = tmpTrack.vector(); 66 if(debug) System.out.println("trackvector after interaction "+finalVector); 67 68 //Ensure that we lose energy going forward 69 Assert.assertTrue(finalVector.get(4)<initialVector.get(4)); 70 71 VTrack bTrack = new VTrack( srf, trv); 72 bTrack.setTrackBackward(); 73 if(debug) System.out.println("backwards track= "+bTrack); 74 75 initialVector = bTrack.vector(); 76 if(debug) System.out.println("trackvector before interaction "+initialVector); 77 passIt.interact( bTrack ); 78 finalVector = bTrack.vector(); 79 if(debug) System.out.println("trackvector after interaction "+finalVector); 80 //Ensure that we gain energy going backward 81 if(debug) System.out.println(finalVector.get(4)+" "+initialVector.get(4)); 82 Assert.assertTrue(finalVector.get(4)>initialVector.get(4)); 83 } 84 85 //test constructor from Interactor 86 if(debug) System.out.println( ok_prefix + "Test constructor from Interactor." ); 87 CylEloss passIt = new CylEloss(thickness, dedx); 88 CylElossSim simIt = new CylElossSim(passIt); 89 VTrack track0 = new VTrack( srf, trv); 90 VTrack tmpTrack = new VTrack( srf, trv); 91 tmpTrack.setTrackBackward(); 92 if(debug) System.out.println(" \nTrack before simulation "+tmpTrack); 93 simIt.interact( tmpTrack ); 94 if(debug) System.out.println(" Track after simulation "+tmpTrack); 95 TrackError initialError = new TrackError(); 96 ETrack tmpETrack = new ETrack( tmpTrack, initialError ); 97 //Should have gained energy going backwards... 98 if(debug) System.out.println(" Backward Track0: "+track0.vector(4)+" tmpTrack: "+tmpTrack.vector(4)); 99 100 Assert.assertTrue(track0.vector(4)<tmpTrack.vector(4)); 101 102 //Reverse direction and lose it back... 103 if(debug) System.out.println("\n Track should now be forward: "); 104 tmpETrack.setTrackForward(); 105 simIt.interact( tmpETrack ); 106 107 if(debug) System.out.println(" Track after interaction "+tmpETrack); 108 //will need to change limit if we change track or scatterer parameters 109 //equality only in small energy loss limit. 110 if(debug) System.out.println(" Forward Track0: "+track0.vector(4)+" tmpTrack: "+tmpETrack.vector(4)); 111 Assert.assertTrue( Math.abs(track0.vector(4)-tmpETrack.vector(4)) < 1e-8); 112 113 Assert.assertTrue( simIt.thickness()==passIt.thickness() ); 114 Assert.assertTrue( simIt.dEdX().equals(passIt.dEdX()) ); 115 116 117 if(debug) System.out.println( ok_prefix 118 + "------------- All tests passed. -------------" ); 119 120 } 121 122 }