source: trunk/examples/advanced/Rich/include/RichTbMaterialParameters.hh @ 1319

Last change on this file since 1319 was 807, checked in by garnier, 16 years ago

update

File size: 13.2 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// Rich advanced example for Geant4
27// RichTbMaterialParameters.hh for Rich of LHCb
28// History:
29// Created: Sajan Easo (Sajan.Easo@cern.ch)
30// Revision and changes: Patricia Mendez (Patricia.Mendez@cern.ch)
31/////////////////////////////////////////////////////////////////////////////
32#ifndef RichTbMaterialParameters_h
33#define RichTbMaterialParameters_h 1
34
35#include "globals.hh"
36#include "RichTbGeometryParameters.hh"
37#include "RichTbAnalysisManager.hh"
38#include "RichTbRunConfig.hh"
39#include "AerogelTypeSpec.hh"
40
41extern void InitializeRichTbMaterial();
42extern void HistoRichTbMaterialProperties(RichTbRunConfig* RConfig);
43
44
45extern std::vector<G4double> InitializeHpdQE(G4int);
46extern std::vector<G4double> InitializeHpdWaveL(G4int);
47extern std::vector<G4double> InitN2RefIndex(G4double, G4double);
48extern std::vector<G4double> InitN2RefPhotW();
49extern std::vector<G4double> InitAgelPhotW();
50extern std::vector<G4double> InitializePhotonMomentumVector();
51extern std::vector<G4int> getDeadPixelList(G4int ihpdNum , G4int IsectNum);
52extern std::vector<G4double>GetAerogelRScatLength(AerogelType);
53extern G4double GetCurrentBulkTrans(G4double currentMatRefIndex,
54                                       G4double currentNeighbourRefIndex, 
55                                       G4double MaxTotMeasuredTransmission);
56
57// extern void GetGlassD263FilterTrans();
58//
59// the following value should be calculated in terms of the
60// fundamental constants in the future. It is the conversion
61// factor between the wavelength of a photon in nanometers
62// and its energy in eV.
63static const G4double PhotMomWaveConv=1243.125;
64
65// Limits of Photon Energy  and number of bins for the
66// Photon energy range.
67//   static const G4double PhotonMinEnergy=1.5*eV;
68static const G4double PhotonMinEnergy=1.3*eV;
69static const G4double PhotonMaxEnergy=7.3*eV;
70   static const G4int NumPhotWaveLengthBins = 1000;
71   static const G4int NumPhotonRichMirrorReflWaveLengthBins=63;
72   static const G4int NumAerogelRefIndexPhotonEnergyBins=37;
73//   static const G4int NumFilterGlassD263WaveLengthBins=10;
74// Defintion of STP pressure and temp
75
76//static const G4double Pressure_STP=1.013*bar;
77//static const G4double Temperature_STP=273.*kelvin
78static const G4double  GasPressure_STP=STP_Pressure;
79static const G4double GasTemperature_STP=STP_Temperature;
80// Ref Index of nitrogen using sellmeir parametrization
81static const G4double SellN2E1=13.414;
82static const G4double SellN2E2=23.215;
83static const G4double SellN2F1=921.28;
84static const G4double SellN2F2=3569.60;
85static const G4double GasMolWeightN2=28.02;      //unit is grams
86static const G4double GasRhoN2atSTP=0.00125053;  //unit is gramPercm3
87//
88//
89//Mirror reflectivity
90// In the following, the bins at 100 nm, and 1000nm are
91// defined just for convenience of interpolation.
92// They are not measured points.
93static const G4double PhotonWavelengthRefl[]=
94{100.0, 200.0, 210.0, 220.0, 230.0, 240.0, 250.0, 260.0, 270.0, 280.0,
95 290.0, 300.0, 310.0, 320.0, 330.0, 340.0, 350.0, 360.0, 370.0, 380.0,
96 390.0, 400.0, 410.0, 420.0, 430.0, 440.0, 450.0, 460.0, 470.0, 480.0,
97 490.0, 500.0, 510.0, 520.0, 530.0, 540.0, 550.0, 560.0, 570.0, 580.0,
98 590.0, 600.0, 610.0, 620.0, 630.0, 640.0, 650.0, 660.0, 670.0, 680.0,
99 690.0, 700.0, 710.0, 720.0, 730.0, 740.0, 750.0, 760.0, 770.0, 780.0,
100 790.0, 800.0, 1000.0 };
101
102static const G4double RichTbMirrorReflectivity[]=
103 {0.0, 0.9106, 0.9232, 0.9285, 0.9314, 0.9323, 0.9312, 0.9287, 0.9264,
104 0.9234, 0.9195, 0.9156, 0.9109, 0.9066, 0.9022, 0.8981, 0.8925, 0.8883,
105 0.8836, 0.8796, 0.8756, 0.8727, 0.8697, 0.8672, 0.8653, 0.8636, 0.8624,
106 0.8612, 0.8608, 0.8601, 0.8601, 0.8601, 0.8600, 0.8603, 0.8603, 0.8604,
107 0.8605, 0.8608, 0.8609, 0.8608, 0.8608, 0.8606, 0.8604, 0.8600, 0.8598,
108 0.8591, 0.8581, 0.8573, 0.8563, 0.8549, 0.8535, 0.8517, 0.8497, 0.8475,
109 0.8447, 0.8417, 0.8382, 0.8388, 0.8296, 0.8258, 0.8204, 0.8172, 0.8172 };
110
111static const G4double RichTbMirrorEfficiency[]=
112  {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
113   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
114   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
115   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
116   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
117   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
118   0.0, 0.0, 0.0 };
119
120// Transmission in quartz
121
122static const  G4int NumPhotonRichTbGasQuartzWSurfaceWaveLengthBins=10;
123static const  G4double RichGasQuartzWSurfacePhotMom[]=
124   {1.0*eV,2.0*eV, 3.0*eV,4.0*eV,5.0*eV,6.0*eV,7.0*eV,8.0*eV,
125    9.0*eV,10.0*eV};
126static const  G4double RichTbGasQuartzWSurfaceReflectivity[]=
127    {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
128static const  G4double RichTbGasQuartzWSurfaceEfficiency[]=
129    {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
130
131// Transmission in the filters
132static const  G4int NumPhotonRichTbFilterSurfaceWaveLengthBins=10;
133static const  G4double RichTbFilterSurfacePhotMom[]=
134   {1.0*eV,2.0*eV, 3.0*eV,4.0*eV,5.0*eV,6.0*eV,7.0*eV,8.0*eV,
135    9.0*eV,10.0*eV};
136static const  G4double RichTbFilterSurfaceReflectivity[]=
137    {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
138static const  G4double RichTbFilterSurfaceEfficiency[]=
139    {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
140// In the G4Example only 1 type of filter is used.
141// In the LHCb implementation several types of filters
142// were used. The program was originally setup for upto
143// 6 types of filters.
144// Now for the Glass D263 filter
145static const G4int NumPhotBinGlassD263Trans=601; 
146// static const G4double RefIndexGlassD263=1.50;
147// artifically low value for the ref index of filter used for the
148// G4example. If one uses the original value of 1.5, the cherenkov
149// photons created in the filter by the 9 GeV/c pions will have cherenkov
150// angle larger than the critical angle and hence would cause
151// an (almost) infinite loop of total internal reflections. These
152// photons eventually die from photon absorption,
153// but they use a lot of cpu time.
154// In the lhcb implementation the G4OpboundaryProcess is modified to
155// to take care of this. But for the G4example this complication is
156// avoided by using an artificially low value for the ref idex of the filter.
157// SE.  15-11-2002.
158static const G4double RefIndexGlassD263=1.30;
159// for initlializing the arrays for the filter tramsmission
160// the following value is used. The arrays are later resized
161// to the appropiate value.
162static const G4int NumFilterTransBins= NumPhotBinGlassD263Trans;
163//
164//Now for the different type of Aerogel Tiles
165//In the G4example the same Aerogel type is simply repeated 5 times.
166//In the LHCb implementation 5 different types are used.
167static const G4double AerogelTypeAClarity
168 =0.00719*micrometer*micrometer*micrometer*micrometer/cm;
169static const G4double AerogelTypeATotTrans=0.9368;
170static const G4double AerogelTypeANominalRefIndex=1.03066;
171
172static const G4double AerogelTypeBClarity= AerogelTypeAClarity;
173static const G4double AerogelTypeBTotTrans=AerogelTypeATotTrans;
174static const G4double AerogelTypeBNominalRefIndex=AerogelTypeANominalRefIndex;
175//
176static const G4double AerogelTypeCClarity=AerogelTypeAClarity;
177static const G4double AerogelTypeCTotTrans=AerogelTypeATotTrans;
178static const G4double AerogelTypeCNominalRefIndex=AerogelTypeANominalRefIndex;
179static const G4double AerogelTypeDClarity=AerogelTypeAClarity;
180static const G4double AerogelTypeDTotTrans=AerogelTypeATotTrans;
181static const G4double AerogelTypeDNominalRefIndex=AerogelTypeANominalRefIndex;
182static const G4double AerogelTypeEClarity=AerogelTypeAClarity;
183static const G4double AerogelTypeETotTrans=AerogelTypeATotTrans;
184static const G4double AerogelTypeENominalRefIndex=AerogelTypeANominalRefIndex;
185static const G4double AerogelReferenceRefIndWavelength[]=
186{400.0*nanometer,400.0*nanometer,400.0*nanometer,400.0*nanometer,
187 400.0*nanometer};
188static const G4double StdAerogelNominalRefIndex=1.034;
189// for test try tdr aerogel
190//static const G4double StdAerogelNominalRefIndex=1.03123653;
191// static const char* StdAerogelRefIndFile =
192// "/afs/cern.ch/user/s/seaso/mycmt/RichTb/v5/inputData/aerogelRefIndex.txt";
193// The following is the nominal ref index at STP for nitrogen.
194// the aerogel is kept inside the nitrogen;
195static const G4double NitrogenNominalRefIndex=1.000298;
196//
197// Quantum efficiency of the photocathodes
198// the following line already in geometryparameters.hh
199//static const G4int NumberOfHpds=4;
200
201static const G4int NumHpdTot= NumberOfHpds;
202static const G4int NumQEbins=41;
203// for now all HPDs have the same wavelength bins.
204// for the G4Example the QE is multiplied by 1.08 to account for
205// the fresnel losses at the HPD Input Quartz window.
206// In the G4 example, the correction to
207// account for the QE reduction in the periphery of the HPD
208// is not done, for simplicity.
209// In the LHCb implementation this taken care of more accurately.
210static const G4double HpdQEReductionFactor=1.08;
211static const G4double HpdQEWaveL[]=
212{200.0,210.0,220.0,230.0,240.0,250.0,260.0,270.0,280.0,290.0,300.0,
213 310.0,320.0,330.0,340.0,350.0,360.0,370.0,380.0,390.0,400.0,410.0,
214 420.0,430.0,440.0,450.0,460.0,470.0,480.0,490.0,500.0,510.0,520.0,
215 530.0,540.0,550.0,560.0,570.0,580.0,590.0,600.0};
216static const G4double Hpd0QEPerCent[]=
217{0.0,0.0,2.4264,9.0559,14.5723,18.9039,24.2476,27.9504,29.0910,
218 31.5069,28.2676,26.8652,26.0060,25.2934,24.5034,23.4996,22.6084,
219 21.0618,19.6225,18.2942,16.4564,14.3433,12.5074,10.6036,8.7953,
220 7.2646,6.1266,5.0693,3.9949,3.0248,2.2300,1.5261,0.8610,0.4803,
221 0.2870,0.1320,0.0500,0.0135,0.0,0.0,0.0};
222static const G4double Hpd1QEPerCent[]= 
223{0.0,1.0810,3.1196,6.4212,10.4983,14.3031,17.9612,20.6541,22.1570,
224 25.5633,25.3696,25.2293,25.1988,24.9773,24.8055,24.4088,24.1165,
225 23.3368,22.4608,21.8726,20.4717,18.9725,17.5489,15.8493,14.1541,
226 12.5689,11.1047,9.7609,8.4922,7.3264,6.2243,5.0602,3.5248,2.3012,
227 1.5403,1.0813,0.6823,0.4553,0.2524,0.1227,0.0583};
228static const G4double Hpd2QEPerCent[]=
229{0.0,0.0,1.3648,4.1624,6.8814,9.5704,12.5728,15.4286,16.7373,19.9520,
230 20.0918,20.3359,20.6562,20.7517,20.6236,20.1992,19.8387,18.6558,17.5653,
231 16.6784,15.2398,13.6456,12.1764,10.5722,9.0127,7.6529,6.4820,5.4517,
232 4.4408,3.5450,2.7400,1.9825,1.3073,0.7549,0.4712,0.3031,0.1675,
233 0.0803,0.0391,0.0169,0.0094};
234static const G4double Hpd3QEPerCent[]=
235{0.0,11.3501,12.1319,13.2398,16.2100,18.7656,21.7482,24.3610,25.0792,
236 28.6009,28.2349,28.4114,28.5484,28.6614,28.8812,28.7106,28.1548,28.0591,
237 25.5305,21.8913,19.6042,18.3709,17.3953,17.1329,16.2153,14.8937,14.6245,
238 13.0102,13.8088,13.2000,12.0881,10.7617,8.1836,5.9729,4.6335,3.6822,
239 2.9047,2.2591,1.7516,1.2502,0.8219};
240// only the linear term is used for now
241// static const G4double HpdDemagConst[]={ }
242static const G4double HpdDemagLinearTerm[]=
243{2.46433268,2.28343310,2.29306727,2.37845184};
244// In the G4example the quadratic term is neglected and hence set to zero.
245static const G4double HpdDemagQuadraticTerm[]=
246{0.0,0.0,0.0,0.0};
247static const G4double HpdDemagErrorPercent=0.0;
248// in the G4example  a PSF factor is used, just an example.
249static const G4double PadHpdPSFsigma=100.0*micrometer;
250//quartz Transmission for 10 mm thickness.
251static const G4double QuTransDataThickness =10.0*mm;
252static const G4int NumPhotbinQuartzTrans=6;
253static const G4double QuartzTransWL[]=
254{180.0 ,185.0, 190.0, 200.0, 220.0,1000.0};
255static const G4double QuartzTransmis[]=
256{0.80, 0.90, 0.95 ,0.98 , 1.0,1.0};
257static const G4double PhCathodeNominalTransmission=0.52;
258
259//The dead Pixel List is set to zero for the G4Example.
260//Hence all pixels are set to be active.
261// The following is just a maximum number of deadpixels for array sizes.
262static const G4int MaxNumDeadPixelPerHpdSect=50;
263
264// Now for the back scattering
265static const     G4double backscaprob=0.18;
266// Now for the approximate and adhoc way of evaluating the effect of
267// backscattering.
268static const G4double NsigmaInPedCut=4.0;
269static const G4double SignalToNoiseInData=10.0;
270
271#endif
272
273
274
275
276
277
278
279
280
281
282
Note: See TracBrowser for help on using the repository browser.