13 #include "G4FastSimulationManagerProcess.hh"
14 #include "G4ProcessManager.hh"
16 #include "G4LeptonConstructor.hh"
17 #include "G4MesonConstructor.hh"
18 #include "G4BaryonConstructor.hh"
19 #include "G4ShortLivedConstructor.hh"
20 #include "G4IonConstructor.hh"
21 #include "G4RegionStore.hh"
22 #include "G4Electron.hh"
23 #include "G4Positron.hh"
25 #include "G4EmProcessOptions.hh"
26 #include "G4PhysicsListHelper.hh"
27 #include "G4SystemOfUnits.hh"
28 #include "G4UAtomicDeexcitation.hh"
29 #include "G4LossTableManager.hh"
32 : G4VPhysicsConstructor(name), theParSet(p)
45 G4LeptonConstructor pLeptonConstructor;
46 pLeptonConstructor.ConstructParticle();
48 G4MesonConstructor pMesonConstructor;
49 pMesonConstructor.ConstructParticle();
51 G4BaryonConstructor pBaryonConstructor;
52 pBaryonConstructor.ConstructParticle();
54 G4ShortLivedConstructor pShortLivedConstructor;
55 pShortLivedConstructor.ConstructParticle();
57 G4IonConstructor pConstructor;
58 pConstructor.ConstructParticle();
69 <<
"ParametrisedEMPhysics: GFlash Construct: "
70 << gem <<
" " << ghad;
71 G4FastSimulationManagerProcess * theFastSimulationManagerProcess =
72 new G4FastSimulationManagerProcess();
73 aParticleIterator->reset();
74 while ((*aParticleIterator)()) {
75 G4ParticleDefinition * particle = aParticleIterator->value();
76 G4ProcessManager * pmanager = particle->GetProcessManager();
77 G4String pname = particle->GetParticleName();
78 if(pname ==
"e-" || pname ==
"e+") {
79 pmanager->AddProcess(theFastSimulationManagerProcess, -1, -1, 1);
85 G4RegionStore::GetInstance()->GetRegion(
"EcalRegion");
89 <<
"ParametrisedEMPhysics::ConstructProcess: "
90 <<
"EcalRegion is not defined, GFlash will not be enabled for ECAL!";
102 G4RegionStore::GetInstance()->GetRegion(
"HcalRegion");
105 <<
"ParametrisedEMPhysics::ConstructProcess: "
106 <<
"HcalRegion is not defined, GFlash will not be enabled for HCAL!";
118 G4EmProcessOptions opt;
119 const G4int NREG = 6;
120 const G4String rname[NREG] = {
"EcalRegion",
"HcalRegion",
"MuonIron",
121 "PreshowerRegion",
"CastorRegion",
122 "DefaultRegionForTheWorld"};
123 G4double rrfact[NREG] = { 1.0 };
128 if(energyLim > 0.0) {
135 for(
int i=0;
i<NREG; ++
i) {
136 if(rrfact[
i] < 1.0) {
137 opt.ActivateSecondaryBiasing(
"eIoni",rname[
i],rrfact[i],energyLim);
138 opt.ActivateSecondaryBiasing(
"hIoni",rname[i],rrfact[i],energyLim);
145 <<
"ParametrisedEMPhysics: Russian Roulette"
146 <<
" for e- Prob= " << rrfact[
i]
148 <<
" inside " << rname[
i];
158 if(eLimiter || rLimiter || pLimiter) {
159 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
161 if(eLimiter || rLimiter) {
177 G4VAtomDeexcitation* de =
new G4UAtomicDeexcitation();
178 G4LossTableManager::Instance()->SetAtomDeexcitation(de);
ElectronLimiter * theElectronLimiter
T getParameter(std::string const &) const
void SetRangeCheckFlag(G4bool)
edm::ParameterSet theParSet
ElectronLimiter * thePositronLimiter
virtual void ConstructParticle()
void SetFieldCheckFlag(G4bool)
GFlashEMShowerModel * theHadShowerModel
virtual ~ParametrisedEMPhysics()
ParametrisedEMPhysics(std::string name, const edm::ParameterSet &p)
GFlashEMShowerModel * theEMShowerModel
virtual void ConstructProcess()