Geant4  10.02.p03
XVCrystalCharacteristic Class Referenceabstract

#include <XVCrystalCharacteristic.hh>

Inheritance diagram for XVCrystalCharacteristic:
Collaboration diagram for XVCrystalCharacteristic:

Public Member Functions

XPhysicalLatticeGetXPhysicalLattice (G4VPhysicalVolume *)
 
XUnitCellGetXUnitCell (G4VPhysicalVolume *)
 
XLogicalLatticeGetLogicalLattice (G4VPhysicalVolume *)
 
void InitializePhysicalLattice (XPhysicalLattice *)
 
G4ThreeVector GetEC (G4ThreeVector, XPhysicalLattice *)
 
virtual G4ThreeVector ComputeEC (G4ThreeVector, XPhysicalLattice *)=0
 
virtual G4ThreeVector ComputeECFromVector (G4ThreeVector)=0
 
virtual G4ThreeVector ComputePositionInUnitCell (G4ThreeVector, XPhysicalLattice *)
 
virtual G4double ComputeTFScreeningRadius (XPhysicalLattice *)
 
virtual G4double GetMaximum (XPhysicalLattice *)
 
virtual G4double GetMinimum (XPhysicalLattice *)
 
virtual G4double ComputeMaximum (XPhysicalLattice *)
 
virtual G4double ComputeMinimum (XPhysicalLattice *)
 
virtual void PrintOnFile (const G4String &, XPhysicalLattice *, G4double=1)=0
 
virtual void ReadFromFile (const G4String &, XPhysicalLattice *, G4double=1)=0
 
virtual void ReadFromECHARM (const G4String &, G4double=1)=0
 
G4bool IsInitialized (XPhysicalLattice *)
 
virtual void InitializeVector ()=0
 
 XVCrystalCharacteristic ()
 
 ~XVCrystalCharacteristic ()
 

Protected Attributes

G4double fMaximum
 
G4double fMinimum
 
XPhysicalLatticefPhysicalLattice
 
G4PhysicsVectorfVectorEC
 

Private Attributes

XLatticeManager3fLatticeManager
 

Detailed Description

Definition at line 34 of file XVCrystalCharacteristic.hh.

Constructor & Destructor Documentation

◆ XVCrystalCharacteristic()

XVCrystalCharacteristic::XVCrystalCharacteristic ( )

Definition at line 29 of file XVCrystalCharacteristic.cc.

29  {
31 
32  fMaximum = DBL_MAX;
33  fMinimum = DBL_MAX;
34 }
static XLatticeManager3 * GetXLatticeManager()
XLatticeManager3 * fLatticeManager
#define DBL_MAX
Definition: templates.hh:83
Here is the call graph for this function:

◆ ~XVCrystalCharacteristic()

XVCrystalCharacteristic::~XVCrystalCharacteristic ( )

Definition at line 38 of file XVCrystalCharacteristic.cc.

38  {
39 }
Here is the call graph for this function:

Member Function Documentation

◆ ComputeEC()

virtual G4ThreeVector XVCrystalCharacteristic::ComputeEC ( G4ThreeVector  ,
XPhysicalLattice  
)
pure virtual

Implemented in XVCrystalPlanarAnalytical, and XCrystalCharacteristicArray.

Here is the caller graph for this function:

◆ ComputeECFromVector()

virtual G4ThreeVector XVCrystalCharacteristic::ComputeECFromVector ( G4ThreeVector  )
pure virtual

Implemented in XVCrystalPlanarAnalytical.

Here is the caller graph for this function:

◆ ComputeMaximum()

G4double XVCrystalCharacteristic::ComputeMaximum ( XPhysicalLattice vLattice)
virtual

Reimplemented in XVCrystalPlanarAnalytical, XCrystalPlanarMoliereTempPotential, and XCrystalPlanarMolierePotential.

Definition at line 124 of file XVCrystalCharacteristic.cc.

124  {
125  unsigned int vPrecisionX = 1024;
126  unsigned int vPrecisionY = 1024;
127  unsigned int vPrecisionZ = 1024;
128 
129  G4VPhysicalVolume* vVolume = vLattice->GetVolume();
130  G4double vStepX = GetXUnitCell(vVolume)->GetSize().x() / vPrecisionX;
131  G4double vStepY = GetXUnitCell(vVolume)->GetSize().y() / vPrecisionY;
132  G4double vStepZ = GetXUnitCell(vVolume)->GetSize().z() / vPrecisionZ;
133 
134  G4double vMaximum = -DBL_MAX;
135  G4double vValue;
136 
137  for(unsigned int i=0;i<vPrecisionX;i++){
138  for(unsigned int j=0;j<vPrecisionY;j++){
139  for(unsigned int k=0;k<vPrecisionZ;k++){
140  if( (vValue = GetEC(G4ThreeVector(vStepX * i,
141  vStepY * i,
142  vStepZ * i),
143  vLattice).mag() ) > vMaximum) {
144  vMaximum = vValue;
145  }
146  }
147  }
148  }
149 
150  return vMaximum;
151 }
CLHEP::Hep3Vector G4ThreeVector
G4ThreeVector GetSize()
Definition: XUnitCell.cc:48
double x() const
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
double y() const
double z() const
XUnitCell * GetXUnitCell(G4VPhysicalVolume *)
double G4double
Definition: G4Types.hh:76
#define DBL_MAX
Definition: templates.hh:83
G4VPhysicalVolume * GetVolume()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputeMinimum()

G4double XVCrystalCharacteristic::ComputeMinimum ( XPhysicalLattice vLattice)
virtual

Reimplemented in XVCrystalPlanarAnalytical, XCrystalPlanarMoliereTempPotential, and XCrystalPlanarMolierePotential.

Definition at line 155 of file XVCrystalCharacteristic.cc.

155  {
156  unsigned int vPrecisionX = 1024;
157  unsigned int vPrecisionY = 1024;
158  unsigned int vPrecisionZ = 1024;
159 
160  G4VPhysicalVolume* vVolume = vLattice->GetVolume();
161  G4double vStepX = GetXUnitCell(vVolume)->GetSize().x() / vPrecisionX;
162  G4double vStepY = GetXUnitCell(vVolume)->GetSize().y() / vPrecisionY;
163  G4double vStepZ = GetXUnitCell(vVolume)->GetSize().z() / vPrecisionZ;
164 
165  G4double vMinimum = DBL_MAX;
166  G4double vValue;
167 
168  for(unsigned int i=0;i<vPrecisionX;i++){
169  for(unsigned int j=0;j<vPrecisionY;j++){
170  for(unsigned int k=0;k<vPrecisionZ;k++){
171  if( (vValue = GetEC(G4ThreeVector(vStepX * i,
172  vStepY * i,
173  vStepZ * i),
174  vLattice).mag() ) < vMinimum){
175  vMinimum = vValue;}
176  }
177  }
178  }
179 
180  return vMinimum;
181 }
CLHEP::Hep3Vector G4ThreeVector
G4ThreeVector GetSize()
Definition: XUnitCell.cc:48
double x() const
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
double y() const
double z() const
XUnitCell * GetXUnitCell(G4VPhysicalVolume *)
double G4double
Definition: G4Types.hh:76
#define DBL_MAX
Definition: templates.hh:83
G4VPhysicalVolume * GetVolume()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ComputePositionInUnitCell()

G4ThreeVector XVCrystalCharacteristic::ComputePositionInUnitCell ( G4ThreeVector  ,
XPhysicalLattice  
)
virtual

Reimplemented in XVCrystalPlanarAnalytical, and XCrystalCharacteristicArray.

Definition at line 100 of file XVCrystalCharacteristic.cc.

100  {
101  return G4ThreeVector(-1.,-1.,-1.);
102 }
CLHEP::Hep3Vector G4ThreeVector
Here is the caller graph for this function:

◆ ComputeTFScreeningRadius()

G4double XVCrystalCharacteristic::ComputeTFScreeningRadius ( XPhysicalLattice vLattice)
virtual

Definition at line 87 of file XVCrystalCharacteristic.cc.

87  {
88 
89  G4double vTFSR = CLHEP::Bohr_radius * 0.88534;
90 
91  double vZ = vLattice->GetXUnitCell()->GetBase(0)->GetElement()->GetZ();
92  vTFSR /= (std::pow(vZ,0.333333333));
93 
94  return vTFSR;
95 }
G4Element * GetElement()
Definition: XLogicalBase.cc:53
static const double Bohr_radius
XUnitCell * GetXUnitCell()
XLogicalBase * GetBase(G4int)
Definition: XUnitCell.cc:60
double G4double
Definition: G4Types.hh:76
G4double GetZ() const
Definition: G4Element.hh:131
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetEC()

G4ThreeVector XVCrystalCharacteristic::GetEC ( G4ThreeVector  vPosition,
XPhysicalLattice vLattice 
)

Definition at line 75 of file XVCrystalCharacteristic.cc.

75  {
76  if(IsInitialized(vLattice)){
77  return ComputeECFromVector(vPosition);
78  }
79  else{
80  return ComputeEC(vPosition,vLattice);
81  }
82 }
virtual G4ThreeVector ComputeECFromVector(G4ThreeVector)=0
G4bool IsInitialized(XPhysicalLattice *)
virtual G4ThreeVector ComputeEC(G4ThreeVector, XPhysicalLattice *)=0
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetLogicalLattice()

XLogicalLattice * XVCrystalCharacteristic::GetLogicalLattice ( G4VPhysicalVolume vVolume)

Definition at line 58 of file XVCrystalCharacteristic.cc.

58  {
59  return GetXPhysicalLattice(vVolume)->GetLogicalLattice();
60 }
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
XLogicalLattice * GetLogicalLattice()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetMaximum()

G4double XVCrystalCharacteristic::GetMaximum ( XPhysicalLattice vLattice)
virtual

Definition at line 106 of file XVCrystalCharacteristic.cc.

106  {
107  if(fMaximum == DBL_MAX){
108  fMaximum = ComputeMaximum(vLattice);
109  }
110  return fMaximum;
111 }
virtual G4double ComputeMaximum(XPhysicalLattice *)
#define DBL_MAX
Definition: templates.hh:83
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetMinimum()

G4double XVCrystalCharacteristic::GetMinimum ( XPhysicalLattice vLattice)
virtual

Definition at line 115 of file XVCrystalCharacteristic.cc.

115  {
116  if(fMinimum == DBL_MAX){
117  fMinimum = ComputeMinimum(vLattice);
118  }
119  return fMinimum;
120 }
virtual G4double ComputeMinimum(XPhysicalLattice *)
#define DBL_MAX
Definition: templates.hh:83
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetXPhysicalLattice()

XPhysicalLattice * XVCrystalCharacteristic::GetXPhysicalLattice ( G4VPhysicalVolume vVolume)

Definition at line 44 of file XVCrystalCharacteristic.cc.

44  {
45  return fLatticeManager->GetXPhysicalLattice(vVolume);
46 }
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
XLatticeManager3 * fLatticeManager
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetXUnitCell()

XUnitCell * XVCrystalCharacteristic::GetXUnitCell ( G4VPhysicalVolume vVolume)

Definition at line 51 of file XVCrystalCharacteristic.cc.

51  {
52  return GetXPhysicalLattice(vVolume)->GetXUnitCell();
53 }
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
XUnitCell * GetXUnitCell()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ InitializePhysicalLattice()

void XVCrystalCharacteristic::InitializePhysicalLattice ( XPhysicalLattice vLattice)

Definition at line 65 of file XVCrystalCharacteristic.cc.

65  {
66  if(fPhysicalLattice != vLattice){
67  fPhysicalLattice = vLattice;
69  }
70 }
XPhysicalLattice * fPhysicalLattice
virtual void InitializeVector()=0
Here is the call graph for this function:
Here is the caller graph for this function:

◆ InitializeVector()

virtual void XVCrystalCharacteristic::InitializeVector ( )
pure virtual

Implemented in XVCrystalPlanarAnalytical.

Here is the caller graph for this function:

◆ IsInitialized()

G4bool XVCrystalCharacteristic::IsInitialized ( XPhysicalLattice vLattice)

Definition at line 185 of file XVCrystalCharacteristic.cc.

185  {
186  if(vLattice == fPhysicalLattice){
187  return true;
188  }
189  else{
190  return false;
191  }
192 }
XPhysicalLattice * fPhysicalLattice
Here is the caller graph for this function:

◆ PrintOnFile()

virtual void XVCrystalCharacteristic::PrintOnFile ( const G4String ,
XPhysicalLattice ,
G4double  = 1 
)
pure virtual

Implemented in XVCrystalPlanarAnalytical.

Here is the caller graph for this function:

◆ ReadFromECHARM()

virtual void XVCrystalCharacteristic::ReadFromECHARM ( const G4String ,
G4double  = 1 
)
pure virtual

Implemented in XVCrystalPlanarAnalytical.

Here is the caller graph for this function:

◆ ReadFromFile()

virtual void XVCrystalCharacteristic::ReadFromFile ( const G4String ,
XPhysicalLattice ,
G4double  = 1 
)
pure virtual

Implemented in XVCrystalPlanarAnalytical.

Member Data Documentation

◆ fLatticeManager

XLatticeManager3* XVCrystalCharacteristic::fLatticeManager
private

Definition at line 37 of file XVCrystalCharacteristic.hh.

◆ fMaximum

G4double XVCrystalCharacteristic::fMaximum
protected

Definition at line 40 of file XVCrystalCharacteristic.hh.

◆ fMinimum

G4double XVCrystalCharacteristic::fMinimum
protected

Definition at line 41 of file XVCrystalCharacteristic.hh.

◆ fPhysicalLattice

XPhysicalLattice* XVCrystalCharacteristic::fPhysicalLattice
protected

Definition at line 42 of file XVCrystalCharacteristic.hh.

◆ fVectorEC

G4PhysicsVector* XVCrystalCharacteristic::fVectorEC
protected

Definition at line 43 of file XVCrystalCharacteristic.hh.


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