96 ConstructTableMaterials();
107 G4Box * World_box =
new G4Box(
"World",World_x,World_y,World_z);
127 G4cout <<
"\n \n \n \n \n \n \n \n \n \n \n \n \n " <<
G4endl ;
129 G4cout <<
"######################################################" <<
G4endl ;
136 ConstructUVscope(World_phys);
141 G4cout <<
"######################################################" <<
G4endl ;
144 #ifdef ULTRA_MIRROR_USE
146 G4cout <<
"Using mirror reflecting surface " <<
G4endl ;
149 Mirror = ConstructMirror(World_phys);
151 #elif ULTRA_GROUND_USE
153 G4cout <<
"Using ground reflecting surface " <<
G4endl ;
156 Ground = ConstructGround(World_phys);
169 void UltraDetectorConstruction::ConstructTableMaterials()
198 density = 1.29e-03*
g/
cm3;
208 new G4Material(name=
"Aluminum", z=13., a, density);
214 density = 2.64*
g/
cm3;
222 density = 1.19*
g/
cm3;
233 const G4int NUMENTRIES = 2;
240 G4double RINDEX_AIR[NUMENTRIES] = {1.00, 1.00} ;
243 for(
G4int j=0 ; j<NUMENTRIES ; j++){
244 RINDEX_AIR[j] = RINDEX_AIR[j] + 2.73*std::pow(10.0,-4) ;
248 MPT_Air->
AddProperty(
"RINDEX", X_RINDEX, RINDEX_AIR, NUMENTRIES);
259 const G4int N_RINDEX_QUARTZ = 2 ;
261 G4double RINDEX_QUARTZ[N_RINDEX_QUARTZ] = {1.54, 1.54};
264 MPT_PMT->
AddProperty(
"RINDEX", X_RINDEX_QUARTZ, RINDEX_QUARTZ, N_RINDEX_QUARTZ);
275 const G4int NENTRIES = 11 ;
284 G4double bParam[4] = {1760.7010,-1.3687,2.4388e-3,-1.5178e-6} ;
286 for(
G4int i=0;i<NENTRIES; i++){
288 LAMBDA_ACRYLIC[i] = lambda_min + i*(lambda_max-lambda_min)/
float(NENTRIES-1) ;
289 RINDEX_ACRYLIC[i] = 0.0 ;
291 for (
G4int jj=0 ; jj<4 ; jj++)
293 RINDEX_ACRYLIC[i] += (bParam[jj]/1000.0)*std::pow(LAMBDA_ACRYLIC[i]/nm,jj) ;
302 MPT_Acrylic->
AddProperty(
"RINDEX", ENERGY_ACRYLIC, RINDEX_ACRYLIC, NENTRIES);
306 const G4int NENT = 25 ;
310 246.528671, 260.605103, 263.853516, 266.019104, 268.726105,
311 271.433136, 273.598724, 276.305725, 279.554138, 300.127380,
312 320.159241, 340.191101, 360.764343, 381.337585, 399.745239,
313 421.401276, 440.891724, 460.382172, 480.414001, 500.987274,
314 520.477722, 540.509583, 559.458618,
321 0.0000000, 5.295952, 9.657321, 19.937695, 29.283491,
322 39.252335, 48.598133, 58.255451, 65.109039, 79.439247,
323 85.669785, 89.719627, 91.277260, 91.588783, 91.900307,
324 91.588783, 91.277260, 91.277260, 91.588783, 91.588783,
325 91.900307, 91.900307, 91.588783,
331 for(
G4int i=0;i<NENT; i++){
336 abslength = 1.0/kInfinity ;
339 abslength = -3.0*
mm/(std::log(ABS[i]/100.0)) ;
342 MPT_Acrylic->
AddEntry(
"ABSLENGTH", energy, abslength);
362 G4Box * boxMirror =
new G4Box(
"Mirror",Mirror_x,Mirror_y,Mirror_z);
379 physMirror =
new G4PVPlacement(Surfrot,SurfacePosition,
"MirrorPV",logMirror,World_phys,
false,0);
399 G4double ICEREFLECTIVITY[NUM] = { 0.95, 0.95 };
402 AirMirrorMPT->
AddProperty(
"REFLECTIVITY", XX, ICEREFLECTIVITY,NUM);
421 G4Box * boxGround =
new G4Box(
"Ground",Ground_x,Ground_y,Ground_z);
438 physGround =
new G4PVPlacement(Surfrot,SurfacePosition,
"GroundPV",logGround,World_phys,
false,0);
458 G4double ICEREFLECTIVITY[NUM] = { 0.95, 0.95 };
461 AirGroundMPT->
AddProperty(
"REFLECTIVITY", XX, ICEREFLECTIVITY,NUM);
494 G4double UVscopeInnerRadius = UVscopeDiameter/2.0-UVscopeThickness ;
495 G4double UVscopeOuterRadius = UVscopeDiameter/2.0 ;
503 new G4Tubs(
"UVscopeSolid",UVscopeInnerRadius,UVscopeOuterRadius,UVscopeHeight/2.0,0.0,
twopi) ;
507 new G4PVPlacement(0,UVscopePosition,
"UVSCopePV",logicUVscope,World_phys,
false,0);
514 G4Tubs *solidUVscopeBack =
515 new G4Tubs(
"UVscopeBackSolid",0.0,UVscopeOuterRadius,UVscopeThickness/2.0,0.0,
twopi) ;
521 UVscopeBackPosition = UVscopePosition+
G4ThreeVector(0.0*
mm,0.0*
mm,-(UVscopeHeight/2.0+UVscopeThickness/2.0)) ;
523 new G4PVPlacement(0,UVscopeBackPosition,
"UVscopeBack",logicUVscopeBack,World_phys,
false,0);
530 G4cout <<
"# Building the Fresnel lens ... #" <<
G4endl ;
534 G4int LensNumOfGrooves = 13 ;
544 FresnelLens =
new UltraFresnelLens(LensDiameter,LensNumOfGrooves,LensMaterial,World_phys,LensPosition) ;
551 G4Tubs *solidLensFrame =
new G4Tubs(
"LensFrame",LensDiameter/2.0,UVscopeInnerRadius,LensBorderThickness/2.0,0.0,
twopi) ;
558 new G4PVPlacement(0,LensFramePosition,
"LensFramePV",logicLensFrame,World_phys,
false,0);
564 G4cout <<
"# Building the photomultiplier ... #" <<
G4endl ;
576 solidPMT =
new G4Sphere(
"PMT_solid",PMT_curv-PMT_thick,PMT_curv,0.0,
twopi,StartTheta,EndTheta);
590 new G4PVPlacement(PMTrot,PMTpos,
"PMT1",logicalPMT,World_phys,
false,0);
608 G4cout <<
"# Defining interface's optical properties ... #" <<
G4endl ;
619 G4double BLACKPAINTREFLECTIVITY[NUM] = { 0.05, 0.05 };
623 AirPaintMPT->
AddProperty(
"REFLECTIVITY", XX, BLACKPAINTREFLECTIVITY,NUM);
632 new G4LogicalBorderSurface(
"Air/UVscope Back Cover Surface",World_phys,physicalUVscopeBack,OpticalAirPaint);
659 return physicalUVscope;