Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
G4eLowEnergyLoss Class Referenceabstract

#include <G4eLowEnergyLoss.hh>

Inheritance diagram for G4eLowEnergyLoss:
G4RDVeLowEnergyLoss G4VContinuousDiscreteProcess G4VProcess G4LowEnergyBremsstrahlung G4LowEnergyIonisation

Public Member Functions

 G4eLowEnergyLoss (const G4String &)
 
 ~G4eLowEnergyLoss ()
 
G4bool IsApplicable (const G4ParticleDefinition &)
 
void BuildDEDXTable (const G4ParticleDefinition &aParticleType)
 
G4double GetContinuousStepLimit (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &currentSafety)
 
G4VParticleChangeAlongStepDoIt (const G4Track &track, const G4Step &Step)
 
virtual G4double GetMeanFreePath (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)=0
 
virtual G4VParticleChangePostStepDoIt (const G4Track &track, const G4Step &step)=0
 
void ActivateFluorescence (G4bool val)
 
G4bool Fluorescence () const
 
- Public Member Functions inherited from G4RDVeLowEnergyLoss
 G4RDVeLowEnergyLoss (const G4String &, G4ProcessType aType=fNotDefined)
 
 G4RDVeLowEnergyLoss (G4RDVeLowEnergyLoss &)
 
virtual ~G4RDVeLowEnergyLoss ()
 
- Public Member Functions inherited from G4VContinuousDiscreteProcess
 G4VContinuousDiscreteProcess (const G4String &, G4ProcessType aType=fNotDefined)
 
 G4VContinuousDiscreteProcess (G4VContinuousDiscreteProcess &)
 
virtual ~G4VContinuousDiscreteProcess ()
 
virtual G4double PostStepGetPhysicalInteractionLength (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
virtual G4double AlongStepGetPhysicalInteractionLength (const G4Track &, G4double previousStepSize, G4double currentMinimumStep, G4double &currentSafety, G4GPILSelection *selection)
 
virtual G4double AtRestGetPhysicalInteractionLength (const G4Track &, G4ForceCondition *)
 
virtual G4VParticleChangeAtRestDoIt (const G4Track &, const G4Step &)
 
- Public Member Functions inherited from G4VProcess
 G4VProcess (const G4String &aName="NoName", G4ProcessType aType=fNotDefined)
 
 G4VProcess (const G4VProcess &right)
 
virtual ~G4VProcess ()
 
G4int operator== (const G4VProcess &right) const
 
G4int operator!= (const G4VProcess &right) const
 
G4double GetCurrentInteractionLength () const
 
void SetPILfactor (G4double value)
 
G4double GetPILfactor () const
 
G4double AlongStepGPIL (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
 
G4double AtRestGPIL (const G4Track &track, G4ForceCondition *condition)
 
G4double PostStepGPIL (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void PreparePhysicsTable (const G4ParticleDefinition &)
 
virtual G4bool StorePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
virtual G4bool RetrievePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
const G4StringGetPhysicsTableFileName (const G4ParticleDefinition *, const G4String &directory, const G4String &tableName, G4bool ascii=false)
 
const G4StringGetProcessName () const
 
G4ProcessType GetProcessType () const
 
void SetProcessType (G4ProcessType)
 
G4int GetProcessSubType () const
 
void SetProcessSubType (G4int)
 
virtual void StartTracking (G4Track *)
 
virtual void EndTracking ()
 
virtual void SetProcessManager (const G4ProcessManager *)
 
virtual const G4ProcessManagerGetProcessManager ()
 
virtual void ResetNumberOfInteractionLengthLeft ()
 
G4double GetNumberOfInteractionLengthLeft () const
 
G4double GetTotalNumberOfInteractionLengthTraversed () const
 
G4bool isAtRestDoItIsEnabled () const
 
G4bool isAlongStepDoItIsEnabled () const
 
G4bool isPostStepDoItIsEnabled () const
 
virtual void DumpInfo () const
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
virtual void SetMasterProcess (G4VProcess *masterP)
 
const G4VProcessGetMasterProcess () const
 
virtual void BuildWorkerPhysicsTable (const G4ParticleDefinition &part)
 
virtual void PrepareWorkerPhysicsTable (const G4ParticleDefinition &)
 

Static Public Member Functions

static void SetNbOfProcesses (G4int nb)
 
static void PlusNbOfProcesses ()
 
static void MinusNbOfProcesses ()
 
static G4int GetNbOfProcesses ()
 
static void SetLowerBoundEloss (G4double val)
 
static void SetUpperBoundEloss (G4double val)
 
static void SetNbinEloss (G4int nb)
 
static G4double GetLowerBoundEloss ()
 
static G4double GetUpperBoundEloss ()
 
static G4int GetNbinEloss ()
 
- Static Public Member Functions inherited from G4RDVeLowEnergyLoss
static void SetRndmStep (G4bool value)
 
static void SetEnlossFluc (G4bool value)
 
static void SetStepFunction (G4double c1, G4double c2)
 
- Static Public Member Functions inherited from G4VProcess
static const G4StringGetProcessTypeName (G4ProcessType)
 

Protected Member Functions

virtual std::vector
< G4DynamicParticle * > * 
DeexciteAtom (const G4MaterialCutsCouple *, G4double, G4double)
 
- Protected Member Functions inherited from G4RDVeLowEnergyLoss
G4double GetLossWithFluct (const G4DynamicParticle *aParticle, const G4MaterialCutsCouple *couple, G4double MeanLoss, G4double step)
 
- Protected Member Functions inherited from G4VContinuousDiscreteProcess
void SetGPILSelection (G4GPILSelection selection)
 
G4GPILSelection GetGPILSelection () const
 
- Protected Member Functions inherited from G4VProcess
void SubtractNumberOfInteractionLengthLeft (G4double previousStepSize)
 
void ClearNumberOfInteractionLengthLeft ()
 

Protected Attributes

G4PhysicsTabletheLossTable
 
G4double MinKineticEnergy
 
G4double Charge
 
G4double lastCharge
 
- Protected Attributes inherited from G4RDVeLowEnergyLoss
const G4MateriallastMaterial
 
G4int imat
 
G4double f1Fluct
 
G4double f2Fluct
 
G4double e1Fluct
 
G4double e2Fluct
 
G4double rateFluct
 
G4double ipotFluct
 
G4double e1LogFluct
 
G4double e2LogFluct
 
G4double ipotLogFluct
 
const G4int nmaxCont1
 
const G4int nmaxCont2
 
- Protected Attributes inherited from G4VProcess
const G4ProcessManageraProcessManager
 
G4VParticleChangepParticleChange
 
G4ParticleChange aParticleChange
 
G4double theNumberOfInteractionLengthLeft
 
G4double currentInteractionLength
 
G4double theInitialNumberOfInteractionLength
 
G4String theProcessName
 
G4String thePhysicsTableFileName
 
G4ProcessType theProcessType
 
G4int theProcessSubType
 
G4double thePILfactor
 
G4bool enableAtRestDoIt
 
G4bool enableAlongStepDoIt
 
G4bool enablePostStepDoIt
 
G4int verboseLevel
 

Static Protected Attributes

static G4PhysicsTabletheDEDXElectronTable = 0
 
static G4PhysicsTabletheDEDXPositronTable = 0
 
static G4PhysicsTabletheRangeElectronTable = 0
 
static G4PhysicsTabletheRangePositronTable = 0
 
static G4PhysicsTabletheInverseRangeElectronTable = 0
 
static G4PhysicsTabletheInverseRangePositronTable = 0
 
static G4PhysicsTabletheLabTimeElectronTable = 0
 
static G4PhysicsTabletheLabTimePositronTable = 0
 
static G4PhysicsTabletheProperTimeElectronTable = 0
 
static G4PhysicsTabletheProperTimePositronTable = 0
 
static G4int NbOfProcesses = 2
 
static G4int CounterOfElectronProcess = 0
 
static G4int CounterOfPositronProcess = 0
 
static G4PhysicsTable ** RecorderOfElectronProcess
 
static G4PhysicsTable ** RecorderOfPositronProcess
 
- Static Protected Attributes inherited from G4RDVeLowEnergyLoss
static G4double ParticleMass
 
static G4double taulow
 
static G4double tauhigh
 
static G4double ltaulow
 
static G4double ltauhigh
 
static G4double dRoverRange = 20*perCent
 
static G4double finalRange = 200*micrometer
 
static G4double c1lim = dRoverRange
 
static G4double c2lim = 2.*(1.-dRoverRange)*finalRange
 
static G4double c3lim = -(1.-dRoverRange)*finalRange*finalRange
 
static G4bool rndmStepFlag = false
 
static G4bool EnlossFlucFlag = true
 

Additional Inherited Members

- Static Protected Member Functions inherited from G4RDVeLowEnergyLoss
static G4PhysicsTableBuildRangeTable (G4PhysicsTable *theDEDXTable, G4PhysicsTable *theRangeTable, G4double Tmin, G4double Tmax, G4int nbin)
 
static G4PhysicsTableBuildLabTimeTable (G4PhysicsTable *theDEDXTable, G4PhysicsTable *theLabTimeTable, G4double Tmin, G4double Tmax, G4int nbin)
 
static G4PhysicsTableBuildProperTimeTable (G4PhysicsTable *theDEDXTable, G4PhysicsTable *ProperTimeTable, G4double Tmin, G4double Tmax, G4int nbin)
 
static G4PhysicsTableBuildRangeCoeffATable (G4PhysicsTable *theRangeTable, G4PhysicsTable *theCoeffATable, G4double Tmin, G4double Tmax, G4int nbin)
 
static G4PhysicsTableBuildRangeCoeffBTable (G4PhysicsTable *theRangeTable, G4PhysicsTable *theCoeffBTable, G4double Tmin, G4double Tmax, G4int nbin)
 
static G4PhysicsTableBuildRangeCoeffCTable (G4PhysicsTable *theRangeTable, G4PhysicsTable *theCoeffCTable, G4double Tmin, G4double Tmax, G4int nbin)
 
static G4PhysicsTableBuildInverseRangeTable (G4PhysicsTable *theRangeTable, G4PhysicsTable *theRangeCoeffATable, G4PhysicsTable *theRangeCoeffBTable, G4PhysicsTable *theRangeCoeffCTable, G4PhysicsTable *theInverseRangeTable, G4double Tmin, G4double Tmax, G4int nbin)
 

Detailed Description

Definition at line 87 of file G4eLowEnergyLoss.hh.

Constructor & Destructor Documentation

G4eLowEnergyLoss::G4eLowEnergyLoss ( const G4String processName)

Definition at line 127 of file G4eLowEnergyLoss.cc.

128  : G4RDVeLowEnergyLoss (processName),
129  theLossTable(0),
130  MinKineticEnergy(1.*eV),
131  Charge(-1.),
132  lastCharge(0.),
133  theDEDXTable(0),
134  CounterOfProcess(0),
135  RecorderOfProcess(0),
136  fdEdx(0),
137  fRangeNow(0),
138  linLossLimit(0.05),
139  theFluo(false)
140 {
141 
142  //create (only once) EnergyLoss messenger
143  if(!eLossMessenger) eLossMessenger = new G4EnergyLossMessenger();
144 }
G4PhysicsTable * theLossTable
G4eLowEnergyLoss::~G4eLowEnergyLoss ( )

Definition at line 148 of file G4eLowEnergyLoss.cc.

References G4PhysicsTable::clearAndDestroy(), and theLossTable.

149 {
150  if (theLossTable)
151  {
153  delete theLossTable;
154  }
155 }
G4PhysicsTable * theLossTable
void clearAndDestroy()

Member Function Documentation

void G4eLowEnergyLoss::ActivateFluorescence ( G4bool  val)
G4VParticleChange * G4eLowEnergyLoss::AlongStepDoIt ( const G4Track track,
const G4Step Step 
)
virtual

Implements G4RDVeLowEnergyLoss.

Definition at line 399 of file G4eLowEnergyLoss.cc.

References G4ParticleChange::AddSecondary(), G4VProcess::aParticleChange, Charge, DeexciteAtom(), G4Electron::Electron(), G4RDVeLowEnergyLoss::EnlossFlucFlag, fStopAndKill, fStopButAlive, G4UniformRand, G4Track::GetDynamicParticle(), G4StepPoint::GetGlobalTime(), G4DynamicParticle::GetKineticEnergy(), G4RDVeLowEnergyLoss::GetLossWithFluct(), G4Track::GetMaterialCutsCouple(), G4StepPoint::GetPosition(), G4Step::GetPostStepPoint(), G4EnergyLossTables::GetPreciseEnergyFromRange(), G4Step::GetPreStepPoint(), G4Step::GetStepLength(), G4ParticleChange::Initialize(), MinKineticEnergy, position, G4Positron::Positron(), G4ParticleChange::ProposeEnergy(), G4VParticleChange::ProposeLocalEnergyDeposit(), G4VParticleChange::ProposeTrackStatus(), and G4VParticleChange::SetNumberOfSecondaries().

401 {
402  // compute the energy loss after a Step
403 
404  static const G4double faclow = 1.5 ;
405 
406  // get particle and material pointers from trackData
407  const G4DynamicParticle* aParticle = trackData.GetDynamicParticle();
408  G4double E = aParticle->GetKineticEnergy();
409 
410  const G4MaterialCutsCouple* couple = trackData.GetMaterialCutsCouple();
411 
412  G4double Step = stepData.GetStepLength();
413 
414  aParticleChange.Initialize(trackData);
415  //fParticleChange.Initialize(trackData);
416 
417  G4double MeanLoss, finalT;
418 
419  if (E < MinKineticEnergy) finalT = 0.;
420 
421  else if ( E< faclow*LowerBoundEloss)
422  {
423  if (Step >= fRangeNow) finalT = 0.;
424  // else finalT = E*(1.-Step/fRangeNow) ;
425  else finalT = E*(1.-std::sqrt(Step/fRangeNow)) ;
426  }
427 
428  else if (E>=UpperBoundEloss) finalT = E - Step*fdEdx;
429 
430  else if (Step >= fRangeNow) finalT = 0.;
431 
432  else
433  {
434  if(Step/fRangeNow < linLossLimit) finalT = E-Step*fdEdx ;
435  else
436  {
438  (G4Electron::Electron(),fRangeNow-Step,couple);
440  (G4Positron::Positron(),fRangeNow-Step,couple);
441  }
442  }
443 
444  if(finalT < MinKineticEnergy) finalT = 0. ;
445 
446  MeanLoss = E-finalT ;
447 
448  //now the loss with fluctuation
449  if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowerBoundEloss))
450  {
451  finalT = E-GetLossWithFluct(aParticle,couple,MeanLoss,Step);
452  if (finalT < 0.) finalT = 0.;
453  }
454 
455  // kill the particle if the kinetic energy <= 0
456  if (finalT <= 0. )
457  {
458  finalT = 0.;
461  }
462 
463  G4double edep = E - finalT;
464 
466 
467  // Deexcitation of ionised atoms
468  std::vector<G4DynamicParticle*>* deexcitationProducts = 0;
469  if (theFluo) deexcitationProducts = DeexciteAtom(couple,E,edep);
470 
471  size_t nSecondaries = 0;
472  if (deexcitationProducts != 0) nSecondaries = deexcitationProducts->size();
474 
475  if (nSecondaries > 0) {
476 
477  const G4StepPoint* preStep = stepData.GetPreStepPoint();
478  const G4StepPoint* postStep = stepData.GetPostStepPoint();
479  G4ThreeVector r = preStep->GetPosition();
480  G4ThreeVector deltaR = postStep->GetPosition();
481  deltaR -= r;
482  G4double t = preStep->GetGlobalTime();
483  G4double deltaT = postStep->GetGlobalTime();
484  deltaT -= t;
485  G4double time, q;
487 
488  for (size_t i=0; i<nSecondaries; i++) {
489 
490  G4DynamicParticle* part = (*deexcitationProducts)[i];
491  if (part != 0) {
492  G4double eSecondary = part->GetKineticEnergy();
493  edep -= eSecondary;
494  if (edep > 0.)
495  {
496  q = G4UniformRand();
497  time = deltaT*q + t;
498  position = deltaR*q;
499  position += r;
500  G4Track* newTrack = new G4Track(part, time, position);
501  aParticleChange.AddSecondary(newTrack);
502  }
503  else
504  {
505  edep += eSecondary;
506  delete part;
507  part = 0;
508  }
509  }
510  }
511  }
512  delete deexcitationProducts;
513 
515 
516  return &aParticleChange;
517 }
G4double GetKineticEnergy() const
G4double GetStepLength() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
#define G4UniformRand()
Definition: Randomize.hh:87
const G4ThreeVector & GetPosition() const
virtual void Initialize(const G4Track &)
static G4Positron * Positron()
Definition: G4Positron.cc:94
void SetNumberOfSecondaries(G4int totSecondaries)
int position
Definition: filter.cc:7
void ProposeEnergy(G4double finalEnergy)
G4ParticleChange aParticleChange
Definition: G4VProcess.hh:289
void AddSecondary(G4Track *aSecondary)
static G4Electron * Electron()
Definition: G4Electron.cc:94
G4double GetGlobalTime() const
double G4double
Definition: G4Types.hh:76
void ProposeTrackStatus(G4TrackStatus status)
virtual std::vector< G4DynamicParticle * > * DeexciteAtom(const G4MaterialCutsCouple *, G4double, G4double)
G4double GetLossWithFluct(const G4DynamicParticle *aParticle, const G4MaterialCutsCouple *couple, G4double MeanLoss, G4double step)
static G4double GetPreciseEnergyFromRange(const G4ParticleDefinition *aParticle, G4double range, const G4Material *aMaterial)
void G4eLowEnergyLoss::BuildDEDXTable ( const G4ParticleDefinition aParticleType)

Definition at line 208 of file G4eLowEnergyLoss.cc.

References G4RDVeLowEnergyLoss::BuildInverseRangeTable(), G4RDVeLowEnergyLoss::BuildLabTimeTable(), G4RDVeLowEnergyLoss::BuildProperTimeTable(), G4RDVeLowEnergyLoss::BuildRangeCoeffATable(), G4RDVeLowEnergyLoss::BuildRangeCoeffBTable(), G4RDVeLowEnergyLoss::BuildRangeCoeffCTable(), G4RDVeLowEnergyLoss::BuildRangeTable(), Charge, G4PhysicsTable::clearAndDestroy(), CounterOfElectronProcess, CounterOfPositronProcess, G4Electron::Electron(), python.hepunit::eplus, G4cout, G4endl, G4PhysicsVector::GetLowEdgeEnergy(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4PhysicsTable::insert(), NbOfProcesses, G4RDVeLowEnergyLoss::ParticleMass, G4Positron::Positron(), G4PhysicsVector::PutValue(), RecorderOfElectronProcess, RecorderOfPositronProcess, G4EnergyLossTables::Register(), theDEDXElectronTable, theDEDXPositronTable, theInverseRangeElectronTable, theInverseRangePositronTable, theLabTimeElectronTable, theLabTimePositronTable, theProperTimeElectronTable, theProperTimePositronTable, theRangeElectronTable, theRangePositronTable, and G4VProcess::verboseLevel.

Referenced by G4LowEnergyIonisation::BuildPhysicsTable(), and G4LowEnergyBremsstrahlung::BuildPhysicsTable().

210 {
211  ParticleMass = aParticleType.GetPDGMass();
212  Charge = aParticleType.GetPDGCharge()/eplus;
213 
214  // calculate data members LOGRTable,RTable first
215 
216  G4double lrate = std::log(UpperBoundEloss/LowerBoundEloss);
217  LOGRTable=lrate/NbinEloss;
218  RTable =std::exp(LOGRTable);
219  // Build energy loss table as a sum of the energy loss due to the
220  // different processes.
221  //
222 
223  const G4ProductionCutsTable* theCoupleTable=
225  size_t numOfCouples = theCoupleTable->GetTableSize();
226 
227  // create table for the total energy loss
228 
229  if (&aParticleType==G4Electron::Electron())
230  {
231  RecorderOfProcess=RecorderOfElectronProcess;
232  CounterOfProcess=CounterOfElectronProcess;
233  if (CounterOfProcess == NbOfProcesses)
234  {
236  {
238  delete theDEDXElectronTable;
239  }
240  theDEDXElectronTable = new G4PhysicsTable(numOfCouples);
241  theDEDXTable = theDEDXElectronTable;
242  }
243  }
244  if (&aParticleType==G4Positron::Positron())
245  {
246  RecorderOfProcess=RecorderOfPositronProcess;
247  CounterOfProcess=CounterOfPositronProcess;
248  if (CounterOfProcess == NbOfProcesses)
249  {
251  {
253  delete theDEDXPositronTable;
254  }
255  theDEDXPositronTable = new G4PhysicsTable(numOfCouples);
256  theDEDXTable = theDEDXPositronTable;
257  }
258  }
259 
260  if (CounterOfProcess == NbOfProcesses)
261  {
262  // fill the tables
263  // loop for materials
264  G4double LowEdgeEnergy , Value;
265  G4bool isOutRange;
266  G4PhysicsTable* pointer;
267 
268  for (size_t J=0; J<numOfCouples; J++)
269  {
270  // create physics vector and fill it
271 
272  G4PhysicsLogVector* aVector = new G4PhysicsLogVector(
273  LowerBoundEloss, UpperBoundEloss, NbinEloss);
274 
275  // loop for the kinetic energy
276  for (G4int i=0; i<NbinEloss; i++)
277  {
278  LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ;
279  //here comes the sum of the different tables created by the
280  //processes (ionisation,bremsstrahlung,etc...)
281  Value = 0.;
282  for (G4int process=0; process < NbOfProcesses; process++)
283  {
284  pointer= RecorderOfProcess[process];
285  Value += (*pointer)[J]->GetValue(LowEdgeEnergy,isOutRange);
286  }
287 
288  aVector->PutValue(i,Value) ;
289  }
290 
291  theDEDXTable->insert(aVector) ;
292 
293  }
294 
295 
296  //reset counter to zero
297  if (&aParticleType==G4Electron::Electron()) CounterOfElectronProcess=0;
298  if (&aParticleType==G4Positron::Positron()) CounterOfPositronProcess=0;
299 
300  ParticleMass = aParticleType.GetPDGMass();
301 
302  if (&aParticleType==G4Electron::Electron())
303  {
304  // Build range table
307  LowerBoundEloss,UpperBoundEloss,NbinEloss);
308 
309  // Build lab/proper time tables
312  LowerBoundEloss,UpperBoundEloss,NbinEloss);
315  LowerBoundEloss,UpperBoundEloss,NbinEloss);
316 
317  // Build coeff tables for the energy loss calculation
318  theeRangeCoeffATable = BuildRangeCoeffATable(theRangeElectronTable,
319  theeRangeCoeffATable,
320  LowerBoundEloss,UpperBoundEloss,NbinEloss);
321 
322  theeRangeCoeffBTable = BuildRangeCoeffBTable(theRangeElectronTable,
323  theeRangeCoeffBTable,
324  LowerBoundEloss,UpperBoundEloss,NbinEloss);
325 
326  theeRangeCoeffCTable = BuildRangeCoeffCTable(theRangeElectronTable,
327  theeRangeCoeffCTable,
328  LowerBoundEloss,UpperBoundEloss,NbinEloss);
329 
330  // invert the range table
332  theeRangeCoeffATable,
333  theeRangeCoeffBTable,
334  theeRangeCoeffCTable,
336  LowerBoundEloss,UpperBoundEloss,NbinEloss);
337  }
338  if (&aParticleType==G4Positron::Positron())
339  {
340  // Build range table
343  LowerBoundEloss,UpperBoundEloss,NbinEloss);
344 
345 
346  // Build lab/proper time tables
349  LowerBoundEloss,UpperBoundEloss,NbinEloss);
352  LowerBoundEloss,UpperBoundEloss,NbinEloss);
353 
354  // Build coeff tables for the energy loss calculation
355  thepRangeCoeffATable = BuildRangeCoeffATable(theRangePositronTable,
356  thepRangeCoeffATable,
357  LowerBoundEloss,UpperBoundEloss,NbinEloss);
358 
359  thepRangeCoeffBTable = BuildRangeCoeffBTable(theRangePositronTable,
360  thepRangeCoeffBTable,
361  LowerBoundEloss,UpperBoundEloss,NbinEloss);
362 
363  thepRangeCoeffCTable = BuildRangeCoeffCTable(theRangePositronTable,
364  thepRangeCoeffCTable,
365  LowerBoundEloss,UpperBoundEloss,NbinEloss);
366 
367  // invert the range table
369  thepRangeCoeffATable,
370  thepRangeCoeffBTable,
371  thepRangeCoeffCTable,
373  LowerBoundEloss,UpperBoundEloss,NbinEloss);
374  }
375 
376  if(verboseLevel > 1) {
377  G4cout << (*theDEDXElectronTable) << G4endl;
378  }
379 
380 
381  // make the energy loss and the range table available
382  G4EnergyLossTables::Register(&aParticleType,
383  (&aParticleType==G4Electron::Electron())?
385  (&aParticleType==G4Electron::Electron())?
387  (&aParticleType==G4Electron::Electron())?
389  (&aParticleType==G4Electron::Electron())?
391  (&aParticleType==G4Electron::Electron())?
393  LowerBoundEloss, UpperBoundEloss, 1.,NbinEloss);
394  }
395 }
G4int verboseLevel
Definition: G4VProcess.hh:368
void insert(G4PhysicsVector *)
static G4PhysicsTable * theInverseRangePositronTable
static G4PhysicsTable * theProperTimePositronTable
static G4int CounterOfElectronProcess
static G4int NbOfProcesses
static G4PhysicsTable * theRangeElectronTable
static G4double ParticleMass
G4double GetLowEdgeEnergy(size_t binNumber) const
int G4int
Definition: G4Types.hh:78
static G4PhysicsTable * BuildRangeTable(G4PhysicsTable *theDEDXTable, G4PhysicsTable *theRangeTable, G4double Tmin, G4double Tmax, G4int nbin)
static G4PhysicsTable * BuildProperTimeTable(G4PhysicsTable *theDEDXTable, G4PhysicsTable *ProperTimeTable, G4double Tmin, G4double Tmax, G4int nbin)
static G4PhysicsTable * BuildLabTimeTable(G4PhysicsTable *theDEDXTable, G4PhysicsTable *theLabTimeTable, G4double Tmin, G4double Tmax, G4int nbin)
static G4PhysicsTable * theLabTimePositronTable
G4GLOB_DLL std::ostream G4cout
bool G4bool
Definition: G4Types.hh:79
static G4PhysicsTable * theDEDXElectronTable
static G4PhysicsTable * BuildRangeCoeffBTable(G4PhysicsTable *theRangeTable, G4PhysicsTable *theCoeffBTable, G4double Tmin, G4double Tmax, G4int nbin)
void PutValue(size_t index, G4double theValue)
static G4PhysicsTable * theRangePositronTable
static G4PhysicsTable ** RecorderOfPositronProcess
static G4PhysicsTable * theInverseRangeElectronTable
static G4ProductionCutsTable * GetProductionCutsTable()
static G4Positron * Positron()
Definition: G4Positron.cc:94
static G4PhysicsTable ** RecorderOfElectronProcess
G4double GetPDGMass() const
static G4PhysicsTable * theLabTimeElectronTable
static G4PhysicsTable * BuildInverseRangeTable(G4PhysicsTable *theRangeTable, G4PhysicsTable *theRangeCoeffATable, G4PhysicsTable *theRangeCoeffBTable, G4PhysicsTable *theRangeCoeffCTable, G4PhysicsTable *theInverseRangeTable, G4double Tmin, G4double Tmax, G4int nbin)
static G4PhysicsTable * theProperTimeElectronTable
static G4Electron * Electron()
Definition: G4Electron.cc:94
#define G4endl
Definition: G4ios.hh:61
static G4int CounterOfPositronProcess
double G4double
Definition: G4Types.hh:76
static void Register(const G4ParticleDefinition *p, const G4PhysicsTable *tDEDX, const G4PhysicsTable *tRange, const G4PhysicsTable *tInverseRange, const G4PhysicsTable *tLabTime, const G4PhysicsTable *tProperTime, G4double lowestKineticEnergy, G4double highestKineticEnergy, G4double massRatio, G4int NumberOfBins)
static G4PhysicsTable * theDEDXPositronTable
G4double GetPDGCharge() const
static G4PhysicsTable * BuildRangeCoeffATable(G4PhysicsTable *theRangeTable, G4PhysicsTable *theCoeffATable, G4double Tmin, G4double Tmax, G4int nbin)
void clearAndDestroy()
static G4PhysicsTable * BuildRangeCoeffCTable(G4PhysicsTable *theRangeTable, G4PhysicsTable *theCoeffCTable, G4double Tmin, G4double Tmax, G4int nbin)
virtual std::vector<G4DynamicParticle*>* G4eLowEnergyLoss::DeexciteAtom ( const G4MaterialCutsCouple ,
G4double  ,
G4double   
)
inlineprotectedvirtual

Reimplemented in G4LowEnergyIonisation.

Definition at line 154 of file G4eLowEnergyLoss.hh.

Referenced by AlongStepDoIt().

156  { return 0; };
G4bool G4eLowEnergyLoss::Fluorescence ( ) const
G4double G4eLowEnergyLoss::GetContinuousStepLimit ( const G4Track track,
G4double  previousStepSize,
G4double  currentMinimumStep,
G4double currentSafety 
)
virtual

Implements G4RDVeLowEnergyLoss.

G4double G4eLowEnergyLoss::GetLowerBoundEloss ( )
static

Definition at line 192 of file G4eLowEnergyLoss.cc.

Referenced by G4LowEnergyIonisation::BuildPhysicsTable(), and G4LowEnergyBremsstrahlung::BuildPhysicsTable().

193 {
194  return LowerBoundEloss;
195 }
virtual G4double G4eLowEnergyLoss::GetMeanFreePath ( const G4Track track,
G4double  previousStepSize,
G4ForceCondition condition 
)
pure virtual
G4int G4eLowEnergyLoss::GetNbinEloss ( )
static

Definition at line 202 of file G4eLowEnergyLoss.cc.

Referenced by G4LowEnergyIonisation::BuildPhysicsTable(), and G4LowEnergyBremsstrahlung::BuildPhysicsTable().

203 {
204  return NbinEloss;
205 }
G4int G4eLowEnergyLoss::GetNbOfProcesses ( )
static

Definition at line 172 of file G4eLowEnergyLoss.cc.

References NbOfProcesses.

173 {
174  return NbOfProcesses;
175 }
static G4int NbOfProcesses
G4double G4eLowEnergyLoss::GetUpperBoundEloss ( )
static

Definition at line 197 of file G4eLowEnergyLoss.cc.

Referenced by G4LowEnergyIonisation::BuildPhysicsTable(), and G4LowEnergyBremsstrahlung::BuildPhysicsTable().

198 {
199  return UpperBoundEloss;
200 }
G4bool G4eLowEnergyLoss::IsApplicable ( const G4ParticleDefinition )
virtual

Reimplemented from G4VProcess.

Reimplemented in G4LowEnergyBremsstrahlung, and G4LowEnergyIonisation.

void G4eLowEnergyLoss::MinusNbOfProcesses ( )
static

Definition at line 167 of file G4eLowEnergyLoss.cc.

References NbOfProcesses.

168 {
169  NbOfProcesses--;
170 }
static G4int NbOfProcesses
void G4eLowEnergyLoss::PlusNbOfProcesses ( )
static

Definition at line 162 of file G4eLowEnergyLoss.cc.

References NbOfProcesses.

163 {
164  NbOfProcesses++;
165 }
static G4int NbOfProcesses
virtual G4VParticleChange* G4eLowEnergyLoss::PostStepDoIt ( const G4Track track,
const G4Step step 
)
pure virtual
void G4eLowEnergyLoss::SetLowerBoundEloss ( G4double  val)
static

Definition at line 177 of file G4eLowEnergyLoss.cc.

178 {
179  LowerBoundEloss=val;
180 }
void G4eLowEnergyLoss::SetNbinEloss ( G4int  nb)
static

Definition at line 187 of file G4eLowEnergyLoss.cc.

188 {
189  NbinEloss=nb;
190 }
void G4eLowEnergyLoss::SetNbOfProcesses ( G4int  nb)
static

Definition at line 157 of file G4eLowEnergyLoss.cc.

References NbOfProcesses.

158 {
159  NbOfProcesses=nb;
160 }
static G4int NbOfProcesses
void G4eLowEnergyLoss::SetUpperBoundEloss ( G4double  val)
static

Definition at line 182 of file G4eLowEnergyLoss.cc.

183 {
184  UpperBoundEloss=val;
185 }

Field Documentation

G4double G4eLowEnergyLoss::Charge
protected

Definition at line 164 of file G4eLowEnergyLoss.hh.

Referenced by AlongStepDoIt(), and BuildDEDXTable().

G4int G4eLowEnergyLoss::CounterOfElectronProcess = 0
staticprotected
G4int G4eLowEnergyLoss::CounterOfPositronProcess = 0
staticprotected
G4double G4eLowEnergyLoss::lastCharge
protected

Definition at line 164 of file G4eLowEnergyLoss.hh.

G4double G4eLowEnergyLoss::MinKineticEnergy
protected

Definition at line 160 of file G4eLowEnergyLoss.hh.

Referenced by AlongStepDoIt().

G4int G4eLowEnergyLoss::NbOfProcesses = 2
staticprotected
G4PhysicsTable ** G4eLowEnergyLoss::RecorderOfElectronProcess
staticprotected
G4PhysicsTable ** G4eLowEnergyLoss::RecorderOfPositronProcess
staticprotected
G4PhysicsTable * G4eLowEnergyLoss::theDEDXElectronTable = 0
staticprotected

Definition at line 167 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().

G4PhysicsTable * G4eLowEnergyLoss::theDEDXPositronTable = 0
staticprotected

Definition at line 168 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().

G4PhysicsTable * G4eLowEnergyLoss::theInverseRangeElectronTable = 0
staticprotected

Definition at line 173 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().

G4PhysicsTable * G4eLowEnergyLoss::theInverseRangePositronTable = 0
staticprotected

Definition at line 174 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().

G4PhysicsTable * G4eLowEnergyLoss::theLabTimeElectronTable = 0
staticprotected

Definition at line 177 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().

G4PhysicsTable * G4eLowEnergyLoss::theLabTimePositronTable = 0
staticprotected

Definition at line 178 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().

G4PhysicsTable* G4eLowEnergyLoss::theLossTable
protected

Definition at line 156 of file G4eLowEnergyLoss.hh.

Referenced by ~G4eLowEnergyLoss().

G4PhysicsTable * G4eLowEnergyLoss::theProperTimeElectronTable = 0
staticprotected

Definition at line 179 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().

G4PhysicsTable * G4eLowEnergyLoss::theProperTimePositronTable = 0
staticprotected

Definition at line 180 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().

G4PhysicsTable * G4eLowEnergyLoss::theRangeElectronTable = 0
staticprotected

Definition at line 169 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().

G4PhysicsTable * G4eLowEnergyLoss::theRangePositronTable = 0
staticprotected

Definition at line 170 of file G4eLowEnergyLoss.hh.

Referenced by BuildDEDXTable().


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