Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
XCrystalPlanarMoliereTempPotential Class Reference

#include <XCrystalPlanarMoliereTempPotential.hh>

Inheritance diagram for XCrystalPlanarMoliereTempPotential:
Collaboration diagram for XCrystalPlanarMoliereTempPotential:

Public Member Functions

G4double ComputeECForSinglePlane (G4double, XPhysicalLattice *)
 
G4double ComputeMaximum (XPhysicalLattice *)
 
G4double ComputeMinimum (XPhysicalLattice *)
 
 XCrystalPlanarMoliereTempPotential ()
 
 ~XCrystalPlanarMoliereTempPotential ()
 
- Public Member Functions inherited from XVCrystalPlanarAnalytical
void SetNumberOfPlanes (G4int)
 
G4int GetNumberOfPlanes ()
 
G4ThreeVector ComputeEC (G4ThreeVector, XPhysicalLattice *)
 
G4ThreeVector ComputeECFromVector (G4ThreeVector)
 
G4ThreeVector ComputePositionInUnitCell (G4ThreeVector, XPhysicalLattice *)
 
virtual void PrintOnFile (const G4String &, XPhysicalLattice *, G4double)
 
virtual void ReadFromFile (const G4String &, XPhysicalLattice *, G4double=1)
 
virtual void ReadFromECHARM (const G4String &, G4double=1)
 
void InitializeVector ()
 
 XVCrystalPlanarAnalytical ()
 
 ~XVCrystalPlanarAnalytical ()
 
- Public Member Functions inherited from XVCrystalCharacteristic
XPhysicalLatticeGetXPhysicalLattice (G4VPhysicalVolume *)
 
XUnitCellGetXUnitCell (G4VPhysicalVolume *)
 
XLogicalLatticeGetLogicalLattice (G4VPhysicalVolume *)
 
void InitializePhysicalLattice (XPhysicalLattice *)
 
G4ThreeVector GetEC (G4ThreeVector, XPhysicalLattice *)
 
virtual G4double ComputeTFScreeningRadius (XPhysicalLattice *)
 
virtual G4double GetMaximum (XPhysicalLattice *)
 
virtual G4double GetMinimum (XPhysicalLattice *)
 
G4bool IsInitialized (XPhysicalLattice *)
 
 XVCrystalCharacteristic ()
 
 ~XVCrystalCharacteristic ()
 

Additional Inherited Members

- Protected Attributes inherited from XVCrystalCharacteristic
G4double fMaximum
 
G4double fMinimum
 
XPhysicalLatticefPhysicalLattice
 
G4PhysicsVectorfVectorEC
 

Detailed Description

Definition at line 36 of file XCrystalPlanarMoliereTempPotential.hh.

Constructor & Destructor Documentation

XCrystalPlanarMoliereTempPotential::XCrystalPlanarMoliereTempPotential ( )

Definition at line 34 of file XCrystalPlanarMoliereTempPotential.cc.

34  {
35  fAlfa[0] = 0.1;
36  fAlfa[1] = 0.55;
37  fAlfa[2] = 0.35;
38 
39  fBeta[0] = 6.0;
40  fBeta[1] = 1.2;
41  fBeta[2] = 0.3;
42 
43  for(unsigned int i=0;i<3;i++) {
44  fGamma[i] = fAlfa[i]/fBeta[i];
45  }
46 }
XCrystalPlanarMoliereTempPotential::~XCrystalPlanarMoliereTempPotential ( )

Definition at line 50 of file XCrystalPlanarMoliereTempPotential.cc.

50  {
51 }

Member Function Documentation

G4double XCrystalPlanarMoliereTempPotential::ComputeECForSinglePlane ( G4double  vX,
XPhysicalLattice vLattice 
)
virtual

Implements XVCrystalPlanarAnalytical.

Definition at line 56 of file XCrystalPlanarMoliereTempPotential.cc.

57  {
58 
59  G4VPhysicalVolume* vVolume = vLattice->GetVolume();
60 
61  G4double aTF = ComputeTFScreeningRadius(vLattice);
62  G4double vTVA = vLattice->GetThermalVibrationAmplitude();
63 
64  G4double vTau[3];
65  for(unsigned int i=0;i<3;i++){
66  vTau[i] = (std::pow( vTVA / aTF * fBeta[i] , 2. ) / 2.0);
67  }
68 
69 
70  G4double vValueForSinglePlane = 0.;
71 
72  for(unsigned int i=0;i<3;i++){
73  G4double vTemp = 0.;
74  vTemp += ( std::exp(-vX/ aTF * fBeta[i] ) *
75  (1.-CLHEP::HepStat::erfQ((vTVA / aTF * fBeta[i] - vX/ vTVA)
76  / std::pow(2.,0.5))) );
77  vTemp += ( std::exp( vX/ aTF * fBeta[i] ) *
78  (1.-CLHEP::HepStat::erfQ((vTVA / aTF * fBeta[i] + vX/ vTVA)
79  / std::pow(2.,0.5))) );
80  vValueForSinglePlane += ( vTemp * fGamma[i] * std::exp( vTau[i] ) /2.0);
81  }
82 
83  vValueForSinglePlane *= 2. * CLHEP::pi;
84  vValueForSinglePlane *= GetXUnitCell(vVolume)->ComputeDirectPeriod(
85  GetXPhysicalLattice(vVolume)->GetMiller(0),
86  GetXPhysicalLattice(vVolume)->GetMiller(1),
87  GetXPhysicalLattice(vVolume)->GetMiller(2));
88 
89  vValueForSinglePlane *= aTF;
90 
91  vValueForSinglePlane *= (CLHEP::elm_coupling);
92 
93  vValueForSinglePlane *= (GetXUnitCell(vVolume)->ComputeAtomVolumeDensity());
94 
95  return vValueForSinglePlane;
96 }
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
virtual G4double ComputeTFScreeningRadius(XPhysicalLattice *)
G4double ComputeAtomVolumeDensity()
Definition: XUnitCell.cc:119
G4double GetThermalVibrationAmplitude()
G4double ComputeDirectPeriod(G4int, G4int, G4int)
Definition: XUnitCell.cc:222
static constexpr double elm_coupling
XUnitCell * GetXUnitCell(G4VPhysicalVolume *)
static double erfQ(double x)
Definition: erfQ.cc:24
double G4double
Definition: G4Types.hh:76
static constexpr double pi
Definition: SystemOfUnits.h:54
G4VPhysicalVolume * GetVolume()

Here is the call graph for this function:

G4double XCrystalPlanarMoliereTempPotential::ComputeMaximum ( XPhysicalLattice vLattice)
virtual

Reimplemented from XVCrystalPlanarAnalytical.

Definition at line 101 of file XCrystalPlanarMoliereTempPotential.cc.

101  {
102 
103  G4double vMaximum = GetEC(G4ThreeVector(0.,0.,0.),
104  vLattice).x();
105 
106  return vMaximum;
107 }
CLHEP::Hep3Vector G4ThreeVector
double x() const
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

G4double XCrystalPlanarMoliereTempPotential::ComputeMinimum ( XPhysicalLattice vLattice)
virtual

Reimplemented from XVCrystalPlanarAnalytical.

Definition at line 112 of file XCrystalPlanarMoliereTempPotential.cc.

112  {
113  G4VPhysicalVolume* vVolume = vLattice->GetVolume();
114  G4double vInterplanarDistance =
116  GetXPhysicalLattice(vVolume)->GetMiller(0),
117  GetXPhysicalLattice(vVolume)->GetMiller(1),
118  GetXPhysicalLattice(vVolume)->GetMiller(2));
119 
120  G4double vMinimum = GetEC(G4ThreeVector(vInterplanarDistance/2.,0.,0.),
121  vLattice).x();
122 
123  return vMinimum;
124 }
CLHEP::Hep3Vector G4ThreeVector
double x() const
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
G4double ComputeDirectPeriod(G4int, G4int, G4int)
Definition: XUnitCell.cc:222
XUnitCell * GetXUnitCell(G4VPhysicalVolume *)
double G4double
Definition: G4Types.hh:76
G4VPhysicalVolume * GetVolume()

Here is the call graph for this function:


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