Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
UltraFresnelLens Class Reference

#include <UltraFresnelLens.hh>

Public Member Functions

 UltraFresnelLens (G4double Diameter, G4int nGrooves, G4Material *Material, G4VPhysicalVolume *MotherPV, G4ThreeVector Pos)
 
 ~UltraFresnelLens ()
 
G4VPhysicalVolume * GetPhysicalVolume ()
 
G4Material * GetMaterial ()
 
G4double GetDiameter ()
 
G4double GetThickness ()
 
G4double GetGrooveWidth ()
 
G4int GetNumberOfGrooves ()
 
G4double GetSagita (G4double)
 

Detailed Description

Definition at line 54 of file UltraFresnelLens.hh.

Constructor & Destructor Documentation

UltraFresnelLens::UltraFresnelLens ( G4double  Diameter,
G4int  nGrooves,
G4Material *  Material,
G4VPhysicalVolume *  MotherPV,
G4ThreeVector  Pos 
)

Definition at line 59 of file UltraFresnelLens.cc.

References FatalException, G4Exception(), and GetSagita().

60 {
61 
62  LensMaterial = Material ;
63  LensDiameter = Diameter ;
64  NumberOfGrooves = nGrooves;
65  GrooveWidth = (Diameter/2.0)/nGrooves ;
66  LensPosition = Pos ;
67 
68  if( GrooveWidth <= 0 ){
69  G4Exception("UltraFresnelLens::UltraFresnelLens()","AirSh001",FatalException,
70  "UltraFresnelLens constructor: GrooveWidth<=0");
71  }
72 
73 
74 G4double Rmin1 = (NumberOfGrooves-1)*(GrooveWidth) ;
75 G4double Rmax1 = (NumberOfGrooves-0)*(GrooveWidth) ;
76 LensThickness = GetSagita(Rmax1)-GetSagita(Rmin1) ; // Height of the highest groove
77 
78 BuildLens(MotherPV) ;
79 
80 }
G4double GetSagita(G4double)
ush Pos
Definition: deflate.h:89
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
double G4double
Definition: G4Types.hh:76
UltraFresnelLens::~UltraFresnelLens ( )

Definition at line 83 of file UltraFresnelLens.cc.

84 {;}

Member Function Documentation

G4double UltraFresnelLens::GetDiameter ( )
inline

Definition at line 64 of file UltraFresnelLens.hh.

64 {return LensDiameter ;}
G4double UltraFresnelLens::GetGrooveWidth ( )
inline

Definition at line 66 of file UltraFresnelLens.hh.

Referenced by UltraFresnelLensParameterisation::UltraFresnelLensParameterisation().

66 {return GrooveWidth ;}
G4Material* UltraFresnelLens::GetMaterial ( )
inline

Definition at line 63 of file UltraFresnelLens.hh.

63 {return LensMaterial ;}
G4int UltraFresnelLens::GetNumberOfGrooves ( )
inline

Definition at line 67 of file UltraFresnelLens.hh.

Referenced by UltraFresnelLensParameterisation::UltraFresnelLensParameterisation().

67 {return NumberOfGrooves ;}
G4VPhysicalVolume* UltraFresnelLens::GetPhysicalVolume ( )
inline

Definition at line 62 of file UltraFresnelLens.hh.

62 {return LensPhysicalVolume ;}
G4double UltraFresnelLens::GetSagita ( G4double  radius)

Definition at line 123 of file UltraFresnelLens.cc.

References FatalException, G4Exception(), python.hepunit::mm, python.hepunit::mm2, and python.hepunit::mm3.

Referenced by UltraFresnelLens(), and UltraFresnelLensParameterisation::UltraFresnelLensParameterisation().

124 {
125 
126  G4double Conic = -1.0;
127  G4double Curvature = 0.00437636761488/mm ;
128  G4double Aspher[8] = { 4.206739256e-05/(mm),
129  9.6440152e-10/(mm3),
130  -1.4884317e-15/(mm2*mm3),
131  0.0/(mm*mm3*mm3),
132  0.0/(mm3*mm3*mm3),
133  0.0/(mm2*mm3*mm3*mm3),
134  0.0/(mm*mm3*mm3*mm3*mm3),
135  0.0/(mm*3*mm3*mm3*mm3*mm3)
136  };
137 
138  G4double TotAspher = 0.0*mm ;
139 
140  for(G4int k=1;k<9;k++){
141  TotAspher += Aspher[k-1]*std::pow(radius,2*k) ;
142  }
143 
144  G4double ArgSqrt = 1.0-(1.0+Conic)*std::pow(Curvature,2)*std::pow(radius,2) ;
145 
146  if (ArgSqrt < 0.0){
147  G4Exception("UltraFresnelLens::GetSagita()","AirSh002",
149  "UltraFresnelLensParameterisation::Sagita: Square Root of <0 !");
150  }
151  G4double Sagita_value = Curvature*std::pow(radius,2)/(1.0+std::sqrt(ArgSqrt)) + TotAspher;
152 
153  return Sagita_value ;
154 
155 
156 }
int G4int
Definition: G4Types.hh:78
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
double G4double
Definition: G4Types.hh:76
G4double UltraFresnelLens::GetThickness ( )
inline

Definition at line 65 of file UltraFresnelLens.hh.

65 {return LensThickness ;}

The documentation for this class was generated from the following files: