Precalibrated Ion Beam Identification Detector Simulation 1.0
A pilot study detector simulation, written in C++ with Geant4.
G4EmStandardFysik.cc
Go to the documentation of this file.
00001 #include "G4EmStandardFysik.hh"
00002 
00003 #include "G4EmStandardPhysics.hh"
00004  #include "G4ParticleDefinition.hh"
00005  #include "G4ProcessManager.hh"
00006  #include "G4LossTableManager.hh"
00007  #include "G4EmProcessOptions.hh"
00008  
00009  #include "G4ComptonScattering.hh"
00010  #include "G4GammaConversion.hh"
00011  #include "G4PhotoElectricEffect.hh"
00012  
00013  #include "G4eMultipleScattering.hh"
00014  #include "G4MuMultipleScattering.hh"
00015  #include "G4hMultipleScattering.hh"
00016  #include "G4CoulombScattering.hh"
00017  #include "G4WentzelVIModel.hh"
00018  
00019  #include "G4eIonisation.hh"
00020  #include "G4eBremsstrahlung.hh"
00021  #include "G4eplusAnnihilation.hh"
00022  
00023  #include "G4MuIonisation.hh"
00024  #include "G4MuBremsstrahlung.hh"
00025  #include "G4MuPairProduction.hh"
00026  #include "G4hBremsstrahlung.hh"
00027  #include "G4hPairProduction.hh"
00028  
00029  #include "G4hIonisation.hh"
00030  #include "G4ionIonisation.hh"
00031  #include "G4alphaIonisation.hh"
00032  
00033  #include "G4Gamma.hh"
00034  #include "G4Electron.hh"
00035  #include "G4Positron.hh"
00036  #include "G4MuonPlus.hh"
00037  #include "G4MuonMinus.hh"
00038  #include "G4PionPlus.hh"
00039  #include "G4PionMinus.hh"
00040  #include "G4KaonPlus.hh"
00041  #include "G4KaonMinus.hh"
00042  #include "G4Proton.hh"
00043  #include "G4AntiProton.hh"
00044  #include "G4Deuteron.hh"
00045  #include "G4Triton.hh"
00046  #include "G4He3.hh"
00047  #include "G4Alpha.hh"
00048 #include "G4GenericIon.hh"
00049 
00050 G4EmStandardFysik::G4EmStandardFysik(G4int ver)
00051 {
00052         verbose = ver;
00053 }
00054 
00055 void G4EmStandardFysik::ConstructProcess()
00056 { 
00057      theParticleIterator->reset();
00058      while( (*theParticleIterator)() ){
00059      G4ParticleDefinition* particle = theParticleIterator->value();
00060      G4ProcessManager* pmanager = particle->GetProcessManager();
00061      G4String particleName = particle->GetParticleName();
00062      if(verbose > 1)
00063        G4cout << "### " << GetPhysicsName() << " instantiates for " 
00064               << particleName << G4endl;
00065  
00066      if (particleName == "gamma") {
00067  
00068        pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
00069       // pmanager->AddDiscreteProcess(new G4ComptonScattering);
00070        pmanager->AddDiscreteProcess(new G4GammaConversion);
00071  
00072      } else if (particleName == "e-") {
00073  
00074        pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
00075        pmanager->AddProcess(new G4eIonisation,           -1, 2, 2);
00076        pmanager->AddProcess(new G4eBremsstrahlung(),     -1,-3, 3);
00077  
00078      } else if (particleName == "e+") {
00079  
00080        pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
00081        pmanager->AddProcess(new G4eIonisation,           -1, 2, 2);
00082        pmanager->AddProcess(new G4eBremsstrahlung,       -1,-3, 3);
00083        pmanager->AddProcess(new G4eplusAnnihilation,      0,-1, 4);
00084  
00085      } else if (particleName == "mu+" ||
00086                 particleName == "mu-"    ) {
00087  
00088        G4MuMultipleScattering* msc = new G4MuMultipleScattering();
00089        msc->AddEmModel(0, new G4WentzelVIModel());
00090        pmanager->AddProcess(msc,                     -1, 1, 1);
00091        pmanager->AddProcess(new G4MuIonisation,      -1, 2, 2);
00092        pmanager->AddProcess(new G4MuBremsstrahlung,  -1,-3, 3);
00093        pmanager->AddProcess(new G4MuPairProduction,  -1,-4, 4);
00094        pmanager->AddDiscreteProcess(new G4CoulombScattering());
00095  
00096      } else if (particleName == "alpha" ||
00097                 particleName == "He3") {
00098  
00099        pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
00100        pmanager->AddProcess(new G4ionIonisation,       -1, 2, 2);
00101  
00102      } else if (particleName == "GenericIon") {
00103  
00104        pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
00105        pmanager->AddProcess(new G4ionIonisation,       -1, 2, 2);
00106  
00107      } else if (particleName == "pi+" ||
00108                 particleName == "pi-" ||
00109                 particleName == "kaon+" ||
00110                 particleName == "kaon-" ||
00111                 particleName == "proton" ) {
00112  
00113        pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
00114        pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
00115        pmanager->AddProcess(new G4hBremsstrahlung,     -1,-3, 3);
00116        pmanager->AddProcess(new G4hPairProduction,     -1,-4, 4);
00117  
00118      } else if (particleName == "B+" ||
00119                 particleName == "B-" ||
00120                 particleName == "D+" ||
00121                 particleName == "D-" ||
00122                 particleName == "Ds+" ||
00123                 particleName == "Ds-" ||
00124                 particleName == "anti_He3" ||
00125                 particleName == "anti_alpha" ||
00126                 particleName == "anti_deuteron" ||
00127                 particleName == "anti_lambda_c+" ||
00128                 particleName == "anti_omega-" ||
00129                 particleName == "anti_proton" ||
00130                 particleName == "anti_sigma_c+" ||
00131                 particleName == "anti_sigma_c++" ||
00132                 particleName == "anti_sigma+" ||
00133                 particleName == "anti_sigma-" ||
00134                 particleName == "anti_triton" ||
00135                 particleName == "anti_xi_c+" ||
00136                 particleName == "anti_xi-" ||
00137                 particleName == "deuteron" ||
00138                 particleName == "lambda_c+" ||
00139                 particleName == "omega-" ||
00140                 particleName == "sigma_c+" ||
00141                 particleName == "sigma_c++" ||
00142                 particleName == "sigma+" ||
00143                 particleName == "sigma-" ||
00144                 particleName == "tau+" ||
00145                 particleName == "tau-" ||
00146                 particleName == "triton" ||
00147                 particleName == "xi_c+" ||
00148                 particleName == "xi-" ) {
00149  
00150        pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
00151        pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
00152      }
00153    }
00154    G4EmProcessOptions opt;
00155    opt.SetVerbose(verbose);
00156    opt.SetPolarAngleLimit(0.2);
00157 }
 All Classes Files Functions Variables Defines

Back to the main page of the Precalibrated Ion Beam Identification Detector project

Created by Rikard Lundmark