12 #include "G4FastSimulationManagerProcess.hh"
13 #include "G4ProcessManager.hh"
15 #include "G4LeptonConstructor.hh"
16 #include "G4MesonConstructor.hh"
17 #include "G4BaryonConstructor.hh"
18 #include "G4ShortLivedConstructor.hh"
19 #include "G4IonConstructor.hh"
20 #include "G4RegionStore.hh"
22 #include "G4EmProcessOptions.hh"
25 : G4VPhysicsConstructor(name), theParSet(p)
38 G4LeptonConstructor pLeptonConstructor;
39 pLeptonConstructor.ConstructParticle();
41 G4MesonConstructor pMesonConstructor;
42 pMesonConstructor.ConstructParticle();
44 G4BaryonConstructor pBaryonConstructor;
45 pBaryonConstructor.ConstructParticle();
47 G4ShortLivedConstructor pShortLivedConstructor;
48 pShortLivedConstructor.ConstructParticle();
50 G4IonConstructor pConstructor;
51 pConstructor.ConstructParticle();
62 <<
"ParametrisedEMPhysics: GFlash Construct: "
63 << gem <<
" " << ghad;
64 G4FastSimulationManagerProcess * theFastSimulationManagerProcess =
65 new G4FastSimulationManagerProcess();
66 theParticleIterator->reset();
67 while ((*theParticleIterator)()) {
68 G4ParticleDefinition * particle = theParticleIterator->value();
69 G4ProcessManager * pmanager = particle->GetProcessManager();
70 G4String pname = particle->GetParticleName();
71 if(pname ==
"e-" || pname ==
"e+") {
72 pmanager->AddProcess(theFastSimulationManagerProcess, -1, -1, 1);
77 G4Region* aRegion = G4RegionStore::GetInstance()->GetRegion(
"EcalRegion");
81 <<
"ParametrisedEMPhysics::ConstructProcess: "
82 <<
"EcalRegion is not defined, GFlash will not be enabled for ECAL!";
93 G4Region* aRegion = G4RegionStore::GetInstance()->GetRegion(
"HcalRegion");
96 <<
"ParametrisedEMPhysics::ConstructProcess: "
97 <<
"HcalRegion is not defined, GFlash will not be enabled for HCAL!";
109 G4EmProcessOptions opt;
110 const G4String rname[8] = {
"EcalRegion",
"HcalRegion",
"QuadRegion",
"MuonIron",
111 "PreshowerRegion",
"CastorRegion",
"BeamPipeOutsideRegion",
112 "DefaultRegionForTheWorld"};
113 G4double rrfact[8] = { 1.0 };
117 if(energyLim > 0.0) {
126 for(
int i=0;
i<8; ++
i) {
127 if(rrfact[
i] < 1.0) {
128 opt.ActivateSecondaryBiasing(
"eBrem",rname[
i],rrfact[i],energyLim);
130 <<
"ParametrisedEMPhysics: Russian Roulette"
131 <<
" for gamma Prob= " << rrfact[
i]
132 <<
" Elimit(MeV)= " << energyLim/CLHEP::MeV
133 <<
" inside " << rname[
i];
139 if(energyLim > 0.0) {
148 for(
int i=0;
i<8; ++
i) {
149 if(rrfact[
i] < 1.0) {
150 opt.ActivateSecondaryBiasing(
"eIoni",rname[
i],rrfact[i],energyLim);
151 opt.ActivateSecondaryBiasing(
"hIoni",rname[i],rrfact[i],energyLim);
152 opt.ActivateSecondaryBiasing(
"muIoni",rname[i],rrfact[i],energyLim);
153 opt.ActivateSecondaryBiasing(
"ionIoni",rname[i],rrfact[i],energyLim);
154 opt.ActivateSecondaryBiasingForGamma(
"phot",rname[i],rrfact[i],energyLim);
155 opt.ActivateSecondaryBiasingForGamma(
"compt",rname[i],rrfact[i],energyLim);
156 opt.ActivateSecondaryBiasingForGamma(
"conv",rname[i],rrfact[i],energyLim);
158 <<
"ParametrisedEMPhysics: Russian Roulette"
159 <<
" for e- Prob= " << rrfact[
i]
160 <<
" Elimit(MeV)= " << energyLim/CLHEP::MeV
161 <<
" inside " << rname[
i];
T getParameter(std::string const &) const
edm::ParameterSet theParSet
virtual void ConstructParticle()
GFlashEMShowerModel * theHadShowerModel
virtual ~ParametrisedEMPhysics()
ParametrisedEMPhysics(std::string name, const edm::ParameterSet &p)
GFlashEMShowerModel * theEMShowerModel
virtual void ConstructProcess()