62 flucModel(0),anglModel(0), name(nam), lowLimit(0.1*
CLHEP::keV),
63 highLimit(100.0*
CLHEP::TeV),eMinActive(0.0),eMaxActive(
DBL_MAX),
65 theLPMflag(false),flagDeexcitation(false),flagForceBuildTable(false),
66 pParticleChange(0),xSectionTable(0),theDensityFactor(0),theDensityIdx(0),
67 fCurrentCouple(0),fCurrentElement(0),
80 G4int n = elmSelectors.size();
82 for(
G4int i=0; i<n; ++i) {
83 delete elmSelectors[i];
141 * std::log10(highLimit/lowLimit) / 6.0);
142 if(nbins < 5) { nbins = 5; }
149 if(numOfCouples > nSelectors) {
150 elmSelectors.resize(numOfCouples,0);
151 nSelectors = numOfCouples;
155 for(
G4int i=0; i<numOfCouples; ++i) {
162 if(elmSelectors[i]) {
163 if(material == elmSelectors[i]->GetMaterial()) { create =
false; }
164 else {
delete elmSelectors[i]; }
168 lowLimit,highLimit,spline);
170 elmSelectors[i]->Initialise(p, cuts[idx]);
201 for (
G4int i=0; i<nelm; i++) {
202 cross += theAtomNumDensityVector[i]*
224 fCurrentElement = (*theElementVector)[n];
228 for(
G4int i=0; i<n; ++i) {
230 fCurrentElement = (*theElementVector)[i];
235 return fCurrentElement;
289 fCurrentCouple = couple;
306 return kineticEnergy;
std::vector< G4Element * > G4ElementVector
static G4LossTableManager * Instance()
G4int GetNumberOfBinsPerDecade() const
void DeRegister(G4VEnergyLossProcess *p)
void Register(G4VEnergyLossProcess *p)
const G4Material * GetMaterial() const
const G4ElementVector * GetElementVector() const
size_t GetNumberOfElements() const
const G4double * GetVecNbOfAtomsPerVolume() const
G4double GetPDGCharge() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
const G4ParticleDefinition * GetParticleDefinition() const
G4Material * GetMaterial() const
G4double GetKineticEnergy() const
G4PhysicsTable * xSectionTable
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0., G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
virtual void CorrectionsAlongStep(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &eloss, G4double &niel, G4double length)
virtual G4double GetParticleCharge(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
virtual G4double Value(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
void SetParticleChange(G4VParticleChange *, G4VEmFluctuationModel *f=0)
G4VParticleChange * pParticleChange
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
virtual void DefineForRegion(const G4Region *)
virtual G4double MinPrimaryEnergy(const G4Material *, const G4ParticleDefinition *)
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4VEmModel(const G4String &nam)
virtual G4double GetChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
void SetCrossSectionTable(G4PhysicsTable *)
virtual void StartTracking(G4Track *)
virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition *, G4double kineticEnergy)
virtual G4double ChargeSquareRatio(const G4Track &)
G4ParticleChangeForLoss * GetParticleChangeForLoss()