62 LensMaterial = Material ;
63 LensDiameter = Diameter ;
64 NumberOfGrooves = nGrooves;
65 GrooveWidth = (Diameter/2.0)/nGrooves ;
68 if( GrooveWidth <= 0 ){
70 "UltraFresnelLens constructor: GrooveWidth<=0");
74 G4double Rmin1 = (NumberOfGrooves-1)*(GrooveWidth) ;
75 G4double Rmax1 = (NumberOfGrooves-0)*(GrooveWidth) ;
93 G4double LensMotherDz = LensThickness ;
97 =
new G4Tubs(
"LensMotherCylinder",0.0*
mm,LensDiameter/2.0,LensMotherDz/2.0,StartPhi,DeltaPhi);
101 =
new G4LogicalVolume(LensMotherCylinder,LensMotherMaterial,
"LensMotherLV",0,0,0);
103 =
new G4PVPlacement(0,LensPosition,
"LensMotherPV",LensMotherLV,MotherPV,
false,0);
109 =
new G4Cons(
"Groove",40.0*
mm,50.0*
mm,40.0*
mm,40.001*
mm,1.0*
mm,StartPhi,DeltaPhi);
133 0.0/(
mm2*mm3*mm3*mm3),
134 0.0/(
mm*mm3*mm3*mm3*
mm3),
135 0.0/(
mm*3*mm3*mm3*mm3*mm3)
140 for(
G4int k=1;k<9;k++){
141 TotAspher += Aspher[k-1]*std::pow(radius,2*k) ;
144 G4double ArgSqrt = 1.0-(1.0+Conic)*std::pow(Curvature,2)*std::pow(radius,2) ;
147 G4Exception(
"UltraFresnelLens::GetSagita()",
"AirSh002",
149 "UltraFresnelLensParameterisation::Sagita: Square Root of <0 !");
151 G4double Sagita_value = Curvature*std::pow(radius,2)/(1.0+std::sqrt(ArgSqrt)) + TotAspher;
153 return Sagita_value ;
static constexpr double mm
G4Material * GetMaterial() const
G4double GetSagita(G4double)
UltraFresnelLens(G4double Diameter, G4int nGrooves, G4Material *Material, G4VPhysicalVolume *MotherPV, G4ThreeVector Pos)
static constexpr double twopi
static constexpr double mm2
static constexpr double mm3
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4LogicalVolume * GetLogicalVolume() const
static const G4VisAttributes & GetInvisible()
void SetVisAttributes(const G4VisAttributes *pVA)