3 #include "G4EmParameters.hh" 4 #include "G4ParticleTable.hh" 6 #include "G4ParticleDefinition.hh" 7 #include "G4ProcessManager.hh" 8 #include "G4LossTableManager.hh" 9 #include "G4RegionStore.hh" 11 #include "G4ComptonScattering.hh" 12 #include "G4GammaConversion.hh" 13 #include "G4PhotoElectricEffect.hh" 14 #include "G4UrbanMscModel.hh" 16 #include "G4hMultipleScattering.hh" 17 #include "G4eMultipleScattering.hh" 18 #include "G4MscStepLimitType.hh" 20 #include "G4hhIonisation.hh" 22 #include "G4eBremsstrahlung.hh" 23 #include "G4eplusAnnihilation.hh" 25 #include "G4MuBremsstrahlung.hh" 26 #include "G4MuPairProduction.hh" 28 #include "G4hBremsstrahlung.hh" 29 #include "G4hPairProduction.hh" 32 #include "G4Electron.hh" 33 #include "G4Positron.hh" 34 #include "G4MuonPlus.hh" 35 #include "G4MuonMinus.hh" 36 #include "G4TauMinus.hh" 37 #include "G4TauPlus.hh" 38 #include "G4PionPlus.hh" 39 #include "G4PionMinus.hh" 40 #include "G4KaonPlus.hh" 41 #include "G4KaonMinus.hh" 42 #include "G4BMesonMinus.hh" 43 #include "G4BMesonPlus.hh" 44 #include "G4DMesonMinus.hh" 45 #include "G4DMesonPlus.hh" 46 #include "G4Proton.hh" 47 #include "G4AntiProton.hh" 48 #include "G4SigmaMinus.hh" 49 #include "G4AntiSigmaMinus.hh" 50 #include "G4SigmaPlus.hh" 51 #include "G4AntiSigmaPlus.hh" 52 #include "G4XiMinus.hh" 53 #include "G4AntiXiMinus.hh" 54 #include "G4OmegaMinus.hh" 55 #include "G4AntiOmegaMinus.hh" 56 #include "G4LambdacPlus.hh" 57 #include "G4AntiLambdacPlus.hh" 58 #include "G4XicPlus.hh" 59 #include "G4AntiXicPlus.hh" 60 #include "G4Deuteron.hh" 61 #include "G4Triton.hh" 64 #include "G4GenericIon.hh" 66 #include "G4BuilderType.hh" 67 #include "G4SystemOfUnits.hh" 70 : G4VPhysicsConstructor(name),
verbose(ver), region(reg) {
71 G4EmParameters* param = G4EmParameters::Instance();
74 param->SetApplyCuts(
true);
75 param->SetMscRangeFactor(0.2);
76 param->SetMscStepLimitType(fMinimal);
77 SetPhysicsType(bElectromagnetic);
88 G4Positron::Positron();
89 G4MuonPlus::MuonPlus();
90 G4MuonMinus::MuonMinus();
91 G4TauMinus::TauMinusDefinition();
92 G4TauPlus::TauPlusDefinition();
95 G4PionPlus::PionPlusDefinition();
96 G4PionMinus::PionMinusDefinition();
97 G4KaonPlus::KaonPlusDefinition();
98 G4KaonMinus::KaonMinusDefinition();
99 G4DMesonMinus::DMesonMinusDefinition();
100 G4DMesonPlus::DMesonPlusDefinition();
101 G4BMesonMinus::BMesonMinusDefinition();
102 G4BMesonPlus::BMesonPlusDefinition();
106 G4AntiProton::AntiProton();
107 G4SigmaMinus::SigmaMinusDefinition();
108 G4AntiSigmaMinus::AntiSigmaMinusDefinition();
109 G4SigmaPlus::SigmaPlusDefinition();
110 G4AntiSigmaPlus::AntiSigmaPlusDefinition();
111 G4XiMinus::XiMinusDefinition();
112 G4AntiXiMinus::AntiXiMinusDefinition();
113 G4OmegaMinus::OmegaMinusDefinition();
114 G4AntiOmegaMinus::AntiOmegaMinusDefinition();
115 G4LambdacPlus::LambdacPlusDefinition();
116 G4AntiLambdacPlus::AntiLambdacPlusDefinition();
117 G4XicPlus::XicPlusDefinition();
118 G4AntiXicPlus::AntiXicPlusDefinition();
121 G4Deuteron::Deuteron();
125 G4GenericIon::GenericIonDefinition();
130 G4Region* reg =
nullptr;
132 G4RegionStore* regStore = G4RegionStore::GetInstance();
133 reg = regStore->GetRegion(
region,
true);
136 G4ParticleTable* table = G4ParticleTable::GetParticleTable();
139 G4ParticleDefinition* particle = table->FindParticle(
particleName);
140 G4ProcessManager* pmanager = particle->GetProcessManager();
142 G4cout <<
"### " << GetPhysicsName() <<
" instantiates for " <<
particleName <<
" at " << particle << G4endl;
145 pmanager->AddDiscreteProcess(
new G4PhotoElectricEffect);
146 pmanager->AddDiscreteProcess(
new G4ComptonScattering);
147 pmanager->AddDiscreteProcess(
new G4GammaConversion);
150 G4eMultipleScattering*
msc =
new G4eMultipleScattering;
151 msc->SetStepLimitType(fMinimal);
152 if (reg !=
nullptr) {
153 G4UrbanMscModel* msc_el =
new G4UrbanMscModel();
154 msc_el->SetRangeFactor(0.04);
155 msc->AddEmModel(0, msc_el, reg);
157 pmanager->AddProcess(msc, -1, 1, 1);
158 pmanager->AddProcess(
new G4hhIonisation, -1, 2, 2);
159 pmanager->AddProcess(
new G4eBremsstrahlung, -1, -3, 3);
164 G4eMultipleScattering*
msc =
new G4eMultipleScattering;
165 msc->SetStepLimitType(fMinimal);
166 if (reg !=
nullptr) {
167 G4UrbanMscModel* msc_pos =
new G4UrbanMscModel();
168 msc_pos->SetRangeFactor(0.04);
169 msc->AddEmModel(0, msc_pos, reg);
171 pmanager->AddProcess(msc, -1, 1, 1);
172 pmanager->AddProcess(
new G4hhIonisation, -1, 2, 2);
173 pmanager->AddProcess(
new G4eBremsstrahlung, -1, -3, 3);
174 pmanager->AddProcess(
new G4eplusAnnihilation, 0, -1, 4);
177 pmanager->AddProcess(
new G4hMultipleScattering, -1, 1, 1);
178 pmanager->AddProcess(
new G4hhIonisation, -1, 2, 2);
179 pmanager->AddProcess(
new G4MuBremsstrahlung, -1, -3, 3);
180 pmanager->AddProcess(
new G4MuPairProduction, -1, -4, 4);
183 pmanager->AddProcess(
new G4hMultipleScattering, -1, 1, 1);
184 pmanager->AddProcess(
new G4hhIonisation, -1, 2, 2);
188 pmanager->AddProcess(
new G4hMultipleScattering, -1, 1, 1);
189 pmanager->AddProcess(
new G4hhIonisation, -1, 2, 2);
190 pmanager->AddProcess(
new G4hBremsstrahlung(), -1, -3, 3);
191 pmanager->AddProcess(
new G4hPairProduction(), -1, -4, 4);
202 pmanager->AddProcess(
new G4hMultipleScattering, -1, 1, 1);
203 pmanager->AddProcess(
new G4hhIonisation, -1, 2, 2);
const std::vector< G4String > & PartNames() const
~CMSEmNoDeltaRay() override
void ConstructParticle() override
void ConstructProcess() override
CMSEmNoDeltaRay(const G4String &name, G4int ver, const std::string ®)