PandaRoot
PndRichGeo.h
Go to the documentation of this file.
1 #ifndef PNDRICHGEO_H
2 #define PNDRICHGEO_H
3 
4 #include "FairGeoSet.h"
5 #include "TVector3.h"
6 #include "TGraph.h"
7 
8 class PndRichGeo : public FairGeoSet {
9 
10  private:
11  TVector3 fRichOffset;
12  TVector3 fAlBoxSize;
13  double fAlBoxWallThickness;
14 
15  TVector3 fAerogelSize;
16  TVector3 fAerogelOffset;
17  std::vector<Double_t> fnOpt;
18  std::vector<Double_t> fAerogelLayers;
19 
20  double fAngleExtansionInner;
21  double fAngleExtansionOuter;
24  double fMirrorCurvature;
27  double fAngleOfMirrorPosition;
28  double fMirrorThickness;
29  double fMirrorLength;
30 
31  double fPhDetLength;
32  double fPhDetThickness;
33 
34  double fBeamPipeHoleX;
35  double fBeamPipeHoleY;
36 
37  size_t fMirrorType;
38 
40  double fAerogelEntrancePositionZ;
41  double fMirrorThetaMin;
42  double fMirrorThetaMax;
43  double fMirrorRadius;
44  TVector3 fMirrorAxis;
45  TVector3 fMirrorAxisGlob;
46 
48  std::vector<Double_t> fFlatMirrorZ;
49  std::vector<Double_t> fFlatMirrorY;
50  std::vector<Double_t> fFlatMirrorZGlob;
51  std::vector<Double_t> fFlatMirrorYGlob;
52 
54  std::vector<Double_t> fPhDetZ;
55  std::vector<Double_t> fPhDetY;
56  std::vector<Double_t> fWlPhoton;
57  std::vector<Double_t> fPDE;
58  TGraph *fPhDetEff;
59 
60  UInt_t fSenseLevel;
61  UInt_t fSensorsPerDevice;
62  Int_t fSensorIndexX;
63  Int_t fSensorIndexY;
64  Int_t fSensorIndex;
65  TVector3 fSensorPosition;
66 
68  Double_t fPhDetSizeX;
69  Double_t fPhDetSizeY;
70  Double_t fPhDetGapX;
71  Double_t fPhDetGapY;
72  UInt_t fPhDetNumX;
73  UInt_t fPhDetNumY;
74  UInt_t fPhDetPixelNumX;
75  UInt_t fPhDetPixelNumY;
76 
77  UInt_t fPhDetDev;
78  Double_t fPhDetAngle;
79  TVector3 fPhDetP0U, fPhDetNxU, fPhDetNyU, fPhDetNzU;
80  TVector3 fPhDetP0D, fPhDetNxD, fPhDetNyD, fPhDetNzD;
81  Double_t fdX, fdY, fdZ;
82  UInt_t fiXmax, fiYmax;
83 
84  protected:
85  char modName[20]; // name of module
86  char eleName[20]; // substring for elements in module
87  public:
88  PndRichGeo();
90  const char *getModuleName(Int_t);
91  const char *getEleName(Int_t);
92  inline Int_t getModNumInMod(const TString &);
93 
94  void init(size_t ver = 0);
95  Double_t aerogelEntrancePositionZ() { return fAerogelEntrancePositionZ; }
96  Double_t mirrorThetaMin() { return fMirrorThetaMin; }
97  Double_t mirrorThetaMax() { return fMirrorThetaMax; }
98  Double_t mirrorRadius() { return fMirrorRadius; }
99  TVector3 mirrorAxis() { return fMirrorAxis; }
100  TVector3 mirrorAxisGlob() { return fMirrorAxisGlob; }
101  Double_t phDetAngle() { return fPhDetAngle; };
102  TVector3 PhDetPositionLocal(TVector3 pos);
103  TVector3 PhDetPositionGlobal(TVector3 pos);
104  TVector3 PositionDiscretization(TVector3 pos, bool cell = true);
105  TVector3 LocalPositionDiscretization(TVector3 pos, Double_t dX = -1, Double_t dY = -1, Double_t dZ = -1);
106  UInt_t IndexX(TVector3 pos);
107  UInt_t IndexY(TVector3 pos);
108  TVector3 PixelPosition(UInt_t ix, UInt_t iy);
109  TVector3 PixelPositionLocal(UInt_t ix, UInt_t iy);
110  TVector3 PixelPositionGlobal(UInt_t ix, UInt_t iy);
111 
113  TVector3 richOffset() { return fRichOffset; }
114 
116  TVector3 alBoxSize() { return fAlBoxSize; }
117 
119  Double_t alBoxWallThickness() { return fAlBoxWallThickness; }
120 
122  TVector3 aerogelSize() { return fAerogelSize; }
123 
125  TVector3 aerogelOffset() { return fAerogelOffset; }
126 
128  std::vector<Double_t> nOpt() { return fnOpt; }
129 
131  std::vector<Double_t> aerogelLayers() { return fAerogelLayers; }
132 
134  Double_t angleExtansionInner() { return fAngleExtansionInner; }
135 
137  Double_t angleExtansionOuter() { return fAngleExtansionOuter; }
138 
140  Double_t mirrorCurvature() { return fMirrorCurvature; }
141 
143  Double_t angleOfMirrorPosition() { return fAngleOfMirrorPosition; }
144 
146  Double_t mirrorThickness() { return fMirrorThickness; }
147 
149  Double_t mirrorLength() { return fMirrorLength; }
150 
152  Double_t phDetLength() { return fPhDetLength; }
153 
155  Double_t phDetThickness() { return fPhDetThickness; }
156 
158  Double_t beamPipeHoleX() { return fBeamPipeHoleX; }
159 
161  Double_t beamPipeHoleY() { return fBeamPipeHoleY; }
162 
164  std::vector<Double_t> flatMirrorY() { return fFlatMirrorY; }
165 
167  std::vector<Double_t> flatMirrorZ() { return fFlatMirrorZ; }
168 
170  std::vector<Double_t> flatMirrorYGlob() { return fFlatMirrorYGlob; }
171 
173  std::vector<Double_t> flatMirrorZGlob() { return fFlatMirrorZGlob; }
174 
176  std::vector<Double_t> phDetY() { return fPhDetY; }
177 
179  std::vector<Double_t> phDetZ() { return fPhDetZ; }
180 
182  UInt_t sensorIndex() { return fSensorIndex; }
183 
185  UInt_t phDetNPixelMaxX() { return fPhDetPixelNumX; }
186 
188  UInt_t phDetNPixelMaxY() { return fPhDetPixelNumY; }
189 
191  Double_t phDetQEff(Double_t wl);
192 
194  Double_t phDetSizeX() { return fPhDetSizeX; }
195 
197  Double_t phDetSizeY() { return fPhDetSizeY; }
198 
200  Double_t phDetGapX() { return fPhDetGapX; }
201 
203  Double_t phDetGapY() { return fPhDetGapY; }
204 
206  UInt_t phDetNumX() { return fPhDetNumX; }
207 
209  UInt_t phDetNumY() { return fPhDetNumY; }
210 
212  UInt_t sensorsPerDevice() { return fSensorsPerDevice; }
213 
214  ClassDef(PndRichGeo, 1)
215 };
216 
217 inline Int_t PndRichGeo::getModNumInMod(const TString &name)
218 {
224  return (Int_t)(name[4] - '0') - 1; //
225 }
226 
227 #endif
Double_t mirrorCurvature()
Definition: PndRichGeo.h:140
TVector3 mirrorAxis()
Definition: PndRichGeo.h:99
char eleName[20]
Definition: PndRichGeo.h:86
Double_t phDetQEff(Double_t wl)
UInt_t IndexY(TVector3 pos)
Double_t mirrorThetaMin()
Definition: PndRichGeo.h:96
TVector3 aerogelOffset()
Definition: PndRichGeo.h:125
TVector3 PhDetPositionLocal(TVector3 pos)
std::vector< Double_t > phDetZ()
Definition: PndRichGeo.h:179
TVector3 aerogelSize()
Definition: PndRichGeo.h:122
TVector3 PositionDiscretization(TVector3 pos, bool cell=true)
Double_t angleOfMirrorPosition()
Definition: PndRichGeo.h:143
const char * getEleName(Int_t)
UInt_t sensorsPerDevice()
Definition: PndRichGeo.h:212
std::vector< Double_t > phDetY()
Definition: PndRichGeo.h:176
UInt_t phDetNPixelMaxY()
Definition: PndRichGeo.h:188
Double_t alBoxWallThickness()
Definition: PndRichGeo.h:119
Double_t mirrorThickness()
Definition: PndRichGeo.h:146
UInt_t phDetNPixelMaxX()
Definition: PndRichGeo.h:185
Double_t mirrorRadius()
Definition: PndRichGeo.h:98
Double_t phDetSizeX()
Definition: PndRichGeo.h:194
std::vector< Double_t > aerogelLayers()
Definition: PndRichGeo.h:131
Double_t phDetGapY()
Definition: PndRichGeo.h:203
TVector3 PhDetPositionGlobal(TVector3 pos)
UInt_t IndexX(TVector3 pos)
UInt_t phDetNumY()
Definition: PndRichGeo.h:209
void init(size_t ver=0)
Double_t angleExtansionOuter()
Definition: PndRichGeo.h:137
Int_t getModNumInMod(const TString &)
Definition: PndRichGeo.h:217
UInt_t sensorIndex()
Definition: PndRichGeo.h:182
Double_t beamPipeHoleY()
Definition: PndRichGeo.h:161
TVector3 PixelPositionLocal(UInt_t ix, UInt_t iy)
TVector3 PixelPositionGlobal(UInt_t ix, UInt_t iy)
std::vector< Double_t > flatMirrorZGlob()
Definition: PndRichGeo.h:173
Double_t aerogelEntrancePositionZ()
Definition: PndRichGeo.h:95
UInt_t phDetNumX()
Definition: PndRichGeo.h:206
Double_t phDetSizeY()
Definition: PndRichGeo.h:197
Double_t angleExtansionInner()
Definition: PndRichGeo.h:134
Double_t phDetThickness()
Definition: PndRichGeo.h:155
TVector3 LocalPositionDiscretization(TVector3 pos, Double_t dX=-1, Double_t dY=-1, Double_t dZ=-1)
Double_t phDetAngle()
Definition: PndRichGeo.h:101
Double_t phDetGapX()
Definition: PndRichGeo.h:200
Double_t mirrorLength()
Definition: PndRichGeo.h:149
TVector3 richOffset()
Definition: PndRichGeo.h:113
Double_t phDetLength()
Definition: PndRichGeo.h:152
std::vector< Double_t > flatMirrorY()
Definition: PndRichGeo.h:164
char modName[20]
Definition: PndRichGeo.h:85
Double_t beamPipeHoleX()
Definition: PndRichGeo.h:158
std::vector< Double_t > nOpt()
Definition: PndRichGeo.h:128
Double_t mirrorThetaMax()
Definition: PndRichGeo.h:97
TVector3 mirrorAxisGlob()
Definition: PndRichGeo.h:100
TVector3 alBoxSize()
Definition: PndRichGeo.h:116
std::vector< Double_t > flatMirrorZ()
Definition: PndRichGeo.h:167
TVector3 PixelPosition(UInt_t ix, UInt_t iy)
const char * getModuleName(Int_t)
std::vector< Double_t > flatMirrorYGlob()
Definition: PndRichGeo.h:170