63 #ifndef ST_TPC_SIMPLE_GEOMETRY_HH
64 #define ST_TPC_SIMPLE_GEOMETRY_HH
70 #include "StGlobals.hh"
71 #include "StThreeVector.hh"
72 #include "StTpcGeometry.hh"
85 int numberOfRows()
const;
86 int numberOfInnerRows()
const;
87 int numberOfInnerRows48()
const;
88 int numberOfInnerRows52()
const;
89 int numberOfOuterRows()
const;
90 int numberOfPadsAtRow(
int)
const;
91 double radialDistanceAtRow(
int)
const;
92 double innerSectorRowPitch1()
const;
93 double innerSectorRowPitch2()
const;
94 double outerSectorRowPitch()
const;
95 double ioSectorSpacing()
const;
97 int numberOfSectors()
const;
99 int numberOfTimeBuckets()
const;
102 double innerSectorPadWidth()
const;
103 double outerSectorPadWidth()
const;
104 double innerSectorPadLength()
const;
105 double outerSectorPadLength()
const;
106 double innerSectorPadPitch()
const;
107 double outerSectorPadPitch()
const;
110 double anodeWireRadius()
const;
111 double frischGridWireRadius()
const;
112 double gateWireRadius()
const;
114 double anodeWirePitch()
const;
115 double frischGridPitch()
const;
116 double gatePitch()
const;
118 double innerSectorAnodeWirePadPlaneSeparation()
const;
119 double innerSectorFrischGridPadPlaneSeparation()
const;
120 double innerSectorGatingGridPadPlaneSeparation()
const;
122 double outerSectorAnodeWirePadPlaneSeparation()
const;
123 double outerSectorFrischGridPadPlaneSeparation()
const;
124 double outerSectorGatingGridPadPlaneSeparation()
const;
126 int numberOfInnerSectorAnodeWires()
const;
127 double firstInnerSectorAnodeWire()
const;
128 double lastInnerSectorAnodeWire()
const;
129 double innerSectorAnodeWire(
int)
const;
132 int numberOfOuterSectorAnodeWires()
const;
133 double firstOuterSectorAnodeWire()
const;
134 double lastOuterSectorAnodeWire()
const;
135 double outerSectorAnodeWire(
int)
const;
137 double innerSectorEdge()
const;
138 double outerSectorEdge()
const;
141 double endCapZ()
const;
142 double driftDistance()
const;
143 double ifcRadius()
const;
144 double ofcRadius()
const;
145 double frischGrid()
const;
146 double innerSectorzOffSet()
const;
147 double outerSectorzOffSet()
const;
152 void print(ostream& os = cout)
const;
172 double mInnerSectorPadWidth;
173 double mInnerSectorPadLength;
174 double mInnerSectorPadPitch;
175 double mInnerSectorRowPitch1;
176 double mInnerSectorRowPitch2;
178 double mFirstOuterSectorPadRow;
179 double mLastOuterSectorPadRow;
180 double mFirstRowWidth;
181 double mLastRowWidth;
182 double mInnerSectorEdge;
184 double mOuterSectorPadWidth;
185 double mOuterSectorPadLength;
186 double mOuterSectorPadPitch;
187 double mOuterSectorRowPitch;
188 double mOuterSectorLength;
189 double mIoSectorSeparation;
190 double mOuterSectorEdge;
191 double mIoSectorSpacing;
194 double mDriftDistance;
195 double mInnerSectorzOffSet;
196 double mOuterSectorzOffSet;
197 #ifndef ST_NO_TEMPLATE_DEF_ARGS
198 vector<int> mPadsInRow;
199 vector<double> mRadialDistanceAtRow;
201 vector<int, allocator<int> > mPadsInRow;
202 vector<double, allocator<double> > mRadialDistanceAtRow;
205 double mAnodeWireRadius;
206 double mFrischGridWireRadius;
207 double mGateWireRadius;
209 double mAnodeWirePitch;
210 double mFrischGridWirePitch;
211 double mGateWirePitch;
213 double mInnerSectorAnodeWirePadPlaneSeparation;
214 double mInnerSectorFrischGridPadPlaneSeparation;
215 double mInnerSectorGatingGridPadPlaneSeparation;
217 double mOuterSectorAnodeWirePadPlaneSeparation;
218 double mOuterSectorFrischGridPadPlaneSeparation;
219 double mOuterSectorGatingGridPadPlaneSeparation;
221 double mFirstInnerSectorAnodeWire;
222 double mLastInnerSectorAnodeWire;
223 int mNumberOfInnerSectorAnodeWires;
225 double mFirstOuterSectorAnodeWire;
226 double mLastOuterSectorAnodeWire;
227 int mNumberOfOuterSectorAnodeWires;
230 inline int StTpcSimpleGeometry::numberOfRows()
const {
return(mPadRows);}
231 inline int StTpcSimpleGeometry::numberOfInnerRows()
const {
return(mInnerPadRows);}
232 inline int StTpcSimpleGeometry::numberOfInnerRows48()
const {
return(mInnerPadRows48);}
233 inline int StTpcSimpleGeometry::numberOfInnerRows52()
const {
return(mInnerPadRows52);}
234 inline int StTpcSimpleGeometry::numberOfOuterRows()
const {
return(mOuterPadRows);}
235 inline int StTpcSimpleGeometry::numberOfTimeBuckets()
const {
return(mTimeBuckets);}
236 inline int StTpcSimpleGeometry::numberOfSectors()
const {
return(mSectors);}
237 inline double StTpcSimpleGeometry::innerSectorRowPitch1()
const {
return (mInnerSectorRowPitch1);}
238 inline double StTpcSimpleGeometry::innerSectorRowPitch2()
const {
return (mInnerSectorRowPitch2);}
239 inline double StTpcSimpleGeometry::outerSectorRowPitch()
const {
return (mOuterSectorRowPitch);}
241 inline double StTpcSimpleGeometry::innerSectorPadWidth()
const {
return (mInnerSectorPadWidth);}
242 inline double StTpcSimpleGeometry::outerSectorPadWidth()
const {
return (mOuterSectorPadWidth);}
243 inline double StTpcSimpleGeometry::innerSectorPadLength()
const {
return (mInnerSectorPadLength);}
244 inline double StTpcSimpleGeometry::outerSectorPadLength()
const {
return (mOuterSectorPadLength);}
246 inline double StTpcSimpleGeometry::innerSectorPadPitch()
const {
return (mInnerSectorPadPitch);}
247 inline double StTpcSimpleGeometry::outerSectorPadPitch()
const {
return (mOuterSectorPadPitch);}
249 inline double StTpcSimpleGeometry::frischGrid()
const {
return (mFrischGrid);}
250 inline double StTpcSimpleGeometry::endCapZ()
const {
return (mEndCapZ);}
251 inline double StTpcSimpleGeometry::driftDistance()
const {
return (mDriftDistance);}
252 inline double StTpcSimpleGeometry::ifcRadius()
const {
return (mIfcRadius);}
253 inline double StTpcSimpleGeometry::ofcRadius()
const {
return (mOfcRadius);}
254 inline double StTpcSimpleGeometry::innerSectorzOffSet()
const {
return mInnerSectorzOffSet;}
255 inline double StTpcSimpleGeometry::outerSectorzOffSet()
const {
return mOuterSectorzOffSet;}
258 inline double StTpcSimpleGeometry::anodeWireRadius()
const {
return mAnodeWireRadius;}
259 inline double StTpcSimpleGeometry::frischGridWireRadius()
const {
return mFrischGridWireRadius;}
260 inline double StTpcSimpleGeometry::gateWireRadius()
const {
return mGateWireRadius;}
262 inline double StTpcSimpleGeometry::anodeWirePitch()
const {
return mAnodeWirePitch;}
263 inline double StTpcSimpleGeometry::frischGridPitch()
const {
return mFrischGridWirePitch;}
264 inline double StTpcSimpleGeometry::gatePitch()
const {
return mGateWirePitch;}
266 inline double StTpcSimpleGeometry::innerSectorAnodeWirePadPlaneSeparation()
const {
return mInnerSectorAnodeWirePadPlaneSeparation;}
267 inline double StTpcSimpleGeometry::innerSectorFrischGridPadPlaneSeparation()
const {
return mInnerSectorFrischGridPadPlaneSeparation;}
268 inline double StTpcSimpleGeometry::innerSectorGatingGridPadPlaneSeparation()
const {
return mInnerSectorGatingGridPadPlaneSeparation;}
269 inline double StTpcSimpleGeometry::outerSectorAnodeWirePadPlaneSeparation()
const {
return mOuterSectorAnodeWirePadPlaneSeparation;}
270 inline double StTpcSimpleGeometry::outerSectorFrischGridPadPlaneSeparation()
const {
return mOuterSectorFrischGridPadPlaneSeparation;}
271 inline double StTpcSimpleGeometry::outerSectorGatingGridPadPlaneSeparation()
const {
return mOuterSectorGatingGridPadPlaneSeparation;}
274 inline double StTpcSimpleGeometry::firstInnerSectorAnodeWire()
const {
return (mFirstInnerSectorAnodeWire);}
275 inline double StTpcSimpleGeometry::lastInnerSectorAnodeWire()
const {
return (mLastInnerSectorAnodeWire);}
276 inline int StTpcSimpleGeometry::numberOfInnerSectorAnodeWires()
const {
return (mNumberOfInnerSectorAnodeWires);}
278 inline double StTpcSimpleGeometry::firstOuterSectorAnodeWire()
const{
return (mFirstOuterSectorAnodeWire);}
279 inline double StTpcSimpleGeometry::lastOuterSectorAnodeWire()
const{
return (mLastOuterSectorAnodeWire);}
280 inline int StTpcSimpleGeometry::numberOfOuterSectorAnodeWires()
const {
return (mNumberOfOuterSectorAnodeWires);}
282 inline double StTpcSimpleGeometry::innerSectorEdge()
const {
return (mInnerSectorEdge);}
283 inline double StTpcSimpleGeometry::outerSectorEdge()
const {
return (mOuterSectorEdge);}
284 inline double StTpcSimpleGeometry::ioSectorSpacing()
const {
return (mIoSectorSpacing);}