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 G4WilsonAblationModel_h 00037 #define G4WilsonAblationModel_h 1 00038 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00039 // 00040 // MODULE: G4WilsonAblationModel.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, UK 00061 // Ver 1.0 00062 // Introduced vector of evaporation channels and evaporation factory. Also 00063 // copied directly over the SumProbabilities class in G4Evaporation.hh at 00064 // version 9.2.r9, just in cases there's any subtle differences. See .cc 00065 // file comments to see impact of the rest of the changes. 00066 // 00067 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00069 // 00070 #include "G4VEvaporation.hh" 00071 #include "G4VEvaporationChannel.hh" 00072 #include "G4Fragment.hh" 00073 #include "G4FragmentVector.hh" 00074 #include "G4ParticleDefinition.hh" 00075 #include "globals.hh" 00076 #include "G4VEvaporationFactory.hh" 00077 #include "G4EvaporationFactory.hh" 00078 00079 00080 #include <vector> 00082 // 00083 class G4WilsonAblationModel : public G4VEvaporation 00084 { 00085 public: 00086 G4WilsonAblationModel(); 00087 ~G4WilsonAblationModel(); 00088 00089 typedef std::vector<G4ParticleDefinition*> VectorOfFragmentTypes; 00090 00091 G4FragmentVector * BreakItUp (const G4Fragment &theNucleus); 00092 void SetProduceSecondaries (G4bool); 00093 G4bool GetProduceSecondaries (); 00094 void SetVerboseLevel (G4int); 00095 G4int GetVerboseLevel (); 00096 00097 private: 00098 void SelectSecondariesByEvaporation (G4Fragment*); 00099 void SelectSecondariesByDefault (G4ThreeVector); 00100 void PrintWelcomeMessage (); 00101 00102 private: 00103 G4bool produceSecondaries; 00104 G4int verboseLevel; 00105 G4double B; 00106 G4int nFragTypes; 00107 G4ParticleDefinition *fragType[6]; 00108 G4FragmentVector *fragmentVector; 00109 VectorOfFragmentTypes evapType; 00110 00111 std::vector<G4VEvaporationChannel*> * theChannels; 00112 G4VEvaporationFactory * theChannelFactory; 00113 00114 }; 00116 // 00117 inline void G4WilsonAblationModel::SetProduceSecondaries 00118 (G4bool produceSecondaries1) 00119 {produceSecondaries = produceSecondaries1;} 00121 // 00122 inline G4bool G4WilsonAblationModel::GetProduceSecondaries () 00123 {return produceSecondaries;} 00125 // 00126 inline void G4WilsonAblationModel::SetVerboseLevel (G4int verboseLevel1) 00127 {verboseLevel = verboseLevel1;} 00129 // 00130 inline G4int G4WilsonAblationModel::GetVerboseLevel () 00131 {return verboseLevel;} 00133 // 00134 #endif