1 package org.lcsim.recon.tracking.gtrbase;
2
3
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
29
30
31
32
33
34
35
36 public class GtrTrfPropagator
37 {
38
39
40 private Propagator _prop;
41
42
43
44
45
46
47
48
49
50
51 public GtrTrfPropagator(double bfield)
52 {
53
54 String tcyl = SurfCylinder.staticType();
55 String tzpl = SurfZPlane.staticType();
56 String txyp = SurfXYPlane.staticType();
57 String tdca = SurfDCA.staticType();
58
59
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
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
105
106
107
108 public Propagator propagator()
109 {
110 return _prop;
111 }
112
113
114
115
116
117
118
119
120 public String toString()
121 {
122 return "GtrTrfPropagator"+_prop;
123 }
124
125 }
126