4 #include <CLHEP/Units/SystemOfUnits.h> 5 #include "G4ParticleDefinition.hh" 6 #include "G4EmParameters.hh" 7 #include "G4EmBuilder.hh" 9 #include "G4MscStepLimitType.hh" 11 #include "G4hIonisation.hh" 12 #include "G4hMultipleScattering.hh" 13 #include "G4ionIonisation.hh" 15 #include "G4ParticleTable.hh" 17 #include "G4Electron.hh" 18 #include "G4Positron.hh" 19 #include "G4GenericIon.hh" 21 #include "G4PhysicsListHelper.hh" 22 #include "G4BuilderType.hh" 23 #include "G4ProcessManager.hh" 25 #include "G4HepEmProcess.hh" 30 : G4VPhysicsConstructor(
"CMSEmStandard_emh") {
32 G4EmParameters* param = G4EmParameters::Instance();
34 param->SetVerbose(ver);
35 param->SetApplyCuts(
true);
36 param->SetStepFunction(0.8, 1 * CLHEP::mm);
37 param->SetMscRangeFactor(0.2);
38 param->SetMscStepLimitType(fUseSafety);
39 param->SetFluo(
false);
40 SetPhysicsType(bElectromagnetic);
44 fLambdaLimit =
p.getParameter<
double>(
"G4MscLambdaLimit") * CLHEP::mm;
47 if (msc ==
"UseSafetyPlus") {
50 if (msc ==
"Minimal") {
53 double tcut =
p.getParameter<
double>(
"G4TrackingCut") * CLHEP::MeV;
54 param->SetLowestElectronEnergy(tcut);
55 param->SetLowestMuHadEnergy(tcut);
62 G4EmBuilder::ConstructMinimalEmSet();
67 edm::LogVerbatim(
"PhysicsList") <<
"### " << GetPhysicsName() <<
" Construct EM Processes";
74 G4EmBuilder::PrepareEMPhysics();
76 G4PhysicsListHelper*
ph = G4PhysicsListHelper::GetPhysicsListHelper();
78 G4hMultipleScattering* hmsc =
new G4hMultipleScattering(
"ionmsc");
79 G4NuclearStopping* pnuc(
nullptr);
81 G4HepEmProcess* hepEmProcess =
new G4HepEmProcess();
83 G4Positron::Positron()->GetProcessManager()->AddProcess(hepEmProcess, -1, -1, 1);
84 G4Gamma::Gamma()->GetProcessManager()->AddProcess(hepEmProcess, -1, -1, 1);
87 G4ParticleDefinition* particle = G4GenericIon::GenericIon();
88 G4ionIonisation* ionIoni =
new G4ionIonisation();
89 ph->RegisterProcess(hmsc, particle);
90 ph->RegisterProcess(ionIoni, particle);
93 G4EmBuilder::ConstructCharged(hmsc, pnuc);
G4MscStepLimitType fStepLimitType
Log< level::Info, true > LogVerbatim
void ConstructParticle() override
CMSEmStandardPhysicsEMH(G4int ver, const edm::ParameterSet &p)
~CMSEmStandardPhysicsEMH() override
void ConstructProcess() override