Geant4  10.02.p03
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 ()
 

Private Attributes

G4double fAlfa [3]
 
G4double fBeta [3]
 
G4double fGamma [3]
 

Additional Inherited Members

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

Detailed Description

Definition at line 33 of file XCrystalPlanarMoliereTempPotential.hh.

Constructor & Destructor Documentation

◆ XCrystalPlanarMoliereTempPotential()

XCrystalPlanarMoliereTempPotential::XCrystalPlanarMoliereTempPotential ( )

Definition at line 31 of file XCrystalPlanarMoliereTempPotential.cc.

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

◆ ~XCrystalPlanarMoliereTempPotential()

XCrystalPlanarMoliereTempPotential::~XCrystalPlanarMoliereTempPotential ( )

Definition at line 47 of file XCrystalPlanarMoliereTempPotential.cc.

47  {
48 }
Here is the call graph for this function:

Member Function Documentation

◆ ComputeECForSinglePlane()

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

Implements XVCrystalPlanarAnalytical.

Definition at line 53 of file XCrystalPlanarMoliereTempPotential.cc.

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

◆ ComputeMaximum()

G4double XCrystalPlanarMoliereTempPotential::ComputeMaximum ( XPhysicalLattice vLattice)
virtual

Reimplemented from XVCrystalPlanarAnalytical.

Definition at line 96 of file XCrystalPlanarMoliereTempPotential.cc.

96  {
97 
98  G4double vMaximum = GetEC(G4ThreeVector(0.,0.,0.),
99  vLattice).x();
100 
101  return vMaximum;
102 }
CLHEP::Hep3Vector G4ThreeVector
double x() const
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputeMinimum()

G4double XCrystalPlanarMoliereTempPotential::ComputeMinimum ( XPhysicalLattice vLattice)
virtual

Reimplemented from XVCrystalPlanarAnalytical.

Definition at line 107 of file XCrystalPlanarMoliereTempPotential.cc.

107  {
108  G4VPhysicalVolume* vVolume = vLattice->GetVolume();
109  G4double vInterplanarDistance =
111  GetXPhysicalLattice(vVolume)->GetMiller(0),
112  GetXPhysicalLattice(vVolume)->GetMiller(1),
113  GetXPhysicalLattice(vVolume)->GetMiller(2));
114 
115  G4double vMinimum = GetEC(G4ThreeVector(vInterplanarDistance/2.,0.,0.),
116  vLattice).x();
117 
118  return vMinimum;
119 }
CLHEP::Hep3Vector G4ThreeVector
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
double x() const
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
G4double ComputeDirectPeriod(G4int, G4int, G4int)
Definition: XUnitCell.cc:219
XUnitCell * GetXUnitCell(G4VPhysicalVolume *)
double G4double
Definition: G4Types.hh:76
G4VPhysicalVolume * GetVolume()
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ fAlfa

G4double XCrystalPlanarMoliereTempPotential::fAlfa[3]
private

Definition at line 36 of file XCrystalPlanarMoliereTempPotential.hh.

◆ fBeta

G4double XCrystalPlanarMoliereTempPotential::fBeta[3]
private

Definition at line 37 of file XCrystalPlanarMoliereTempPotential.hh.

◆ fGamma

G4double XCrystalPlanarMoliereTempPotential::fGamma[3]
private

Definition at line 38 of file XCrystalPlanarMoliereTempPotential.hh.


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