///////////////////////////////////////////////////////////////////////// // G4Tutorial: // // PhysicsEMPositronStandard.hh // // Assembling electromagnetic physics processes for positrons. // // The considered processes are G4MultipleScattering, G4eIonisation, // G4eBremsstrahlung and G4eplusAnnihilation // ///////////////////////////////////////////////////////////////////////// #include "PhysicsEMPositronStandard.hh" #include "G4ProcessManager.hh" #include "G4ParticleDefinition.hh" #include "G4MultipleScattering.hh" #include "G4eIonisation.hh" #include "G4eBremsstrahlung.hh" #include "G4eplusAnnihilation.hh" #include "G4StepLimiter.hh" PhysicsEMPositronStandard::PhysicsEMPositronStandard(const G4String& name): G4VPhysicsConstructor(name) { G4cout << "ELECTROMAGNETIC PROCESS(ES): G4MultipleScattering (positron)" << G4endl << " G4eIonisation (positron)" << G4endl << " G4eBremsstrahlung (positron)" << G4endl << " G4eplusAnnihilation (positron)" << G4endl << "APPLIED MODEL(S): -" << G4endl; } PhysicsEMPositronStandard::~PhysicsEMPositronStandard() { } void PhysicsEMPositronStandard::ConstructProcess() { // **************** // *** Positron *** // **************** // The considered physics processes are instantiated: G4MultipleScattering* positrMultipScatProcess = new G4MultipleScattering(); G4eIonisation* positrIonisationProcess = new G4eIonisation(); G4eBremsstrahlung* positrBremsstrProcess = new G4eBremsstrahlung(); G4eplusAnnihilation* positrAnnihilationProcess = new G4eplusAnnihilation(); // Finally, the processes are added to the particles' process manager: G4ParticleDefinition* particle = G4Positron::Positron(); G4ProcessManager* processManager = particle -> GetProcessManager(); processManager -> AddProcess(positrMultipScatProcess, -1, 1, 1); processManager -> AddProcess(positrIonisationProcess, -1, 2, 2); processManager -> AddProcess(positrBremsstrProcess, -1, 3, 3); processManager -> AddProcess(positrAnnihilationProcess, 0, -1, 4); }