StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StTpcGeometry.hh
1 /**********************************************************************
2  *
3  * $Id: StTpcGeometry.hh,v 1.4 1999/10/11 23:55:10 calderon Exp $
4  *
5  * Author: brian May 20, 1998
6  *
7  **********************************************************************
8  *
9  * Description: Abstract Class interface for Geometrical parameters
10  *
11  **********************************************************************
12  *
13  * $Log: StTpcGeometry.hh,v $
14  * Revision 1.4 1999/10/11 23:55:10 calderon
15  * Version with Database Access and persistent file.
16  * Not fully tested due to problems with cons, it
17  * doesn't find the local files at compile time.
18  * Yuri suggests forcing commit to work directly with
19  * files in repository.
20  *
21  * Revision 1.3 1999/04/07 00:47:49 lasiuk
22  * add z offset for driftLength
23  *
24  * Revision 1.2 1998/12/15 11:20:36 lasiuk
25  * add i/o sector spacing = 3 mm
26  *
27  * Revision 1.1 1998/11/10 17:12:06 fisyak
28  * Put Brian trs versin into StRoot
29  *
30  * Revision 1.5 1998/11/05 18:18:31 lasiuk
31  * additional wire info
32  *
33  * Revision 1.4 1998/11/04 20:19:48 lasiuk
34  * ensure unit integrity
35  *
36  * Revision 1.3 1998/10/22 14:59:30 lasiuk
37  * include pad length functions
38  *
39  * Revision 1.2 1998/06/30 22:55:43 lasiuk
40  * added anode wire member functions
41  *
42  * Revision 1.1 1998/05/21 21:27:38 lasiuk
43  * Initial revision
44  **********************************************************************/
45 #ifndef ST_TPC_GEOMETRY_HH
46 #define ST_TPC_GEOMETRY_HH
47 
48 #include "StGlobals.hh"
49 #include "StThreeVector.hh"
50 
52 public:
53  virtual ~StTpcGeometry() {}
54  //StTpcGeometry(const StTpcGeometry&);
55  //StTpcGeometry& operator=(cont StTpcGeometry&);
56 
57  // Rows
58  virtual int numberOfRows() const = 0;
59  virtual int numberOfInnerRows() const = 0;
60  virtual int numberOfInnerRows48() const = 0;
61  virtual int numberOfInnerRows52() const = 0;
62  virtual int numberOfOuterRows() const = 0;
63  virtual double innerSectorRowPitch1() const = 0;
64  virtual double innerSectorRowPitch2() const = 0;
65  virtual double outerSectorRowPitch() const = 0;
66 
67  virtual int numberOfPadsAtRow(int) const = 0;
68  virtual double radialDistanceAtRow(int) const = 0;
69 
70  virtual int numberOfSectors() const = 0;
71  // Time buckets
72  virtual int numberOfTimeBuckets() const = 0;
73 
74  // Pads
75  virtual double innerSectorPadWidth() const = 0;
76  virtual double outerSectorPadWidth() const = 0;
77  virtual double innerSectorPadLength() const = 0;
78  virtual double outerSectorPadLength() const = 0;
79  virtual double innerSectorPadPitch() const = 0;
80  virtual double outerSectorPadPitch() const = 0;
81 
82  // Sector Dimensions
83  virtual double innerSectorEdge() const = 0;
84  virtual double outerSectorEdge() const = 0;
85  virtual double ioSectorSpacing() const = 0;
86 
87  // Wire Plane
88  virtual double anodeWireRadius() const = 0;
89  virtual double frischGridWireRadius() const = 0;
90  virtual double gateWireRadius() const = 0;
91 
92  virtual double anodeWirePitch() const = 0;
93  virtual double frischGridPitch() const = 0;
94  virtual double gatePitch() const = 0;
95 
96  virtual double innerSectorAnodeWirePadPlaneSeparation() const = 0;
97  virtual double innerSectorFrischGridPadPlaneSeparation() const = 0;
98  virtual double innerSectorGatingGridPadPlaneSeparation() const = 0;
99 
100  virtual double outerSectorAnodeWirePadPlaneSeparation() const = 0;
101  virtual double outerSectorFrischGridPadPlaneSeparation() const = 0;
102  virtual double outerSectorGatingGridPadPlaneSeparation() const = 0;
103 
104  virtual int numberOfInnerSectorAnodeWires() const = 0;
105  virtual double firstInnerSectorAnodeWire() const = 0;
106  virtual double lastInnerSectorAnodeWire() const = 0;
107  virtual double innerSectorAnodeWire(int) const = 0;
108 
109  virtual int numberOfOuterSectorAnodeWires() const = 0;
110  virtual double firstOuterSectorAnodeWire() const = 0;
111  virtual double lastOuterSectorAnodeWire() const = 0;
112  virtual double outerSectorAnodeWire(int) const = 0;
113 
114  // General -- Field Cage
115  virtual double frischGrid() const = 0;
116  virtual double driftDistance() const = 0;
117  virtual double ifcRadius() const = 0;
118  virtual double ofcRadius() const = 0;
119  virtual double endCapZ() const = 0;
120  virtual double innerSectorzOffSet() const = 0;
121  virtual double outerSectorzOffSet() const = 0;
122 
123  // careful for sun
124  virtual bool acceptance(StThreeVector<StDouble>&) const = 0;
125 
126  // print out complete database
127  virtual void print(ostream& os = cout) const = 0;
128 };
129 
130 #endif