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