14 #include "G4FastSimulationManagerProcess.hh"
15 #include "G4ProcessManager.hh"
17 #include "G4LeptonConstructor.hh"
18 #include "G4MesonConstructor.hh"
19 #include "G4BaryonConstructor.hh"
20 #include "G4ShortLivedConstructor.hh"
21 #include "G4IonConstructor.hh"
22 #include "G4RegionStore.hh"
23 #include "G4Electron.hh"
24 #include "G4Positron.hh"
25 #include "G4MuonMinus.hh"
26 #include "G4MuonPlus.hh"
27 #include "G4PionMinus.hh"
28 #include "G4PionPlus.hh"
29 #include "G4KaonMinus.hh"
30 #include "G4KaonPlus.hh"
31 #include "G4Proton.hh"
32 #include "G4AntiProton.hh"
34 #include "G4MuonNuclearProcess.hh"
35 #include "G4MuonVDNuclearModel.hh"
38 #include "G4EmProcessOptions.hh"
39 #include "G4PhysicsListHelper.hh"
40 #include "G4SystemOfUnits.hh"
41 #include "G4UAtomicDeexcitation.hh"
42 #include "G4LossTableManager.hh"
46 : G4VPhysicsConstructor(name), theParSet(p)
83 G4LeptonConstructor pLeptonConstructor;
84 pLeptonConstructor.ConstructParticle();
86 G4MesonConstructor pMesonConstructor;
87 pMesonConstructor.ConstructParticle();
89 G4BaryonConstructor pBaryonConstructor;
90 pBaryonConstructor.ConstructParticle();
92 G4ShortLivedConstructor pShortLivedConstructor;
93 pShortLivedConstructor.ConstructParticle();
95 G4IonConstructor pConstructor;
96 pConstructor.ConstructParticle();
107 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
108 if(gem || ghad || gemHad || ghadHad) {
110 <<
"ParametrisedEMPhysics: GFlash Construct for e+-: "
111 << gem <<
" " << ghad <<
" for hadrons: " << gemHad <<
" " << ghadHad;
113 G4FastSimulationManagerProcess * theFastSimulationManagerProcess =
114 new G4FastSimulationManagerProcess();
118 ph->RegisterProcess(theFastSimulationManagerProcess, G4Positron::Positron());
120 if(gemHad || ghadHad) {
121 ph->RegisterProcess(theFastSimulationManagerProcess, G4Proton::Proton());
122 ph->RegisterProcess(theFastSimulationManagerProcess, G4AntiProton::AntiProton());
123 ph->RegisterProcess(theFastSimulationManagerProcess, G4PionPlus::PionPlus());
124 ph->RegisterProcess(theFastSimulationManagerProcess, G4PionMinus::PionMinus());
125 ph->RegisterProcess(theFastSimulationManagerProcess, G4KaonPlus::KaonPlus());
126 ph->RegisterProcess(theFastSimulationManagerProcess, G4KaonMinus::KaonMinus());
131 G4RegionStore::GetInstance()->GetRegion(
"EcalRegion");
135 <<
"ParametrisedEMPhysics::ConstructProcess: "
136 <<
"EcalRegion is not defined, GFlash will not be enabled for ECAL!";
155 if(ghad || ghadHad) {
157 G4RegionStore::GetInstance()->GetRegion(
"HcalRegion");
160 <<
"ParametrisedEMPhysics::ConstructProcess: "
161 <<
"HcalRegion is not defined, GFlash will not be enabled for HCAL!";
182 G4EmProcessOptions opt;
184 opt.SetVerbose(verb - 1);
188 <<
"ParametrisedEMPhysics::ConstructProcess: bremsstrahlung threshold Eth= "
189 << bremth/
GeV <<
" GeV";
190 opt.SetBremsstrahlungTh(bremth);
193 const G4int NREG = 6;
194 const G4String rname[NREG] = {
"EcalRegion",
"HcalRegion",
"MuonIron",
195 "PreshowerRegion",
"CastorRegion",
196 "DefaultRegionForTheWorld"};
197 G4double rrfact[NREG] = { 1.0 };
201 if(energyLim > 0.0) {
208 for(
int i=0;
i<NREG; ++
i) {
209 if(rrfact[
i] < 1.0) {
210 opt.ActivateSecondaryBiasing(
"eIoni",rname[
i],rrfact[i],energyLim);
211 opt.ActivateSecondaryBiasing(
"hIoni",rname[i],rrfact[i],energyLim);
213 <<
"ParametrisedEMPhysics: Russian Roulette"
214 <<
" for e- Prob= " << rrfact[
i]
216 <<
" inside " << rname[
i];
226 if(eLimiter || rLimiter) {
241 G4VAtomDeexcitation* de =
new G4UAtomicDeexcitation();
242 G4LossTableManager::Instance()->SetAtomDeexcitation(de);
249 G4MuonNuclearProcess* muNucProcess =
new G4MuonNuclearProcess();
250 muNucProcess->RegisterMe(
new G4MuonVDNuclearModel());
251 ph->RegisterProcess(muNucProcess, G4MuonPlus::MuonPlus());
252 ph->RegisterProcess(muNucProcess, G4MuonMinus::MuonMinus());
ElectronLimiter * theElectronLimiter
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void SetRangeCheckFlag(G4bool)
edm::ParameterSet theParSet
ElectronLimiter * thePositronLimiter
virtual void ConstructParticle()
GFlashHadronShowerModel * theEcalHadShowerModel
void SetFieldCheckFlag(G4bool)
GFlashHadronShowerModel * theHcalHadShowerModel
virtual ~ParametrisedEMPhysics()
ParametrisedEMPhysics(std::string name, const edm::ParameterSet &p)
GFlashEMShowerModel * theHcalEMShowerModel
GFlashEMShowerModel * theEcalEMShowerModel
virtual void ConstructProcess()