45 fNumberOfPlanes = vNumberOfPlanes;
51 return fNumberOfPlanes;
70 vInterplanarDistance ,
84 vX += ((
int( - vX / vInterplanarPeriod) + 1.0 )
85 * vInterplanarPeriod);
87 else if( vX > vInterplanarPeriod ){
88 vX -= (
int( vX / vInterplanarPeriod) * vInterplanarPeriod );
105 if((vPositionX >= 0.) &&
106 (vPositionX < vInterplanarPeriod)){
109 else if(vPositionX == vInterplanarPeriod){
113 vPositionX -= std::fmod(vPosition.
x(),vInterplanarPeriod)
114 * vInterplanarPeriod;
122 unsigned int vPrecision = 1024;
130 for(
unsigned int i=0;i<vPrecision;i++){
132 > vMaximum) {vMaximum = vValue;}
140 unsigned int vPrecision = 1024;
148 for(
unsigned int i=0;i<vPrecision;i++){
150 < vMinimum) {vMinimum = vValue;}
160 std::ofstream vFileOut;
161 vFileOut.open(filename);
162 vFileOut <<
"pos val" << std::endl;
169 vXposition = double(i) / double(imax) * vInterplanarPeriod;
172 vFileOut << std::endl;
182 std::ifstream vFileIn;
183 vFileIn.open(filename);
184 std::string vTempString;
185 vFileIn >> vTempString >> vTempString;
189 std::vector<double> vTempXvector;
190 std::vector<double> vTempValvector;
192 while(!vFileIn.eof()){
195 vTempXvector.push_back(vTempX);
196 vTempValvector.push_back(vTempVal);
202 G4double vInterplanarPeriod = vTempXvector.at(imax-1);
205 vInterplanarPeriod*(imax-1)/imax,
216 std::ifstream vFileIn;
217 vFileIn.open(filename);
235 vTempX *= vConversion;
241 G4cout <<
"XVCrystalPlanarAnalytical::ReadFromECHARM() - " <<
242 vConversion <<
" " << imax <<
" " << xmax <<
" " <<
257 vInterplanarPeriod*(imax-1)/imax,
260 vXposition = double(i) / double(imax) * vInterplanarPeriod;
Definition of the XVCrystalPlanarAnalytical class.
virtual G4double ComputeECForSinglePlane(G4double, XPhysicalLattice *)=0
CLHEP::Hep3Vector G4ThreeVector
virtual void ReadFromFile(const G4String &, XPhysicalLattice *, G4double=1)
XPhysicalLattice * GetXPhysicalLattice(G4VPhysicalVolume *)
void SetNumberOfPlanes(G4int)
virtual G4double ComputeMaximum(XPhysicalLattice *)
G4GLOB_DLL std::ostream G4cout
static constexpr double meter
XPhysicalLattice * fPhysicalLattice
G4ThreeVector ComputeECFromVector(G4ThreeVector)
void PutValue(size_t index, G4double theValue)
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
G4double Value(G4double theEnergy, size_t &lastidx) const
G4ThreeVector ComputePositionInUnitCell(G4ThreeVector, XPhysicalLattice *)
virtual void PrintOnFile(const G4String &, XPhysicalLattice *, G4double)
G4ThreeVector ComputeEC(G4ThreeVector, XPhysicalLattice *)
G4ThreeVector GetEC(G4ThreeVector, XPhysicalLattice *)
virtual G4double ComputeMinimum(XPhysicalLattice *)
~XVCrystalPlanarAnalytical()
G4PhysicsVector * fVectorEC
virtual void ReadFromECHARM(const G4String &, G4double=1)
XVCrystalPlanarAnalytical()
G4int GetNumberOfPlanes()
G4double ComputeInterplanarPeriod()
G4VPhysicalVolume * GetVolume()
static constexpr double angstrom