G4WilsonAbrasionModel.hh

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 // *                                                                  *
00021 // * Parts of this code which have been  developed by QinetiQ Ltd     *
00022 // * under contract to the European Space Agency (ESA) are the        *
00023 // * intellectual property of ESA. Rights to use, copy, modify and    *
00024 // * redistribute this software for general public use are granted    *
00025 // * in compliance with any licensing, distribution and development   *
00026 // * policy adopted by the Geant4 Collaboration. This code has been   *
00027 // * written by QinetiQ Ltd for the European Space Agency, under ESA  *
00028 // * contract 17191/03/NL/LvH (Aurora Programme).                     *
00029 // *                                                                  *
00030 // * By using,  copying,  modifying or  distributing the software (or *
00031 // * any work based  on the software)  you  agree  to acknowledge its *
00032 // * use  in  resulting  scientific  publications,  and indicate your *
00033 // * acceptance of all terms of the Geant4 Software license.          *
00034 // ********************************************************************
00035 //
00036 #ifndef G4WilsonAbrasionModel_h
00037 #define G4WilsonAbrasionModel_h
00038 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00039 //
00040 // MODULE:              G4WilsonAbrasionModel.hh
00041 //
00042 // Version:             1.0
00043 // Date:                08/12/2009
00044 // Author:              P R Truscott
00045 // Organisation:        QinetiQ Ltd, UK
00046 // Customer:            ESA/ESTEC, NOORDWIJK
00047 // Contract:            17191/03/NL/LvH
00048 //
00049 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00050 //
00051 // CHANGE HISTORY
00052 // --------------
00053 //
00054 // 6 October 2003, P R Truscott, QinetiQ Ltd, UK
00055 // Created.
00056 //
00057 // 15 March 2004, P R Truscott, QinetiQ Ltd, UK
00058 // Beta release
00059 //
00060 // 08 December 2009, P R Truscott, QinetiQ Ltd, Ltd
00061 // ver 1.0
00062 // Variable fradius defined. See .cc file for more details.
00063 //
00064 
00065 #include "globals.hh"
00066 
00067 #include "G4HadronicInteraction.hh"
00068 #include "G4WilsonAblationModel.hh"
00069 #include "G4ExcitationHandler.hh"
00070 #include "G4HadFinalState.hh"
00071 #include "G4Track.hh"
00072 #include "G4Nucleus.hh"
00073 #include "G4Fragment.hh"
00074 #include "G4HadProjectile.hh"
00075 
00076 
00077 class G4WilsonAbrasionModel : public G4HadronicInteraction
00078 {
00079   public:
00080     G4WilsonAbrasionModel(G4bool useAblation1 = false);
00081     G4WilsonAbrasionModel(G4ExcitationHandler*);
00082     ~G4WilsonAbrasionModel();
00083 
00084     G4WilsonAbrasionModel(const G4WilsonAbrasionModel& right);
00085                                                                                 
00086     const G4WilsonAbrasionModel& operator=(G4WilsonAbrasionModel& right);
00087 
00088     virtual G4HadFinalState* ApplyYourself(const G4HadProjectile&, G4Nucleus&);
00089     void SetVerboseLevel(G4int);
00090     void SetUseAblation(G4bool);
00091     G4bool GetUseAblation();
00092     void SetConserveMomentum(G4bool);
00093     G4bool GetConserveMomentum();    
00094     void SetExcitationHandler(G4ExcitationHandler*);
00095     G4ExcitationHandler* GetExcitationHandler();
00096 
00097     virtual void ModelDescription(std::ostream&) const;
00098 
00099   private:
00100     void PrintWelcomeMessage();
00101     G4Fragment* GetAbradedNucleons(G4int, G4double, G4double, G4double);
00102     G4double GetNucleonInducedExcitation(G4double, G4double, G4double);
00103     void SetConserveEnergy(G4bool);
00104     G4bool GetConserveEnergy();
00105     
00106   private:
00107     G4double r0sq;
00108     G4double npK;
00109     G4bool useAblation;
00110     G4WilsonAblationModel* theAblation;
00111     G4ExcitationHandler* theExcitationHandler;
00112     G4ExcitationHandler* theExcitationHandlerx;
00113     G4bool conserveEnergy;
00114     G4bool conserveMomentum;
00115     G4double B;
00116     G4double third;
00117     G4double fradius;
00118 };
00119 
00120 inline void
00121 G4WilsonAbrasionModel::SetExcitationHandler(G4ExcitationHandler* aExcitationHandler)
00122   {theExcitationHandler = aExcitationHandler;}
00123   
00124 inline G4ExcitationHandler* G4WilsonAbrasionModel::GetExcitationHandler()
00125   {return theExcitationHandler;}
00126   
00127 inline G4bool G4WilsonAbrasionModel::GetUseAblation()
00128   {return useAblation;}
00129   
00130 inline void G4WilsonAbrasionModel::SetConserveEnergy(G4bool conserveEnergy1)
00131   {conserveEnergy = conserveEnergy1;}
00132 
00133 inline G4bool G4WilsonAbrasionModel::GetConserveEnergy()
00134   {return conserveEnergy;}
00135   
00136 inline void G4WilsonAbrasionModel::SetConserveMomentum(G4bool conserveMomentum1)
00137   {conserveMomentum = conserveMomentum1;}
00138 
00139 inline G4bool G4WilsonAbrasionModel::GetConserveMomentum()
00140   {return conserveMomentum;}
00141   
00142 inline void G4WilsonAbrasionModel::SetVerboseLevel(G4int verboseLevel1)
00143 {
00144   verboseLevel = verboseLevel1;
00145   if (useAblation) theAblation->SetVerboseLevel(verboseLevel);
00146 }
00147 
00148 #endif

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