68std::vector<G4double> G4WentzelVIRelModel::effMass;
96 ComputeEffectiveMass();
127 G4Exception(
"G4WentzelVIRelModel::ComputeCrossSectionPerAtom",
"em0011",
133 G4double tmass = (1 == iz) ? CLHEP::proton_mass_c2
134 : fNistManager->GetAtomicMassAmu(iz)*amu_c2;
135 wokvi->SetTargetMass(tmass);
139 cross =
wokvi->ComputeTransportCrossSectionPerAtom(cost);
153void G4WentzelVIRelModel::ComputeEffectiveMass()
158 if(ncouples == effMass.size()) {
return; }
161 if(ncouples != effMass.size()) {
162 effMass.resize(ncouples, 0.0);
163 for(std::size_t i=0; i<ncouples; ++i) {
164 const G4Material* mat =
170 for(std::size_t j=0; j<nelm; ++j) {
171 G4int Z = (*elmVector)[j]->GetZasInt();
172 G4double mass = fNistManager->GetAtomicMassAmu(Z)*CLHEP::amu_c2;
177 effMass[i] = (0.0 < norm) ? sum/norm : sum;
G4TemplateAutoLock< G4Mutex > G4AutoLock
std::vector< const G4Element * > G4ElementVector
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
#define G4MUTEX_INITIALIZER
const G4Material * GetMaterial() const
const G4ElementVector * GetElementVector() const
std::size_t GetNumberOfElements() const
static G4NistManager * Instance()
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
void SetCurrentCouple(const G4MaterialCutsCouple *)
const G4MaterialCutsCouple * CurrentCouple() const
void SetTargetMass(G4double value)
const G4MaterialCutsCouple * currentCouple
G4int currentMaterialIndex
G4WentzelVIModel(G4bool comb=true, const G4String &nam="WentzelVIUni")
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
void SetWVICrossSection(G4WentzelOKandVIxSection *)
G4WentzelOKandVIxSection * GetWVICrossSection()
const G4ParticleDefinition * particle
const G4Material * currentMaterial
void SetupParticle(const G4ParticleDefinition *)
G4WentzelOKandVIxSection * wokvi
~G4WentzelVIRelModel() override
void DefineMaterial(const G4MaterialCutsCouple *cup)
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double KineticEnergy, G4double AtomicNumber, G4double AtomicWeight=0., G4double cut=DBL_MAX, G4double emax=DBL_MAX) override
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override