80 fReflectorOpticalSurface(0),
83 fIsReflectorConstructed(
false)
114 G4Box * World_box =
new G4Box(
"World",World_x,World_y,World_z);
133 G4cout <<
"\n \n \n \n \n \n \n \n \n \n \n \n \n " <<
G4endl ;
135 G4cout <<
"######################################################" <<
G4endl ;
147 G4cout <<
"######################################################" <<
G4endl ;
194 density = 1.29e-03*
g/
cm3;
204 new G4Material(name=
"Aluminum", z=13., a, density);
210 density = 2.64*
g/
cm3;
218 density = 1.19*
g/
cm3;
229 const G4int NUMENTRIES = 2;
236 G4double RINDEX_AIR[NUMENTRIES] = {1.00, 1.00} ;
239 for(
G4int j=0 ; j<NUMENTRIES ; j++){
240 RINDEX_AIR[j] = RINDEX_AIR[j] + 2.73*std::pow(10.0,-4) ;
244 MPT_Air->
AddProperty(
"RINDEX", X_RINDEX, RINDEX_AIR, NUMENTRIES);
255 const G4int N_RINDEX_QUARTZ = 2 ;
257 G4double RINDEX_QUARTZ[N_RINDEX_QUARTZ] = {1.54, 1.54};
260 MPT_PMT->
AddProperty(
"RINDEX", X_RINDEX_QUARTZ, RINDEX_QUARTZ, N_RINDEX_QUARTZ);
271 const G4int NENTRIES = 11 ;
280 G4double bParam[4] = {1760.7010,-1.3687,2.4388e-3,-1.5178e-6} ;
282 for(
G4int i=0;i<NENTRIES; i++){
285 RINDEX_ACRYLIC[i] = 0.0 ;
287 for (
G4int jj=0 ; jj<4 ; jj++)
289 RINDEX_ACRYLIC[i] += (bParam[jj]/1000.0)*std::pow(LAMBDA_ACRYLIC[i]/
nm,jj) ;
298 MPT_Acrylic->
AddProperty(
"RINDEX", ENERGY_ACRYLIC, RINDEX_ACRYLIC, NENTRIES);
302 const G4int NENT = 25 ;
306 246.528671, 260.605103, 263.853516, 266.019104, 268.726105,
307 271.433136, 273.598724, 276.305725, 279.554138, 300.127380,
308 320.159241, 340.191101, 360.764343, 381.337585, 399.745239,
309 421.401276, 440.891724, 460.382172, 480.414001, 500.987274,
310 520.477722, 540.509583, 559.458618,
317 0.0000000, 5.295952, 9.657321, 19.937695, 29.283491,
318 39.252335, 48.598133, 58.255451, 65.109039, 79.439247,
319 85.669785, 89.719627, 91.277260, 91.588783, 91.900307,
320 91.588783, 91.277260, 91.277260, 91.588783, 91.588783,
321 91.900307, 91.900307, 91.588783,
327 for(
G4int i=0;i<NENT; i++){
335 abslength = -3.0*
mm/(
G4Log(ABS[i]/100.0)) ;
338 MPT_Acrylic->
AddEntry(
"ABSLENGTH", energy, abslength);
386 G4double ICEREFLECTIVITY[NUM] = { 0.95, 0.95 };
389 AirMirrorMPT->
AddProperty(
"REFLECTIVITY", XX, ICEREFLECTIVITY,NUM);
394 #ifdef G4MULTITHREADED
410 G4cout <<
"Using ground reflecting surface " <<
G4endl ;
415 G4cout <<
"Using mirror reflecting surface " <<
G4endl ;
444 G4double UVscopeInnerRadius = UVscopeDiameter/2.0-UVscopeThickness ;
445 G4double UVscopeOuterRadius = UVscopeDiameter/2.0 ;
453 new G4Tubs(
"UVscopeSolid",UVscopeInnerRadius,UVscopeOuterRadius,UVscopeHeight/2.0,0.0,
twopi) ;
464 G4Tubs *solidUVscopeBack =
465 new G4Tubs(
"UVscopeBackSolid",0.0,UVscopeOuterRadius,UVscopeThickness/2.0,0.0,
twopi) ;
471 UVscopeBackPosition = UVscopePosition+
G4ThreeVector(0.0*
mm,0.0*
mm,-(UVscopeHeight/2.0+UVscopeThickness/2.0)) ;
480 G4cout <<
"# Building the Fresnel lens ... #" <<
G4endl ;
484 G4int LensNumOfGrooves = 13 ;
491 G4ThreeVector LensPosition = UVscopePosition+
G4ThreeVector(0.0*
mm,0.0*
mm,UVscopeHeight/2.0-UVscopeBaffle) ;
501 G4Tubs *solidLensFrame =
new G4Tubs(
"LensFrame",LensDiameter/2.0,UVscopeInnerRadius,LensBorderThickness/2.0,0.0,
twopi) ;
504 G4ThreeVector LensFramePosition ;
514 G4cout <<
"# Building the photomultiplier ... #" <<
G4endl ;
526 solidPMT =
new G4Sphere(
"PMT_solid",PMT_curv-PMT_thick,PMT_curv,0.0,
twopi,StartTheta,EndTheta);
534 G4ThreeVector PMTpos = LensPosition +
G4ThreeVector(0.0*
cm,0.0*
cm,-(LensFocalLength+PMT_curv)) ;
550 G4cout <<
"# Defining interface's optical properties ... #" <<
G4endl ;
561 G4double BLACKPAINTREFLECTIVITY[NUM] = { 0.05, 0.05 };
565 AirPaintMPT->
AddProperty(
"REFLECTIVITY", XX, BLACKPAINTREFLECTIVITY,NUM);
606 #ifdef G4MULTITHREADED