89   ConstructTableMaterials();
 
  100   G4Box * World_box = 
new G4Box(
"World",World_x,World_y,World_z);
 
  120   G4cout << 
"\n \n \n \n \n \n \n \n \n \n \n \n \n " << 
G4endl ;
 
  122   G4cout << 
"######################################################" << 
G4endl ;
 
  129   ConstructUVscope(World_phys);
 
  134   G4cout << 
"######################################################" << 
G4endl ;
 
  137 #ifdef ULTRA_MIRROR_USE 
  139   G4cout << 
"Using mirror reflecting surface " << 
G4endl ;
 
  142   Mirror = ConstructMirror(World_phys);
 
  144 #elif ULTRA_GROUND_USE 
  146   G4cout << 
"Using ground reflecting surface " << 
G4endl ;
 
  149   Ground = ConstructGround(World_phys);
 
  170 void UltraDetectorConstruction::ConstructTableMaterials()
 
  199   density = 1.29e-03*
g/
cm3;
 
  209   new G4Material(name=
"Aluminum", z=13., a, density); 
 
  215   density = 2.64*
g/
cm3;  
 
  223    density = 1.19*
g/
cm3;
 
  234   const G4int NUMENTRIES = 2;
 
  241   G4double RINDEX_AIR[NUMENTRIES] = {1.00, 1.00} ; 
 
  244   for(
G4int j=0 ; j<NUMENTRIES ; j++){
 
  245     RINDEX_AIR[j] = RINDEX_AIR[j] + 2.73*std::pow(10.0,-4) ; 
 
  249   MPT_Air->
AddProperty(
"RINDEX", X_RINDEX, RINDEX_AIR, NUMENTRIES);
 
  260   const G4int N_RINDEX_QUARTZ = 2 ;
 
  262   G4double RINDEX_QUARTZ[N_RINDEX_QUARTZ] = {1.54, 1.54};
 
  265   MPT_PMT->
AddProperty(
"RINDEX", X_RINDEX_QUARTZ, RINDEX_QUARTZ, N_RINDEX_QUARTZ);
 
  276   const G4int NENTRIES = 11 ;
 
  285   G4double bParam[4] = {1760.7010,-1.3687,2.4388e-3,-1.5178e-6} ; 
 
  287   for(
G4int i=0;i<NENTRIES; i++){
 
  289     LAMBDA_ACRYLIC[i] = lambda_min + i*(lambda_max-lambda_min)/
float(NENTRIES-1) ;
 
  290     RINDEX_ACRYLIC[i] = 0.0 ;
 
  292     for (
G4int jj=0 ; jj<4 ; jj++)
 
  294       RINDEX_ACRYLIC[i] +=  (bParam[jj]/1000.0)*std::pow(LAMBDA_ACRYLIC[i]/nm,jj) ; 
 
  303   MPT_Acrylic->
AddProperty(
"RINDEX", ENERGY_ACRYLIC, RINDEX_ACRYLIC, NENTRIES);
 
  307   const G4int NENT = 25 ;
 
  311     246.528671, 260.605103, 263.853516, 266.019104, 268.726105,    
 
  312     271.433136, 273.598724, 276.305725, 279.554138, 300.127380,    
 
  313     320.159241, 340.191101, 360.764343, 381.337585, 399.745239,    
 
  314     421.401276, 440.891724, 460.382172, 480.414001, 500.987274,    
 
  315     520.477722, 540.509583, 559.458618,
 
  322     0.0000000,  5.295952,  9.657321, 19.937695, 29.283491, 
 
  323     39.252335, 48.598133, 58.255451, 65.109039, 79.439247,
 
  324     85.669785, 89.719627, 91.277260, 91.588783, 91.900307,
 
  325     91.588783, 91.277260, 91.277260, 91.588783, 91.588783,
 
  326     91.900307, 91.900307, 91.588783,
 
  332   for(
G4int i=0;i<NENT; i++){
 
  337       abslength = 1.0/kInfinity ;
 
  340       abslength = -3.0*
mm/(std::log(ABS[i]/100.0)) ;
 
  343     MPT_Acrylic->
AddEntry(
"ABSLENGTH", energy, abslength);
 
  363   G4Box * boxMirror = 
new G4Box(
"Mirror",Mirror_x,Mirror_y,Mirror_z);
 
  380 physMirror = 
new G4PVPlacement(Surfrot,SurfacePosition,
"MirrorPV",logMirror,World_phys,
false,0);
 
  400 G4double ICEREFLECTIVITY[NUM]      = { 0.95, 0.95 };
 
  403 AirMirrorMPT->
AddProperty(
"REFLECTIVITY", XX, ICEREFLECTIVITY,NUM);
 
  422   G4Box * boxGround = 
new G4Box(
"Ground",Ground_x,Ground_y,Ground_z);
 
  439 physGround = 
new G4PVPlacement(Surfrot,SurfacePosition,
"GroundPV",logGround,World_phys,
false,0);
 
  459 G4double ICEREFLECTIVITY[NUM]      = { 0.95, 0.95 };
 
  462 AirGroundMPT->
AddProperty(
"REFLECTIVITY", XX, ICEREFLECTIVITY,NUM);
 
  496   G4double UVscopeInnerRadius = UVscopeDiameter/2.0-UVscopeThickness ;
 
  497   G4double UVscopeOuterRadius = UVscopeDiameter/2.0 ; 
 
  505     new G4Tubs(
"UVscopeSolid",UVscopeInnerRadius,UVscopeOuterRadius,UVscopeHeight/2.0,0.0,
twopi) ;
 
  509     new G4PVPlacement(0,UVscopePosition,
"UVSCopePV",logicUVscope,World_phys,
false,0);
 
  516   G4Tubs *solidUVscopeBack = 
 
  517     new G4Tubs(
"UVscopeBackSolid",0.0,UVscopeOuterRadius,UVscopeThickness/2.0,0.0,
twopi) ;
 
  523   UVscopeBackPosition =  UVscopePosition+
G4ThreeVector(0.0*
mm,0.0*
mm,-(UVscopeHeight/2.0+UVscopeThickness/2.0)) ;
 
  525     new G4PVPlacement(0,UVscopeBackPosition,
"UVscopeBack",logicUVscopeBack,World_phys,
false,0);
 
  532   G4cout << 
"#           Building the Fresnel lens ...            #" << 
G4endl ;  
 
  536   G4int      LensNumOfGrooves    = 13 ;
 
  546   FresnelLens = 
new UltraFresnelLens(LensDiameter,LensNumOfGrooves,LensMaterial,World_phys,LensPosition) ;
 
  553   G4Tubs *solidLensFrame = 
new G4Tubs(
"LensFrame",LensDiameter/2.0,UVscopeInnerRadius,LensBorderThickness/2.0,0.0,
twopi) ;
 
  560     new G4PVPlacement(0,LensFramePosition,
"LensFramePV",logicLensFrame,World_phys,
false,0);
 
  566   G4cout << 
"#         Building the photomultiplier ...           #" << 
G4endl ;  
 
  578   solidPMT = 
new G4Sphere(
"PMT_solid",PMT_curv-PMT_thick,PMT_curv,0.0,
twopi,StartTheta,EndTheta);
 
  591   new G4PVPlacement(PMTrot,PMTpos,
"PMT1",logicalPMT,World_phys,
false,0);
 
  602   G4cout << 
"#    Defining interface's optical properties  ...    #" << 
G4endl ;  
 
  613   G4double BLACKPAINTREFLECTIVITY[NUM]      = { 0.05, 0.05 };
 
  617   AirPaintMPT->
AddProperty(
"REFLECTIVITY", XX, BLACKPAINTREFLECTIVITY,NUM);
 
  626   new G4LogicalBorderSurface(
"Air/UVscope Back Cover Surface",World_phys,physicalUVscopeBack,OpticalAirPaint);
 
  653   return physicalUVscope;
 
void SetFinish(const G4OpticalSurfaceFinish)
 
void SetForceWireframe(G4bool)
 
CLHEP::Hep3Vector G4ThreeVector
 
CLHEP::HepRotation G4RotationMatrix
 
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
 
G4VPhysicalVolume * GetPhysicalVolume()
 
void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
 
void AddEntry(const char *key, G4double aPhotonEnergy, G4double aPropertyValue)
 
void SetVisibility(G4bool)
 
static G4MaterialTable * GetMaterialTable()
 
~UltraDetectorConstruction()
 
G4MaterialPropertyVector * AddProperty(const char *key, G4double *PhotonEnergies, G4double *PropertyValues, G4int NumEntries)
 
G4GLOB_DLL std::ostream G4cout
 
G4PhysicsOrderedFreeVector G4MaterialPropertyVector
 
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
 
void ConstructSDandField()
 
G4LogicalVolume * GetLogicalVolume() const 
 
UltraDetectorConstruction()
 
static const G4VisAttributes Invisible
 
void AddElement(G4Element *element, G4int nAtoms)
 
void SetModel(const G4OpticalSurfaceModel model)
 
G4VPhysicalVolume * Construct()
 
void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
 
void SetType(const G4SurfaceType &type)
 
void SetVisAttributes(const G4VisAttributes *pVA)