G4IonPhysics.cc

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 // $Id$
00027 // GEANT4 tag $Name: $
00028 //
00029 //---------------------------------------------------------------------------
00030 //
00031 // Class:    G4IonPhysics
00032 //
00033 // Author:      A.Ivanchenko 02.03.2011
00034 //
00035 // Modified: 
00036 // 16.10.2012 A.Ribon: renamed G4IonFTFPBinaryCascadePhysics as G4IonPhysics     
00037 //
00038 //---------------------------------------------------------------------------
00039 
00040 #include "G4IonPhysics.hh"
00041 #include "G4SystemOfUnits.hh"
00042 #include "G4ParticleDefinition.hh"
00043 #include "G4ProcessManager.hh"
00044 #include "G4Deuteron.hh"
00045 #include "G4Triton.hh"
00046 #include "G4He3.hh"
00047 #include "G4Alpha.hh"
00048 #include "G4GenericIon.hh"
00049 #include "G4IonConstructor.hh"
00050 
00051 #include "G4HadronInelasticProcess.hh"
00052 #include "G4BinaryLightIonReaction.hh"
00053 //#include "G4TripathiCrossSection.hh"
00054 //#include "G4TripathiLightCrossSection.hh"
00055 //#include "G4IonsShenCrossSection.hh"
00056 //#include "G4IonProtonCrossSection.hh"
00057 #include "G4GGNuclNuclCrossSection.hh"
00058 
00059 #include "G4PreCompoundModel.hh"
00060 #include "G4ExcitationHandler.hh"
00061 #include "G4FTFBuilder.hh"
00062 #include "G4HadronicInteraction.hh"
00063 #include "G4BuilderType.hh"
00064 
00065 #include "G4CrossSectionDataSetRegistry.hh"
00066 
00067 using namespace std;
00068 
00069 // factory
00070 #include "G4PhysicsConstructorFactory.hh"
00071 //
00072 G4_DECLARE_PHYSCONSTR_FACTORY(G4IonPhysics);
00073 
00074 
00075 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00076 
00077 G4IonPhysics::G4IonPhysics(G4int ver)
00078   : G4VPhysicsConstructor("ionInelasticFTFP_BIC"),verbose(ver),
00079     wasActivated(false)
00080 {
00081 //  fTripathi = fTripathiLight = fShen = fIonH = 0;
00082     fGGNuclNucl=0;
00083   theIonBC = 0;
00084   theFTFP = 0;
00085   theBuilder = 0;
00086   SetPhysicsType(bIons);
00087   if(verbose > 1) { G4cout << "### G4IonPhysics" << G4endl; }
00088 }
00089 
00090 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00091 
00092 G4IonPhysics::G4IonPhysics(const G4String& nname)
00093   : G4VPhysicsConstructor(nname),verbose(1),
00094     wasActivated(false)
00095 {
00096 //  fTripathi = fTripathiLight = fShen = fIonH = 0;
00097     fGGNuclNucl=0;
00098   theIonBC = 0;
00099   theFTFP = 0;
00100   theBuilder = 0;
00101   SetPhysicsType(bIons);
00102   if(verbose > 1) { G4cout << "### G4IonPhysics" << G4endl; }
00103 }
00104 
00105 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00106 
00107 G4IonPhysics::~G4IonPhysics()
00108 {
00109   delete theBuilder;
00110 }
00111 
00112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00113 
00114 void G4IonPhysics::ConstructParticle()
00115 {
00116   //  Construct ions
00117   G4IonConstructor pConstructor;
00118   pConstructor.ConstructParticle();
00119 }
00120 
00121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00122 
00123 void G4IonPhysics::ConstructProcess()
00124 {
00125   if(wasActivated) { return; }
00126   wasActivated = true;
00127 
00128   G4double emax = 100.*TeV;
00129 
00130   G4ExcitationHandler* handler = new G4ExcitationHandler();
00131   G4PreCompoundModel* thePreCompound = new G4PreCompoundModel(handler);
00132 
00133   // Binary Cascade
00134   theIonBC = new G4BinaryLightIonReaction(thePreCompound);
00135   theIonBC->SetMinEnergy(0.0);
00136   theIonBC->SetMaxEnergy(4*GeV);
00137 
00138   // FTFP
00139   theBuilder = new G4FTFBuilder("FTFP",thePreCompound);
00140   theFTFP = theBuilder->GetModel();
00141   theFTFP->SetMinEnergy(2*GeV);
00142   theFTFP->SetMaxEnergy(emax);
00143 
00144   //fShen = new G4IonsShenCrossSection();
00145   //fTripathi = new G4TripathiCrossSection();
00146   //fTripathiLight = new G4TripathiLightCrossSection();
00147   //fIonH = new G4IonProtonCrossSection();
00148     fGGNuclNucl = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4GGNuclNuclCrossSection::Default_Name());
00149     
00150   AddProcess("dInelastic", G4Deuteron::Deuteron(),false);
00151   AddProcess("tInelastic",G4Triton::Triton(),false);
00152   AddProcess("He3Inelastic",G4He3::He3(),true);
00153   AddProcess("alphaInelastic", G4Alpha::Alpha(),true);
00154   AddProcess("ionInelastic",G4GenericIon::GenericIon(),true);
00155 
00156   if(verbose > 1) {
00157     G4cout << "G4IonPhysics::ConstructProcess done! " 
00158            << G4endl;
00159   }
00160 }
00161 
00162 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00163 
00164 void G4IonPhysics::AddProcess(const G4String& name, 
00165                                                G4ParticleDefinition* part, 
00166                                                G4bool )//isIon)
00167 {
00168   G4HadronInelasticProcess* hadi = new G4HadronInelasticProcess(name, part);
00169   G4ProcessManager* pManager = part->GetProcessManager();
00170   pManager->AddDiscreteProcess(hadi);
00171 /*
00172   hadi->AddDataSet(fShen);
00173   //hadi->AddDataSet(fTripathi);
00174   //hadi->AddDataSet(fTripathiLight);
00175   if(isIon) { hadi->AddDataSet(fIonH); }
00176  */
00177     
00178   hadi->AddDataSet(fGGNuclNucl);
00179     
00180   hadi->RegisterMe(theIonBC);
00181   hadi->RegisterMe(theFTFP);
00182 }
00183 
00184 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

Generated on Mon May 27 17:48:40 2013 for Geant4 by  doxygen 1.4.7