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 ;
   134   G4cout << 
"######################################################" << 
G4endl ;
   137 #ifdef ULTRA_MIRROR_USE   139   G4cout << 
"Using mirror reflecting surface " << 
G4endl ;
   144 #elif ULTRA_GROUND_USE   146   G4cout << 
"Using ground reflecting surface " << 
G4endl ;
   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++){
   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++){
   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 ;
   543   G4ThreeVector LensPosition        = UVscopePosition+
G4ThreeVector(0.0*
mm,0.0*
mm,UVscopeHeight/2.0-UVscopeBaffle) ;
   553   G4Tubs *solidLensFrame = 
new G4Tubs(
"LensFrame",LensDiameter/2.0,UVscopeInnerRadius,LensBorderThickness/2.0,0.0,
twopi) ;
   556   G4ThreeVector LensFramePosition ;
   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);
   586   G4ThreeVector PMTpos = LensPosition + 
G4ThreeVector(0.0*
cm,0.0*
cm,-(LensFocalLength+PMT_curv)) ;
   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)
 
UltraFresnelLens * FresnelLens
 
static const G4double kInfinity
 
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)
 
G4VPhysicalVolume * ConstructGround(G4VPhysicalVolume *)
 
static G4MaterialTable * GetMaterialTable()
 
~UltraDetectorConstruction()
 
G4LogicalVolume * logicalPMT
 
G4MaterialPropertyVector * AddProperty(const char *key, G4double *PhotonEnergies, G4double *PropertyValues, G4int NumEntries)
 
G4double GetZHalfLength() const
 
G4GLOB_DLL std::ostream G4cout
 
G4PhysicsOrderedFreeVector G4MaterialPropertyVector
 
static const double twopi
 
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
 
void ConstructSDandField()
 
UltraDetectorConstruction()
 
static const G4VisAttributes Invisible
 
G4VPhysicalVolume * ConstructUVscope(G4VPhysicalVolume *)
 
void AddElement(G4Element *element, G4int nAtoms)
 
G4VPhysicalVolume * ConstructMirror(G4VPhysicalVolume *)
 
void SetModel(const G4OpticalSurfaceModel model)
 
void ConstructTableMaterials()
 
G4VPhysicalVolume * Construct()
 
G4LogicalVolume * GetLogicalVolume() const
 
void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
 
void SetType(const G4SurfaceType &type)
 
void SetVisAttributes(const G4VisAttributes *pVA)