Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:25:02

0001 #include "SimG4Core/PhysicsLists/interface/DummyEMPhysics.h"
0002 #include "G4EmParameters.hh"
0003 #include "G4ParticleTable.hh"
0004 
0005 #include "G4ParticleDefinition.hh"
0006 
0007 #include "G4ComptonScattering.hh"
0008 #include "G4GammaConversion.hh"
0009 #include "G4PhotoElectricEffect.hh"
0010 
0011 #include "G4eMultipleScattering.hh"
0012 #include "G4eIonisation.hh"
0013 #include "G4eBremsstrahlung.hh"
0014 #include "G4eplusAnnihilation.hh"
0015 
0016 #include "G4Gamma.hh"
0017 #include "G4Electron.hh"
0018 #include "G4Positron.hh"
0019 #include "G4LeptonConstructor.hh"
0020 
0021 #include "G4PhysicsListHelper.hh"
0022 #include "G4BuilderType.hh"
0023 
0024 #include "G4SystemOfUnits.hh"
0025 
0026 DummyEMPhysics::DummyEMPhysics(G4int ver) : G4VPhysicsConstructor("CMSEmGeantV"), verbose(ver) {
0027   G4EmParameters* param = G4EmParameters::Instance();
0028   param->SetDefaults();
0029   param->SetVerbose(verbose);
0030   param->SetApplyCuts(true);
0031   param->SetStepFunction(0.8, 1 * CLHEP::mm);
0032   param->SetLossFluctuations(false);
0033   param->SetMscRangeFactor(0.2);
0034   param->SetMscStepLimitType(fMinimal);
0035   SetPhysicsType(bElectromagnetic);
0036 }
0037 
0038 void DummyEMPhysics::ConstructParticle() {
0039   // gamma
0040   G4Gamma::Gamma();
0041 
0042   // leptons
0043   G4Electron::Electron();
0044   G4Positron::Positron();
0045 
0046   G4LeptonConstructor pLeptonConstructor;
0047   pLeptonConstructor.ConstructParticle();
0048 }
0049 
0050 void DummyEMPhysics::ConstructProcess() {
0051   if (verbose > 0) {
0052     G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
0053   }
0054 
0055   // This EM builder takes GeantV variant of physics
0056 
0057   G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
0058 
0059   G4ParticleDefinition* particle = G4Gamma::Gamma();
0060 
0061   ph->RegisterProcess(new G4PhotoElectricEffect(), particle);
0062   ph->RegisterProcess(new G4ComptonScattering(), particle);
0063   ph->RegisterProcess(new G4GammaConversion(), particle);
0064 
0065   particle = G4Electron::Electron();
0066 
0067   ph->RegisterProcess(new G4eMultipleScattering(), particle);
0068   ph->RegisterProcess(new G4eIonisation(), particle);
0069   ph->RegisterProcess(new G4eBremsstrahlung(), particle);
0070 
0071   particle = G4Positron::Positron();
0072 
0073   ph->RegisterProcess(new G4eMultipleScattering(), particle);
0074   ph->RegisterProcess(new G4eIonisation(), particle);
0075   ph->RegisterProcess(new G4eBremsstrahlung(), particle);
0076   ph->RegisterProcess(new G4eplusAnnihilation(), particle);
0077 }