HadronPhysicsQGSP_BERT_CHIPS.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 //
00028 //---------------------------------------------------------------------------
00029 //
00030 // ClassName:   HadronPhysicsQGSP_BERT_CHIPS
00031 //
00032 // Author: 2010 G.Folger
00033 //   derived from HadronPhysicsQGSP_BERT
00034 //
00035 // Modified:
00036 //
00037 //----------------------------------------------------------------------------
00038 //
00039 #include <iomanip>   
00040 
00041 #include "HadronPhysicsQGSP_BERT_CHIPS.hh"
00042 
00043 #include "globals.hh"
00044 #include "G4ios.hh"
00045 #include "G4SystemOfUnits.hh"
00046 #include "G4ParticleDefinition.hh"
00047 #include "G4ParticleTable.hh"
00048 #include "G4HadronicProcessType.hh"
00049 
00050 #include "G4MesonConstructor.hh"
00051 #include "G4BaryonConstructor.hh"
00052 #include "G4ShortLivedConstructor.hh"
00053 
00054 #include "G4QHadronInelasticDataSet.hh"
00055 
00056 #include "G4HadronInelasticDataSet.hh"
00057 #include "G4CrossSectionDataSetRegistry.hh"
00058 #include "G4CrossSectionPairGG.hh"
00059 #include "G4ProtonInelasticCrossSection.hh"
00060 #include "G4NeutronInelasticCrossSection.hh"
00061 #include "G4PhysListUtil.hh"
00062 
00063 
00064 HadronPhysicsQGSP_BERT_CHIPS::HadronPhysicsQGSP_BERT_CHIPS(G4int)
00065     :  G4VPhysicsConstructor("hInelastic QGSP_BERT_CHIPS")
00066     , theNeutrons(0)
00067     , theLEPNeutron(0)
00068     , theQGSPNeutron(0)
00069     , theBertiniNeutron(0)
00070     , thePion(0)
00071     , theLEPPion(0)
00072     , theQGSPPion(0)
00073     , theBertiniPion(0)
00074     , theKaon(0)
00075     , thePro(0)
00076     , theLEPPro(0)
00077     , theQGSPPro(0)
00078     , theBertiniPro(0)
00079     , theMiscCHIPS(0)
00080     , QuasiElastic(true)
00081     , ProjectileDiffraction(false)
00082     , xsAxenWellischGGProton(0)
00083     , xsLaidlawWellischGGNeutron(0)
00084 {
00085 }
00086 
00087 HadronPhysicsQGSP_BERT_CHIPS::HadronPhysicsQGSP_BERT_CHIPS(const G4String& name, G4bool quasiElastic)
00088     :  G4VPhysicsConstructor(name) 
00089     , theNeutrons(0)
00090     , theLEPNeutron(0)
00091     , theQGSPNeutron(0)
00092     , theBertiniNeutron(0)
00093     , thePion(0)
00094     , theLEPPion(0)
00095     , theQGSPPion(0)
00096     , theBertiniPion(0)
00097     , theKaon(0)
00098     , thePro(0)
00099     , theLEPPro(0)
00100     , theQGSPPro(0)
00101     , theBertiniPro(0)
00102     , theMiscCHIPS(0)
00103     , QuasiElastic(quasiElastic)
00104     , ProjectileDiffraction(false)
00105     , xsAxenWellischGGProton(0)
00106     , xsLaidlawWellischGGNeutron(0)
00107 {
00108 }
00109 
00110 void HadronPhysicsQGSP_BERT_CHIPS::CreateModels()
00111 {
00112   theNeutrons=new G4NeutronBuilder;
00113   theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic, ProjectileDiffraction));
00114   theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
00115   theLEPNeutron->SetMinInelasticEnergy(9.5*GeV);
00116   theLEPNeutron->SetMaxInelasticEnergy(25*GeV);  
00117 
00118   theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
00119   theBertiniNeutron->SetMinEnergy(0.0*GeV);
00120   theBertiniNeutron->SetMaxEnergy(9.9*GeV);
00121 
00122   thePro=new G4ProtonBuilder;
00123   thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic, ProjectileDiffraction));
00124   thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder);
00125   theLEPPro->SetMinEnergy(9.5*GeV);
00126   theLEPPro->SetMaxEnergy(25*GeV);
00127 
00128   thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
00129   theBertiniPro->SetMaxEnergy(9.9*GeV);
00130   
00131   thePion=new G4PionBuilder;
00132   thePion->RegisterMe(theQGSPPion=new G4QGSPPionBuilder(QuasiElastic));
00133   thePion->RegisterMe(theLEPPion=new G4LEPPionBuilder);
00134   theLEPPion->SetMaxEnergy(25*GeV);
00135   theLEPPion->SetMinEnergy(9.5*GeV);
00136 
00137   thePion->RegisterMe(theBertiniPion=new G4BertiniPionBuilder);
00138   theBertiniPion->SetMaxEnergy(9.9*GeV);
00139 
00140   G4int verbosity(0);
00141   theKaon=new G4ChipsKaonBuilder(verbosity);  // is self contained, use G4QInelastic   
00142   
00143   theMiscCHIPS=new G4MiscCHIPSBuilder;
00144 }
00145 
00146 HadronPhysicsQGSP_BERT_CHIPS::~HadronPhysicsQGSP_BERT_CHIPS()
00147 {
00148    delete theMiscCHIPS;
00149    delete theQGSPNeutron;
00150    delete theLEPNeutron;
00151    delete theBertiniNeutron;
00152    delete theQGSPPro;
00153    delete theLEPPro;
00154    delete thePro;
00155    delete theBertiniPro;
00156    delete theQGSPPion;
00157    delete theLEPPion;
00158    delete theBertiniPion;
00159    delete thePion;
00160    delete theKaon;
00161 
00162    delete xsAxenWellischGGProton;
00163    delete xsLaidlawWellischGGNeutron;
00164 }
00165 
00166 void HadronPhysicsQGSP_BERT_CHIPS::ConstructParticle()
00167 {
00168   G4MesonConstructor pMesonConstructor;
00169   pMesonConstructor.ConstructParticle();
00170 
00171   G4BaryonConstructor pBaryonConstructor;
00172   pBaryonConstructor.ConstructParticle();
00173 
00174   G4ShortLivedConstructor pShortLivedConstructor;
00175   pShortLivedConstructor.ConstructParticle();  
00176 }
00177 
00178 #include "G4ProcessManager.hh"
00179 void HadronPhysicsQGSP_BERT_CHIPS::ConstructProcess()
00180 {
00181   CreateModels();
00182   theNeutrons->Build();
00183   thePro->Build();
00184   thePion->Build();
00185   theKaon->Build();   // has CHIPS cross sections for Kaons
00186   theMiscCHIPS->Build();
00187 
00188   // Inelastic cross sections
00189 
00190   // --- Protons ---
00191   // Use Axen-Wellisch inelastic proton cross section up to 91 GeV,
00192   // and Glauber-Gribov above
00193   xsAxenWellischGGProton = new G4CrossSectionPairGG(new G4ProtonInelasticCrossSection(), 91*GeV); 
00194   G4PhysListUtil::FindInelasticProcess(G4Proton::Proton())->AddDataSet(xsAxenWellischGGProton);
00195 
00196   // --- Neutrons ---
00197   // Use Laidlaw-Wellisch inelastic neutron cross section up to 91 GeV,
00198   // and Glauber-Gribov above
00199   xsLaidlawWellischGGNeutron = new G4CrossSectionPairGG(new G4NeutronInelasticCrossSection(), 91*GeV);
00200   G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(xsLaidlawWellischGGNeutron);
00201 }

Generated on Mon May 27 17:50:30 2013 for Geant4 by  doxygen 1.4.7