/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DsPhysConsIon.cc
Go to the documentation of this file.
00001 #include "DsPhysConsIon.h"
00002 
00003 
00004 #include "G4ProcessManager.hh"
00005 
00006 
00008 
00009 #include "G4HadronElasticProcess.hh"
00010 #include "G4LElastic.hh"   
00011 
00012 #include "G4DeuteronInelasticProcess.hh"
00013 #include "G4LEDeuteronInelastic.hh"
00014 
00015 #include "G4TritonInelasticProcess.hh"
00016 #include "G4LETritonInelastic.hh"
00017 
00018 #include "G4AlphaInelasticProcess.hh"
00019 #include "G4LEAlphaInelastic.hh"
00020 
00021 #include "G4BinaryLightIonReaction.hh"
00022 #include "G4TripathiCrossSection.hh"
00023 #include "G4IonsShenCrossSection.hh"
00024 
00025 
00026 DsPhysConsIon::DsPhysConsIon(const std::string& type,
00027                              const std::string& name,
00028                              const IInterface* parent)
00029     : GiGaPhysConstructorBase(type,name,parent)
00030 {
00031     declareProperty("MinEnergyBinaryCascadeLN",m_minEnergyBinaryCascadeLN=80*MeV,
00032                     "Minimum energy for binary cascade of light nuclei");
00033     declareProperty("MaxEnergyBinaryCascadeLN",m_maxEnergyBinaryCascadeLN=40*GeV,
00034                     "Maximum energy for binary cascade of light nuclei");
00035     declareProperty("MinEnergyBinaryCascadeGenHe3",m_minEnergyBinaryCascadeGenHe3=0*MeV,
00036                     "Minimum energy for binary cascade of generic ion and He3");
00037     declareProperty("MaxEnergyBinaryCascadeGenHe3",m_maxEnergyBinaryCascadeGenHe3=30*GeV,
00038                     "Maximum energy for binary cascade of generic ion and He3");
00039     declareProperty("MaxEnergyInelastic",m_maxEnergyInelastic=100*MeV,
00040                     "Maximum energy for inelastic processes");
00041 
00042 }
00043 
00044 DsPhysConsIon::~DsPhysConsIon()
00045 {
00046 }
00047 
00048 // Interface methods
00049 void DsPhysConsIon::ConstructParticle()
00050 {
00051 }
00052 
00053 void DsPhysConsIon::ConstructProcess()
00054 {
00055     G4ProcessManager* pmanager = 0;
00056     // Elastic Process
00057     G4HadronElasticProcess* theElasticProcess = new G4HadronElasticProcess();
00058     G4LElastic* theElasticModel = new G4LElastic();
00059     theElasticProcess->RegisterMe(theElasticModel);
00060   
00061     // Generic Ion
00062     pmanager = G4GenericIon::GenericIon()->GetProcessManager();
00063     // add process
00064     pmanager->AddDiscreteProcess(theElasticProcess);
00065 
00066     // preparing inelastic reactions for light nuclei 
00067     G4BinaryLightIonReaction* theIonCascade;
00068     G4BinaryLightIonReaction* theGenIonCascade;
00069 
00070     // binary cascade for light nuclei
00071     // NOTE: Shen XS only up to 10 GeV/n;
00072     theIonCascade= new G4BinaryLightIonReaction;
00073     //theIonCascade->SetMinEnergy(80*MeV);
00074     theIonCascade->SetMinEnergy(m_minEnergyBinaryCascadeLN);
00075     //theIonCascade->SetMaxEnergy(40*GeV);
00076     theIonCascade->SetMaxEnergy(m_maxEnergyBinaryCascadeLN);
00077 
00078     // Generic Ion and He3
00079     // NOTE: Shen XS only up to 10 GeV/n;
00080     theGenIonCascade = new G4BinaryLightIonReaction;
00081     //theGenIonCascade->SetMinEnergy(0*MeV);
00082     theGenIonCascade->SetMinEnergy(m_minEnergyBinaryCascadeGenHe3);
00083     //theGenIonCascade->SetMaxEnergy(30*GeV);
00084     theGenIonCascade->SetMaxEnergy(m_maxEnergyBinaryCascadeGenHe3);
00085 
00086     // Cross sections
00087     G4TripathiCrossSection* theTripathiCrossSection;
00088     G4IonsShenCrossSection* theShenCrossSection;
00089     theTripathiCrossSection = new G4TripathiCrossSection;
00090     theShenCrossSection = new G4IonsShenCrossSection;
00091 
00092 
00093     theParticleIterator->reset();
00094     while( (*theParticleIterator)() ) {
00095         G4ParticleDefinition* particle = theParticleIterator->value();
00096         G4ProcessManager* pmanager = particle->GetProcessManager();
00097         G4String particleName = particle->GetParticleName();
00098 
00099         if(particleName == "deuteron") {
00100             pmanager->AddDiscreteProcess(theElasticProcess);
00101 
00102             G4DeuteronInelasticProcess* theDeuteronInelasticProcess;
00103             theDeuteronInelasticProcess = new G4DeuteronInelasticProcess;   
00104       
00105             G4LEDeuteronInelastic* theLEDeuteronInelasticModel;
00106             theLEDeuteronInelasticModel = new G4LEDeuteronInelastic();
00107             //theLEDeuteronInelasticModel->SetMaxEnergy(100*MeV);
00108             theLEDeuteronInelasticModel->SetMaxEnergy(m_maxEnergyInelastic);
00109 
00110             theDeuteronInelasticProcess->AddDataSet(theTripathiCrossSection);
00111             theDeuteronInelasticProcess->AddDataSet(theShenCrossSection);
00112             theDeuteronInelasticProcess->RegisterMe(theLEDeuteronInelasticModel);
00113             theDeuteronInelasticProcess->RegisterMe(theIonCascade);
00114             pmanager->AddDiscreteProcess(theDeuteronInelasticProcess);
00115         }
00116         else if (particleName == "triton") {
00117             pmanager->AddDiscreteProcess(theElasticProcess);
00118 
00119             G4TritonInelasticProcess* theTritonInelasticProcess;
00120             theTritonInelasticProcess = new G4TritonInelasticProcess; 
00121       
00122             G4LETritonInelastic* theLETritonInelasticModel;
00123             theLETritonInelasticModel = new G4LETritonInelastic();
00124             //theLETritonInelasticModel->SetMaxEnergy(100*MeV);
00125             theLETritonInelasticModel->SetMaxEnergy(m_maxEnergyInelastic);
00126 
00127             theTritonInelasticProcess->AddDataSet(theTripathiCrossSection);
00128             theTritonInelasticProcess->AddDataSet(theShenCrossSection);
00129             theTritonInelasticProcess->RegisterMe(theLETritonInelasticModel);
00130             theTritonInelasticProcess->RegisterMe(theIonCascade);
00131             pmanager->AddDiscreteProcess(theTritonInelasticProcess);
00132         }
00133         else if (particleName == "alpha") {
00134             pmanager->AddDiscreteProcess(theElasticProcess);
00135 
00136             G4AlphaInelasticProcess* theAlphaInelasticProcess;
00137             theAlphaInelasticProcess = new G4AlphaInelasticProcess;
00138 
00139             G4LEAlphaInelastic* theLEAlphaInelasticModel;
00140             theLEAlphaInelasticModel = new G4LEAlphaInelastic();
00141             //theLEAlphaInelasticModel->SetMaxEnergy(100*MeV);
00142             theLEAlphaInelasticModel->SetMaxEnergy(m_maxEnergyInelastic);
00143 
00144             theAlphaInelasticProcess->AddDataSet(theTripathiCrossSection);
00145             theAlphaInelasticProcess->AddDataSet(theShenCrossSection);
00146             theAlphaInelasticProcess->RegisterMe(theLEAlphaInelasticModel);
00147             theAlphaInelasticProcess->RegisterMe(theIonCascade);
00148             pmanager->AddDiscreteProcess(theAlphaInelasticProcess);
00149         }
00150         else if (particleName == "He3") {
00151             pmanager->AddDiscreteProcess(theElasticProcess);
00152 
00153             G4HadronInelasticProcess* theHe3InelasticProcess;
00154             theHe3InelasticProcess = new G4HadronInelasticProcess("He3Inelastic", G4He3::He3());
00155       
00156             theHe3InelasticProcess->AddDataSet(theTripathiCrossSection);
00157             theHe3InelasticProcess->AddDataSet(theShenCrossSection);
00158             theHe3InelasticProcess->RegisterMe(theGenIonCascade);
00159             pmanager->AddDiscreteProcess(theHe3InelasticProcess);
00160         }
00161 
00162         else if (particleName == "GenericIon") {
00163             pmanager->AddDiscreteProcess(theElasticProcess);
00164 
00165             G4HadronInelasticProcess* theGenericIonInelasticProcess;
00166             theGenericIonInelasticProcess = new G4HadronInelasticProcess
00167                 ("IonInelastic", G4GenericIon::GenericIon());
00168 
00169             theGenericIonInelasticProcess->AddDataSet(theTripathiCrossSection);
00170             theGenericIonInelasticProcess->AddDataSet(theShenCrossSection);
00171             theGenericIonInelasticProcess->RegisterMe(theGenIonCascade);
00172             pmanager->AddDiscreteProcess(theGenericIonInelasticProcess);
00173         }
00174     }
00175 }
00176 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 10:17:58 for DetSim by doxygen 1.7.4