5 #include "G4SystemOfUnits.hh" 6 #include "G4ParticleDefinition.hh" 7 #include "G4EmParameters.hh" 8 #include "G4EmBuilder.hh" 10 #include "G4hMultipleScattering.hh" 11 #include "G4ionIonisation.hh" 13 #include "G4ParticleTable.hh" 15 #include "G4Electron.hh" 16 #include "G4Positron.hh" 17 #include "G4GenericIon.hh" 19 #include "G4MuonNuclearProcess.hh" 20 #include "G4MuonVDNuclearModel.hh" 21 #include "G4MuonPlus.hh" 22 #include "G4MuonMinus.hh" 24 #include "G4PhysicsListHelper.hh" 25 #include "G4BuilderType.hh" 28 : G4VPhysicsConstructor(
"CMSEmStandard_emmt"), fParameterSet(
p) {
30 G4EmParameters* param = G4EmParameters::Instance();
32 param->SetVerbose(ver);
33 param->SetApplyCuts(
true);
34 param->SetStepFunction(0.8, 1 * CLHEP::mm);
35 param->SetMscRangeFactor(0.2);
36 param->SetMscStepLimitType(fMinimal);
37 param->SetFluo(
false);
38 SetPhysicsType(bElectromagnetic);
39 double tcut =
p.getParameter<
double>(
"G4TrackingCut") * CLHEP::MeV;
40 param->SetLowestElectronEnergy(tcut);
41 param->SetLowestMuHadEnergy(tcut);
48 G4EmBuilder::ConstructMinimalEmSet();
53 edm::LogVerbatim(
"PhysicsList") <<
"### " << GetPhysicsName() <<
" Construct EM Processes";
56 G4EmBuilder::PrepareEMPhysics();
58 G4PhysicsListHelper*
ph = G4PhysicsListHelper::GetPhysicsListHelper();
60 G4hMultipleScattering* hmsc =
new G4hMultipleScattering(
"ionmsc");
61 G4NuclearStopping* pnuc(
nullptr);
66 G4Positron::Positron()->SetTrackingManager(trackingManager);
67 G4Gamma::Gamma()->SetTrackingManager(trackingManager);
70 G4ParticleDefinition* particle = G4GenericIon::GenericIon();
71 G4ionIonisation* ionIoni =
new G4ionIonisation();
72 ph->RegisterProcess(hmsc, particle);
73 ph->RegisterProcess(ionIoni, particle);
76 G4EmBuilder::ConstructCharged(hmsc, pnuc);
79 G4MuonNuclearProcess* muNucProcess =
new G4MuonNuclearProcess();
80 G4MuonVDNuclearModel* muNucModel =
new G4MuonVDNuclearModel();
81 muNucProcess->RegisterMe(muNucModel);
82 ph->RegisterProcess(muNucProcess, G4MuonPlus::MuonPlus());
83 ph->RegisterProcess(muNucProcess, G4MuonMinus::MuonMinus());
Log< level::Info, true > LogVerbatim
void ConstructProcess() override
CMSEmStandardPhysicsEMMT(G4int ver, const edm::ParameterSet &p)
~CMSEmStandardPhysicsEMMT() override
void ConstructParticle() override
const edm::ParameterSet & fParameterSet