Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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
 

Detailed Description

Definition at line 37 of file XVCrystalCharacteristic.hh.

Constructor & Destructor Documentation

XVCrystalCharacteristic::XVCrystalCharacteristic ( )

Definition at line 32 of file XVCrystalCharacteristic.cc.

32  {
33  fLatticeManager = XLatticeManager3::GetXLatticeManager();
34 
35  fMaximum = DBL_MAX;
36  fMinimum = DBL_MAX;
37 }
static XLatticeManager3 * GetXLatticeManager()
#define DBL_MAX
Definition: templates.hh:83

Here is the call graph for this function:

XVCrystalCharacteristic::~XVCrystalCharacteristic ( )

Definition at line 41 of file XVCrystalCharacteristic.cc.

41  {
42 }

Member Function Documentation

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

Implemented in XVCrystalPlanarAnalytical, and XCrystalCharacteristicArray.

Here is the caller graph for this function:

virtual G4ThreeVector XVCrystalCharacteristic::ComputeECFromVector ( G4ThreeVector  )
pure virtual

Implemented in XVCrystalPlanarAnalytical.

Here is the caller graph for this function:

G4double XVCrystalCharacteristic::ComputeMaximum ( XPhysicalLattice vLattice)
virtual

Reimplemented in XVCrystalPlanarAnalytical, XCrystalPlanarMoliereTempPotential, and XCrystalPlanarMolierePotential.

Definition at line 127 of file XVCrystalCharacteristic.cc.

127  {
128  unsigned int vPrecisionX = 1024;
129  unsigned int vPrecisionY = 1024;
130  unsigned int vPrecisionZ = 1024;
131 
132  G4VPhysicalVolume* vVolume = vLattice->GetVolume();
133  G4double vStepX = GetXUnitCell(vVolume)->GetSize().x() / vPrecisionX;
134  G4double vStepY = GetXUnitCell(vVolume)->GetSize().y() / vPrecisionY;
135  G4double vStepZ = GetXUnitCell(vVolume)->GetSize().z() / vPrecisionZ;
136 
137  G4double vMaximum = -DBL_MAX;
138  G4double vValue;
139 
140  for(unsigned int i=0;i<vPrecisionX;i++){
141  for(unsigned int j=0;j<vPrecisionY;j++){
142  for(unsigned int k=0;k<vPrecisionZ;k++){
143  if( (vValue = GetEC(G4ThreeVector(vStepX * i,
144  vStepY * i,
145  vStepZ * i),
146  vLattice).mag() ) > vMaximum) {
147  vMaximum = vValue;
148  }
149  }
150  }
151  }
152 
153  return vMaximum;
154 }
CLHEP::Hep3Vector G4ThreeVector
double x() const
double z() const
G4ThreeVector GetSize()
Definition: XUnitCell.cc:51
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
double y() 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:

G4double XVCrystalCharacteristic::ComputeMinimum ( XPhysicalLattice vLattice)
virtual

Reimplemented in XVCrystalPlanarAnalytical, XCrystalPlanarMoliereTempPotential, and XCrystalPlanarMolierePotential.

Definition at line 158 of file XVCrystalCharacteristic.cc.

158  {
159  unsigned int vPrecisionX = 1024;
160  unsigned int vPrecisionY = 1024;
161  unsigned int vPrecisionZ = 1024;
162 
163  G4VPhysicalVolume* vVolume = vLattice->GetVolume();
164  G4double vStepX = GetXUnitCell(vVolume)->GetSize().x() / vPrecisionX;
165  G4double vStepY = GetXUnitCell(vVolume)->GetSize().y() / vPrecisionY;
166  G4double vStepZ = GetXUnitCell(vVolume)->GetSize().z() / vPrecisionZ;
167 
168  G4double vMinimum = DBL_MAX;
169  G4double vValue;
170 
171  for(unsigned int i=0;i<vPrecisionX;i++){
172  for(unsigned int j=0;j<vPrecisionY;j++){
173  for(unsigned int k=0;k<vPrecisionZ;k++){
174  if( (vValue = GetEC(G4ThreeVector(vStepX * i,
175  vStepY * i,
176  vStepZ * i),
177  vLattice).mag() ) < vMinimum){
178  vMinimum = vValue;}
179  }
180  }
181  }
182 
183  return vMinimum;
184 }
CLHEP::Hep3Vector G4ThreeVector
double x() const
double z() const
G4ThreeVector GetSize()
Definition: XUnitCell.cc:51
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
double y() 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:

G4ThreeVector XVCrystalCharacteristic::ComputePositionInUnitCell ( G4ThreeVector  ,
XPhysicalLattice  
)
virtual

Reimplemented in XVCrystalPlanarAnalytical, and XCrystalCharacteristicArray.

Definition at line 103 of file XVCrystalCharacteristic.cc.

103  {
104  return G4ThreeVector(-1.,-1.,-1.);
105 }
CLHEP::Hep3Vector G4ThreeVector
G4double XVCrystalCharacteristic::ComputeTFScreeningRadius ( XPhysicalLattice vLattice)
virtual

Definition at line 90 of file XVCrystalCharacteristic.cc.

90  {
91 
92  G4double vTFSR = CLHEP::Bohr_radius * 0.88534;
93 
94  double vZ = vLattice->GetXUnitCell()->GetBase(0)->GetElement()->GetZ();
95  vTFSR /= (std::pow(vZ,0.333333333));
96 
97  return vTFSR;
98 }
G4Element * GetElement()
Definition: XLogicalBase.cc:56
static constexpr double Bohr_radius
G4double GetZ() const
Definition: G4Element.hh:131
XUnitCell * GetXUnitCell()
XLogicalBase * GetBase(G4int)
Definition: XUnitCell.cc:63
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 78 of file XVCrystalCharacteristic.cc.

78  {
79  if(IsInitialized(vLattice)){
80  return ComputeECFromVector(vPosition);
81  }
82  else{
83  return ComputeEC(vPosition,vLattice);
84  }
85 }
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:

XLogicalLattice * XVCrystalCharacteristic::GetLogicalLattice ( G4VPhysicalVolume vVolume)

Definition at line 61 of file XVCrystalCharacteristic.cc.

61  {
62  return GetXPhysicalLattice(vVolume)->GetLogicalLattice();
63 }
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
XLogicalLattice * GetLogicalLattice()

Here is the call graph for this function:

G4double XVCrystalCharacteristic::GetMaximum ( XPhysicalLattice vLattice)
virtual

Definition at line 109 of file XVCrystalCharacteristic.cc.

109  {
110  if(fMaximum == DBL_MAX){
111  fMaximum = ComputeMaximum(vLattice);
112  }
113  return fMaximum;
114 }
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:

G4double XVCrystalCharacteristic::GetMinimum ( XPhysicalLattice vLattice)
virtual

Definition at line 118 of file XVCrystalCharacteristic.cc.

118  {
119  if(fMinimum == DBL_MAX){
120  fMinimum = ComputeMinimum(vLattice);
121  }
122  return fMinimum;
123 }
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:

XPhysicalLattice * XVCrystalCharacteristic::GetXPhysicalLattice ( G4VPhysicalVolume vVolume)

Definition at line 47 of file XVCrystalCharacteristic.cc.

47  {
48  return fLatticeManager->GetXPhysicalLattice(vVolume);
49 }
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)

Here is the call graph for this function:

Here is the caller graph for this function:

XUnitCell * XVCrystalCharacteristic::GetXUnitCell ( G4VPhysicalVolume vVolume)

Definition at line 54 of file XVCrystalCharacteristic.cc.

54  {
55  return GetXPhysicalLattice(vVolume)->GetXUnitCell();
56 }
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
XUnitCell * GetXUnitCell()

Here is the call graph for this function:

Here is the caller graph for this function:

void XVCrystalCharacteristic::InitializePhysicalLattice ( XPhysicalLattice vLattice)

Definition at line 68 of file XVCrystalCharacteristic.cc.

68  {
69  if(fPhysicalLattice != vLattice){
70  fPhysicalLattice = vLattice;
72  }
73 }
XPhysicalLattice * fPhysicalLattice
virtual void InitializeVector()=0

Here is the call graph for this function:

Here is the caller graph for this function:

virtual void XVCrystalCharacteristic::InitializeVector ( )
pure virtual

Implemented in XVCrystalPlanarAnalytical.

Here is the caller graph for this function:

G4bool XVCrystalCharacteristic::IsInitialized ( XPhysicalLattice vLattice)

Definition at line 188 of file XVCrystalCharacteristic.cc.

188  {
189  if(vLattice == fPhysicalLattice){
190  return true;
191  }
192  else{
193  return false;
194  }
195 }
XPhysicalLattice * fPhysicalLattice

Here is the caller graph for this function:

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

Implemented in XVCrystalPlanarAnalytical.

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

Implemented in XVCrystalPlanarAnalytical.

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

Implemented in XVCrystalPlanarAnalytical.

Member Data Documentation

G4double XVCrystalCharacteristic::fMaximum
protected

Definition at line 43 of file XVCrystalCharacteristic.hh.

G4double XVCrystalCharacteristic::fMinimum
protected

Definition at line 44 of file XVCrystalCharacteristic.hh.

XPhysicalLattice* XVCrystalCharacteristic::fPhysicalLattice
protected

Definition at line 45 of file XVCrystalCharacteristic.hh.

G4PhysicsVector* XVCrystalCharacteristic::fVectorEC
protected

Definition at line 46 of file XVCrystalCharacteristic.hh.


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