91   ConstructTableMaterials();
 
  102   G4Box * World_box = 
new G4Box(
"World",World_x,World_y,World_z);
 
  122   G4cout << 
"\n \n \n \n \n \n \n \n \n \n \n \n \n " << 
G4endl ;
 
  124   G4cout << 
"######################################################" << 
G4endl ;
 
  131   ConstructUVscope(World_phys);
 
  136   G4cout << 
"######################################################" << 
G4endl ;
 
  139 #ifdef ULTRA_MIRROR_USE 
  141   G4cout << 
"Using mirror reflecting surface " << 
G4endl ;
 
  144   ConstructMirror(World_phys);
 
  146 #elif ULTRA_GROUND_USE 
  148   G4cout << 
"Using ground reflecting surface " << 
G4endl ;
 
  151   ConstructGround(World_phys);
 
  173 void UltraDetectorConstruction::ConstructTableMaterials()
 
  202   density = 1.29e-03*
g/
cm3;
 
  212   new G4Material(name=
"Aluminum", z=13., a, density); 
 
  218   density = 2.64*
g/
cm3;  
 
  226    density = 1.19*
g/
cm3;
 
  237   const G4int NUMENTRIES = 2;
 
  244   G4double RINDEX_AIR[NUMENTRIES] = {1.00, 1.00} ; 
 
  247   for(
G4int j=0 ; j<NUMENTRIES ; j++){
 
  248     RINDEX_AIR[j] = RINDEX_AIR[j] + 2.73*std::pow(10.0,-4) ; 
 
  252   MPT_Air->
AddProperty(
"RINDEX", X_RINDEX, RINDEX_AIR, NUMENTRIES);
 
  263   const G4int N_RINDEX_QUARTZ = 2 ;
 
  265   G4double RINDEX_QUARTZ[N_RINDEX_QUARTZ] = {1.54, 1.54};
 
  268   MPT_PMT->
AddProperty(
"RINDEX", X_RINDEX_QUARTZ, RINDEX_QUARTZ, N_RINDEX_QUARTZ);
 
  279   const G4int NENTRIES = 11 ;
 
  288   G4double bParam[4] = {1760.7010,-1.3687,2.4388e-3,-1.5178e-6} ; 
 
  290   for(
G4int i=0;i<NENTRIES; i++){
 
  292     LAMBDA_ACRYLIC[i] = lambda_min + i*(lambda_max-lambda_min)/
float(NENTRIES-1) ;
 
  293     RINDEX_ACRYLIC[i] = 0.0 ;
 
  295     for (
G4int jj=0 ; jj<4 ; jj++)
 
  297       RINDEX_ACRYLIC[i] +=  (bParam[jj]/1000.0)*std::pow(LAMBDA_ACRYLIC[i]/
nm,jj) ; 
 
  306   MPT_Acrylic->
AddProperty(
"RINDEX", ENERGY_ACRYLIC, RINDEX_ACRYLIC, NENTRIES);
 
  310   const G4int NENT = 25 ;
 
  314     246.528671, 260.605103, 263.853516, 266.019104, 268.726105,    
 
  315     271.433136, 273.598724, 276.305725, 279.554138, 300.127380,    
 
  316     320.159241, 340.191101, 360.764343, 381.337585, 399.745239,    
 
  317     421.401276, 440.891724, 460.382172, 480.414001, 500.987274,    
 
  318     520.477722, 540.509583, 559.458618,
 
  325     0.0000000,  5.295952,  9.657321, 19.937695, 29.283491, 
 
  326     39.252335, 48.598133, 58.255451, 65.109039, 79.439247,
 
  327     85.669785, 89.719627, 91.277260, 91.588783, 91.900307,
 
  328     91.588783, 91.277260, 91.277260, 91.588783, 91.588783,
 
  329     91.900307, 91.900307, 91.588783,
 
  335   for(
G4int i=0;i<NENT; i++){
 
  343       abslength = -3.0*
mm/(
G4Log(ABS[i]/100.0)) ;
 
  346     MPT_Acrylic->
AddEntry(
"ABSLENGTH", energy, abslength);
 
  366   G4Box * boxMirror = 
new G4Box(
"Mirror",Mirror_x,Mirror_y,Mirror_z);
 
  383 physMirror = 
new G4PVPlacement(Surfrot,SurfacePosition,
"MirrorPV",logMirror,World_phys,
false,0);
 
  403 G4double ICEREFLECTIVITY[NUM]      = { 0.95, 0.95 };
 
  406 AirMirrorMPT->
AddProperty(
"REFLECTIVITY", XX, ICEREFLECTIVITY,NUM);
 
  425   G4Box * boxGround = 
new G4Box(
"Ground",Ground_x,Ground_y,Ground_z);
 
  442 physGround = 
new G4PVPlacement(Surfrot,SurfacePosition,
"GroundPV",logGround,World_phys,
false,0);
 
  462 G4double ICEREFLECTIVITY[NUM]      = { 0.95, 0.95 };
 
  465 AirGroundMPT->
AddProperty(
"REFLECTIVITY", XX, ICEREFLECTIVITY,NUM);
 
  499   G4double UVscopeInnerRadius = UVscopeDiameter/2.0-UVscopeThickness ;
 
  500   G4double UVscopeOuterRadius = UVscopeDiameter/2.0 ; 
 
  508     new G4Tubs(
"UVscopeSolid",UVscopeInnerRadius,UVscopeOuterRadius,UVscopeHeight/2.0,0.0,
twopi) ;
 
  512     new G4PVPlacement(0,UVscopePosition,
"UVSCopePV",logicUVscope,World_phys,
false,0);
 
  519   G4Tubs *solidUVscopeBack = 
 
  520     new G4Tubs(
"UVscopeBackSolid",0.0,UVscopeOuterRadius,UVscopeThickness/2.0,0.0,
twopi) ;
 
  526   UVscopeBackPosition =  UVscopePosition+
G4ThreeVector(0.0*
mm,0.0*
mm,-(UVscopeHeight/2.0+UVscopeThickness/2.0)) ;
 
  528     new G4PVPlacement(0,UVscopeBackPosition,
"UVscopeBack",logicUVscopeBack,World_phys,
false,0);
 
  535   G4cout << 
"#           Building the Fresnel lens ...            #" << 
G4endl ;  
 
  539   G4int      LensNumOfGrooves    = 13 ;
 
  549   FresnelLens = 
new UltraFresnelLens(LensDiameter,LensNumOfGrooves,LensMaterial,World_phys,LensPosition) ;
 
  556   G4Tubs *solidLensFrame = 
new G4Tubs(
"LensFrame",LensDiameter/2.0,UVscopeInnerRadius,LensBorderThickness/2.0,0.0,
twopi) ;
 
  563     new G4PVPlacement(0,LensFramePosition,
"LensFramePV",logicLensFrame,World_phys,
false,0);
 
  569   G4cout << 
"#         Building the photomultiplier ...           #" << 
G4endl ;  
 
  581   solidPMT = 
new G4Sphere(
"PMT_solid",PMT_curv-PMT_thick,PMT_curv,0.0,
twopi,StartTheta,EndTheta);
 
  594   new G4PVPlacement(PMTrot,PMTpos,
"PMT1",logicalPMT,World_phys,
false,0);
 
  605   G4cout << 
"#    Defining interface's optical properties  ...    #" << 
G4endl ;  
 
  616   G4double BLACKPAINTREFLECTIVITY[NUM]      = { 0.05, 0.05 };
 
  620   AirPaintMPT->
AddProperty(
"REFLECTIVITY", XX, BLACKPAINTREFLECTIVITY,NUM);
 
  629   new G4LogicalBorderSurface(
"Air/UVscope Back Cover Surface",World_phys,physicalUVscopeBack,OpticalAirPaint);
 
  656   return physicalUVscope;
 
void SetFinish(const G4OpticalSurfaceFinish)
 
static constexpr double mm
 
static const G4double kInfinity
 
CLHEP::Hep3Vector G4ThreeVector
 
CLHEP::HepRotation G4RotationMatrix
 
std::vector< ExP01TrackerHit * > a
 
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
 
G4VPhysicalVolume * GetPhysicalVolume()
 
void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
 
void AddEntry(const char *key, G4double aPhotonEnergy, G4double aPropertyValue)
 
static G4MaterialTable * GetMaterialTable()
 
~UltraDetectorConstruction()
 
G4MaterialPropertyVector * AddProperty(const char *key, G4double *PhotonEnergies, G4double *PropertyValues, G4int NumEntries)
 
static constexpr double twopi
 
G4GLOB_DLL std::ostream G4cout
 
G4PhysicsOrderedFreeVector G4MaterialPropertyVector
 
static constexpr double m
 
void SetVisibility(G4bool=true)
 
static constexpr double cm
 
static constexpr double cm3
 
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
 
G4double G4Log(G4double x)
 
void AddNewDetector(G4VSensitiveDetector *aSD)
 
void ConstructSDandField()
 
G4LogicalVolume * GetLogicalVolume() const 
 
UltraDetectorConstruction()
 
static constexpr double nm
 
G4double energy(const ThreeVector &p, const G4double m)
 
static G4SDManager * GetSDMpointer()
 
G4double GetZHalfLength() const 
 
void AddElement(G4Element *element, G4int nAtoms)
 
static constexpr double pi
 
void SetModel(const G4OpticalSurfaceModel model)
 
G4VPhysicalVolume * Construct()
 
void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
 
static constexpr double mole
 
static const G4VisAttributes & GetInvisible()
 
void SetType(const G4SurfaceType &type)
 
void SetForceWireframe(G4bool=true)
 
void SetVisAttributes(const G4VisAttributes *pVA)