Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions
DicomPhysicsList Class Reference

#include <DicomPhysicsList.hh>

Inheritance diagram for DicomPhysicsList:
G4VUserPhysicsList

Public Member Functions

 DicomPhysicsList ()
 
 ~DicomPhysicsList ()
 
- Public Member Functions inherited from G4VUserPhysicsList
 G4VUserPhysicsList ()
 
virtual ~G4VUserPhysicsList ()
 
 G4VUserPhysicsList (const G4VUserPhysicsList &)
 
G4VUserPhysicsListoperator= (const G4VUserPhysicsList &)
 
void Construct ()
 
void UseCoupledTransportation (G4bool vl=true)
 
void SetDefaultCutValue (G4double newCutValue)
 
G4double GetDefaultCutValue () const
 
void BuildPhysicsTable ()
 
void PreparePhysicsTable (G4ParticleDefinition *)
 
void BuildPhysicsTable (G4ParticleDefinition *)
 
G4bool StorePhysicsTable (const G4String &directory=".")
 
G4bool IsPhysicsTableRetrieved () const
 
G4bool IsStoredInAscii () const
 
const G4StringGetPhysicsTableDirectory () const
 
void SetPhysicsTableRetrieved (const G4String &directory="")
 
void SetStoredInAscii ()
 
void ResetPhysicsTableRetrieved ()
 
void ResetStoredInAscii ()
 
void DumpList () const
 
void DumpCutValuesTable (G4int flag=1)
 
void DumpCutValuesTableIfRequested ()
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
void SetCutsWithDefault ()
 
void SetCutValue (G4double aCut, const G4String &pname)
 
G4double GetCutValue (const G4String &pname) const
 
void SetCutValue (G4double aCut, const G4String &pname, const G4String &rname)
 
void SetParticleCuts (G4double cut, G4ParticleDefinition *particle, G4Region *region=0)
 
void SetParticleCuts (G4double cut, const G4String &particleName, G4Region *region=0)
 
void SetCutsForRegion (G4double aCut, const G4String &rname)
 
void ResetCuts ()
 obsolete methods More...
 
void SetApplyCuts (G4bool value, const G4String &name)
 
G4bool GetApplyCuts (const G4String &name) const
 
void RemoveProcessManager ()
 
void AddProcessManager (G4ParticleDefinition *newParticle, G4ProcessManager *newManager=0)
 
void CheckParticleList ()
 
void DisableCheckParticleList ()
 
G4int GetInstanceID () const
 
void InitializeWorker ()
 

Protected Member Functions

virtual void ConstructParticle ()
 
void ConstructBosons ()
 
void ConstructLeptons ()
 
void ConstructBaryons ()
 
virtual void ConstructProcess ()
 
void ConstructEM ()
 
void ConstructHad ()
 
void ConstructGeneral ()
 
virtual void SetCuts ()
 
- Protected Member Functions inherited from G4VUserPhysicsList
void AddTransportation ()
 
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
void BuildIntegralPhysicsTable (G4VProcess *, G4ParticleDefinition *)
 
virtual void RetrievePhysicsTable (G4ParticleDefinition *, const G4String &directory, G4bool ascii=false)
 
void InitializeProcessManager ()
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VUserPhysicsList
static const G4VUPLManagerGetSubInstanceManager ()
 
- Protected Attributes inherited from G4VUserPhysicsList
G4ParticleTabletheParticleTable
 
G4int verboseLevel
 
G4double defaultCutValue
 
G4bool isSetDefaultCutValue
 
G4ProductionCutsTablefCutsTable
 
G4bool fRetrievePhysicsTable
 
G4bool fStoredInAscii
 
G4bool fIsCheckedForRetrievePhysicsTable
 
G4bool fIsRestoredCutValues
 
G4String directoryPhysicsTable
 
G4bool fDisableCheckParticleList
 
G4int g4vuplInstanceID
 
- Static Protected Attributes inherited from G4VUserPhysicsList
static G4RUN_DLL G4VUPLManager subInstanceManager
 

Detailed Description

Definition at line 39 of file DicomPhysicsList.hh.

Constructor & Destructor Documentation

DicomPhysicsList::DicomPhysicsList ( )

Definition at line 44 of file DicomPhysicsList.cc.

References G4VUserPhysicsList::defaultCutValue, python.hepunit::micrometer, and G4VUserPhysicsList::SetVerboseLevel().

45 {
47  fCutForGamma = defaultCutValue;
48  fCutForElectron = defaultCutValue;
49  fCutForPositron = defaultCutValue;
50  SetVerboseLevel(1);
51 }
void SetVerboseLevel(G4int value)
int micrometer
Definition: hepunit.py:34
DicomPhysicsList::~DicomPhysicsList ( )

Definition at line 54 of file DicomPhysicsList.cc.

55 {}

Member Function Documentation

void DicomPhysicsList::ConstructBaryons ( )
protected

Definition at line 84 of file DicomPhysicsList.cc.

References G4BaryonConstructor::ConstructParticle(), G4MesonConstructor::ConstructParticle(), and G4IonConstructor::ConstructParticle().

Referenced by ConstructParticle().

85 {
86  // baryons
87  G4BaryonConstructor bConstructor;
88  bConstructor.ConstructParticle();
89 
90  G4IonConstructor iConstructor;
91  iConstructor.ConstructParticle();
92 
93  G4MesonConstructor mConstructor;
94  mConstructor.ConstructParticle();
95 }
static void ConstructParticle()
static void ConstructParticle()
static void ConstructParticle()
void DicomPhysicsList::ConstructBosons ( )
protected

Definition at line 66 of file DicomPhysicsList.cc.

References G4Gamma::GammaDefinition(), and G4OpticalPhoton::OpticalPhotonDefinition().

Referenced by ConstructParticle().

67 {
68  // gamma
70 
71  // optical photon
73 }
static G4OpticalPhoton * OpticalPhotonDefinition()
static G4Gamma * GammaDefinition()
Definition: G4Gamma.cc:81
void DicomPhysicsList::ConstructEM ( )
protected

Definition at line 162 of file DicomPhysicsList.cc.

References G4ProcessManager::AddDiscreteProcess(), G4VEmProcess::AddEmModel(), G4VEnergyLossProcess::AddEmModel(), G4ProcessManager::AddProcess(), fUseDistanceToBoundary, G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), G4VEnergyLossProcess::SetEmModel(), G4VEnergyLossProcess::SetStepFunction(), G4VMultipleScattering::SetStepLimitType(), and theParticleIterator.

Referenced by ConstructProcess().

163 {
164  theParticleIterator->reset();
165 
166  while( (*theParticleIterator)() ){
167 
168  G4ParticleDefinition* particle = theParticleIterator->value();
169  G4ProcessManager* pmanager = particle->GetProcessManager();
170  G4String particleName = particle->GetParticleName();
171 
172  if (particleName == "gamma") {
173 
174 
175  G4PhotoElectricEffect* thePhotoElectricEffect =
176  new G4PhotoElectricEffect();
177  G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel
179  thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
180  pmanager->AddDiscreteProcess(thePhotoElectricEffect);
181 
182  G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
183  G4LivermoreComptonModel* theLivermoreComptonModel =
185  theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
186  pmanager->AddDiscreteProcess(theComptonScattering);
187 
188  G4GammaConversion* theGammaConversion = new G4GammaConversion();
189  G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel
191  theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
192  pmanager->AddDiscreteProcess(theGammaConversion);
193 
194  G4RayleighScattering* theRayleigh = new G4RayleighScattering();
195  G4LivermoreRayleighModel* theRayleighModel
196  = new G4LivermoreRayleighModel();
197  theRayleigh->AddEmModel(0, theRayleighModel);
198  pmanager->AddDiscreteProcess(theRayleigh);
199 
200  pmanager->AddProcess(new G4StepLimiter(), -1, -1, 5);
201 
202  } else if (particleName == "e-") {
203 
206  pmanager->AddProcess(msc, -1, 1, 1);
207 
208  // Ionisation
209  G4eIonisation* eIoni = new G4eIonisation();
210  eIoni->AddEmModel(0, new G4LivermoreIonisationModel(),
211  new G4UniversalFluctuation() );
212  eIoni->SetStepFunction(0.2, 100*um); //
213  pmanager->AddProcess(eIoni, -1, 2, 2);
214 
215  // Bremsstrahlung
216  G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
218  pmanager->AddProcess(eBrem, -1,-3, 3);
219 
220  pmanager->AddProcess(new G4StepLimiter(), -1, -1, 4);
221 
222  } else if (particleName == "e+") {
223 
224  // Identical to G4EmStandardPhysics_option3
225 
228  pmanager->AddProcess(msc, -1, 1, 1);
229 
230  G4eIonisation* eIoni = new G4eIonisation();
231  eIoni->SetStepFunction(0.2, 100*um);
232  pmanager->AddProcess(eIoni, -1, 2, 2);
233 
234  pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
235 
236  pmanager->AddProcess(new G4eplusAnnihilation,0,-1, 4);
237 
238  pmanager->AddProcess(new G4StepLimiter(), -1, -1, 5);
239 
240  } else if (particleName == "GenericIon") {
241 
242  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
243 
244  G4ionIonisation* ionIoni = new G4ionIonisation();
245  ionIoni->SetEmModel(new G4IonParametrisedLossModel());
246  ionIoni->SetStepFunction(0.1, 20*um);
247  pmanager->AddProcess(ionIoni, -1, 2, 2);
248 
249  pmanager->AddProcess(new G4StepLimiter(), -1, -1, 3);
250 
251  } else if (particleName == "alpha" ||
252  particleName == "He3" ) {
253 
254  // Identical to G4EmStandardPhysics_option3
255 
256  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
257 
258  G4ionIonisation* ionIoni = new G4ionIonisation();
259  ionIoni->SetStepFunction(0.1, 20*um);
260  pmanager->AddProcess(ionIoni, -1, 2, 2);
261 
262  pmanager->AddProcess(new G4StepLimiter(), -1, -1, 3);
263  }
264 
265  //
266 
267  }
268 }
void SetStepFunction(G4double v1, G4double v2)
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
void AddEmModel(G4int, G4VEmModel *, G4VEmFluctuationModel *fluc=0, const G4Region *region=0)
void AddEmModel(G4int, G4VEmModel *, const G4Region *region=0)
void SetEmModel(G4VEmModel *, G4int index=1)
#define theParticleIterator
void SetStepLimitType(G4MscStepLimitType val)
void DicomPhysicsList::ConstructGeneral ( )
protected

Definition at line 329 of file DicomPhysicsList.cc.

Referenced by ConstructProcess().

330 { }
void DicomPhysicsList::ConstructHad ( )
protected

Definition at line 279 of file DicomPhysicsList.cc.

References G4HadronicProcess::AddDataSet(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), python.hepunit::GeV, python.hepunit::MeV, G4HadronicProcess::RegisterMe(), G4HadronicInteraction::SetMaxEnergy(), G4HadronicInteraction::SetMinEnergy(), and theParticleIterator.

Referenced by ConstructProcess().

280 {
281 
282  G4HadronElasticProcess * theElasticProcess = new G4HadronElasticProcess;
283  theElasticProcess->RegisterMe( new G4HadronElastic() );
284 
285  theParticleIterator->reset();
286  while( (*theParticleIterator)() )
287  {
288  G4ParticleDefinition* particle = theParticleIterator->value();
289  G4ProcessManager* pManager = particle->GetProcessManager();
290 
291  if (particle->GetParticleName() == "alpha") {
292 
293  // INELASTIC SCATTERING
294  // Binary Cascade
296  // DHW - change lower limit from 80 MeV to zero because
297  // G4LEDeuteronInelastic is deprecated
298  theBC->SetMinEnergy(0.*MeV);
299  theBC->SetMaxEnergy(40.*GeV);
300 
301  // TRIPATHI CROSS SECTION
302  // Implementation of formulas in analogy to NASA technical paper 3621 by
303  // Tripathi, et al. Cross-sections for ion ion scattering
304  G4TripathiCrossSection* TripathiCrossSection = new G4TripathiCrossSection;
305 
306  // IONS SHEN CROSS SECTION
307  // Implementation of formulas
308  // Shen et al. Nuc. Phys. A 491 130 (1989)
309  // Total Reaction Cross Section for Heavy-Ion Collisions
311 
313  theIPalpha->AddDataSet(TripathiCrossSection);
314  theIPalpha->AddDataSet(aShen);
315 
316  // Register the Binary Cascade Model
317  theIPalpha->RegisterMe(theBC);
318 
319  // Activate the alpha inelastic scattering using the binary cascade model
320  pManager -> AddDiscreteProcess(theIPalpha);
321 
322  // Activate the Hadron Elastic Process
323  pManager -> AddDiscreteProcess(theElasticProcess);
324  }
325  }
326 }
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
void RegisterMe(G4HadronicInteraction *a)
void SetMinEnergy(G4double anEnergy)
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void SetMaxEnergy(const G4double anEnergy)
#define theParticleIterator
void DicomPhysicsList::ConstructLeptons ( )
protected

Definition at line 76 of file DicomPhysicsList.cc.

References G4Electron::ElectronDefinition(), and G4Positron::PositronDefinition().

Referenced by ConstructParticle().

77 {
78  // leptons
81 }
static G4Electron * ElectronDefinition()
Definition: G4Electron.cc:89
static G4Positron * PositronDefinition()
Definition: G4Positron.cc:89
void DicomPhysicsList::ConstructParticle ( void  )
protectedvirtual

Implements G4VUserPhysicsList.

Definition at line 58 of file DicomPhysicsList.cc.

References ConstructBaryons(), ConstructBosons(), and ConstructLeptons().

59 {
63 }
void DicomPhysicsList::ConstructProcess ( void  )
protectedvirtual
void DicomPhysicsList::SetCuts ( )
protectedvirtual

Reimplemented from G4VUserPhysicsList.

Definition at line 333 of file DicomPhysicsList.cc.

References G4VUserPhysicsList::defaultCutValue, G4VUserPhysicsList::DumpCutValuesTable(), G4BestUnit, G4cout, G4endl, G4VUserPhysicsList::SetCutValue(), and G4VUserPhysicsList::verboseLevel.

334 {
335  if (verboseLevel >0){
336  G4cout << "DicomPhysicsList::SetCuts:";
337  G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
338  }
339 
340  // set cut values for gamma at first and for e- second and next for e+,
341  // because some processes for e+/e- need cut values for gamma
342  SetCutValue(fCutForGamma, "gamma");
343  SetCutValue(fCutForElectron, "e-");
344  SetCutValue(fCutForPositron, "e+");
345 
347 
348 }
void SetCutValue(G4double aCut, const G4String &pname)
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
void DumpCutValuesTable(G4int flag=1)
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61

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