View Javadoc

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 }