Geant4-11
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
G4PhysicsLogVector Class Reference

#include <G4PhysicsLogVector.hh>

Inheritance diagram for G4PhysicsLogVector:
G4PhysicsVector

Public Member Functions

std::size_t ComputeLogVectorBin (const G4double logenergy) const
 
void DumpValues (G4double unitE=1.0, G4double unitV=1.0) const
 
G4double Energy (const std::size_t index) const
 
void FillSecondDerivatives (const G4SplineType=G4SplineType::Base, const G4double dir1=0.0, const G4double dir2=0.0)
 
std::size_t FindBin (const G4double energy, std::size_t idx) const
 
G4double FindLinearEnergy (const G4double rand) const
 
 G4PhysicsLogVector (G4bool spline=false)
 
 G4PhysicsLogVector (G4double Emin, G4double Emax, std::size_t Nbin, G4bool spline=false)
 
G4double GetEnergy (const G4double value) const
 
G4double GetLowEdgeEnergy (const std::size_t index) const
 
G4double GetMaxEnergy () const
 
G4double GetMaxValue () const
 
G4double GetMinEnergy () const
 
G4double GetMinValue () const
 
G4bool GetSpline () const
 
G4PhysicsVectorType GetType () const
 
G4double GetValue (const G4double energy, G4bool &isOutRange) const
 
std::size_t GetVectorLength () const
 
G4double LogVectorValue (const G4double energy, const G4double theLogEnergy) const
 
G4bool operator!= (const G4PhysicsVector &right) const =delete
 
G4double operator() (const std::size_t index) const
 
G4bool operator== (const G4PhysicsVector &right) const =delete
 
G4double operator[] (const std::size_t index) const
 
void PutValue (const std::size_t index, const G4double value)
 
G4bool Retrieve (std::ifstream &fIn, G4bool ascii=false)
 
void ScaleVector (const G4double factorE, const G4double factorV)
 
void SetVerboseLevel (G4int value)
 
G4bool Store (std::ofstream &fOut, G4bool ascii=false) const
 
G4double Value (const G4double energy) const
 
G4double Value (const G4double energy, std::size_t &lastidx) const
 
virtual ~G4PhysicsLogVector ()=default
 

Protected Member Functions

void Initialise () final
 
void PrintPutValueError (std::size_t index, G4double value, const G4String &text)
 

Protected Attributes

std::vector< G4doublebinVector
 
std::vector< G4doubledataVector
 
G4double edgeMax = 0.0
 
G4double edgeMin = 0.0
 
G4int idxmax = 0
 
G4double invdBin = 0.0
 
G4double logemin = 0.0
 
std::size_t numberOfNodes = 0
 
std::vector< G4doublesecDerivative
 
G4PhysicsVectorType type = T_G4PhysicsFreeVector
 
G4int verboseLevel = 0
 

Private Member Functions

void ComputeSecDerivative0 ()
 
void ComputeSecDerivative1 ()
 
void ComputeSecDerivative2 (const G4double firstPointDerivative, const G4double endPointDerivative)
 
std::size_t GetBin (const G4double energy) const
 
G4double Interpolation (const std::size_t idx, const G4double energy) const
 

Private Attributes

G4bool useSpline = false
 

Detailed Description

Definition at line 47 of file G4PhysicsLogVector.hh.

Constructor & Destructor Documentation

◆ G4PhysicsLogVector() [1/2]

G4PhysicsLogVector::G4PhysicsLogVector ( G4bool  spline = false)
explicit

Definition at line 40 of file G4PhysicsLogVector.cc.

41 : G4PhysicsVector(spline)
42{
44}
@ T_G4PhysicsLogVector
G4PhysicsVectorType type
G4PhysicsVector(G4bool spline=false)

References T_G4PhysicsLogVector, and G4PhysicsVector::type.

◆ G4PhysicsLogVector() [2/2]

G4PhysicsLogVector::G4PhysicsLogVector ( G4double  Emin,
G4double  Emax,
std::size_t  Nbin,
G4bool  spline = false 
)
explicit

Definition at line 47 of file G4PhysicsLogVector.cc.

49 : G4PhysicsVector(spline)
50{
51 numberOfNodes = Nbin + 1;
52 if(Nbin < 2 || Emin >= Emax || Emin <= 0.0)
53 {
55 ed << "G4PhysicsLogVector with wrong parameters: theNbin= " << Nbin
56 << " Emin= " << Emin << " Emax= " << Emax;
57 G4Exception("G4PhysicsLogVector::G4PhysicsLogVector()", "glob03",
58 FatalException, ed, "Nbins should be > 1 and Emax > Emin > 0");
59 }
60 if(numberOfNodes < 3)
61 {
62 numberOfNodes = 3;
63 }
65
67 dataVector.resize(numberOfNodes, 0.0);
68 binVector[0] = Emin;
70 Initialise();
71
72 for(G4int i = 1; i <= idxmax; ++i)
73 {
75 }
76}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
static const G4double Emax
static const G4double Emin
int G4int
Definition: G4Types.hh:85
std::size_t numberOfNodes
std::vector< G4double > dataVector
std::vector< G4double > binVector

References G4PhysicsVector::binVector, G4PhysicsVector::dataVector, G4PhysicsVector::edgeMin, Emax, Emin, FatalException, G4Exception(), G4Exp(), G4PhysicsVector::idxmax, Initialise(), G4PhysicsVector::invdBin, G4PhysicsVector::numberOfNodes, T_G4PhysicsLogVector, and G4PhysicsVector::type.

◆ ~G4PhysicsLogVector()

virtual G4PhysicsLogVector::~G4PhysicsLogVector ( )
virtualdefault

Member Function Documentation

◆ ComputeLogVectorBin()

std::size_t G4PhysicsVector::ComputeLogVectorBin ( const G4double  logenergy) const
inlineinherited

◆ ComputeSecDerivative0()

void G4PhysicsVector::ComputeSecDerivative0 ( )
privateinherited

Definition at line 272 of file G4PhysicsVector.cc.

274{
275 std::size_t n = numberOfNodes - 1;
276
277 for(std::size_t i = 1; i < n; ++i)
278 {
279 secDerivative[i] = 3.0 *
280 ((dataVector[i + 1] - dataVector[i]) / (binVector[i + 1] - binVector[i]) -
281 (dataVector[i] - dataVector[i - 1]) /
282 (binVector[i] - binVector[i - 1])) /
283 (binVector[i + 1] - binVector[i - 1]);
284 }
287}
std::vector< G4double > secDerivative

References G4PhysicsVector::binVector, G4PhysicsVector::dataVector, CLHEP::detail::n, G4PhysicsVector::numberOfNodes, and G4PhysicsVector::secDerivative.

Referenced by G4PhysicsVector::FillSecondDerivatives().

◆ ComputeSecDerivative1()

void G4PhysicsVector::ComputeSecDerivative1 ( )
privateinherited

Definition at line 290 of file G4PhysicsVector.cc.

294{
295 G4int n = numberOfNodes - 1;
296 G4double* u = new G4double[n];
297 G4double p, sig;
298
299 u[1] = ((dataVector[2] - dataVector[1]) / (binVector[2] - binVector[1]) -
300 (dataVector[1] - dataVector[0]) / (binVector[1] - binVector[0]));
301 u[1] = 6.0 * u[1] * (binVector[2] - binVector[1]) /
302 ((binVector[2] - binVector[0]) * (binVector[2] - binVector[0]));
303
304 // Decomposition loop for tridiagonal algorithm. secDerivative[i]
305 // and u[i] are used for temporary storage of the decomposed factors.
306
307 secDerivative[1] = (2.0 * binVector[1] - binVector[0] - binVector[2]) /
308 (2.0 * binVector[2] - binVector[0] - binVector[1]);
309
310 for(G4int i = 2; i < n - 1; ++i)
311 {
312 sig =
313 (binVector[i] - binVector[i - 1]) / (binVector[i + 1] - binVector[i - 1]);
314 p = sig * secDerivative[i - 1] + 2.0;
315 secDerivative[i] = (sig - 1.0) / p;
316 u[i] =
317 (dataVector[i + 1] - dataVector[i]) / (binVector[i + 1] - binVector[i]) -
318 (dataVector[i] - dataVector[i - 1]) / (binVector[i] - binVector[i - 1]);
319 u[i] =
320 (6.0 * u[i] / (binVector[i + 1] - binVector[i - 1])) - sig * u[i - 1] / p;
321 }
322
323 sig =
324 (binVector[n - 1] - binVector[n - 2]) / (binVector[n] - binVector[n - 2]);
325 p = sig * secDerivative[n - 3] + 2.0;
326 u[n - 1] =
327 (dataVector[n] - dataVector[n - 1]) / (binVector[n] - binVector[n - 1]) -
328 (dataVector[n - 1] - dataVector[n - 2]) /
329 (binVector[n - 1] - binVector[n - 2]);
330 u[n - 1] = 6.0 * sig * u[n - 1] / (binVector[n] - binVector[n - 2]) -
331 (2.0 * sig - 1.0) * u[n - 2] / p;
332
333 p = (1.0 + sig) + (2.0 * sig - 1.0) * secDerivative[n - 2];
334 secDerivative[n - 1] = u[n - 1] / p;
335
336 // The back-substitution loop for the triagonal algorithm of solving
337 // a linear system of equations.
338
339 for(G4int k = n - 2; k > 1; --k)
340 {
341 secDerivative[k] *=
342 (secDerivative[k + 1] - u[k] * (binVector[k + 1] - binVector[k - 1]) /
343 (binVector[k + 1] - binVector[k]));
344 }
346 (secDerivative[n - 1] - (1.0 - sig) * secDerivative[n - 2]) / sig;
347 sig = 1.0 - ((binVector[2] - binVector[1]) / (binVector[2] - binVector[0]));
348 secDerivative[1] *= (secDerivative[2] - u[1] / (1.0 - sig));
349 secDerivative[0] = (secDerivative[1] - sig * secDerivative[2]) / (1.0 - sig);
350
351 delete[] u;
352}
double G4double
Definition: G4Types.hh:83

References G4PhysicsVector::binVector, G4PhysicsVector::dataVector, CLHEP::detail::n, G4PhysicsVector::numberOfNodes, and G4PhysicsVector::secDerivative.

Referenced by G4PhysicsVector::FillSecondDerivatives().

◆ ComputeSecDerivative2()

void G4PhysicsVector::ComputeSecDerivative2 ( const G4double  firstPointDerivative,
const G4double  endPointDerivative 
)
privateinherited

Definition at line 355 of file G4PhysicsVector.cc.

361{
362 G4int n = numberOfNodes - 1;
363 G4double* u = new G4double[n];
364 G4double p, sig, un;
365
366 u[0] = (6.0 / (binVector[1] - binVector[0])) *
367 ((dataVector[1] - dataVector[0]) / (binVector[1] - binVector[0]) -
368 firstPointDerivative);
369
370 secDerivative[0] = -0.5;
371
372 // Decomposition loop for tridiagonal algorithm. secDerivative[i]
373 // and u[i] are used for temporary storage of the decomposed factors.
374
375 for(G4int i = 1; i < n; ++i)
376 {
377 sig =
378 (binVector[i] - binVector[i - 1]) / (binVector[i + 1] - binVector[i - 1]);
379 p = sig * (secDerivative[i - 1]) + 2.0;
380 secDerivative[i] = (sig - 1.0) / p;
381 u[i] =
382 (dataVector[i + 1] - dataVector[i]) / (binVector[i + 1] - binVector[i]) -
383 (dataVector[i] - dataVector[i - 1]) / (binVector[i] - binVector[i - 1]);
384 u[i] =
385 6.0 * u[i] / (binVector[i + 1] - binVector[i - 1]) - sig * u[i - 1] / p;
386 }
387
388 sig =
389 (binVector[n - 1] - binVector[n - 2]) / (binVector[n] - binVector[n - 2]);
390 p = sig * secDerivative[n - 2] + 2.0;
391 un = (6.0 / (binVector[n] - binVector[n - 1])) *
392 (endPointDerivative - (dataVector[n] - dataVector[n - 1]) /
393 (binVector[n] - binVector[n - 1])) -
394 u[n - 1] / p;
395 secDerivative[n] = un / (secDerivative[n - 1] + 2.0);
396
397 // The back-substitution loop for the triagonal algorithm of solving
398 // a linear system of equations.
399
400 for(G4int k = n - 1; k > 0; --k)
401 {
402 secDerivative[k] *=
403 (secDerivative[k + 1] - u[k] * (binVector[k + 1] - binVector[k - 1]) /
404 (binVector[k + 1] - binVector[k]));
405 }
406 secDerivative[0] = 0.5 * (u[0] - secDerivative[1]);
407
408 delete[] u;
409}

References G4PhysicsVector::binVector, G4PhysicsVector::dataVector, CLHEP::detail::n, G4PhysicsVector::numberOfNodes, and G4PhysicsVector::secDerivative.

Referenced by G4PhysicsVector::FillSecondDerivatives().

◆ DumpValues()

void G4PhysicsVector::DumpValues ( G4double  unitE = 1.0,
G4double  unitV = 1.0 
) const
inherited

Definition at line 163 of file G4PhysicsVector.cc.

164{
165 for(std::size_t i = 0; i < numberOfNodes; ++i)
166 {
167 G4cout << binVector[i] / unitE << " " << dataVector[i] / unitV
168 << G4endl;
169 }
170}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout

References G4PhysicsVector::binVector, G4PhysicsVector::dataVector, G4cout, G4endl, and G4PhysicsVector::numberOfNodes.

Referenced by G4OpWLS::DumpPhysicsTable(), G4OpWLS2::DumpPhysicsTable(), G4PhysicsVector::FillSecondDerivatives(), G4SPSEneDistribution::GenUserHistEnergies(), and G4SPSEneDistribution::LinearInterpolation().

◆ Energy()

G4double G4PhysicsVector::Energy ( const std::size_t  index) const
inlineinherited

Referenced by G4SPSEneDistribution::ArbInterpolate(), G4EmCorrections::BarkasCorrection(), G4DiffuseElasticV2::BuildAngleTable(), G4PolarizedCompton::BuildAsymmetryTable(), G4PolarizedAnnihilation::BuildAsymmetryTables(), G4PolarizedIonisation::BuildAsymmetryTables(), G4EmCorrections::BuildCorrectionVector(), G4KokoulinMuonNuclearXS::BuildCrossSectionTable(), G4LossTableBuilder::BuildInverseRangeTable(), G4VLEPTSModel::BuildMeanFreePathTable(), G4Cerenkov::BuildPhysicsTable(), G4Scintillation::BuildPhysicsTable(), G4OpWLS::BuildPhysicsTable(), G4OpWLS2::BuildPhysicsTable(), G4LossTableBuilder::BuildRangeTable(), G4PenelopeBremsstrahlungFS::BuildScaledXSTable(), G4LossTableBuilder::BuildTableForModel(), G4AdjointCSManager::BuildTotalSigmaTables(), G4MaterialPropertiesTable::CalculateGROUPVEL(), G4OpRayleigh::CalculateRayleighMeanFreePaths(), G4PenelopeRayleighModelMI::CalculateThetaAndAngFun(), G4eeToHadronsModel::ComputeCMCrossSectionPerElectron(), G4JAEAElasticScatteringModel::ComputeCrossSectionPerAtom(), G4JAEAPolarizedElasticScatteringModel::ComputeCrossSectionPerAtom(), G4LivermoreComptonModel::ComputeCrossSectionPerAtom(), G4LivermorePolarizedComptonModel::ComputeCrossSectionPerAtom(), G4LivermorePolarizedRayleighModel::ComputeCrossSectionPerAtom(), G4LivermoreRayleighModel::ComputeCrossSectionPerAtom(), G4LowEPComptonModel::ComputeCrossSectionPerAtom(), G4LowEPPolarizedComptonModel::ComputeCrossSectionPerAtom(), G4TablesForExtrapolator::ComputeElectronDEDX(), G4TablesForExtrapolator::ComputeMuonDEDX(), G4TablesForExtrapolator::ComputeProtonDEDX(), G4TablesForExtrapolator::ComputeTrasportXS(), G4PenelopeRayleighModelMI::CrossSectionPerVolume(), G4PAIModelData::CrossSectionPerVolume(), G4PAIPhotData::CrossSectionPerVolume(), G4PAIModelData::DEDXPerVolume(), G4PAIPhotData::DEDXPerVolume(), G4EmModelManager::DumpModelList(), G4EmModelManager::FillDEDXVector(), G4EmModelManager::FillLambdaVector(), G4HadElementSelector::G4HadElementSelector(), G4LivermorePhotoElectricModel::GetBindingEnergy(), G4ICRU90StoppingData::GetDEDX(), G4PAIPhotData::GetEnergyPhotonTransfer(), G4PAIPhotData::GetEnergyPlasmonTransfer(), G4PAIModelData::GetEnergyTransfer(), G4PAIPhotData::GetEnergyTransfer(), G4PAIPhotData::GetPlasmonRatio(), G4PAIPhotData::Initialise(), G4PAIModelData::Initialise(), G4eeToHadronsModel::Initialise(), G4eplusTo2GammaOKVIModel::Initialise(), G4WentzelVIModel::Initialise(), G4DNABornExcitationModel2::Initialise(), G4HadronXSDataTable::Initialise(), G4NeutronCaptureXS::IsoCrossSection(), G4Cerenkov::PostStepDoIt(), G4GDMLWriteMaterials::PropertyVectorWrite(), G4IonICRU73Data::RetrieveVector(), G4PAIPhotData::SampleAlongStepPhotonTransfer(), G4PAIPhotData::SampleAlongStepPlasmonTransfer(), G4PAIPhotData::SampleAlongStepTransfer(), G4PAIModelData::SampleAlongStepTransfer(), G4PAIPhotData::SamplePostStepPhotonTransfer(), G4PAIPhotData::SamplePostStepPlasmonTransfer(), G4PAIPhotData::SamplePostStepTransfer(), G4PAIModelData::SamplePostStepTransfer(), G4DiffuseElasticV2::SampleTableThetaCMS(), G4VEnergyLossProcess::ScaledKinEnergyForLoss(), G4VEnergyLossProcess::SetLambdaTable(), and G4VEmProcess::StreamInfo().

◆ FillSecondDerivatives()

void G4PhysicsVector::FillSecondDerivatives ( const G4SplineType  stype = G4SplineType::Base,
const G4double  dir1 = 0.0,
const G4double  dir2 = 0.0 
)
inherited

Definition at line 205 of file G4PhysicsVector.cc.

208{
209 if(!useSpline) { return; }
210 // cannot compute derivatives for less than 5 points
211 const std::size_t nmin = (stype == G4SplineType::Base) ? 5 : 4;
212 if(nmin > numberOfNodes)
213 {
214 if(0 < verboseLevel)
215 {
216 G4cout << "### G4PhysicsVector: spline cannot be used for "
217 << numberOfNodes << " points - spline disabled"
218 << G4endl;
219 DumpValues();
220 }
221 useSpline = false;
222 return;
223 }
224 // check energies of free vector
226 {
227 for(G4int i=0; i<=idxmax; ++i)
228 {
229 if(binVector[i + 1] <= binVector[i])
230 {
231 if(0 < verboseLevel)
232 {
233 G4cout << "### G4PhysicsVector: spline cannot be used, because "
234 << " E[" << i << "]=" << binVector[i]
235 << " >= E[" << i+1 << "]=" << binVector[i + 1]
236 << G4endl;
237 DumpValues();
238 }
239 useSpline = false;
240 return;
241 }
242 }
243 }
244
245 // spline is possible
246 Initialise();
248
249 if(1 < verboseLevel)
250 {
251 G4cout << "### G4PhysicsVector:: FillSecondDerivatives N="
252 << numberOfNodes << G4endl;
253 DumpValues();
254 }
255
256 switch(stype)
257 {
260 break;
261
263 ComputeSecDerivative2(dir1, dir2);
264 break;
265
266 default:
268 }
269}
@ T_G4PhysicsFreeVector
void ComputeSecDerivative0()
void ComputeSecDerivative2(const G4double firstPointDerivative, const G4double endPointDerivative)
void ComputeSecDerivative1()
virtual void Initialise()
void DumpValues(G4double unitE=1.0, G4double unitV=1.0) const

References Base, G4PhysicsVector::binVector, G4PhysicsVector::ComputeSecDerivative0(), G4PhysicsVector::ComputeSecDerivative1(), G4PhysicsVector::ComputeSecDerivative2(), G4PhysicsVector::DumpValues(), FixedEdges, G4cout, G4endl, G4PhysicsVector::idxmax, G4PhysicsVector::Initialise(), G4PhysicsVector::numberOfNodes, G4PhysicsVector::secDerivative, T_G4PhysicsFreeVector, G4PhysicsVector::type, G4PhysicsVector::useSpline, and G4PhysicsVector::verboseLevel.

Referenced by G4WaterStopping::AddData(), G4PSTARStopping::AddData(), G4ASTARStopping::AddData(), G4ICRU90StoppingData::AddData(), G4UPiNuclearCrossSection::AddDataSet(), G4MaterialPropertiesTable::AddProperty(), G4PolarizedCompton::BuildAsymmetryTable(), G4PolarizedAnnihilation::BuildAsymmetryTables(), G4VEnergyLossProcess::BuildDEDXTable(), G4LossTableBuilder::BuildDEDXTable(), G4PenelopeRayleighModel::BuildFormFactorTable(), G4PenelopeRayleighModelMI::BuildFormFactorTable(), G4LossTableBuilder::BuildInverseRangeTable(), G4VEmProcess::BuildLambdaTable(), G4VEnergyLossProcess::BuildLambdaTable(), G4LossTableBuilder::BuildRangeTable(), G4LossTableBuilder::BuildTableForModel(), G4TablesForExtrapolator::ComputeElectronDEDX(), G4TablesForExtrapolator::ComputeMuonDEDX(), G4TablesForExtrapolator::ComputeProtonDEDX(), G4TablesForExtrapolator::ComputeTrasportXS(), G4eplusTo2GammaOKVIModel::Initialise(), G4WentzelVIModel::Initialise(), G4HadronXSDataTable::Initialise(), G4LindhardSorensenData::InitialiseData(), G4PenelopeBremsstrahlungAngular::PrepareTables(), G4ComponentSAIDTotalXS::ReadData(), G4LivermorePhotoElectricModel::ReadData(), G4JAEAElasticScatteringModel::ReadData(), G4JAEAPolarizedElasticScatteringModel::ReadData(), G4LivermoreNuclearGammaConversionModel::ReadData(), G4LivermorePolarizedGammaConversionModel::ReadData(), G4BoldyshevTripletModel::ReadData(), G4IonICRU73Data::ReadElementData(), and G4IonICRU73Data::RetrieveVector().

◆ FindBin()

std::size_t G4PhysicsVector::FindBin ( const G4double  energy,
std::size_t  idx 
) const
inherited

◆ FindLinearEnergy()

G4double G4PhysicsVector::FindLinearEnergy ( const G4double  rand) const
inlineinherited

◆ GetBin()

std::size_t G4PhysicsVector::GetBin ( const G4double  energy) const
inlineprivateinherited

◆ GetEnergy()

G4double G4PhysicsVector::GetEnergy ( const G4double  value) const
inherited

◆ GetLowEdgeEnergy()

G4double G4PhysicsVector::GetLowEdgeEnergy ( const std::size_t  index) const
inlineinherited

Referenced by G4EMDissociation::ApplyYourself(), G4VXTRenergyLoss::BuildAngleForEnergyBank(), G4VXTRenergyLoss::BuildAngleTable(), G4DiffuseElastic::BuildAngleTable(), G4NuclNuclDiffuseElastic::BuildAngleTable(), G4hRDEnergyLoss::BuildDEDXTable(), G4PenelopeIonisationXSHandler::BuildDeltaTable(), G4VXTRenergyLoss::BuildEnergyTable(), G4VXTRenergyLoss::BuildGlobalAngleTable(), G4hRDEnergyLoss::BuildInverseRangeTable(), G4hRDEnergyLoss::BuildLabTimeVector(), G4hImpactIonisation::BuildLambdaTable(), G4hImpactIonisation::BuildLossTable(), G4hRDEnergyLoss::BuildProperTimeVector(), G4hRDEnergyLoss::BuildRangeVector(), G4hhElastic::BuildTableT(), G4ForwardXrayTR::BuildXrayTRtables(), G4PenelopeIonisationXSHandler::BuildXSTable(), G4PenelopeBremsstrahlungModel::BuildXSTable(), G4SPSEneDistribution::ConvertEPNToEnergy(), G4PenelopeRayleighModel::DumpFormFactorTable(), G4PenelopeRayleighModelMI::DumpFormFactorTable(), G4SPSEneDistribution::ExpInterpolation(), G4SPSEneDistribution::GenArbPointEnergies(), G4SPSEneDistribution::GenEpnHistEnergies(), G4SPSAngDistribution::GenerateUserDefPhi(), G4SPSAngDistribution::GenerateUserDefTheta(), G4SPSRandomGenerator::GenRandEnergy(), G4SPSRandomGenerator::GenRandPhi(), G4SPSRandomGenerator::GenRandPosPhi(), G4SPSRandomGenerator::GenRandPosTheta(), G4SPSRandomGenerator::GenRandTheta(), G4SPSRandomGenerator::GenRandX(), G4SPSRandomGenerator::GenRandY(), G4SPSRandomGenerator::GenRandZ(), G4SPSEneDistribution::GenUserHistEnergies(), G4ForwardXrayTR::GetEnergyTR(), G4VXTRenergyLoss::GetMeanFreePath(), G4VXTRenergyLoss::GetNumberOfPhotons(), G4VXTRenergyLoss::GetXTRrandomEnergy(), G4NeutronElectronElXsc::Initialise(), G4NeutronElectronElModel::Initialise(), G4InitXscPAI::IntegralCherenkov(), G4InitXscPAI::IntegralPAIdEdx(), G4InitXscPAI::IntegralPAIxSection(), G4InitXscPAI::IntegralPlasmon(), G4hRDEnergyLoss::InvertRangeVector(), G4SPSEneDistribution::LinearInterpolation(), G4SPSEneDistribution::LogInterpolation(), G4PenelopeCrossSection::NormalizeShellCrossSections(), G4ForwardXrayTR::PostStepDoIt(), G4XNNElasticLowE::Print(), G4XnpElasticLowE::Print(), G4XnpTotalLowE::Print(), G4DiffuseElastic::SampleTableThetaCMS(), G4NuclNuclDiffuseElastic::SampleTableThetaCMS(), and G4SPSEneDistribution::SplineInterpolation().

◆ GetMaxEnergy()

G4double G4PhysicsVector::GetMaxEnergy ( ) const
inlineinherited

◆ GetMaxValue()

G4double G4PhysicsVector::GetMaxValue ( ) const
inlineinherited

◆ GetMinEnergy()

G4double G4PhysicsVector::GetMinEnergy ( ) const
inlineinherited

◆ GetMinValue()

G4double G4PhysicsVector::GetMinValue ( ) const
inlineinherited

◆ GetSpline()

G4bool G4PhysicsVector::GetSpline ( ) const
inlineinherited

◆ GetType()

G4PhysicsVectorType G4PhysicsVector::GetType ( ) const
inlineinherited

◆ GetValue()

G4double G4PhysicsVector::GetValue ( const G4double  energy,
G4bool isOutRange 
) const
inlineinherited

◆ GetVectorLength()

std::size_t G4PhysicsVector::GetVectorLength ( ) const
inlineinherited

Referenced by G4PolarizedAnnihilation::BuildAsymmetryTables(), G4PolarizedIonisation::BuildAsymmetryTables(), G4LossTableBuilder::BuildDEDXTable(), G4PenelopeIonisationXSHandler::BuildDeltaTable(), G4hRDEnergyLoss::BuildInverseRangeTable(), G4LossTableBuilder::BuildInverseRangeTable(), G4Cerenkov::BuildPhysicsTable(), G4Scintillation::BuildPhysicsTable(), G4OpWLS::BuildPhysicsTable(), G4OpWLS2::BuildPhysicsTable(), G4LossTableBuilder::BuildRangeTable(), G4PenelopeIonisationXSHandler::BuildXSTable(), G4PenelopeBremsstrahlungModel::BuildXSTable(), G4MaterialPropertiesTable::CalculateGROUPVEL(), G4OpRayleigh::CalculateRayleighMeanFreePaths(), G4JAEAElasticScatteringModel::ComputeCrossSectionPerAtom(), G4JAEAPolarizedElasticScatteringModel::ComputeCrossSectionPerAtom(), G4LivermoreComptonModel::ComputeCrossSectionPerAtom(), G4LivermoreNuclearGammaConversionModel::ComputeCrossSectionPerAtom(), G4LivermorePolarizedComptonModel::ComputeCrossSectionPerAtom(), G4LivermorePolarizedGammaConversionModel::ComputeCrossSectionPerAtom(), G4LivermorePolarizedRayleighModel::ComputeCrossSectionPerAtom(), G4LivermoreRayleighModel::ComputeCrossSectionPerAtom(), G4LowEPComptonModel::ComputeCrossSectionPerAtom(), G4LowEPPolarizedComptonModel::ComputeCrossSectionPerAtom(), G4SPSEneDistribution::ConvertEPNToEnergy(), G4PAIModelData::CrossSectionPerVolume(), G4PAIPhotData::CrossSectionPerVolume(), G4PAIModelData::DEDXPerVolume(), G4PAIPhotData::DEDXPerVolume(), G4PenelopeRayleighModel::DumpFormFactorTable(), G4PenelopeRayleighModelMI::DumpFormFactorTable(), G4EmModelManager::DumpModelList(), G4SPSEneDistribution::ExpInterpolation(), G4EmModelManager::FillDEDXVector(), G4EmModelManager::FillLambdaVector(), G4SPSEneDistribution::GenArbPointEnergies(), G4SPSEneDistribution::GenEpnHistEnergies(), G4SPSAngDistribution::GenerateUserDefPhi(), G4SPSAngDistribution::GenerateUserDefTheta(), G4SPSRandomGenerator::GenRandEnergy(), G4SPSRandomGenerator::GenRandPhi(), G4SPSRandomGenerator::GenRandPosPhi(), G4SPSRandomGenerator::GenRandPosTheta(), G4SPSRandomGenerator::GenRandTheta(), G4SPSRandomGenerator::GenRandX(), G4SPSRandomGenerator::GenRandY(), G4SPSRandomGenerator::GenRandZ(), G4SPSEneDistribution::GenUserHistEnergies(), G4SPSEneDistribution::GetArbEneWeight(), G4Cerenkov::GetAverageNumberOfPhotons(), G4PAIPhotData::GetEnergyPhotonTransfer(), G4PAIPhotData::GetEnergyPlasmonTransfer(), G4PAIModelData::GetEnergyTransfer(), G4PAIPhotData::GetEnergyTransfer(), G4PenelopeCrossSection::GetHardCrossSection(), G4PenelopeCrossSection::GetNormalizedShellCrossSection(), G4PAIPhotData::GetPlasmonRatio(), G4PenelopeCrossSection::GetShellCrossSection(), G4PenelopeCrossSection::GetSoftStoppingPower(), G4PenelopeCrossSection::GetTotalCrossSection(), G4eeToHadronsModel::Initialise(), G4NeutronElasticXS::Initialise(), G4NeutronInelasticXS::Initialise(), G4ParticleInelasticXS::Initialise(), G4SPSEneDistribution::LinearInterpolation(), G4SPSEneDistribution::LogInterpolation(), G4GDMLWriteMaterials::PropertyVectorWrite(), G4PAIPhotData::SampleAlongStepPhotonTransfer(), G4PAIPhotData::SampleAlongStepPlasmonTransfer(), G4PAIPhotData::SampleAlongStepTransfer(), G4PAIModelData::SampleAlongStepTransfer(), G4PAIPhotData::SamplePostStepPhotonTransfer(), G4PAIPhotData::SamplePostStepPlasmonTransfer(), G4PAIPhotData::SamplePostStepTransfer(), G4PAIModelData::SamplePostStepTransfer(), G4VEnergyLossProcess::SetLambdaTable(), G4SPSEneDistribution::SplineInterpolation(), and G4VEmProcess::StreamInfo().

◆ Initialise()

void G4PhysicsLogVector::Initialise ( )
finalprotectedvirtual

◆ Interpolation()

G4double G4PhysicsVector::Interpolation ( const std::size_t  idx,
const G4double  energy 
) const
inlineprivateinherited

◆ LogVectorValue()

G4double G4PhysicsVector::LogVectorValue ( const G4double  energy,
const G4double  theLogEnergy 
) const
inlineinherited

◆ operator!=()

G4bool G4PhysicsVector::operator!= ( const G4PhysicsVector right) const
deleteinherited

◆ operator()()

G4double G4PhysicsVector::operator() ( const std::size_t  index) const
inlineinherited

◆ operator==()

G4bool G4PhysicsVector::operator== ( const G4PhysicsVector right) const
deleteinherited

◆ operator[]()

G4double G4PhysicsVector::operator[] ( const std::size_t  index) const
inlineinherited

◆ PrintPutValueError()

void G4PhysicsVector::PrintPutValueError ( std::size_t  index,
G4double  value,
const G4String text 
)
protectedinherited

Definition at line 459 of file G4PhysicsVector.cc.

462{
464 ed << "Vector type: " << type << " length= " << numberOfNodes
465 << "; an attempt to put data at index= " << index
466 << " value= " << val << " in " << text;
467 G4Exception("G4PhysicsVector:", "gl0005",
468 FatalException, ed, "Wrong operation");
469}

References FatalException, G4Exception(), G4PhysicsVector::numberOfNodes, and G4PhysicsVector::type.

Referenced by G4PhysicsFreeVector::PutValues().

◆ PutValue()

void G4PhysicsVector::PutValue ( const std::size_t  index,
const G4double  value 
)
inlineinherited

Referenced by G4VXTRenergyLoss::BuildAngleForEnergyBank(), G4PolarizedCompton::BuildAsymmetryTable(), G4PolarizedAnnihilation::BuildAsymmetryTables(), G4PolarizedIonisation::BuildAsymmetryTables(), G4EmCorrections::BuildCorrectionVector(), G4KokoulinMuonNuclearXS::BuildCrossSectionTable(), G4hRDEnergyLoss::BuildDEDXTable(), G4LossTableBuilder::BuildDEDXTable(), G4VXTRenergyLoss::BuildEnergyTable(), G4VXTRenergyLoss::BuildGlobalAngleTable(), G4hRDEnergyLoss::BuildInverseRangeTable(), G4hRDEnergyLoss::BuildLabTimeVector(), G4hImpactIonisation::BuildLambdaTable(), G4hImpactIonisation::BuildLossTable(), G4VLEPTSModel::BuildMeanFreePathTable(), G4VLEPTSModel::BuildPhysicsTable(), G4ChargeExchangeProcess::BuildPhysicsTable(), G4hRDEnergyLoss::BuildProperTimeVector(), G4hRDEnergyLoss::BuildRangeCoeffATable(), G4hRDEnergyLoss::BuildRangeCoeffBTable(), G4hRDEnergyLoss::BuildRangeCoeffCTable(), G4LossTableBuilder::BuildRangeTable(), G4hRDEnergyLoss::BuildRangeVector(), G4LossTableBuilder::BuildTableForModel(), G4AdjointCSManager::BuildTotalSigmaTables(), G4ForwardXrayTR::BuildXrayTRtables(), G4eeToHadronsModel::ComputeCMCrossSectionPerElectron(), G4TablesForExtrapolator::ComputeElectronDEDX(), G4TablesForExtrapolator::ComputeMuonDEDX(), G4TablesForExtrapolator::ComputeProtonDEDX(), G4TablesForExtrapolator::ComputeTrasportXS(), G4EmModelManager::FillDEDXVector(), G4EmModelManager::FillLambdaVector(), G4NeutronElectronElXsc::G4NeutronElectronElXsc(), G4XNNElasticLowE::G4XNNElasticLowE(), G4XnpElasticLowE::G4XnpElasticLowE(), G4XnpTotalLowE::G4XnpTotalLowE(), G4NeutronElectronElXsc::Initialise(), G4PAIPhotData::Initialise(), G4PAIModelData::Initialise(), G4eeToHadronsModel::Initialise(), G4eplusTo2GammaOKVIModel::Initialise(), G4WentzelVIModel::Initialise(), G4DNABornExcitationModel2::Initialise(), G4HadronXSDataTable::Initialise(), G4LindhardSorensenData::InitialiseData(), G4InitXscPAI::IntegralCherenkov(), G4InitXscPAI::IntegralPAIdEdx(), G4InitXscPAI::IntegralPAIxSection(), G4InitXscPAI::IntegralPlasmon(), G4hRDEnergyLoss::InvertRangeVector(), G4IonICRU73Data::ReadElementData(), G4ChannelingECHARM::ReadFromECHARM(), G4IonICRU73Data::RetrieveVector(), and G4ChannelingMaterialData::SetBR().

◆ Retrieve()

G4bool G4PhysicsVector::Retrieve ( std::ifstream &  fIn,
G4bool  ascii = false 
)
inherited

Definition at line 87 of file G4PhysicsVector.cc.

88{
89 // clear properties;
90 dataVector.clear();
91 binVector.clear();
92 secDerivative.clear();
93
94 // retrieve in ascii mode
95 if(ascii)
96 {
97 // binning
98 fIn >> edgeMin >> edgeMax >> numberOfNodes;
99 if(fIn.fail() || numberOfNodes < 2)
100 {
101 return false;
102 }
103 // contents
104 G4int siz = 0;
105 fIn >> siz;
106 if(fIn.fail() || siz != G4int(numberOfNodes))
107 {
108 return false;
109 }
110
111 binVector.reserve(siz);
112 dataVector.reserve(siz);
113 G4double vBin, vData;
114
115 for(G4int i = 0; i < siz; ++i)
116 {
117 vBin = 0.;
118 vData = 0.;
119 fIn >> vBin >> vData;
120 if(fIn.fail())
121 {
122 return false;
123 }
124 binVector.push_back(vBin);
125 dataVector.push_back(vData);
126 }
127 Initialise();
128 return true;
129 }
130
131 // retrieve in binary mode
132 // binning
133 fIn.read((char*) (&edgeMin), sizeof edgeMin);
134 fIn.read((char*) (&edgeMax), sizeof edgeMax);
135 fIn.read((char*) (&numberOfNodes), sizeof numberOfNodes);
136
137 // contents
138 std::size_t size;
139 fIn.read((char*) (&size), sizeof size);
140
141 G4double* value = new G4double[2 * size];
142 fIn.read((char*) (value), 2 * size * (sizeof(G4double)));
143 if(G4int(fIn.gcount()) != G4int(2 * size * (sizeof(G4double))))
144 {
145 delete[] value;
146 return false;
147 }
148
149 binVector.reserve(size);
150 dataVector.reserve(size);
151 for(std::size_t i = 0; i < size; ++i)
152 {
153 binVector.push_back(value[2 * i]);
154 dataVector.push_back(value[2 * i + 1]);
155 }
156 delete[] value;
157
158 Initialise();
159 return true;
160}

References G4PhysicsVector::binVector, G4PhysicsVector::dataVector, G4PhysicsVector::edgeMax, G4PhysicsVector::edgeMin, G4PhysicsVector::Initialise(), G4PhysicsVector::numberOfNodes, and G4PhysicsVector::secDerivative.

Referenced by G4ComponentSAIDTotalXS::ReadData(), G4LivermorePhotoElectricModel::ReadData(), G4LivermoreComptonModel::ReadData(), G4LivermoreNuclearGammaConversionModel::ReadData(), G4LivermorePolarizedComptonModel::ReadData(), G4LivermorePolarizedGammaConversionModel::ReadData(), G4LivermoreRayleighModel::ReadData(), G4LowEPComptonModel::ReadData(), G4LowEPPolarizedComptonModel::ReadData(), G4BoldyshevTripletModel::ReadData(), G4LivermoreGammaConversion5DModel::ReadData(), G4LivermoreGammaConversionModel::ReadData(), G4LivermorePolarizedRayleighModel::ReadData(), G4PhysicsTable::RetrievePhysicsTable(), G4GammaNuclearXS::RetrieveVector(), G4IonICRU73Data::RetrieveVector(), G4NeutronCaptureXS::RetrieveVector(), G4NeutronInelasticXS::RetrieveVector(), and G4ParticleInelasticXS::RetrieveVector().

◆ ScaleVector()

void G4PhysicsVector::ScaleVector ( const G4double  factorE,
const G4double  factorV 
)
inherited

◆ SetVerboseLevel()

void G4PhysicsVector::SetVerboseLevel ( G4int  value)
inlineinherited

◆ Store()

G4bool G4PhysicsVector::Store ( std::ofstream &  fOut,
G4bool  ascii = false 
) const
inherited

Definition at line 55 of file G4PhysicsVector.cc.

56{
57 // Ascii mode
58 if(ascii)
59 {
60 fOut << *this;
61 return true;
62 }
63 // Binary Mode
64
65 // binning
66 fOut.write((char*) (&edgeMin), sizeof edgeMin);
67 fOut.write((char*) (&edgeMax), sizeof edgeMax);
68 fOut.write((char*) (&numberOfNodes), sizeof numberOfNodes);
69
70 // contents
71 std::size_t size = dataVector.size();
72 fOut.write((char*) (&size), sizeof size);
73
74 G4double* value = new G4double[2 * size];
75 for(std::size_t i = 0; i < size; ++i)
76 {
77 value[2 * i] = binVector[i];
78 value[2 * i + 1] = dataVector[i];
79 }
80 fOut.write((char*) (value), 2 * size * (sizeof(G4double)));
81 delete[] value;
82
83 return true;
84}

References G4PhysicsVector::binVector, G4PhysicsVector::dataVector, G4PhysicsVector::edgeMax, G4PhysicsVector::edgeMin, and G4PhysicsVector::numberOfNodes.

◆ Value() [1/2]

G4double G4PhysicsVector::Value ( const G4double  energy) const
inlineinherited

◆ Value() [2/2]

G4double G4PhysicsVector::Value ( const G4double  energy,
std::size_t &  lastidx 
) const
inlineinherited

Referenced by G4EmCorrections::BarkasCorrection(), G4EmCorrections::BuildCorrectionVector(), G4PenelopeRayleighModelMI::BuildFormFactorTable(), G4LossTableBuilder::BuildRangeTable(), G4OpBoundaryProcess::CalculateReflectivity(), G4Track::CalculateVelocityForOpticalPhoton(), G4eeToHadronsModel::ComputeCMCrossSectionPerElectron(), G4JAEAElasticScatteringModel::ComputeCrossSectionPerAtom(), G4JAEAPolarizedElasticScatteringModel::ComputeCrossSectionPerAtom(), G4LivermoreComptonModel::ComputeCrossSectionPerAtom(), G4LivermoreNuclearGammaConversionModel::ComputeCrossSectionPerAtom(), G4LivermorePolarizedComptonModel::ComputeCrossSectionPerAtom(), G4LivermorePolarizedGammaConversionModel::ComputeCrossSectionPerAtom(), G4LivermorePolarizedRayleighModel::ComputeCrossSectionPerAtom(), G4LivermoreRayleighModel::ComputeCrossSectionPerAtom(), G4LowEPComptonModel::ComputeCrossSectionPerAtom(), G4LowEPPolarizedComptonModel::ComputeCrossSectionPerAtom(), G4PenelopeGammaConversionModel::ComputeCrossSectionPerAtom(), G4PenelopePhotoElectricModel::ComputeCrossSectionPerAtom(), G4PenelopeRayleighModel::ComputeCrossSectionPerAtom(), G4PenelopeRayleighModelMI::ComputeCrossSectionPerAtom(), G4BoldyshevTripletModel::ComputeCrossSectionPerAtom(), G4eplusTo2GammaOKVIModel::ComputeCrossSectionPerAtom(), G4LivermoreGammaConversion5DModel::ComputeCrossSectionPerAtom(), G4LivermoreGammaConversionModel::ComputeCrossSectionPerAtom(), G4eeToHadronsModel::ComputeCrossSectionPerElectron(), G4PolarizedAnnihilation::ComputeSaturationFactor(), G4PolarizedCompton::ComputeSaturationFactor(), G4PolarizedIonisation::ComputeSaturationFactor(), G4eplusTo2GammaOKVIModel::CrossSectionPerVolume(), G4DNABornExcitationModel2::CrossSectionPerVolume(), G4EmCorrections::EffectiveChargeCorrection(), G4eeToHadronsModel::GenerateCMPhoton(), G4LivermorePolarizedRayleighModel::GenerateCosTheta(), G4Cerenkov::GetAverageNumberOfPhotons(), G4ChannelingMaterialData::GetBR(), G4ICRU90StoppingData::GetDEDX(), G4PenelopeIonisationXSHandler::GetDensityCorrection(), G4ChannelingECHARM::GetEC(), G4NeutronElectronElXsc::GetElementCrossSection(), G4KokoulinMuonNuclearXS::GetElementCrossSection(), G4PAIPhotData::GetEnergyPhotonTransfer(), G4PAIPhotData::GetEnergyPlasmonTransfer(), G4PAIModelData::GetEnergyTransfer(), G4PAIPhotData::GetEnergyTransfer(), G4PenelopeRayleighModel::GetFSquared(), G4PenelopeRayleighModelMI::GetFSquared(), G4PenelopeCrossSection::GetHardCrossSection(), G4OpAbsorption::GetMeanFreePath(), G4OpMieHG::GetMeanFreePath(), G4OpRayleigh::GetMeanFreePath(), G4OpWLS::GetMeanFreePath(), G4OpWLS2::GetMeanFreePath(), G4PenelopeCrossSection::GetNormalizedShellCrossSection(), G4SPSEneDistribution::GetProbability(), G4OpBoundaryProcess::GetReflectivity(), G4Scintillation::GetScintillationYieldByParticleType(), G4PenelopePhotoElectricModel::GetShellCrossSection(), G4PenelopeCrossSection::GetShellCrossSection(), G4PenelopeCrossSection::GetSoftStoppingPower(), G4PenelopeCrossSection::GetTotalCrossSection(), G4ElementData::GetValueForElement(), G4NeutronElectronElXsc::Initialise(), G4PAIPhotData::Initialise(), G4eeToHadronsModel::Initialise(), G4EmCorrections::KShellCorrection(), G4EmCorrections::LShellCorrection(), G4Cerenkov::PostStepDoIt(), G4OpBoundaryProcess::PostStepDoIt(), G4PenelopeBremsstrahlungAngular::PrepareTables(), G4DNABornExcitationModel2::RandomSelect(), G4IonICRU73Data::RetrieveVector(), G4PAIModelData::SampleAlongStepTransfer(), G4PenelopeBremsstrahlungAngular::SampleDirection(), G4PAIModelData::SamplePostStepTransfer(), G4PenelopeRayleighModel::SampleSecondaries(), G4PenelopeRayleighModelMI::SampleSecondaries(), G4eplusTo2GammaOKVIModel::SampleSecondaries(), G4VEnergyLossProcess::ScaledKinEnergyForLoss(), G4PenelopePhotoElectricModel::SelectRandomShell(), and G4EmCorrections::ShellCorrection().

Field Documentation

◆ binVector

std::vector<G4double> G4PhysicsVector::binVector
protectedinherited

◆ dataVector

std::vector<G4double> G4PhysicsVector::dataVector
protectedinherited

◆ edgeMax

G4double G4PhysicsVector::edgeMax = 0.0
protectedinherited

◆ edgeMin

G4double G4PhysicsVector::edgeMin = 0.0
protectedinherited

◆ idxmax

G4int G4PhysicsVector::idxmax = 0
protectedinherited

◆ invdBin

G4double G4PhysicsVector::invdBin = 0.0
protectedinherited

◆ logemin

G4double G4PhysicsVector::logemin = 0.0
protectedinherited

Definition at line 205 of file G4PhysicsVector.hh.

Referenced by Initialise().

◆ numberOfNodes

std::size_t G4PhysicsVector::numberOfNodes = 0
protectedinherited

◆ secDerivative

std::vector<G4double> G4PhysicsVector::secDerivative
protectedinherited

◆ type

G4PhysicsVectorType G4PhysicsVector::type = T_G4PhysicsFreeVector
protectedinherited

◆ useSpline

G4bool G4PhysicsVector::useSpline = false
privateinherited

Definition at line 220 of file G4PhysicsVector.hh.

Referenced by G4PhysicsVector::FillSecondDerivatives().

◆ verboseLevel

G4int G4PhysicsVector::verboseLevel = 0
protectedinherited

Definition at line 207 of file G4PhysicsVector.hh.

Referenced by G4PhysicsVector::FillSecondDerivatives().


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