37 #ifndef ST_TPC_DB_GEOMETRY_HH
38 #define ST_TPC_DB_GEOMETRY_HH
44 #include "StGlobals.hh"
45 #include "StThreeVector.hh"
46 #include "StTpcGeometry.hh"
60 int numberOfRows()
const;
61 int numberOfInnerRows()
const;
62 int numberOfInnerRows48()
const;
63 int numberOfInnerRows52()
const;
64 int numberOfOuterRows()
const;
65 int numberOfPadsAtRow(
int)
const;
66 double radialDistanceAtRow(
int)
const;
67 double innerSectorRowPitch1()
const;
68 double innerSectorRowPitch2()
const;
69 double outerSectorRowPitch()
const;
70 double ioSectorSpacing()
const;
72 int numberOfSectors()
const;
74 int numberOfTimeBuckets()
const;
77 double innerSectorPadWidth()
const;
78 double outerSectorPadWidth()
const;
79 double innerSectorPadLength()
const;
80 double outerSectorPadLength()
const;
81 double innerSectorPadPitch()
const;
82 double outerSectorPadPitch()
const;
85 double anodeWireRadius()
const;
86 double frischGridWireRadius()
const;
87 double gateWireRadius()
const;
89 double anodeWirePitch()
const;
90 double frischGridPitch()
const;
91 double gatePitch()
const;
93 double innerSectorAnodeWirePadPlaneSeparation()
const;
94 double innerSectorFrischGridPadPlaneSeparation()
const;
95 double innerSectorGatingGridPadPlaneSeparation()
const;
97 double outerSectorAnodeWirePadPlaneSeparation()
const;
98 double outerSectorFrischGridPadPlaneSeparation()
const;
99 double outerSectorGatingGridPadPlaneSeparation()
const;
101 int numberOfInnerSectorAnodeWires()
const;
102 double firstInnerSectorAnodeWire()
const;
103 double lastInnerSectorAnodeWire()
const;
104 double innerSectorAnodeWire(
int)
const;
107 int numberOfOuterSectorAnodeWires()
const;
108 double firstOuterSectorAnodeWire()
const;
109 double lastOuterSectorAnodeWire()
const;
110 double outerSectorAnodeWire(
int)
const;
112 double innerSectorEdge()
const;
113 double outerSectorEdge()
const;
116 double endCapZ()
const;
117 double driftDistance()
const;
118 double ifcRadius()
const;
119 double ofcRadius()
const;
120 double frischGrid()
const;
121 double innerSectorzOffSet()
const;
122 double outerSectorzOffSet()
const;
127 void print(ostream& os = cout)
const;
147 double mInnerSectorPadWidth;
148 double mInnerSectorPadLength;
149 double mInnerSectorPadPitch;
150 double mInnerSectorRowPitch1;
151 double mInnerSectorRowPitch2;
153 double mFirstOuterSectorPadRow;
154 double mLastOuterSectorPadRow;
155 double mFirstRowWidth;
156 double mLastRowWidth;
157 double mInnerSectorEdge;
159 double mOuterSectorPadWidth;
160 double mOuterSectorPadLength;
161 double mOuterSectorPadPitch;
162 double mOuterSectorRowPitch;
163 double mOuterSectorLength;
164 double mIoSectorSeparation;
165 double mOuterSectorEdge;
166 double mIoSectorSpacing;
169 double mDriftDistance;
170 double mInnerSectorzOffSet;
171 double mOuterSectorzOffSet;
173 #ifndef ST_NO_TEMPLATE_DEF_ARGS
174 vector<int> mPadsInRow;
175 vector<double> mRadialDistanceAtRow;
177 vector<int, allocator<int> > mPadsInRow;
178 vector<double, allocator<double> > mRadialDistanceAtRow;
181 double mAnodeWireRadius;
182 double mFrischGridWireRadius;
183 double mGateWireRadius;
185 double mAnodeWirePitch;
186 double mFrischGridWirePitch;
187 double mGateWirePitch;
189 double mInnerSectorAnodeWirePadPlaneSeparation;
190 double mInnerSectorFrischGridPadPlaneSeparation;
191 double mInnerSectorGatingGridPadPlaneSeparation;
193 double mOuterSectorAnodeWirePadPlaneSeparation;
194 double mOuterSectorFrischGridPadPlaneSeparation;
195 double mOuterSectorGatingGridPadPlaneSeparation;
197 double mFirstInnerSectorAnodeWire;
198 double mLastInnerSectorAnodeWire;
199 int mNumberOfInnerSectorAnodeWires;
201 double mFirstOuterSectorAnodeWire;
202 double mLastOuterSectorAnodeWire;
203 int mNumberOfOuterSectorAnodeWires;
206 inline int StTpcDbGeometry::numberOfRows()
const {
return(mPadRows);}
207 inline int StTpcDbGeometry::numberOfInnerRows()
const {
return(mInnerPadRows);}
208 inline int StTpcDbGeometry::numberOfInnerRows48()
const {
return(mInnerPadRows48);}
209 inline int StTpcDbGeometry::numberOfInnerRows52()
const {
return(mInnerPadRows52);}
210 inline int StTpcDbGeometry::numberOfOuterRows()
const {
return(mOuterPadRows);}
211 inline int StTpcDbGeometry::numberOfTimeBuckets()
const {
return(mTimeBuckets);}
212 inline int StTpcDbGeometry::numberOfSectors()
const {
return(mSectors);}
213 inline double StTpcDbGeometry::innerSectorRowPitch1()
const {
return (mInnerSectorRowPitch1);}
214 inline double StTpcDbGeometry::innerSectorRowPitch2()
const {
return (mInnerSectorRowPitch2);}
215 inline double StTpcDbGeometry::outerSectorRowPitch()
const {
return (mOuterSectorRowPitch);}
217 inline double StTpcDbGeometry::innerSectorPadWidth()
const {
return (mInnerSectorPadWidth);}
218 inline double StTpcDbGeometry::outerSectorPadWidth()
const {
return (mOuterSectorPadWidth);}
219 inline double StTpcDbGeometry::innerSectorPadLength()
const {
return (mInnerSectorPadLength);}
220 inline double StTpcDbGeometry::outerSectorPadLength()
const {
return (mOuterSectorPadLength);}
222 inline double StTpcDbGeometry::innerSectorPadPitch()
const {
return (mInnerSectorPadPitch);}
223 inline double StTpcDbGeometry::outerSectorPadPitch()
const {
return (mOuterSectorPadPitch);}
225 inline double StTpcDbGeometry::frischGrid()
const {
return (mFrischGrid);}
226 inline double StTpcDbGeometry::endCapZ()
const {
return (mEndCapZ);}
227 inline double StTpcDbGeometry::driftDistance()
const {
return (mDriftDistance);}
228 inline double StTpcDbGeometry::innerSectorzOffSet()
const {
return mInnerSectorzOffSet;}
229 inline double StTpcDbGeometry::outerSectorzOffSet()
const {
return mOuterSectorzOffSet;}
231 inline double StTpcDbGeometry::ifcRadius()
const {
return (mIfcRadius);}
232 inline double StTpcDbGeometry::ofcRadius()
const {
return (mOfcRadius);}
235 inline double StTpcDbGeometry::anodeWireRadius()
const {
return mAnodeWireRadius;}
236 inline double StTpcDbGeometry::frischGridWireRadius()
const {
return mFrischGridWireRadius;}
237 inline double StTpcDbGeometry::gateWireRadius()
const {
return mGateWireRadius;}
239 inline double StTpcDbGeometry::anodeWirePitch()
const {
return mAnodeWirePitch;}
240 inline double StTpcDbGeometry::frischGridPitch()
const {
return mFrischGridWirePitch;}
241 inline double StTpcDbGeometry::gatePitch()
const {
return mGateWirePitch;}
243 inline double StTpcDbGeometry::innerSectorAnodeWirePadPlaneSeparation()
const {
return mInnerSectorAnodeWirePadPlaneSeparation;}
244 inline double StTpcDbGeometry::innerSectorFrischGridPadPlaneSeparation()
const {
return mInnerSectorFrischGridPadPlaneSeparation;}
245 inline double StTpcDbGeometry::innerSectorGatingGridPadPlaneSeparation()
const {
return mInnerSectorGatingGridPadPlaneSeparation;}
246 inline double StTpcDbGeometry::outerSectorAnodeWirePadPlaneSeparation()
const {
return mOuterSectorAnodeWirePadPlaneSeparation;}
247 inline double StTpcDbGeometry::outerSectorFrischGridPadPlaneSeparation()
const {
return mOuterSectorFrischGridPadPlaneSeparation;}
248 inline double StTpcDbGeometry::outerSectorGatingGridPadPlaneSeparation()
const {
return mOuterSectorGatingGridPadPlaneSeparation;}
251 inline double StTpcDbGeometry::firstInnerSectorAnodeWire()
const {
return (mFirstInnerSectorAnodeWire);}
252 inline double StTpcDbGeometry::lastInnerSectorAnodeWire()
const {
return (mLastInnerSectorAnodeWire);}
253 inline int StTpcDbGeometry::numberOfInnerSectorAnodeWires()
const {
return (mNumberOfInnerSectorAnodeWires);}
255 inline double StTpcDbGeometry::firstOuterSectorAnodeWire()
const{
return (mFirstOuterSectorAnodeWire);}
256 inline double StTpcDbGeometry::lastOuterSectorAnodeWire()
const{
return (mLastOuterSectorAnodeWire);}
257 inline int StTpcDbGeometry::numberOfOuterSectorAnodeWires()
const {
return (mNumberOfOuterSectorAnodeWires);}
259 inline double StTpcDbGeometry::innerSectorEdge()
const {
return (mInnerSectorEdge);}
260 inline double StTpcDbGeometry::outerSectorEdge()
const {
return (mOuterSectorEdge);}
261 inline double StTpcDbGeometry::ioSectorSpacing()
const {
return (mIoSectorSpacing);}