FairRoot/PandaRoot
Public Member Functions | Protected Attributes | Private Attributes | List of all members
PndRichGeo Class Reference

#include <PndRichGeo.h>

Inheritance diagram for PndRichGeo:

Public Member Functions

 PndRichGeo ()
 
 ~PndRichGeo ()
 
const char * getModuleName (Int_t)
 
const char * getEleName (Int_t)
 
Int_t getModNumInMod (const TString &)
 
void init (size_t ver=0)
 
Double_t aerogelEntrancePositionZ ()
 
Double_t mirrorThetaMin ()
 
Double_t mirrorThetaMax ()
 
Double_t mirrorRadius ()
 
TVector3 mirrorAxis ()
 
TVector3 mirrorAxisGlob ()
 
Double_t phDetAngle ()
 
TVector3 PhDetPositionLocal (TVector3 pos)
 
TVector3 PhDetPositionGlobal (TVector3 pos)
 
TVector3 PositionDiscretization (TVector3 pos, bool cell=true)
 
TVector3 LocalPositionDiscretization (TVector3 pos, Double_t dX=-1, Double_t dY=-1, Double_t dZ=-1)
 
UInt_t IndexX (TVector3 pos)
 
UInt_t IndexY (TVector3 pos)
 
TVector3 PixelPosition (UInt_t ix, UInt_t iy)
 
TVector3 PixelPositionLocal (UInt_t ix, UInt_t iy)
 
TVector3 PixelPositionGlobal (UInt_t ix, UInt_t iy)
 
TVector3 richOffset ()
 
TVector3 alBoxSize ()
 
Double_t alBoxWallThickness ()
 
TVector3 aerogelSize ()
 
TVector3 aerogelOffset ()
 
std::vector< Double_tnOpt ()
 
std::vector< Double_taerogelLayers ()
 
Double_t angleExtansionInner ()
 
Double_t angleExtansionOuter ()
 
Double_t mirrorCurvature ()
 
Double_t angleOfMirrorPosition ()
 
Double_t mirrorThickness ()
 
Double_t mirrorLength ()
 
Double_t phDetLength ()
 
Double_t phDetThickness ()
 
Double_t beamPipeHoleX ()
 
Double_t beamPipeHoleY ()
 
std::vector< Double_tflatMirrorY ()
 
std::vector< Double_tflatMirrorZ ()
 
std::vector< Double_tflatMirrorYGlob ()
 
std::vector< Double_tflatMirrorZGlob ()
 
std::vector< Double_tphDetY ()
 
std::vector< Double_tphDetZ ()
 
UInt_t sensorIndex ()
 
UInt_t phDetNPixelMaxX ()
 
UInt_t phDetNPixelMaxY ()
 
Double_t phDetQEff (Double_t wl)
 
Double_t phDetSizeX ()
 
Double_t phDetSizeY ()
 
Double_t phDetGapX ()
 
Double_t phDetGapY ()
 
UInt_t phDetNumX ()
 
UInt_t phDetNumY ()
 
UInt_t sensorsPerDevice ()
 

Protected Attributes

char modName [20]
 
char eleName [20]
 

Private Attributes

TVector3 fRichOffset
 Rich system offset [cm]. More...
 
TVector3 fAlBoxSize
 Aluminium Box size [cm]. More...
 
double fAlBoxWallThickness
 
TVector3 fAerogelSize
 Aerogel size [cm]. More...
 
TVector3 fAerogelOffset
 Aerogel offset [cm]. More...
 
std::vector< Double_tfnOpt
 refraction index of the aerogel More...
 
std::vector< Double_tfAerogelLayers
 No idea (SS) More...
 
double fAngleExtansionInner
 
double fAngleExtansionOuter
 
double fMirrorCurvature
 Mirror curvature [degree]. More...
 
double fAngleOfMirrorPosition
 Angle of the mirror chord [degree]. More...
 
double fMirrorThickness
 Mirror thickness [cm]. More...
 
double fMirrorLength
 Mirror length [cm]. More...
 
double fPhDetLength
 Length of the photodetector plate [cm]. More...
 
double fPhDetThickness
 Thickness or the photodetector plate [cm]. More...
 
double fBeamPipeHoleX
 X size of the beam pipe hole [cm]. More...
 
double fBeamPipeHoleY
 Y size of the beam pipe hole [cm]. More...
 
size_t fMirrorType
 
double fAerogelEntrancePositionZ
 
double fMirrorThetaMin
 
double fMirrorThetaMax
 
double fMirrorRadius
 
TVector3 fMirrorAxis
 
TVector3 fMirrorAxisGlob
 
std::vector< Double_tfFlatMirrorZ
 No idea (SS) More...
 
std::vector< Double_tfFlatMirrorY
 No idea (SS) More...
 
std::vector< Double_tfFlatMirrorZGlob
 No idea (SS) More...
 
std::vector< Double_tfFlatMirrorYGlob
 No idea (SS) More...
 
std::vector< Double_tfPhDetZ
 No idea (SS) More...
 
std::vector< Double_tfPhDetY
 No idea (SS) More...
 
std::vector< Double_tfWlPhoton
 
std::vector< Double_tfPDE
 
TGraph * fPhDetEff
 
UInt_t fSenseLevel
 
UInt_t fSensorsPerDevice
 
Int_t fSensorIndexX
 
Int_t fSensorIndexY
 
Int_t fSensorIndex
 
TVector3 fSensorPosition
 
Double_t fPhDetSizeX
 
Double_t fPhDetSizeY
 
Double_t fPhDetGapX
 
Double_t fPhDetGapY
 
UInt_t fPhDetNumX
 
UInt_t fPhDetNumY
 
UInt_t fPhDetPixelNumX
 
UInt_t fPhDetPixelNumY
 
UInt_t fPhDetDev
 
Double_t fPhDetAngle
 
TVector3 fPhDetP0U
 
TVector3 fPhDetNxU
 
TVector3 fPhDetNyU
 
TVector3 fPhDetNzU
 
TVector3 fPhDetP0D
 
TVector3 fPhDetNxD
 
TVector3 fPhDetNyD
 
TVector3 fPhDetNzD
 
Double_t fdX
 
Double_t fdY
 
Double_t fdZ
 
UInt_t fiXmax
 
UInt_t fiYmax
 

Detailed Description

Definition at line 8 of file PndRichGeo.h.

Constructor & Destructor Documentation

PndRichGeo::PndRichGeo ( )
PndRichGeo::~PndRichGeo ( )
inline

Definition at line 90 of file PndRichGeo.h.

90 {}

Member Function Documentation

Double_t PndRichGeo::aerogelEntrancePositionZ ( )
inline

Definition at line 96 of file PndRichGeo.h.

References fAerogelEntrancePositionZ.

double fAerogelEntrancePositionZ
Definition: PndRichGeo.h:41
std::vector<Double_t> PndRichGeo::aerogelLayers ( )
inline

Definition at line 135 of file PndRichGeo.h.

References fAerogelLayers.

Referenced by createRootGeometry_RICH().

135 {return fAerogelLayers;}
std::vector< Double_t > fAerogelLayers
No idea (SS)
Definition: PndRichGeo.h:19
TVector3 PndRichGeo::aerogelOffset ( )
inline

Definition at line 129 of file PndRichGeo.h.

References fAerogelOffset.

Referenced by createRootGeometry_RICH(), PndRichReco::Init(), init(), and PndRich::Initialize().

129 {return fAerogelOffset;}
TVector3 fAerogelOffset
Aerogel offset [cm].
Definition: PndRichGeo.h:17
TVector3 PndRichGeo::aerogelSize ( )
inline

Definition at line 126 of file PndRichGeo.h.

References fAerogelSize.

Referenced by createRootGeometry_RICH(), PndRichReco::Init(), init(), and PndRich::Initialize().

126 {return fAerogelSize;}
TVector3 fAerogelSize
Aerogel size [cm].
Definition: PndRichGeo.h:16
TVector3 PndRichGeo::alBoxSize ( )
inline

Definition at line 120 of file PndRichGeo.h.

References fAlBoxSize.

Referenced by createRootGeometry_RICH().

120 {return fAlBoxSize;}
TVector3 fAlBoxSize
Aluminium Box size [cm].
Definition: PndRichGeo.h:13
Double_t PndRichGeo::alBoxWallThickness ( )
inline

Definition at line 123 of file PndRichGeo.h.

References fAlBoxWallThickness.

Referenced by createRootGeometry_RICH().

123 {return fAlBoxWallThickness;}
double fAlBoxWallThickness
Definition: PndRichGeo.h:14
Double_t PndRichGeo::angleExtansionInner ( )
inline

Definition at line 138 of file PndRichGeo.h.

References fAngleExtansionInner.

Referenced by createRootGeometry_RICH(), and init().

138 {return fAngleExtansionInner;}
double fAngleExtansionInner
Definition: PndRichGeo.h:21
Double_t PndRichGeo::angleExtansionOuter ( )
inline

Definition at line 141 of file PndRichGeo.h.

References fAngleExtansionOuter.

Referenced by createRootGeometry_RICH(), and init().

141 {return fAngleExtansionOuter;}
double fAngleExtansionOuter
Definition: PndRichGeo.h:24
Double_t PndRichGeo::angleOfMirrorPosition ( )
inline

Definition at line 147 of file PndRichGeo.h.

References fAngleOfMirrorPosition.

Referenced by createRootGeometry_RICH(), and init().

147 {return fAngleOfMirrorPosition;}
double fAngleOfMirrorPosition
Angle of the mirror chord [degree].
Definition: PndRichGeo.h:28
Double_t PndRichGeo::beamPipeHoleX ( )
inline

Definition at line 162 of file PndRichGeo.h.

References fBeamPipeHoleX.

Referenced by createRootGeometry_RICH().

162 {return fBeamPipeHoleX;}
double fBeamPipeHoleX
X size of the beam pipe hole [cm].
Definition: PndRichGeo.h:35
Double_t PndRichGeo::beamPipeHoleY ( )
inline

Definition at line 165 of file PndRichGeo.h.

References fBeamPipeHoleY.

Referenced by createRootGeometry_RICH().

165 {return fBeamPipeHoleY;}
double fBeamPipeHoleY
Y size of the beam pipe hole [cm].
Definition: PndRichGeo.h:36
std::vector<Double_t> PndRichGeo::flatMirrorY ( )
inline

Definition at line 168 of file PndRichGeo.h.

References fFlatMirrorY.

Referenced by createRootGeometry_RICH().

168 {return fFlatMirrorY;}
std::vector< Double_t > fFlatMirrorY
No idea (SS)
Definition: PndRichGeo.h:50
std::vector<Double_t> PndRichGeo::flatMirrorYGlob ( )
inline

Definition at line 174 of file PndRichGeo.h.

References fFlatMirrorYGlob.

Referenced by PndRichReco::Init().

174 {return fFlatMirrorYGlob;}
std::vector< Double_t > fFlatMirrorYGlob
No idea (SS)
Definition: PndRichGeo.h:52
std::vector<Double_t> PndRichGeo::flatMirrorZ ( )
inline

Definition at line 171 of file PndRichGeo.h.

References fFlatMirrorZ.

Referenced by createRootGeometry_RICH().

171 {return fFlatMirrorZ;}
std::vector< Double_t > fFlatMirrorZ
No idea (SS)
Definition: PndRichGeo.h:49
std::vector<Double_t> PndRichGeo::flatMirrorZGlob ( )
inline

Definition at line 177 of file PndRichGeo.h.

References fFlatMirrorZGlob.

Referenced by PndRichReco::Init().

177 {return fFlatMirrorZGlob;}
std::vector< Double_t > fFlatMirrorZGlob
No idea (SS)
Definition: PndRichGeo.h:51
const char * PndRichGeo::getEleName ( Int_t  m)

Returns the element name of Det number m

Definition at line 819 of file PndRichGeo.cxx.

References eleName.

820 {
822  sprintf(eleName,"rich0%i",m+1);
823  return eleName;
824 }
char eleName[20]
Definition: PndRichGeo.h:87
__m128 m
Definition: P4_F32vec4.h:28
Int_t PndRichGeo::getModNumInMod ( const TString name)
inline

returns the module index from module name ?? in name[??] has to be the length of the detector name in the .geo file. For example if all nodes in this file starts with newdetector ?? has to be 11.

Definition at line 221 of file PndRichGeo.h.

222 {
228  return (Int_t)(name[4]-'0')-1; //
229 }
TString name
const char * PndRichGeo::getModuleName ( Int_t  m)

Returns the module name of PndRich number m Setting PndRich here means that all modules names in the ASCII file should start with PndRich otherwise they will not be constructed

Definition at line 808 of file PndRichGeo.cxx.

References modName.

809 {
815  sprintf(modName,"rich0%i",m+1);
816  return modName;
817 }
__m128 m
Definition: P4_F32vec4.h:28
char modName[20]
Definition: PndRichGeo.h:86
UInt_t PndRichGeo::IndexX ( TVector3  pos)

Definition at line 780 of file PndRichGeo.cxx.

References fSensorIndexX, fSensorPosition, and PositionDiscretization().

781 {
783  return fSensorIndexX;
784  //return (int)((pos.X()+fdX*fiXmax/2)/fdX);
785 }
TVector3 pos
TVector3 PositionDiscretization(TVector3 pos, bool cell=true)
Definition: PndRichGeo.cxx:557
TVector3 fSensorPosition
Definition: PndRichGeo.h:66
Int_t fSensorIndexX
Definition: PndRichGeo.h:63
UInt_t PndRichGeo::IndexY ( TVector3  pos)

Definition at line 787 of file PndRichGeo.cxx.

References fSensorIndexY, fSensorPosition, and PositionDiscretization().

788 {
790  return fSensorIndexY;
791  //return (int)((pos.Y()+fdY*fiXmax/2)/fdY);
792 }
Int_t fSensorIndexY
Definition: PndRichGeo.h:64
TVector3 pos
TVector3 PositionDiscretization(TVector3 pos, bool cell=true)
Definition: PndRichGeo.cxx:557
TVector3 fSensorPosition
Definition: PndRichGeo.h:66
void PndRichGeo::init ( size_t  ver = 0)

Definition at line 82 of file PndRichGeo.cxx.

References acos(), aerogelOffset(), aerogelSize(), alpha, angleExtansionInner(), angleExtansionOuter(), angleOfMirrorPosition(), cos(), Double_t, fAerogelEntrancePositionZ, fAerogelLayers, fdX, fdY, fdZ, fFlatMirrorY, fFlatMirrorYGlob, fFlatMirrorZ, fFlatMirrorZGlob, fiXmax, fiYmax, fMirrorAxis, fMirrorAxisGlob, fMirrorLength, fMirrorRadius, fMirrorThetaMax, fMirrorThetaMin, fnOpt, fPhDetAngle, fPhDetGapX, fPhDetGapY, fPhDetNumX, fPhDetNumY, fPhDetNxD, fPhDetNxU, fPhDetNyD, fPhDetNyU, fPhDetNzD, fPhDetNzU, fPhDetP0D, fPhDetP0U, fPhDetPixelNumX, fPhDetPixelNumY, fPhDetSizeX, fPhDetSizeY, fPhDetY, fPhDetZ, fSensorsPerDevice, i, mirrorCurvature(), nOpt(), richOffset(), sin(), sqrt(), and theta.

Referenced by PndRich::ConstructOpGeometry(), createRootGeometry_RICH(), PndRichHitProducer::Init(), PndRichReco::Init(), and PndRich::Initialize().

82  {
83  size_t nRefInd = (ver0%100000)/1000;
84  size_t nlayers = (ver0%1000)/100;
85  size_t ver = ver0%100;
86  nlayers = nlayers ? nlayers : 3;
87 
88  double ka1 = angleExtansionInner();
89  double ka2 = angleExtansionOuter();
90  double beta = mirrorCurvature();
91  double alpha = angleOfMirrorPosition();
92  // Mirror
93  double za = richOffset().Z() /*+ alBoxWallThickness()*/ + aerogelOffset().Z();
94  double ya = aerogelSize().Y()/2;
95  double wa = aerogelSize().Z();
96  double yp1 = ya + wa;
97  double zp1 = wa;
98  alpha = alpha < 45 - beta ? alpha : 45 -beta;
99  alpha *= M_PI/180;
100  beta *= M_PI/180;
101  double thetaCh = acos(1/nOpt()[0]);
102  double theta = atan(ya/za);
103  double alpha1 = 2*(alpha+beta) - ka1*thetaCh;
104  double alpha2 = 2*(alpha-beta) + ka2*thetaCh + theta;
105  double alpham = (alpha1+alpha2)/2;
106  double zm1 = zp1 + yp1/tan(alpha1);
107  double ym1 = 0;
108  double zm2 = (zm1+ya*tan(alpha))/(1-tan(theta+ka2*thetaCh)*tan(alpha));
109  double ym2 = (zm2-zm1)/tan(alpha);
110  double zp2 = ((ym2-yp1+zm2*tan(alpha2))*tan(alpham)+zp1)/(1+tan(alpha2)*tan(alpham));
111  double yp2 = yp1 + (zp2-zp1)/tan(alpham);
112  if (yp2<ym2) {
113  yp2 = ym2;
114  zp2 = zm2;
115  alpham = atan((zp2-zp1)/(yp2-yp1));
116  }
117  //double phDetWidth = sqrt((zp1-zp2)*(zp1-zp2)+(yp1-yp2)*(yp1-yp2)); //[R.K. 01/2017] unused variable?
118  double zmc = (zm1+zm2)/2;
119  double ymc = (ym1+ym2)/2;
120  double wm = sqrt((zm1-zm2)*(zm1-zm2)+(ym1-ym2)*(ym1-ym2));
121  double rm = wm/2/sin(beta);
122  double hm = rm*cos(beta);
123  //double zm0 = zmc-hm*cos(alpha)-alBoxSize().Z()/2+aerogelOffset().Z(); //[R.K. 01/2017] unused variable?
124  //double ym0 = ymc+hm*sin(alpha); //[R.K. 01/2017] unused variable?
125  double theta1 = 360-(alpha+beta)*180/M_PI;
126  double theta2 = 360-(alpha-beta)*180/M_PI;
127  //double theta3 = 360-theta2; //[R.K. 01/2017] unused variable?
128 
129  // photosensor pixel sizes
130  // http://www.digitalphotoncounting.com/wp-content/uploads/PDPC_leaflet_A4_2015_10.pdf
131  fdX = 0.4075/2; //0.38016;
132  fdY = 0.4075/2; //0.32;
133  fdZ = 0;
134  fiXmax = 2*(int)(fMirrorLength/2/fdX);
135  fiYmax = 0; // see further
136 
138 
139  fMirrorRadius = rm;
140  fMirrorAxis = TVector3( 0, ymc+hm*sin(alpha), za + zmc-hm*cos(alpha) );
141  theta1 -= theta1<180 ? 0 : 360;
142  theta2 -= theta2<180 ? 0 : 360;
143  fMirrorThetaMin = theta1*M_PI/180;
144  fMirrorThetaMax = theta2*M_PI/180;
145 
146  UInt_t nm;
147  Double_t yShift, zShift, dn;
148 
149  switch (nlayers)
150  {
151  case 1:
152  fnOpt.resize(1);
153  fnOpt[0] = 1.05;
154  fAerogelLayers.resize(1);
155  fAerogelLayers[0] = 1;
156  break;
157  case 2:
158  fnOpt.resize(2);
159  dn = nRefInd ? (nRefInd-1)*0.00005 : 0.000817682;
160  fnOpt[0] = 1.05 - dn;
161  fnOpt[1] = 1.05 + dn;
162  fAerogelLayers.resize(2);
163  fAerogelLayers[0] = 0.5;
164  fAerogelLayers[1] = 0.5;
165  break;
166  case 3:
167  fnOpt.resize(3);
168  dn = nRefInd ? (nRefInd-1)*0.00005 : 0.00108652;
169  fnOpt[0] = 1.05 - dn;
170  fnOpt[1] = 1.05;
171  fnOpt[2] = 1.05 + dn;
172  fAerogelLayers.resize(3);
173  fAerogelLayers[0] = 0.333333;
174  fAerogelLayers[1] = 0.333334;
175  fAerogelLayers[2] = 0.333333;
176  break;
177  case 4:
178  fnOpt.resize(4);
179  dn = nRefInd ? (nRefInd-1)*0.00005 : 0.00122976;
180  fnOpt[0] = 1.05 - dn;
181  fnOpt[1] = 1.05;
182  fnOpt[2] = 1.05;
183  fnOpt[3] = 1.05 + dn;
184  fAerogelLayers.resize(4);
185  fAerogelLayers[0] = 0.25;
186  fAerogelLayers[1] = 0.25;
187  fAerogelLayers[2] = 0.25;
188  fAerogelLayers[3] = 0.25;
189  break;
190  case 5:
191  fnOpt.resize(5);
192  fnOpt[0] = 1.05;
193  fnOpt[1] = 1.05;
194  fnOpt[2] = 1.05;
195  fnOpt[3] = 1.05;
196  fnOpt[4] = 1.05;
197  fAerogelLayers.resize(5);
198  fAerogelLayers[0] = 0.2;
199  fAerogelLayers[1] = 0.2;
200  fAerogelLayers[2] = 0.2;
201  fAerogelLayers[3] = 0.2;
202  fAerogelLayers[4] = 0.2;
203  break;
204  default:
205  break;
206  }
207  yShift = 0;
208  zShift = richOffset().Z() + aerogelOffset().Z();
209  switch (ver)
210  {
211  case 1: // round mirror
212  fPhDetY[0] = 60;
213  fPhDetY[1] = 82.5719;
214  fPhDetZ[0] = 5.00000000000000;
215  fPhDetZ[1] = 58.957;
216  fMirrorRadius = 130.35;
217  fMirrorAxis = TVector3( 0, 100.366, -70.1726 ); //z relative to aerogel entrence
218  fMirrorAxisGlob = TVector3( 0, 100.366+yShift, -70.1726+zShift ); //z relative to aerogel entrence
219  fMirrorThetaMin = -0.878805;
220  fMirrorThetaMax = -0.13694;
221  break;
222  case 11: // flat mirror (one part)
223  case 21: // flat mirror (one part) + side mirrors
224  fFlatMirrorY.resize(2);
225  fFlatMirrorZ.resize(2);
226  fFlatMirrorY[0] = 0;
227  fFlatMirrorY[1] = 113.511542159065;
228  fFlatMirrorZ[0] = 47.6318222110121;
229  fFlatMirrorZ[1] = 129.893234066359;
230  fPhDetY[0] = 60;
231  fPhDetY[1] = fFlatMirrorY[1];
232  fPhDetZ[0] = 5.00000000000000;
233  fPhDetZ[1] = fFlatMirrorZ[1];
234  //
235  nm = fFlatMirrorZ.size();
236  fFlatMirrorYGlob.resize(nm);
237  fFlatMirrorZGlob.resize(nm);
238  yShift = 0;
239  zShift = richOffset().Z() + aerogelOffset().Z();
240  for(UInt_t i=0; i<nm; i++) {
241  fFlatMirrorYGlob[i] = fFlatMirrorY[i] + yShift;
242  fFlatMirrorZGlob[i] = fFlatMirrorZ[i] + zShift;
243  }
244  break;
245  case 12: // flat mirror (two part)
246  case 22: // flat mirror (two part) + side mirrors
247  fFlatMirrorY.resize(3);
248  fFlatMirrorZ.resize(3);
249  fFlatMirrorY[0] = 0;
250  fFlatMirrorY[1] = 30.7192103643191;
251  fFlatMirrorY[2] = 91.7457580720718;
252  fFlatMirrorZ[0] = 21.0968997324958;
253  fFlatMirrorZ[1] = 53.4669621286154;
254  fFlatMirrorZ[2] = 79.0929943996688;
255  fPhDetY[0] = 60;
256  fPhDetY[1] = fFlatMirrorY[2];
257  fPhDetZ[0] = 5.00000000000000;
258  fPhDetZ[1] = fFlatMirrorZ[2];
259  //
260  nm = fFlatMirrorZ.size();
261  fFlatMirrorYGlob.resize(nm);
262  fFlatMirrorZGlob.resize(nm);
263  yShift = 0;
264  zShift = richOffset().Z() + aerogelOffset().Z();
265  for(UInt_t i=0; i<nm; i++) {
266  fFlatMirrorYGlob[i] = fFlatMirrorY[i] + yShift;
267  fFlatMirrorZGlob[i] = fFlatMirrorZ[i] + zShift;
268  }
269  break;
270  case 13: // flat mirror (three part)
271  case 23: // flat mirror (three part) + side mirrors
272  fFlatMirrorY.resize(4);
273  fFlatMirrorZ.resize(4);
274  // with refraction on the surface
275  fFlatMirrorY[0] = 0;
276  fFlatMirrorY[1] = 15.7768998527303;
277  fFlatMirrorY[2] = 53.8249581943035;
278  fFlatMirrorY[3] = 86.6039907197112;
279  fFlatMirrorZ[0] = 19.8059481359439;
280  fFlatMirrorZ[1] = 36.7817321826854;
281  fFlatMirrorZ[2] = 63.6406349592571;
282  fFlatMirrorZ[3] = 67.0923693467737;
283  fPhDetY[0] = 60;
284  fPhDetY[1] = fFlatMirrorY[3];
285  fPhDetZ[0] = 5.00000000000000;
286  fPhDetZ[1] = fFlatMirrorZ[3];
287  //
288  nm = fFlatMirrorZ.size();
289  fFlatMirrorYGlob.resize(nm);
290  fFlatMirrorZGlob.resize(nm);
291  yShift = 0;
292  zShift = richOffset().Z() + aerogelOffset().Z();
293  for(UInt_t i=0; i<nm; i++) {
294  fFlatMirrorYGlob[i] = fFlatMirrorY[i] + yShift;
295  fFlatMirrorZGlob[i] = fFlatMirrorZ[i] + zShift;
296  }
297  break;
298  case 14: // flat mirror (four part)
299  case 24: // flat mirror (four part) + side mirrors
300  fFlatMirrorY.resize(5);
301  fFlatMirrorZ.resize(5);
302  // with refraction on the surface
303  fFlatMirrorY[0] = 0;
304  fFlatMirrorY[1] = 8.03026468817330;
305  fFlatMirrorY[2] = 30.7475489960267;
306  fFlatMirrorY[3] = 59.1955006448811;
307  fFlatMirrorY[4] = 84.0239842069457;
308  fFlatMirrorZ[0] = 18.5825566438019;
309  fFlatMirrorZ[1] = 27.3977855428941;
310  fFlatMirrorZ[2] = 47.7739516802010;
311  fFlatMirrorZ[3] = 60.7121551030865;
312  fFlatMirrorZ[4] = 61.0707645809510;
313  fPhDetY[0] = 60;
314  fPhDetY[1] = fFlatMirrorY[4];
315  fPhDetZ[0] = 5.00000000000000;
316  fPhDetZ[1] = fFlatMirrorZ[4];
317  //
318  nm = fFlatMirrorZ.size();
319  fFlatMirrorYGlob.resize(nm);
320  fFlatMirrorZGlob.resize(nm);
321  yShift = 0;
322  zShift = richOffset().Z() + aerogelOffset().Z();
323  for(UInt_t i=0; i<nm; i++) {
324  fFlatMirrorYGlob[i] = fFlatMirrorY[i] + yShift;
325  fFlatMirrorZGlob[i] = fFlatMirrorZ[i] + zShift;
326  }
327  break;
328  case 15: // flat mirror (five part)
329  case 25: // flat mirror (five part) + side mirrors
330  fFlatMirrorY.resize(6);
331  fFlatMirrorZ.resize(6);
332  // with refraction on the surface
333  fFlatMirrorY[0] = 0;
334  fFlatMirrorY[1] = 6.43722379520563;
335  fFlatMirrorY[2] = 24.4256033426640;
336  fFlatMirrorY[3] = 49.2742119933454;
337  fFlatMirrorY[4] = 65.6045650294544;
338  fFlatMirrorY[5] = 82.9932569195603;
339  fFlatMirrorZ[0] = 19.7751084893358;
340  fFlatMirrorZ[1] = 26.7049745668535;
341  fFlatMirrorZ[2] = 43.2466340126002;
342  fFlatMirrorZ[3] = 57.0589176253026;
343  fFlatMirrorZ[4] = 60.4234882450729;
344  fFlatMirrorZ[5] = 58.6650992017072;
345  fPhDetY[0] = 60;
346  fPhDetY[1] = fFlatMirrorY[5];
347  fPhDetZ[0] = 5.00000000000000;
348  fPhDetZ[1] = fFlatMirrorZ[5];
349  //
350  nm = fFlatMirrorZ.size();
351  fFlatMirrorYGlob.resize(nm);
352  fFlatMirrorZGlob.resize(nm);
353  yShift = 0;
354  zShift = richOffset().Z() + aerogelOffset().Z();
355  for(UInt_t i=0; i<nm; i++) {
356  fFlatMirrorYGlob[i] = fFlatMirrorY[i] + yShift;
357  fFlatMirrorZGlob[i] = fFlatMirrorZ[i] + zShift;
358  }
359  break;
360  case 16: // flat mirror (six part)
361  case 26: // flat mirror (six part) + side mirrors
362  fFlatMirrorY.resize(7);
363  fFlatMirrorZ.resize(7);
364  // with refraction on the surface
365  fFlatMirrorY[0] = 0;
366  fFlatMirrorY[1] = 4.32030152236946;
367  fFlatMirrorY[2] = 16.3735214678972;
368  fFlatMirrorY[3] = 34.0234063082931;
369  fFlatMirrorY[4] = 53.4151371528727;
370  fFlatMirrorY[5] = 67.4943304893323;
371  fFlatMirrorY[6] = 82.0821597606174;
372  fFlatMirrorZ[0] = 20.0304540223155;
373  fFlatMirrorZ[1] = 24.6621130797753;
374  fFlatMirrorZ[2] = 36.3146724796001;
375  fFlatMirrorZ[3] = 48.7721721707139;
376  fFlatMirrorZ[4] = 56.7889550463438;
377  fFlatMirrorZ[5] = 58.5790965356983;
378  fFlatMirrorZ[6] = 56.5386444942197;
379  fPhDetY[0] = 60;
380  fPhDetY[1] = fFlatMirrorY[6];
381  fPhDetZ[0] = 5.00000000000000;
382  fPhDetZ[1] = fFlatMirrorZ[6];
383  //
384  nm = fFlatMirrorZ.size();
385  fFlatMirrorYGlob.resize(nm);
386  fFlatMirrorZGlob.resize(nm);
387  yShift = 0;
388  zShift = richOffset().Z() + aerogelOffset().Z();
389  for(UInt_t i=0; i<nm; i++) {
390  fFlatMirrorYGlob[i] = fFlatMirrorY[i] + yShift;
391  fFlatMirrorZGlob[i] = fFlatMirrorZ[i] + zShift;
392  }
393  break;
394  case 17: // flat mirror (seven part)
395  case 27: // flat mirror (seven part) + side mirrors
396  fFlatMirrorY.resize(8);
397  fFlatMirrorZ.resize(8);
398  // with refraction on the surface
399  fFlatMirrorY[0] = 0;
400  fFlatMirrorY[1] = 2.07504791151454;
401  fFlatMirrorY[2] = 8.03938318086690;
402  fFlatMirrorY[3] = 22.6202807022538;
403  fFlatMirrorY[4] = 38.2473277661409;
404  fFlatMirrorY[5] = 55.1167285140505;
405  fFlatMirrorY[6] = 68.1475547317666;
406  fFlatMirrorY[7] = 81.4987977109529;
407  fFlatMirrorZ[0] = 19.0632831569999;
408  fFlatMirrorZ[1] = 21.3232597676276;
409  fFlatMirrorZ[2] = 27.5080822022865;
410  fFlatMirrorZ[3] = 40.5611035370563;
411  fFlatMirrorZ[4] = 49.9253177088730;
412  fFlatMirrorZ[5] = 56.0112344905128;
413  fFlatMirrorZ[6] = 57.2586668011183;
414  fFlatMirrorZ[7] = 55.1771069627915;
415  fPhDetY[0] = 60;
416  fPhDetY[1] = fFlatMirrorY[7];
417  fPhDetZ[0] = 5.00000000000000;
418  fPhDetZ[1] = fFlatMirrorZ[7];
419  //
420  nm = fFlatMirrorZ.size();
421  fFlatMirrorYGlob.resize(nm);
422  fFlatMirrorZGlob.resize(nm);
423  yShift = 0;
424  zShift = richOffset().Z() + aerogelOffset().Z();
425  for(UInt_t i=0; i<nm; i++) {
426  fFlatMirrorYGlob[i] = fFlatMirrorY[i] + yShift;
427  fFlatMirrorZGlob[i] = fFlatMirrorZ[i] + zShift;
428  }
429  break;
430  case 18: // flat mirror (eight part)
431  case 28: // flat mirror (eight part) + side mirrors
432  fFlatMirrorY.resize(9);
433  fFlatMirrorZ.resize(9);
434  // with refraction on the surface
435  fFlatMirrorY[0] = 0;
436  fFlatMirrorY[1] = 1.53560904998618;
437  fFlatMirrorY[2] = 5.89212190378038;
438  fFlatMirrorY[3] = 17.5565807772290;
439  fFlatMirrorY[4] = 30.0104598999171;
440  fFlatMirrorY[5] = 43.1204560600741;
441  fFlatMirrorY[6] = 57.0242748178388;
442  fFlatMirrorY[7] = 69.0047342707571;
443  fFlatMirrorY[8] = 81.1329884527176;
444  fFlatMirrorZ[0] = 19.5409594890924;
445  fFlatMirrorZ[1] = 21.2004105360782;
446  fFlatMirrorZ[2] = 25.7419689325749;
447  fFlatMirrorZ[3] = 36.6887140347995;
448  fFlatMirrorZ[4] = 45.2863228266215;
449  fFlatMirrorZ[5] = 51.5860160769717;
450  fFlatMirrorZ[6] = 55.7435949020503;
451  fFlatMirrorZ[7] = 56.4461575595980;
452  fFlatMirrorZ[8] = 54.3233266479462;
453  fPhDetY[0] = 60;
454  fPhDetY[1] = fFlatMirrorY[8];
455  fPhDetZ[0] = 5.00000000000000;
456  fPhDetZ[1] = fFlatMirrorZ[8];
457  //
458  nm = fFlatMirrorZ.size();
459  fFlatMirrorYGlob.resize(nm);
460  fFlatMirrorZGlob.resize(nm);
461  yShift = 0;
462  zShift = richOffset().Z() + aerogelOffset().Z();
463  for(UInt_t i=0; i<nm; i++) {
464  fFlatMirrorYGlob[i] = fFlatMirrorY[i] + yShift;
465  fFlatMirrorZGlob[i] = fFlatMirrorZ[i] + zShift;
466  }
467  break;
468  case 19: // flat mirror (nine part)
469  case 29: // flat mirror (nine part) + side mirrors
470  fFlatMirrorY.resize(10);
471  fFlatMirrorZ.resize(10);
472  // with refraction on the surface
473  fFlatMirrorY[0] = 0;
474  fFlatMirrorY[1] = 1.49645897228357;
475  fFlatMirrorY[2] = 5.64778607612293;
476  fFlatMirrorY[3] = 16.5322752536511;
477  fFlatMirrorY[4] = 27.8183214052547;
478  fFlatMirrorY[5] = 40.2374704149686;
479  fFlatMirrorY[6] = 52.9871945876487;
480  fFlatMirrorY[7] = 62.1756927165643;
481  fFlatMirrorY[8] = 71.5135677331208;
482  fFlatMirrorY[9] = 80.8735573790680;
483  fFlatMirrorZ[0] = 20.3538808252916;
484  fFlatMirrorZ[1] = 21.9497914345741;
485  fFlatMirrorZ[2] = 26.2257519619150;
486  fFlatMirrorZ[3] = 36.3783289992003;
487  fFlatMirrorZ[4] = 44.3190814791673;
488  fFlatMirrorZ[5] = 50.6718607175374;
489  fFlatMirrorZ[6] = 54.9437977944303;
490  fFlatMirrorZ[7] = 56.2339910167212;
491  fFlatMirrorZ[8] = 55.8374506290110;
492  fFlatMirrorZ[9] = 53.7178276378618;
493  fPhDetY[0] = 60;
494  fPhDetY[1] = fFlatMirrorY[9];
495  fPhDetZ[0] = 5.00000000000000;
496  fPhDetZ[1] = fFlatMirrorZ[9];
497  //
498  nm = fFlatMirrorZ.size();
499  fFlatMirrorYGlob.resize(nm);
500  fFlatMirrorZGlob.resize(nm);
501  yShift = 0;
502  zShift = richOffset().Z() + aerogelOffset().Z();
503  for(UInt_t i=0; i<nm; i++) {
504  fFlatMirrorYGlob[i] = fFlatMirrorY[i] + yShift;
505  fFlatMirrorZGlob[i] = fFlatMirrorZ[i] + zShift;
506  }
507  break;
508  default:
509  break;
510  }
511  fPhDetAngle = std::atan((fPhDetY[1]-fPhDetY[0])/(fPhDetZ[1]-fPhDetZ[0]));
512  fPhDetP0U = TVector3(0,fPhDetY[0] + yShift,fPhDetZ[0] + zShift);
513  fPhDetNxU = TVector3(1,0,0);
514  fPhDetNyU = TVector3(0,fPhDetY[1]-fPhDetY[0],fPhDetZ[1]-fPhDetZ[0]).Unit();
515  fPhDetNzU = fPhDetNxU.Cross(fPhDetNyU).Unit();
516  fPhDetP0D = TVector3(0,-fPhDetY[0] - yShift,fPhDetZ[0] + zShift);
517  fPhDetNxD = TVector3(1,0,0);
518  fPhDetNyD = TVector3(0,fPhDetY[1]-fPhDetY[0],-(fPhDetZ[1]-fPhDetZ[0])).Unit();
519  fPhDetNzD = fPhDetNxD.Cross(fPhDetNyD).Unit();
520  fiYmax = (int)(2*std::sqrt((fPhDetY[1]-fPhDetY[0])*(fPhDetY[1]-fPhDetY[0])+
521  (fPhDetZ[1]-fPhDetZ[0])*(fPhDetZ[1]-fPhDetZ[0]))/fdY);
522  // number of photo-devices
523  Double_t phDetWidth = std::sqrt((fPhDetY[1]-fPhDetY[0])*(fPhDetY[1]-fPhDetY[0])+
524  (fPhDetZ[1]-fPhDetZ[0])*(fPhDetZ[1]-fPhDetZ[0]));
525  fPhDetNumX = 2*(int)(fMirrorLength/2/(fPhDetSizeX + fPhDetGapX)+1);
526  fPhDetNumY = 2*(int)(phDetWidth/(fPhDetSizeY + fPhDetGapY)+1);
529 }
UInt_t fSensorsPerDevice
Definition: PndRichGeo.h:62
Double_t mirrorCurvature()
Definition: PndRichGeo.h:144
UInt_t fiYmax
Definition: PndRichGeo.h:83
std::vector< Double_t > fnOpt
refraction index of the aerogel
Definition: PndRichGeo.h:18
friend F32vec4 acos(const F32vec4 &a)
Definition: P4_F32vec4.h:113
UInt_t fPhDetNumX
Definition: PndRichGeo.h:73
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
std::vector< Double_t > fFlatMirrorY
No idea (SS)
Definition: PndRichGeo.h:50
double fMirrorRadius
Definition: PndRichGeo.h:44
double fAerogelEntrancePositionZ
Definition: PndRichGeo.h:41
TVector3 aerogelOffset()
Definition: PndRichGeo.h:129
UInt_t fiXmax
Definition: PndRichGeo.h:83
TVector3 fMirrorAxis
Definition: PndRichGeo.h:45
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
TVector3 aerogelSize()
Definition: PndRichGeo.h:126
std::vector< Double_t > fPhDetZ
No idea (SS)
Definition: PndRichGeo.h:55
Double_t fPhDetGapX
Definition: PndRichGeo.h:71
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
Double_t angleOfMirrorPosition()
Definition: PndRichGeo.h:147
UInt_t fPhDetPixelNumX
Definition: PndRichGeo.h:75
double fMirrorThetaMax
Definition: PndRichGeo.h:43
TVector3 fPhDetNyU
Definition: PndRichGeo.h:80
std::vector< Double_t > fFlatMirrorZGlob
No idea (SS)
Definition: PndRichGeo.h:51
std::vector< Double_t > fFlatMirrorYGlob
No idea (SS)
Definition: PndRichGeo.h:52
TVector3 fPhDetNxU
Definition: PndRichGeo.h:80
TVector3 fPhDetNzU
Definition: PndRichGeo.h:80
std::vector< Double_t > fFlatMirrorZ
No idea (SS)
Definition: PndRichGeo.h:49
Double_t
Double_t fPhDetGapY
Definition: PndRichGeo.h:72
Double_t angleExtansionOuter()
Definition: PndRichGeo.h:141
std::vector< Double_t > fAerogelLayers
No idea (SS)
Definition: PndRichGeo.h:19
Double_t fdZ
Definition: PndRichGeo.h:82
UInt_t fPhDetNumY
Definition: PndRichGeo.h:74
Double_t fPhDetAngle
Definition: PndRichGeo.h:79
Double_t angleExtansionInner()
Definition: PndRichGeo.h:138
Double_t fPhDetSizeX
Definition: PndRichGeo.h:69
std::vector< Double_t > fPhDetY
No idea (SS)
Definition: PndRichGeo.h:56
TVector3 richOffset()
Definition: PndRichGeo.h:117
TVector3 fPhDetNzD
Definition: PndRichGeo.h:81
TVector3 fMirrorAxisGlob
Definition: PndRichGeo.h:46
double fMirrorLength
Mirror length [cm].
Definition: PndRichGeo.h:30
TVector3 fPhDetNyD
Definition: PndRichGeo.h:81
double alpha
Definition: f_Init.h:9
std::vector< Double_t > nOpt()
Definition: PndRichGeo.h:132
UInt_t fPhDetPixelNumY
Definition: PndRichGeo.h:76
Double_t fdX
Definition: PndRichGeo.h:82
Double_t fdY
Definition: PndRichGeo.h:82
TVector3 fPhDetP0D
Definition: PndRichGeo.h:81
Double_t fPhDetSizeY
Definition: PndRichGeo.h:70
TVector3 fPhDetP0U
Definition: PndRichGeo.h:80
double fMirrorThetaMin
Definition: PndRichGeo.h:42
TVector3 fPhDetNxD
Definition: PndRichGeo.h:81
TVector3 PndRichGeo::LocalPositionDiscretization ( TVector3  pos,
Double_t  dX = -1,
Double_t  dY = -1,
Double_t  dZ = -1 
)

Definition at line 762 of file PndRichGeo.cxx.

References Double_t, fabs(), fdX, fdY, fdZ, x, y, and z.

766 {
767  // simple variant
768  Double_t dX_ = dX>0 ? dX : fdX;
769  Double_t dY_ = dY>0 ? dY : fdY;
770  Double_t dZ_ = dZ>0 ? dZ : fdZ;
771  Double_t x = pos.X();
772  Double_t y = pos.Y();
773  Double_t z = pos.Z();
774  if (x&&dX) x = ((int)(x/dX_) + x/std::fabs(x)/2)*dX_;
775  if (y&&dY) y = ((int)(y/dY_) + y/std::fabs(y)/2)*dY_;
776  if (z&&dZ) z = ((int)(z/dZ_) + z/std::fabs(z)/2)*dZ_;
777  return TVector3(x,y,z);
778 }
TVector3 pos
Double_t
Double_t z
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
Double_t fdZ
Definition: PndRichGeo.h:82
Double_t x
Double_t y
Double_t fdX
Definition: PndRichGeo.h:82
Double_t fdY
Definition: PndRichGeo.h:82
TVector3 PndRichGeo::mirrorAxis ( )
inline

Definition at line 100 of file PndRichGeo.h.

References fMirrorAxis.

Referenced by createRootGeometry_RICH().

100 {return fMirrorAxis;}
TVector3 fMirrorAxis
Definition: PndRichGeo.h:45
TVector3 PndRichGeo::mirrorAxisGlob ( )
inline

Definition at line 101 of file PndRichGeo.h.

References fMirrorAxisGlob.

101 {return fMirrorAxisGlob;}
TVector3 fMirrorAxisGlob
Definition: PndRichGeo.h:46
Double_t PndRichGeo::mirrorCurvature ( )
inline

Definition at line 144 of file PndRichGeo.h.

References fMirrorCurvature.

Referenced by createRootGeometry_RICH(), and init().

144 {return fMirrorCurvature;}
double fMirrorCurvature
Mirror curvature [degree].
Definition: PndRichGeo.h:27
Double_t PndRichGeo::mirrorLength ( )
inline

Definition at line 153 of file PndRichGeo.h.

References fMirrorLength.

Referenced by createRootGeometry_RICH(), and PndRichReco::Init().

153 {return fMirrorLength;}
double fMirrorLength
Mirror length [cm].
Definition: PndRichGeo.h:30
Double_t PndRichGeo::mirrorRadius ( )
inline

Definition at line 99 of file PndRichGeo.h.

References fMirrorRadius.

Referenced by createRootGeometry_RICH().

99 {return fMirrorRadius;}
double fMirrorRadius
Definition: PndRichGeo.h:44
Double_t PndRichGeo::mirrorThetaMax ( )
inline

Definition at line 98 of file PndRichGeo.h.

References fMirrorThetaMax.

Referenced by createRootGeometry_RICH().

98 {return fMirrorThetaMax;}
double fMirrorThetaMax
Definition: PndRichGeo.h:43
Double_t PndRichGeo::mirrorThetaMin ( )
inline

Definition at line 97 of file PndRichGeo.h.

References fMirrorThetaMin.

Referenced by createRootGeometry_RICH().

97 {return fMirrorThetaMin;}
double fMirrorThetaMin
Definition: PndRichGeo.h:42
Double_t PndRichGeo::mirrorThickness ( )
inline

Definition at line 150 of file PndRichGeo.h.

References fMirrorThickness.

Referenced by createRootGeometry_RICH().

150 {return fMirrorThickness;}
double fMirrorThickness
Mirror thickness [cm].
Definition: PndRichGeo.h:29
std::vector<Double_t> PndRichGeo::nOpt ( )
inline

Definition at line 132 of file PndRichGeo.h.

References fnOpt.

Referenced by PndRich::ConstructOpGeometry(), createRootGeometry_RICH(), init(), and PndRich::Initialize().

132 {return fnOpt;}
std::vector< Double_t > fnOpt
refraction index of the aerogel
Definition: PndRichGeo.h:18
Double_t PndRichGeo::phDetAngle ( )
inline

Definition at line 102 of file PndRichGeo.h.

References fPhDetAngle.

Referenced by PndRichReco::Init().

102 {return fPhDetAngle;};
Double_t fPhDetAngle
Definition: PndRichGeo.h:79
Double_t PndRichGeo::phDetGapX ( )
inline

Definition at line 204 of file PndRichGeo.h.

References fPhDetGapX.

204 {return fPhDetGapX;}
Double_t fPhDetGapX
Definition: PndRichGeo.h:71
Double_t PndRichGeo::phDetGapY ( )
inline

Definition at line 207 of file PndRichGeo.h.

References fPhDetGapY.

207 {return fPhDetGapY;}
Double_t fPhDetGapY
Definition: PndRichGeo.h:72
Double_t PndRichGeo::phDetLength ( )
inline

Definition at line 156 of file PndRichGeo.h.

References fPhDetLength.

Referenced by createRootGeometry_RICH().

156 {return fPhDetLength;}
double fPhDetLength
Length of the photodetector plate [cm].
Definition: PndRichGeo.h:32
UInt_t PndRichGeo::phDetNPixelMaxX ( )
inline

Definition at line 189 of file PndRichGeo.h.

References fPhDetPixelNumX.

Referenced by PndRichHitProducer::Exec().

189 {return fPhDetPixelNumX;}
UInt_t fPhDetPixelNumX
Definition: PndRichGeo.h:75
UInt_t PndRichGeo::phDetNPixelMaxY ( )
inline

Definition at line 192 of file PndRichGeo.h.

References fPhDetPixelNumY.

Referenced by PndRichHitProducer::Exec().

192 {return fPhDetPixelNumY;}
UInt_t fPhDetPixelNumY
Definition: PndRichGeo.h:76
UInt_t PndRichGeo::phDetNumX ( )
inline

Definition at line 210 of file PndRichGeo.h.

References fPhDetNumX.

210 {return fPhDetNumX;}
UInt_t fPhDetNumX
Definition: PndRichGeo.h:73
UInt_t PndRichGeo::phDetNumY ( )
inline

Definition at line 213 of file PndRichGeo.h.

References fPhDetNumY.

213 {return fPhDetNumY;}
UInt_t fPhDetNumY
Definition: PndRichGeo.h:74
TVector3 PndRichGeo::PhDetPositionGlobal ( TVector3  pos)

Definition at line 549 of file PndRichGeo.cxx.

References fPhDetNxD, fPhDetNxU, fPhDetNyD, fPhDetNyU, fPhDetNzD, fPhDetNzU, fPhDetP0D, and fPhDetP0U.

Referenced by PixelPosition(), PixelPositionGlobal(), and PositionDiscretization().

550 {
551  if (pos.Y()>=0)
552  return fPhDetP0U + pos.X()*fPhDetNxU + pos.Y()*fPhDetNyU + pos.Z()*fPhDetNzU;
553  else
554  return fPhDetP0D + pos.X()*fPhDetNxD + pos.Y()*fPhDetNyD + pos.Z()*fPhDetNzD;
555 }
TVector3 pos
TVector3 fPhDetNyU
Definition: PndRichGeo.h:80
TVector3 fPhDetNxU
Definition: PndRichGeo.h:80
TVector3 fPhDetNzU
Definition: PndRichGeo.h:80
TVector3 fPhDetNzD
Definition: PndRichGeo.h:81
TVector3 fPhDetNyD
Definition: PndRichGeo.h:81
TVector3 fPhDetP0D
Definition: PndRichGeo.h:81
TVector3 fPhDetP0U
Definition: PndRichGeo.h:80
TVector3 fPhDetNxD
Definition: PndRichGeo.h:81
TVector3 PndRichGeo::PhDetPositionLocal ( TVector3  pos)

Definition at line 536 of file PndRichGeo.cxx.

References fPhDetNxD, fPhDetNxU, fPhDetNyD, fPhDetNyU, fPhDetNzD, fPhDetNzU, fPhDetP0D, and fPhDetP0U.

Referenced by PositionDiscretization().

537 {
538  //photodetector: cell size
539  if (pos.Y()>=0) {
540  TVector3 dP = pos - fPhDetP0U;
541  return TVector3(dP*fPhDetNxU,dP*fPhDetNyU,dP*fPhDetNzU);
542  }
543  else {
544  TVector3 dP = pos - fPhDetP0D;
545  return TVector3(dP*fPhDetNxD,dP*fPhDetNyD,dP*fPhDetNzD);
546  }
547 }
TVector3 pos
TVector3 fPhDetNyU
Definition: PndRichGeo.h:80
TVector3 fPhDetNxU
Definition: PndRichGeo.h:80
TVector3 fPhDetNzU
Definition: PndRichGeo.h:80
TVector3 fPhDetNzD
Definition: PndRichGeo.h:81
TVector3 fPhDetNyD
Definition: PndRichGeo.h:81
TVector3 fPhDetP0D
Definition: PndRichGeo.h:81
TVector3 fPhDetP0U
Definition: PndRichGeo.h:80
TVector3 fPhDetNxD
Definition: PndRichGeo.h:81
Double_t PndRichGeo::phDetQEff ( Double_t  wl)

Definition at line 531 of file PndRichGeo.cxx.

References fPhDetEff, and fWlPhoton.

Referenced by PndRich::ProcessHits().

532 {
533  return (( wl >= fWlPhoton.front() )&&( wl <= fWlPhoton.back() )) ? fPhDetEff->Eval(wl) : 0 ;
534 }
TGraph * fPhDetEff
Definition: PndRichGeo.h:59
std::vector< Double_t > fWlPhoton
Definition: PndRichGeo.h:57
Double_t PndRichGeo::phDetSizeX ( )
inline

Definition at line 198 of file PndRichGeo.h.

References fPhDetSizeX.

198 {return fPhDetSizeX;}
Double_t fPhDetSizeX
Definition: PndRichGeo.h:69
Double_t PndRichGeo::phDetSizeY ( )
inline

Definition at line 201 of file PndRichGeo.h.

References fPhDetSizeY.

201 {return fPhDetSizeY;}
Double_t fPhDetSizeY
Definition: PndRichGeo.h:70
Double_t PndRichGeo::phDetThickness ( )
inline

Definition at line 159 of file PndRichGeo.h.

References fPhDetThickness.

Referenced by createRootGeometry_RICH().

159 {return fPhDetThickness;}
double fPhDetThickness
Thickness or the photodetector plate [cm].
Definition: PndRichGeo.h:33
std::vector<Double_t> PndRichGeo::phDetY ( )
inline

Definition at line 180 of file PndRichGeo.h.

References fPhDetY.

Referenced by createRootGeometry_RICH(), and PndRichReco::Init().

180 {return fPhDetY;}
std::vector< Double_t > fPhDetY
No idea (SS)
Definition: PndRichGeo.h:56
std::vector<Double_t> PndRichGeo::phDetZ ( )
inline

Definition at line 183 of file PndRichGeo.h.

References fPhDetZ.

Referenced by createRootGeometry_RICH(), and PndRichReco::Init().

183 {return fPhDetZ;}
std::vector< Double_t > fPhDetZ
No idea (SS)
Definition: PndRichGeo.h:55
TVector3 PndRichGeo::PixelPosition ( UInt_t  ix,
UInt_t  iy 
)

Definition at line 681 of file PndRichGeo.cxx.

References Double_t, fPhDetDev, fPhDetGapX, fPhDetGapY, fPhDetNumX, fPhDetNumY, fPhDetSizeX, fPhDetSizeY, fSenseLevel, fSensorIndex, fSensorIndexX, fSensorIndexY, fSensorsPerDevice, and PhDetPositionGlobal().

Referenced by PndRichHitProducer::Exec().

682 {
683  UInt_t Ix = ix/fSensorsPerDevice; // device intex
684  UInt_t Iy = iy/fSensorsPerDevice; // device index
685  UInt_t ixl = ix - Ix*fSensorsPerDevice; // local index
686  UInt_t iyl = iy - Iy*fSensorsPerDevice; // local index
687  UInt_t nsh = fSensorsPerDevice/2;
688  Int_t sx = ixl<nsh?-1:1;
689  Int_t sy = iyl<nsh?-1:1;
690  UInt_t ixm = ixl<nsh?nsh-ixl-1:ixl-nsh;
691  UInt_t iym = iyl<nsh?nsh-iyl-1:iyl-nsh;
692  //
693  Double_t hx = (Ix+0.5-fPhDetNumX/2)*(fPhDetSizeX + fPhDetGapX); // div. center position (x)
694  Double_t hy = (Iy+0.5-fPhDetNumY/2)*(fPhDetSizeY + fPhDetGapY); // div. center position (y)
695  //
696  Double_t xc[4];
697  Double_t yc[4];
698  //Double_t dxc[4]; //[R.K.04/2017] unused
699  //Double_t dyc[4]; //[R.K.04/2017] unused
700  Double_t xcl3[2];
701  Double_t ycl3[2];
702  Double_t xcl2;
703  Double_t ycl2;
704  // dpc3200-22
705  // http://www.digitalphotoncounting.com/wp-content/uploads/PDPC_leaflet_A4_2015_10.pdf
706  if (fPhDetDev==0)
707  {
708  // pixel center x,y, pixel half widths wx,wy
709  xc[0] = 0.23; yc[0] = 0.195; //dxc[0] = 0.16; dyc[0] = 0.19; //[R.K.04/2017] unused
710  xc[1] = 0.56; yc[1] = 0.585; //dxc[1] = 0.16; dyc[1] = 0.19; //[R.K.04/2017] unused
711  xc[2] = 1.02; yc[2] = 0.975; //dxc[2] = 0.16; dyc[2] = 0.19; //[R.K.04/2017] unused
712  xc[3] = 1.35; yc[3] = 1.365; //dxc[3] = 0.16; dyc[3] = 0.19; //[R.K.04/2017] unused
713  // die center x,y
714  xcl3[0] = 0.395; ycl3[0] = 0.39; // {(xc[0]+xc[1])/2,(xc[2]+xc[3])/2}
715  xcl3[1] = 1.185; ycl3[1] = 1.17; // {(yc[0]+yc[1])/2,(yc[2]+yc[3])/2}
716  // quarter center x,y
717  xcl2 = 0.79; // (xc[1]+xc[2])/2
718  ycl2 = 0.78; // (yc[1]+yc[2])/2
719  }
720  // h12700
721  // https://www.hamamatsu.com/resources/pdf/etd/H12700_TPMH1348E.pdf
722  if (fPhDetDev==1)
723  {
724  // pixel center x,y, pixel half widths wx,wy
725  xc[0] = 0.3; yc[0] = 0.3; //dxc[0] = 0.3; dyc[0] = 0.3; //[R.K.04/2017] unused
726  xc[1] = 0.9; yc[1] = 0.9; //dxc[1] = 0.3; dyc[1] = 0.3; //[R.K.04/2017] unused
727  xc[2] = 1.5; yc[2] = 1.5; //dxc[2] = 0.3; dyc[2] = 0.3; //[R.K.04/2017] unused
728  xc[3] = 2.1125; yc[3] = 2.1125; //dxc[3] = 0.3125; dyc[3] = 0.3125; //[R.K.04/2017] unused
729  // die center x,y
730  xcl3[0] = 0.6; ycl3[0] = 0.6; // {(xc[0]+xc[1])/2,(xc[2]+xc[3])/2}
731  xcl3[1] = 1.8125; ycl3[1] = 1.8125; // {(yc[0]+yc[1])/2,(yc[2]+yc[3])/2}
732  // quarter center x,y
733  xcl2 = 1.2125; // ~(xc[1]+xc[2])/2
734  ycl2 = 1.2125; // ~(yc[1]+yc[2])/2
735  }
736  //tile level = 1
737  if (fSenseLevel==1) {
738  hx += 0;
739  hy += 0;
740  }
741  //qurter level = 2
742  if (fSenseLevel==2) {
743  hx += sx*xcl2;
744  hy += sy*ycl2;
745  }
746  //die level = 3
747  if (fSenseLevel==3) {
748  hx += sx*xcl3[ixm];
749  hy += sy*ycl3[iym];
750  }
751  //pixel level = 4
752  if (fSenseLevel==4) {
753  hx += sx*xc[ixm];
754  hy += sy*yc[iym];
755  }
756  fSensorIndexX = ix;
757  fSensorIndexY = iy;
759  return PhDetPositionGlobal(TVector3(hx,hy,0));
760 }
Int_t fSensorIndexY
Definition: PndRichGeo.h:64
UInt_t fSensorsPerDevice
Definition: PndRichGeo.h:62
UInt_t fPhDetNumX
Definition: PndRichGeo.h:73
Double_t fPhDetGapX
Definition: PndRichGeo.h:71
UInt_t fPhDetDev
Definition: PndRichGeo.h:78
TVector3 PhDetPositionGlobal(TVector3 pos)
Definition: PndRichGeo.cxx:549
Double_t
Int_t fSensorIndex
Definition: PndRichGeo.h:65
Double_t fPhDetGapY
Definition: PndRichGeo.h:72
UInt_t fSenseLevel
Definition: PndRichGeo.h:61
UInt_t fPhDetNumY
Definition: PndRichGeo.h:74
Double_t fPhDetSizeX
Definition: PndRichGeo.h:69
Double_t fPhDetSizeY
Definition: PndRichGeo.h:70
Int_t fSensorIndexX
Definition: PndRichGeo.h:63
TVector3 PndRichGeo::PixelPositionGlobal ( UInt_t  ix,
UInt_t  iy 
)

Definition at line 801 of file PndRichGeo.cxx.

References PhDetPositionGlobal(), and PixelPositionLocal().

802 {
804 }
TVector3 PhDetPositionGlobal(TVector3 pos)
Definition: PndRichGeo.cxx:549
TVector3 PixelPositionLocal(UInt_t ix, UInt_t iy)
Definition: PndRichGeo.cxx:794
TVector3 PndRichGeo::PixelPositionLocal ( UInt_t  ix,
UInt_t  iy 
)

Definition at line 794 of file PndRichGeo.cxx.

References Double_t, fdX, fdY, fiXmax, fiYmax, x, and y.

Referenced by PixelPositionGlobal().

795 {
796  Double_t x = ix*fdX-fiXmax*fdX/2+0.5*fdX;
797  Double_t y = iy*fdY-fiYmax*fdY/2+0.5*fdY;
798  return TVector3(x,y,0);
799 }
UInt_t fiYmax
Definition: PndRichGeo.h:83
UInt_t fiXmax
Definition: PndRichGeo.h:83
Double_t
Double_t x
Double_t y
Double_t fdX
Definition: PndRichGeo.h:82
Double_t fdY
Definition: PndRichGeo.h:82
TVector3 PndRichGeo::PositionDiscretization ( TVector3  pos,
bool  cell = true 
)

Definition at line 557 of file PndRichGeo.cxx.

References Double_t, dx, dy, fabs(), fPhDetDev, fPhDetGapX, fPhDetGapY, fPhDetNumX, fPhDetNumY, fPhDetSizeX, fPhDetSizeY, fSenseLevel, fSensorIndex, fSensorIndexX, fSensorIndexY, fSensorPosition, fSensorsPerDevice, PhDetPositionGlobal(), and PhDetPositionLocal().

Referenced by PndRichHitProducer::Exec(), IndexX(), and IndexY().

558 {
559  // full variant
560  TVector3 posl = PhDetPositionLocal(pos);
561  Double_t xl = posl.X();
562  Double_t yl = posl.Y();
563  // to local coordinate system of the device
565  UInt_t Ix = xl/wx + fPhDetNumX/2;
566  Double_t xlc = wx*(Ix + 0.5 - fPhDetNumX/2);
568  UInt_t Iy = yl/wy + fPhDetNumY/2;
569  Double_t ylc = wy*(Iy + 0.5 - fPhDetNumY/2);
570  xl -= xlc;
571  yl -= ylc;
572  //
573  Double_t xc[4];
574  Double_t yc[4];
575  Double_t dxc[4];
576  Double_t dyc[4];
577  Double_t xcl3[2];
578  Double_t ycl3[2];
579  Double_t xcl2;
580  Double_t ycl2;
581  Double_t dx;
582  Double_t dy;
583  bool gep;
584  // dpc3200-22
585  // http://www.digitalphotoncounting.com/wp-content/uploads/PDPC_leaflet_A4_2015_10.pdf
586  if (fPhDetDev==0)
587  {
588  // pixel center x,y, pixel half widths wx,wy
589  xc[0] = 0.23; yc[0] = 0.195; dxc[0] = 0.16; dyc[0] = 0.19;
590  xc[1] = 0.56; yc[1] = 0.585; dxc[1] = 0.16; dyc[1] = 0.19;
591  xc[2] = 1.02; yc[2] = 0.975; dxc[2] = 0.16; dyc[2] = 0.19;
592  xc[3] = 1.35; yc[3] = 1.365; dxc[3] = 0.16; dyc[3] = 0.19;
593  // die center x,y
594  xcl3[0] = 0.395; ycl3[0] = 0.39; // {(xc[0]+xc[1])/2,(xc[2]+xc[3])/2}
595  xcl3[1] = 1.185; ycl3[1] = 1.17; // {(yc[0]+yc[1])/2,(yc[2]+yc[3])/2}
596  // quarter center x,y
597  xcl2 = 0.79; // (xc[1]+xc[2])/2
598  ycl2 = 0.78; // (yc[1]+yc[2])/2
599  //
600  dx = 0.395;
601  dy = 0.39;
602  // geometrical efficiency of pixel (cell filling)
603  gep = gRandom->Uniform()<=(cell?0.74:1);
604  }
605  // h12700
606  // https://www.hamamatsu.com/resources/pdf/etd/H12700_TPMH1348E.pdf
607  if (fPhDetDev==1)
608  {
609  // pixel center x,y, pixel half widths wx,wy
610  xc[0] = 0.3; yc[0] = 0.3; dxc[0] = 0.3; dyc[0] = 0.3;
611  xc[1] = 0.9; yc[1] = 0.9; dxc[1] = 0.3; dyc[1] = 0.3;
612  xc[2] = 1.5; yc[2] = 1.5; dxc[2] = 0.3; dyc[2] = 0.3;
613  xc[3] = 2.1125; yc[3] = 2.1125; dxc[3] = 0.3125; dyc[3] = 0.3125;
614  // die center x,y
615  xcl3[0] = 0.6; ycl3[0] = 0.6; // {(xc[0]+xc[1])/2,(xc[2]+xc[3])/2}
616  xcl3[1] = 1.8125; ycl3[1] = 1.8125; // {(yc[0]+yc[1])/2,(yc[2]+yc[3])/2}
617  // quarter center x,y
618  xcl2 = 1.2125; // ~(xc[1]+xc[2])/2
619  ycl2 = 1.2125; // ~(yc[1]+yc[2])/2
620  //
621  dx = 0.6;
622  dy = 0.6;
623  // geometrical efficiency of pixel (cell filling)
624  gep = true;
625  }
626  Int_t sx = xl>0?1:-1;
627  Int_t sy = yl>0?1:-1;
628  UInt_t ix = (sx*xl)/dx;
629  UInt_t iy = (sy*yl)/dy;
630  ix = ix>3?3:ix;
631  iy = iy>3?3:iy;
632  //pixel level = 4
633  Double_t hx = sx*xc[ix];
634  Double_t hy = sy*yc[iy];
635  if ((std::fabs(xl-hx)<dxc[ix])&&
636  (std::fabs(yl-hy)<dyc[iy])&&
637  gep)
638  {
639  //tile level = 1
640  if (fSenseLevel==1) {
641  hx = 0;
642  hy = 0;
643  fSensorIndexX = Ix;
644  fSensorIndexY = Iy;
645  }
646  //qurter level = 2
647  if (fSenseLevel==2) {
648  hx = sx*xcl2;
649  hy = sy*ycl2;
650  fSensorIndexX = Ix*fSensorsPerDevice + (sx<0?0:1);
651  fSensorIndexY = Iy*fSensorsPerDevice + (sy<0?0:1);
652  }
653  //die level = 3
654  if (fSenseLevel==3) {
655  UInt_t ixx = ix/2;
656  UInt_t iyy = iy/2;
657  hx = sx*xcl3[ixx];
658  hy = sy*ycl3[iyy];
659  fSensorIndexX = Ix*fSensorsPerDevice + (sx<0?1:2) + sx*ixx;
660  fSensorIndexY = Iy*fSensorsPerDevice + (sy<0?1:2) + sy*iyy;
661  }
662  //pixel level = 4
663  if (fSenseLevel==4) {
664  fSensorIndexX = Ix*fSensorsPerDevice + (sx<0?3:4) + sx*ix;
665  fSensorIndexY = Iy*fSensorsPerDevice + (sy<0?3:4) + sy*iy;
666  }
668  fSensorPosition = PhDetPositionGlobal(TVector3(hx+xlc,hy+ylc,posl.Z()));
669  return fSensorPosition; // photon hits a phdet
670  }
671  else
672  {
673  fSensorIndexX = -1;
674  fSensorIndexY = -1;
675  fSensorIndex = -1;
676  fSensorPosition = TVector3(0,0,0);
677  return fSensorPosition; // photon conversion out of sensitive region
678  }
679 }
Int_t fSensorIndexY
Definition: PndRichGeo.h:64
UInt_t fSensorsPerDevice
Definition: PndRichGeo.h:62
TVector3 pos
UInt_t fPhDetNumX
Definition: PndRichGeo.h:73
double dy
TVector3 PhDetPositionLocal(TVector3 pos)
Definition: PndRichGeo.cxx:536
Double_t fPhDetGapX
Definition: PndRichGeo.h:71
UInt_t fPhDetDev
Definition: PndRichGeo.h:78
TVector3 PhDetPositionGlobal(TVector3 pos)
Definition: PndRichGeo.cxx:549
Double_t
Int_t fSensorIndex
Definition: PndRichGeo.h:65
Double_t fPhDetGapY
Definition: PndRichGeo.h:72
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
double dx
UInt_t fSenseLevel
Definition: PndRichGeo.h:61
UInt_t fPhDetNumY
Definition: PndRichGeo.h:74
Double_t fPhDetSizeX
Definition: PndRichGeo.h:69
TVector3 fSensorPosition
Definition: PndRichGeo.h:66
Double_t fPhDetSizeY
Definition: PndRichGeo.h:70
Int_t fSensorIndexX
Definition: PndRichGeo.h:63
TVector3 PndRichGeo::richOffset ( )
inline

Definition at line 117 of file PndRichGeo.h.

References fRichOffset.

Referenced by createRootGeometry_RICH(), PndRichReco::Init(), init(), and PndRich::Initialize().

117 {return fRichOffset;}
TVector3 fRichOffset
Rich system offset [cm].
Definition: PndRichGeo.h:12
UInt_t PndRichGeo::sensorIndex ( )
inline

Definition at line 186 of file PndRichGeo.h.

References fSensorIndex.

Referenced by PndRichHitProducer::Exec().

186 {return fSensorIndex;}
Int_t fSensorIndex
Definition: PndRichGeo.h:65
UInt_t PndRichGeo::sensorsPerDevice ( )
inline

Definition at line 216 of file PndRichGeo.h.

References fSensorsPerDevice.

Referenced by PndRichHitProducer::Exec().

216 {return fSensorsPerDevice;}
UInt_t fSensorsPerDevice
Definition: PndRichGeo.h:62

Member Data Documentation

char PndRichGeo::eleName[20]
protected

Definition at line 87 of file PndRichGeo.h.

Referenced by getEleName().

double PndRichGeo::fAerogelEntrancePositionZ
private

Circle mirror parameters

Definition at line 41 of file PndRichGeo.h.

Referenced by aerogelEntrancePositionZ(), and init().

std::vector<Double_t> PndRichGeo::fAerogelLayers
private

No idea (SS)

Definition at line 19 of file PndRichGeo.h.

Referenced by aerogelLayers(), and init().

TVector3 PndRichGeo::fAerogelOffset
private

Aerogel offset [cm].

Definition at line 17 of file PndRichGeo.h.

Referenced by aerogelOffset().

TVector3 PndRichGeo::fAerogelSize
private

Aerogel size [cm].

Definition at line 16 of file PndRichGeo.h.

Referenced by aerogelSize().

TVector3 PndRichGeo::fAlBoxSize
private

Aluminium Box size [cm].

Definition at line 13 of file PndRichGeo.h.

Referenced by alBoxSize().

double PndRichGeo::fAlBoxWallThickness
private

Definition at line 14 of file PndRichGeo.h.

Referenced by alBoxWallThickness().

double PndRichGeo::fAngleExtansionInner
private

Angle extansion for cherenkov light for inner part of the mirror [in unit of maximal cherenrov angle]

Definition at line 21 of file PndRichGeo.h.

Referenced by angleExtansionInner().

double PndRichGeo::fAngleExtansionOuter
private

Angle extansion for cherenkov light for outer part of the mirror [in unit of maximal cherenrov angle]

Definition at line 24 of file PndRichGeo.h.

Referenced by angleExtansionOuter().

double PndRichGeo::fAngleOfMirrorPosition
private

Angle of the mirror chord [degree].

Definition at line 28 of file PndRichGeo.h.

Referenced by angleOfMirrorPosition().

double PndRichGeo::fBeamPipeHoleX
private

X size of the beam pipe hole [cm].

Definition at line 35 of file PndRichGeo.h.

Referenced by beamPipeHoleX().

double PndRichGeo::fBeamPipeHoleY
private

Y size of the beam pipe hole [cm].

Definition at line 36 of file PndRichGeo.h.

Referenced by beamPipeHoleY().

Double_t PndRichGeo::fdX
private

Definition at line 82 of file PndRichGeo.h.

Referenced by init(), LocalPositionDiscretization(), and PixelPositionLocal().

Double_t PndRichGeo::fdY
private

Definition at line 82 of file PndRichGeo.h.

Referenced by init(), LocalPositionDiscretization(), and PixelPositionLocal().

Double_t PndRichGeo::fdZ
private

Definition at line 82 of file PndRichGeo.h.

Referenced by init(), and LocalPositionDiscretization().

std::vector<Double_t> PndRichGeo::fFlatMirrorY
private

No idea (SS)

Definition at line 50 of file PndRichGeo.h.

Referenced by flatMirrorY(), and init().

std::vector<Double_t> PndRichGeo::fFlatMirrorYGlob
private

No idea (SS)

Definition at line 52 of file PndRichGeo.h.

Referenced by flatMirrorYGlob(), and init().

std::vector<Double_t> PndRichGeo::fFlatMirrorZ
private

No idea (SS)

Flat mirrors parameters

Definition at line 49 of file PndRichGeo.h.

Referenced by flatMirrorZ(), and init().

std::vector<Double_t> PndRichGeo::fFlatMirrorZGlob
private

No idea (SS)

Definition at line 51 of file PndRichGeo.h.

Referenced by flatMirrorZGlob(), and init().

UInt_t PndRichGeo::fiXmax
private

Definition at line 83 of file PndRichGeo.h.

Referenced by init(), and PixelPositionLocal().

UInt_t PndRichGeo::fiYmax
private

Definition at line 83 of file PndRichGeo.h.

Referenced by init(), and PixelPositionLocal().

TVector3 PndRichGeo::fMirrorAxis
private

Definition at line 45 of file PndRichGeo.h.

Referenced by init(), and mirrorAxis().

TVector3 PndRichGeo::fMirrorAxisGlob
private

Definition at line 46 of file PndRichGeo.h.

Referenced by init(), and mirrorAxisGlob().

double PndRichGeo::fMirrorCurvature
private

Mirror curvature [degree].

Definition at line 27 of file PndRichGeo.h.

Referenced by mirrorCurvature().

double PndRichGeo::fMirrorLength
private

Mirror length [cm].

Definition at line 30 of file PndRichGeo.h.

Referenced by init(), and mirrorLength().

double PndRichGeo::fMirrorRadius
private

Definition at line 44 of file PndRichGeo.h.

Referenced by init(), and mirrorRadius().

double PndRichGeo::fMirrorThetaMax
private

Definition at line 43 of file PndRichGeo.h.

Referenced by init(), and mirrorThetaMax().

double PndRichGeo::fMirrorThetaMin
private

Definition at line 42 of file PndRichGeo.h.

Referenced by init(), and mirrorThetaMin().

double PndRichGeo::fMirrorThickness
private

Mirror thickness [cm].

Definition at line 29 of file PndRichGeo.h.

Referenced by mirrorThickness().

size_t PndRichGeo::fMirrorType
private

Definition at line 38 of file PndRichGeo.h.

std::vector<Double_t> PndRichGeo::fnOpt
private

refraction index of the aerogel

Definition at line 18 of file PndRichGeo.h.

Referenced by init(), and nOpt().

std::vector<Double_t> PndRichGeo::fPDE
private

Definition at line 58 of file PndRichGeo.h.

Double_t PndRichGeo::fPhDetAngle
private

Definition at line 79 of file PndRichGeo.h.

Referenced by init(), and phDetAngle().

UInt_t PndRichGeo::fPhDetDev
private

Definition at line 78 of file PndRichGeo.h.

Referenced by PixelPosition(), and PositionDiscretization().

TGraph* PndRichGeo::fPhDetEff
private

Definition at line 59 of file PndRichGeo.h.

Referenced by phDetQEff().

Double_t PndRichGeo::fPhDetGapX
private

Definition at line 71 of file PndRichGeo.h.

Referenced by init(), phDetGapX(), PixelPosition(), and PositionDiscretization().

Double_t PndRichGeo::fPhDetGapY
private

Definition at line 72 of file PndRichGeo.h.

Referenced by init(), phDetGapY(), PixelPosition(), and PositionDiscretization().

double PndRichGeo::fPhDetLength
private

Length of the photodetector plate [cm].

Definition at line 32 of file PndRichGeo.h.

Referenced by phDetLength().

UInt_t PndRichGeo::fPhDetNumX
private

Definition at line 73 of file PndRichGeo.h.

Referenced by init(), phDetNumX(), PixelPosition(), and PositionDiscretization().

UInt_t PndRichGeo::fPhDetNumY
private

Definition at line 74 of file PndRichGeo.h.

Referenced by init(), phDetNumY(), PixelPosition(), and PositionDiscretization().

TVector3 PndRichGeo::fPhDetNxD
private

Definition at line 81 of file PndRichGeo.h.

Referenced by init(), PhDetPositionGlobal(), and PhDetPositionLocal().

TVector3 PndRichGeo::fPhDetNxU
private

Definition at line 80 of file PndRichGeo.h.

Referenced by init(), PhDetPositionGlobal(), and PhDetPositionLocal().

TVector3 PndRichGeo::fPhDetNyD
private

Definition at line 81 of file PndRichGeo.h.

Referenced by init(), PhDetPositionGlobal(), and PhDetPositionLocal().

TVector3 PndRichGeo::fPhDetNyU
private

Definition at line 80 of file PndRichGeo.h.

Referenced by init(), PhDetPositionGlobal(), and PhDetPositionLocal().

TVector3 PndRichGeo::fPhDetNzD
private

Definition at line 81 of file PndRichGeo.h.

Referenced by init(), PhDetPositionGlobal(), and PhDetPositionLocal().

TVector3 PndRichGeo::fPhDetNzU
private

Definition at line 80 of file PndRichGeo.h.

Referenced by init(), PhDetPositionGlobal(), and PhDetPositionLocal().

TVector3 PndRichGeo::fPhDetP0D
private

Definition at line 81 of file PndRichGeo.h.

Referenced by init(), PhDetPositionGlobal(), and PhDetPositionLocal().

TVector3 PndRichGeo::fPhDetP0U
private

Definition at line 80 of file PndRichGeo.h.

Referenced by init(), PhDetPositionGlobal(), and PhDetPositionLocal().

UInt_t PndRichGeo::fPhDetPixelNumX
private

Definition at line 75 of file PndRichGeo.h.

Referenced by init(), and phDetNPixelMaxX().

UInt_t PndRichGeo::fPhDetPixelNumY
private

Definition at line 76 of file PndRichGeo.h.

Referenced by init(), and phDetNPixelMaxY().

Double_t PndRichGeo::fPhDetSizeX
private

PhDet parameters

Definition at line 69 of file PndRichGeo.h.

Referenced by init(), phDetSizeX(), PixelPosition(), and PositionDiscretization().

Double_t PndRichGeo::fPhDetSizeY
private

Definition at line 70 of file PndRichGeo.h.

Referenced by init(), phDetSizeY(), PixelPosition(), and PositionDiscretization().

double PndRichGeo::fPhDetThickness
private

Thickness or the photodetector plate [cm].

Definition at line 33 of file PndRichGeo.h.

Referenced by phDetThickness().

std::vector<Double_t> PndRichGeo::fPhDetY
private

No idea (SS)

Definition at line 56 of file PndRichGeo.h.

Referenced by init(), and phDetY().

std::vector<Double_t> PndRichGeo::fPhDetZ
private

No idea (SS)

PhotoDet parameters

Definition at line 55 of file PndRichGeo.h.

Referenced by init(), and phDetZ().

TVector3 PndRichGeo::fRichOffset
private

Rich system offset [cm].

Definition at line 12 of file PndRichGeo.h.

Referenced by richOffset().

UInt_t PndRichGeo::fSenseLevel
private

Definition at line 61 of file PndRichGeo.h.

Referenced by PixelPosition(), and PositionDiscretization().

Int_t PndRichGeo::fSensorIndex
private

Definition at line 65 of file PndRichGeo.h.

Referenced by PixelPosition(), PositionDiscretization(), and sensorIndex().

Int_t PndRichGeo::fSensorIndexX
private

Definition at line 63 of file PndRichGeo.h.

Referenced by IndexX(), PixelPosition(), and PositionDiscretization().

Int_t PndRichGeo::fSensorIndexY
private

Definition at line 64 of file PndRichGeo.h.

Referenced by IndexY(), PixelPosition(), and PositionDiscretization().

TVector3 PndRichGeo::fSensorPosition
private

Definition at line 66 of file PndRichGeo.h.

Referenced by IndexX(), IndexY(), and PositionDiscretization().

UInt_t PndRichGeo::fSensorsPerDevice
private

Definition at line 62 of file PndRichGeo.h.

Referenced by init(), PixelPosition(), PositionDiscretization(), and sensorsPerDevice().

std::vector<Double_t> PndRichGeo::fWlPhoton
private

Definition at line 57 of file PndRichGeo.h.

Referenced by phDetQEff().

char PndRichGeo::modName[20]
protected

Definition at line 86 of file PndRichGeo.h.

Referenced by getModuleName().


The documentation for this class was generated from the following files: