View Javadoc

1   package org.lcsim.recon.tracking.gtrbase;
2   
3   // GtrTrfPropagator
4   
5   import org.lcsim.recon.tracking.trfbase.Propagator;
6   
7   import org.lcsim.recon.tracking.trfbase.PropDispatch;
8   import org.lcsim.recon.tracking.trfbase.PropStat;
9   import org.lcsim.recon.tracking.trfbase.PropNull;
10  import org.lcsim.recon.tracking.trfcyl.SurfCylinder;
11  import org.lcsim.recon.tracking.trfcyl.PropCyl;
12  import org.lcsim.recon.tracking.trfcyl.PropJoinCyl;
13  import org.lcsim.recon.tracking.trfzp.SurfZPlane;
14  import org.lcsim.recon.tracking.trfzp.PropZZ;
15  import org.lcsim.recon.tracking.trfxyp.SurfXYPlane;
16  import org.lcsim.recon.tracking.trfxyp.PropXYXY;
17  import org.lcsim.recon.tracking.trfcylplane.PropZXY;
18  import org.lcsim.recon.tracking.trfcylplane.PropXYZ;
19  import org.lcsim.recon.tracking.trfcylplane.PropZCyl;
20  import org.lcsim.recon.tracking.trfcylplane.PropXYCyl;
21  import org.lcsim.recon.tracking.trfcylplane.PropCylZ;
22  import org.lcsim.recon.tracking.trfcylplane.PropCylXY;
23  import org.lcsim.recon.tracking.trfdca.SurfDCA;
24  import org.lcsim.recon.tracking.trfdca.PropCylDCA;
25  import org.lcsim.recon.tracking.trfdca.PropDCACyl;
26  
27  /**
28   * Class which provides access to a trf propagator which can be
29   * used with any combination of the following surface types:
30   * SurfCylinder, SurfZplane, SurfXYPlane and SurfDCA.
31   *
32   *@author Norman A. Graf
33   *@version 1.0
34   *
35   */
36  public class GtrTrfPropagator
37  {
38      
39      // The propagator.
40      private Propagator _prop;
41      
42      // methods
43      
44      //
45      
46      /**
47       *Construct an instance from a constant solenoidal magnetic field in Tesla.
48       *
49       * @param   bfield The magnetic field strength in Tesla.
50       */
51      public  GtrTrfPropagator(double bfield)
52      {
53          // Extract the types.
54          String tcyl = SurfCylinder.staticType();
55          String tzpl = SurfZPlane.staticType();
56          String txyp = SurfXYPlane.staticType();
57          String tdca = SurfDCA.staticType();
58          
59          // Construct the constituent propagators.
60          double rmin = 1.0;
61          double rfac = 1.1;
62          Propagator  pcylcyl = new PropCyl(bfield);
63          Propagator  pzplzpl = new PropZZ(bfield);
64          Propagator  pxypxyp = new PropXYXY(bfield);
65          Propagator  pzplxyp = new PropZXY(bfield);
66          Propagator  pxypzpl = new PropXYZ(bfield);
67          Propagator  pcylzpl = new PropCylZ(bfield);
68          Propagator  pcylxyp = new PropCylXY(bfield);
69          Propagator  pzplcyl = new PropZCyl(bfield);
70          Propagator  pxypcyl = new PropXYCyl(bfield);
71          Propagator  pcyldca = new PropCylDCA(bfield);
72          Propagator  pdcacyl = new PropDCACyl(bfield);
73          Propagator  pzpldca = new PropJoinCyl(rmin,rfac,pzplcyl,pcyldca);
74          Propagator  pxypdca = new PropJoinCyl(rmin,rfac,pxypcyl,pcyldca);
75          Propagator  pdcazpl = new PropJoinCyl(rmin,rfac,pdcacyl,pcylzpl);
76          Propagator  pdcaxyp = new PropJoinCyl(rmin,rfac,pdcacyl,pcylxyp);
77          Propagator  pdcadca = new PropNull();
78          
79          // Construct the dispatch propagator.
80          PropDispatch _pdispatch = new PropDispatch();
81          _prop = _pdispatch;
82          _pdispatch.addPropagator(tcyl,tcyl,pcylcyl);
83          _pdispatch.addPropagator(tzpl,tzpl,pzplzpl);
84          _pdispatch.addPropagator(txyp,txyp,pxypxyp);
85          _pdispatch.addPropagator(tzpl,txyp,pzplxyp);
86          _pdispatch.addPropagator(txyp,tzpl,pxypzpl);
87          _pdispatch.addPropagator(tcyl,tzpl,pcylzpl);
88          _pdispatch.addPropagator(tcyl,txyp,pcylxyp);
89          _pdispatch.addPropagator(tzpl,tcyl,pzplcyl);
90          _pdispatch.addPropagator(txyp,tcyl,pxypcyl);
91          _pdispatch.addPropagator(tcyl,tdca,pcyldca);
92          _pdispatch.addPropagator(tdca,tcyl,pdcacyl);
93          _pdispatch.addPropagator(tzpl,tdca,pzpldca);
94          _pdispatch.addPropagator(txyp,tdca,pxypdca);
95          _pdispatch.addPropagator(tdca,tzpl,pdcazpl);
96          _pdispatch.addPropagator(tdca,txyp,pdcaxyp);
97          _pdispatch.addPropagator(tdca,tdca,pdcadca);
98          
99      }
100     
101     //
102     
103     /**
104      * Return the propagator.
105      *
106      * @return The underlying propagator.
107      */
108     public   Propagator propagator()
109     {
110         return _prop;
111     }
112     
113     //
114     
115     /**
116      *output stream
117      *
118      * @return  A String representation of this instance.
119      */
120     public String toString()
121     {
122         return "GtrTrfPropagator"+_prop;
123     }
124     
125 }
126