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 "G4EmParameters.hh" 35 #include "G4PhysicsListHelper.hh" 36 #include "G4SystemOfUnits.hh" 37 #include "G4UAtomicDeexcitation.hh" 38 #include "G4LossTableManager.hh" 39 #include "G4ProcessManager.hh" 40 #include "G4Transportation.hh" 56 : G4VPhysicsConstructor(name),
theParSet(p)
59 G4EmParameters* param = G4EmParameters::Instance();
61 param->SetVerbose(verb);
64 param->SetBremsstrahlungTh(bremth);
75 <<
"ParametrisedEMPhysics::ConstructProcess: bremsstrahlung threshold Eth= " 76 << bremth/
GeV <<
" GeV" 77 <<
"\n verbosity= " << verb
78 <<
" fluoFlag: " << fluo <<
" modifyTransport: " << modifyT
80 <<
"\n ThWarning(MeV)= " << th1
81 <<
" ThException(MeV)= " << th2;
88 const G4String rname[NREG] = {
"EcalRegion",
"HcalRegion",
"MuonIron",
89 "PreshowerRegion",
"CastorRegion",
90 "DefaultRegionForTheWorld"};
91 G4double rrfact[NREG] = { 1.0 };
99 for(
int i=0;
i<NREG; ++
i) {
100 if(rrfact[
i] < 1.0) {
101 param->ActivateSecondaryBiasing(
"eIoni",rname[
i],rrfact[i],energyLim);
102 param->ActivateSecondaryBiasing(
"hIoni",rname[i],rrfact[i],energyLim);
104 <<
"ParametrisedEMPhysics: Russian Roulette" 105 <<
" for e- Prob= " << rrfact[
i]
107 <<
" inside " << rname[
i];
122 G4LeptonConstructor pLeptonConstructor;
123 pLeptonConstructor.ConstructParticle();
125 G4MesonConstructor pMesonConstructor;
126 pMesonConstructor.ConstructParticle();
128 G4BaryonConstructor pBaryonConstructor;
129 pBaryonConstructor.ConstructParticle();
131 G4ShortLivedConstructor pShortLivedConstructor;
132 pShortLivedConstructor.ConstructParticle();
134 G4IonConstructor pConstructor;
135 pConstructor.ConstructParticle();
146 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
147 if(gem || ghad || gemHad || ghadHad) {
150 <<
"ParametrisedEMPhysics: GFlash Construct for e+-: " 151 << gem <<
" " << ghad <<
" for hadrons: " << gemHad <<
" " << ghadHad;
159 if(gemHad || ghadHad) {
170 G4RegionStore::GetInstance()->GetRegion(
"EcalRegion");
174 <<
"ParametrisedEMPhysics::ConstructProcess: " 175 <<
"EcalRegion is not defined, GFlash will not be enabled for ECAL!";
192 if(ghad || ghadHad) {
194 G4RegionStore::GetInstance()->GetRegion(
"HcalRegion");
197 <<
"ParametrisedEMPhysics::ConstructProcess: " 198 <<
"HcalRegion is not defined, GFlash will not be enabled for HCAL!";
222 if(eLimiter || rLimiter) {
238 if(fluo && !G4LossTableManager::Instance()->AtomDeexcitation()) {
239 G4VAtomDeexcitation* de =
new G4UAtomicDeexcitation();
240 G4LossTableManager::Instance()->SetAtomDeexcitation(de);
255 int ntry,
double th1,
double th2)
257 G4ProcessManager* man = part->GetProcessManager();
258 G4Transportation* trans = (G4Transportation*)((*(man->GetProcessList()))[0]);
260 trans->SetThresholdWarningEnergy(th1);
261 trans->SetThresholdImportantEnergy(th2);
262 trans->SetThresholdTrials(ntry);
264 <<
"ParametrisedEMPhysics: printout level changed for " << part->GetParticleName();
void ConstructParticle() override
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet theParSet
static G4ThreadLocal TLSmod * m_tpmod
void ModifyTransportation(const G4ParticleDefinition *, int ntry, double th1, double th2)
std::unique_ptr< ElectronLimiter > thePositronLimiter
std::unique_ptr< G4FastSimulationManagerProcess > theFastSimulationManagerProcess
std::unique_ptr< GFlashEMShowerModel > theEcalEMShowerModel
std::unique_ptr< GFlashEMShowerModel > theHcalEMShowerModel
std::unique_ptr< GFlashHadronShowerModel > theHcalHadShowerModel
ParametrisedEMPhysics(const std::string &name, const edm::ParameterSet &p)
std::unique_ptr< GFlashHadronShowerModel > theEcalHadShowerModel
std::unique_ptr< ElectronLimiter > theElectronLimiter
~ParametrisedEMPhysics() override
void ConstructProcess() override