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

#include <F04PhysicsList.hh>

Inheritance diagram for F04PhysicsList:
G4VModularPhysicsList G4VUserPhysicsList

Public Member Functions

 F04PhysicsList (G4String)
 
virtual ~F04PhysicsList ()
 
virtual void SetCuts ()
 
void SetCutForGamma (G4double)
 
void SetCutForElectron (G4double)
 
void SetCutForPositron (G4double)
 
void SetStepMax (G4double)
 
F04StepMaxGetStepMaxProcess ()
 
void AddStepMax ()
 
virtual void ConstructParticle ()
 
virtual void ConstructProcess ()
 
- Public Member Functions inherited from G4VModularPhysicsList
 G4VModularPhysicsList ()
 
virtual ~G4VModularPhysicsList ()
 
void RegisterPhysics (G4VPhysicsConstructor *)
 
const G4VPhysicsConstructorGetPhysics (G4int index) const
 
const G4VPhysicsConstructorGetPhysics (const G4String &name) const
 
const G4VPhysicsConstructorGetPhysicsWithType (G4int physics_type) const
 
void ReplacePhysics (G4VPhysicsConstructor *)
 
void RemovePhysics (G4VPhysicsConstructor *)
 
void RemovePhysics (G4int type)
 
void RemovePhysics (const G4String &name)
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
G4int GetInstanceID () const
 
- 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 ()
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VModularPhysicsList
static const G4VMPLManagerGetSubInstanceManager ()
 
- Static Public Member Functions inherited from G4VUserPhysicsList
static const G4VUPLManagerGetSubInstanceManager ()
 
- Protected Types inherited from G4VModularPhysicsList
typedef
G4VMPLData::G4PhysConstVectorData 
G4PhysConstVector
 
- Protected Member Functions inherited from G4VModularPhysicsList
 G4VModularPhysicsList (const G4VModularPhysicsList &)
 
G4VModularPhysicsListoperator= (const G4VModularPhysicsList &)
 
- 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 ()
 
- Protected Attributes inherited from G4VModularPhysicsList
G4int verboseLevel
 
G4int g4vmplInstanceID
 
- 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 G4VModularPhysicsList
static G4RUN_DLL G4VMPLManager G4VMPLsubInstanceManager
 
- Static Protected Attributes inherited from G4VUserPhysicsList
static G4RUN_DLL G4VUPLManager subInstanceManager
 

Detailed Description

Definition at line 43 of file F04PhysicsList.hh.

Constructor & Destructor Documentation

F04PhysicsList::F04PhysicsList ( G4String  physName)

Definition at line 67 of file F04PhysicsList.cc.

References DBL_MAX, G4VUserPhysicsList::defaultCutValue, FatalException, G4cout, G4endl, G4Exception(), G4VModularPhysicsList::GetPhysics(), G4VPhysicsConstructor::GetPhysicsName(), G4LossTableManager::Instance(), python.hepunit::mm, G4VModularPhysicsList::RegisterPhysics(), and G4VModularPhysicsList::SetVerboseLevel().

68 {
70 
71  defaultCutValue = 1.*mm;
72  fCutForGamma = defaultCutValue;
73  fCutForElectron = defaultCutValue;
74  fCutForPositron = defaultCutValue;
75 
76  fMessenger = new F04PhysicsListMessenger(this);
77 
78  SetVerboseLevel(1);
79 
80 // G4PhysListFactory factory;
81  G4VModularPhysicsList* phys = NULL;
82  if (physName == "QGSP_BERT") {
83  phys = new QGSP_BERT;
84  } else {
85  phys = new FTFP_BERT;
86  }
87 
88 // if (factory.IsReferencePhysList(physName))
89 // phys =factory.GetReferencePhysList(physName);
90 
91  // Physics List is defined via environment variable PHYSLIST
92 // if (!phys) phys = factory.ReferencePhysList();
93 
94  if (!phys) G4Exception("WLSPhysicsList::WLSPhysicsList","InvalidSetup",
95  FatalException,"PhysicsList does not exist");
96 
97  for (G4int i = 0; ; ++i) {
98  G4VPhysicsConstructor* elem =
99  const_cast<G4VPhysicsConstructor*> (phys->GetPhysics(i));
100  if (elem == NULL) break;
101  G4cout << "RegisterPhysics: " << elem->GetPhysicsName() << G4endl;
102  RegisterPhysics(elem);
103  }
104 
107 
108  fStepMaxProcess = new F04StepMax();
109  fMaxChargedStep = DBL_MAX;
110 }
TQGSP_BERT< G4VModularPhysicsList > QGSP_BERT
Definition: QGSP_BERT.hh:63
void RegisterPhysics(G4VPhysicsConstructor *)
static G4LossTableManager * Instance()
Provide control of the physics list and cut parameters.
int G4int
Definition: G4Types.hh:78
G4GLOB_DLL std::ostream G4cout
const G4VPhysicsConstructor * GetPhysics(G4int index) const
const G4String & GetPhysicsName() const
void SetVerboseLevel(G4int value)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
TFTFP_BERT< G4VModularPhysicsList > FTFP_BERT
Definition: FTFP_BERT.hh:63
#define G4endl
Definition: G4ios.hh:61
#define DBL_MAX
Definition: templates.hh:83
F04PhysicsList::~F04PhysicsList ( )
virtual

Definition at line 114 of file F04PhysicsList.cc.

115 {
116  delete fMessenger;
117 
118  delete fStepMaxProcess;
119 }

Member Function Documentation

void F04PhysicsList::AddStepMax ( )

Definition at line 303 of file F04PhysicsList.cc.

References G4ProcessManager::AddDiscreteProcess(), G4ParticleDefinition::GetProcessManager(), F04StepMax::IsApplicable(), G4ParticleDefinition::IsShortLived(), and theParticleIterator.

Referenced by ConstructProcess().

304 {
305  // Step limitation seen as a process
306 
307  theParticleIterator->reset();
308  while ((*theParticleIterator)()){
309  G4ParticleDefinition* particle = theParticleIterator->value();
310  G4ProcessManager* pmanager = particle->GetProcessManager();
311 
312  if (fStepMaxProcess->IsApplicable(*particle) && !particle->IsShortLived())
313  {
314  if (pmanager) pmanager ->AddDiscreteProcess(fStepMaxProcess);
315  }
316  }
317 }
virtual G4bool IsApplicable(const G4ParticleDefinition &)
Definition: F04StepMax.cc:57
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessManager * GetProcessManager() const
#define theParticleIterator
void F04PhysicsList::ConstructParticle ( void  )
virtual

Reimplemented from G4VModularPhysicsList.

Definition at line 123 of file F04PhysicsList.cc.

References G4VModularPhysicsList::ConstructParticle(), G4GenericIon::GenericIonDefinition(), JA::Insert(), G4MuonMinus::MuonMinusDefinition(), and G4MuonPlus::MuonPlusDefinition().

124 {
126 
128 
129  G4DecayTable* muonPlusDecayTable = new G4DecayTable();
130  muonPlusDecayTable -> Insert(new
131  G4MuonDecayChannelWithSpin("mu+",0.986));
132  muonPlusDecayTable -> Insert(new
134  G4MuonPlus::MuonPlusDefinition() -> SetDecayTable(muonPlusDecayTable);
135 
136  G4DecayTable* muonMinusDecayTable = new G4DecayTable();
137  muonMinusDecayTable -> Insert(new
138  G4MuonDecayChannelWithSpin("mu-",0.986));
139  muonMinusDecayTable -> Insert(new
141  G4MuonMinus::MuonMinusDefinition() -> SetDecayTable(muonMinusDecayTable);
142 }
static G4GenericIon * GenericIonDefinition()
Definition: G4GenericIon.cc:88
static G4MuonPlus * MuonPlusDefinition()
Definition: G4MuonPlus.cc:94
void Insert(const PVNodeID *pvPath, size_t pathLength, G4int index, Node *node)
static G4MuonMinus * MuonMinusDefinition()
Definition: G4MuonMinus.cc:95
void F04PhysicsList::ConstructProcess ( void  )
virtual

Reimplemented from G4VModularPhysicsList.

Definition at line 146 of file F04PhysicsList.cc.

References G4ProcessManager::AddProcess(), AddStepMax(), G4VModularPhysicsList::ConstructProcess(), G4INCL::ClusterDecay::decay(), G4ProcessTable::FindProcess(), G4ParticleDefinition::GetProcessManager(), G4ProcessTable::GetProcessTable(), idxAtRest, idxPostStep, G4MuonMinus::MuonMinus(), G4MuonPlus::MuonPlus(), G4PionMinus::PionMinus(), G4PionPlus::PionPlus(), G4ProcessManager::RemoveProcess(), and G4ProcessManager::SetProcessOrdering().

147 {
149 
150  G4DecayWithSpin* decayWithSpin = new G4DecayWithSpin();
151 
153 
154  G4VProcess* decay;
155  decay = processTable->FindProcess("Decay",G4MuonPlus::MuonPlus());
156 
157  G4ProcessManager* pmanager;
158  pmanager = G4MuonPlus::MuonPlus()->GetProcessManager();
159 
160  if (pmanager) {
161  if (decay) pmanager->RemoveProcess(decay);
162  pmanager->AddProcess(decayWithSpin);
163  // set ordering for PostStepDoIt and AtRestDoIt
164  pmanager ->SetProcessOrdering(decayWithSpin, idxPostStep);
165  pmanager ->SetProcessOrdering(decayWithSpin, idxAtRest);
166  }
167 
168  decay = processTable->FindProcess("Decay",G4MuonMinus::MuonMinus());
169 
171 
172  if (pmanager) {
173  if (decay) pmanager->RemoveProcess(decay);
174  pmanager->AddProcess(decayWithSpin);
175  // set ordering for PostStepDoIt and AtRestDoIt
176  pmanager ->SetProcessOrdering(decayWithSpin, idxPostStep);
177  pmanager ->SetProcessOrdering(decayWithSpin, idxAtRest);
178  }
179 
180  G4PionDecayMakeSpin* poldecay = new G4PionDecayMakeSpin();
181 
182  decay = processTable->FindProcess("Decay",G4PionPlus::PionPlus());
183 
184  pmanager = G4PionPlus::PionPlus()->GetProcessManager();
185 
186  if (pmanager) {
187  if (decay) pmanager->RemoveProcess(decay);
188  pmanager->AddProcess(poldecay);
189  // set ordering for PostStepDoIt and AtRestDoIt
190  pmanager ->SetProcessOrdering(poldecay, idxPostStep);
191  pmanager ->SetProcessOrdering(poldecay, idxAtRest);
192  }
193 
194  decay = processTable->FindProcess("Decay",G4PionMinus::PionMinus());
195 
197 
198  if (pmanager) {
199  if (decay) pmanager->RemoveProcess(decay);
200  pmanager->AddProcess(poldecay);
201  // set ordering for PostStepDoIt and AtRestDoIt
202  pmanager ->SetProcessOrdering(poldecay, idxPostStep);
203  pmanager ->SetProcessOrdering(poldecay, idxAtRest);
204  }
205 
206  AddStepMax();
207 }
static G4MuonPlus * MuonPlus()
Definition: G4MuonPlus.cc:99
G4ProcessManager * GetProcessManager() const
ParticleList decay(Cluster *const c)
Carries out a cluster decay.
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:98
void SetProcessOrdering(G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt, G4int ordDoIt=ordDefault)
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:98
static G4MuonMinus * MuonMinus()
Definition: G4MuonMinus.cc:100
G4VProcess * RemoveProcess(G4VProcess *aProcess)
static G4ProcessTable * GetProcessTable()
G4VProcess * FindProcess(const G4String &processName, const G4String &particleName) const
F04StepMax * F04PhysicsList::GetStepMaxProcess ( )

Definition at line 296 of file F04PhysicsList.cc.

297 {
298  return fStepMaxProcess;
299 }
void F04PhysicsList::SetCutForElectron ( G4double  cut)

Definition at line 272 of file F04PhysicsList.cc.

References G4Electron::Electron(), and G4VUserPhysicsList::SetParticleCuts().

Referenced by F04PhysicsListMessenger::SetNewValue().

273 {
274  fCutForElectron = cut;
275  SetParticleCuts(fCutForElectron, G4Electron::Electron());
276 }
void SetParticleCuts(G4double cut, G4ParticleDefinition *particle, G4Region *region=0)
static G4Electron * Electron()
Definition: G4Electron.cc:94
void F04PhysicsList::SetCutForGamma ( G4double  cut)

Definition at line 264 of file F04PhysicsList.cc.

References G4Gamma::Gamma(), and G4VUserPhysicsList::SetParticleCuts().

Referenced by F04PhysicsListMessenger::SetNewValue().

265 {
266  fCutForGamma = cut;
267  SetParticleCuts(fCutForGamma, G4Gamma::Gamma());
268 }
void SetParticleCuts(G4double cut, G4ParticleDefinition *particle, G4Region *region=0)
static G4Gamma * Gamma()
Definition: G4Gamma.cc:86
void F04PhysicsList::SetCutForPositron ( G4double  cut)

Definition at line 280 of file F04PhysicsList.cc.

References G4Positron::Positron(), and G4VUserPhysicsList::SetParticleCuts().

Referenced by F04PhysicsListMessenger::SetNewValue().

281 {
282  fCutForPositron = cut;
283  SetParticleCuts(fCutForPositron, G4Positron::Positron());
284 }
void SetParticleCuts(G4double cut, G4ParticleDefinition *particle, G4Region *region=0)
static G4Positron * Positron()
Definition: G4Positron.cc:94
void F04PhysicsList::SetCuts ( )
virtual

Reimplemented from G4VUserPhysicsList.

Definition at line 245 of file F04PhysicsList.cc.

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

246 {
247  if (verboseLevel >0) {
248  G4cout << "F04PhysicsList::SetCuts:";
249  G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length")
250  << G4endl;
251  }
252 
253  // set cut values for gamma at first and for e- second and next for e+,
254  // because some processes for e+/e- need cut values for gamma
255  SetCutValue(fCutForGamma, "gamma");
256  SetCutValue(fCutForElectron, "e-");
257  SetCutValue(fCutForPositron, "e+");
258 
260 }
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
void F04PhysicsList::SetStepMax ( G4double  step)

Definition at line 288 of file F04PhysicsList.cc.

References F04StepMax::SetStepMax().

Referenced by F04PhysicsListMessenger::SetNewValue().

289 {
290  fMaxChargedStep = step ;
291  fStepMaxProcess->SetStepMax(fMaxChargedStep);
292 }
void SetStepMax(G4double)
Definition: F04StepMax.cc:64

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