source: trunk/source/processes/hadronic/models/de_excitation/ablation/include/G4WilsonAblationModel.hh

Last change on this file was 1228, checked in by garnier, 15 years ago

update geant4.9.3 tag

File size: 6.0 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// *                                                                  *
21// * Parts of this code which have been  developed by QinetiQ Ltd     *
22// * under contract to the European Space Agency (ESA) are the        *
23// * intellectual property of ESA. Rights to use, copy, modify and    *
24// * redistribute this software for general public use are granted    *
25// * in compliance with any licensing, distribution and development   *
26// * policy adopted by the Geant4 Collaboration. This code has been   *
27// * written by QinetiQ Ltd for the European Space Agency, under ESA  *
28// * contract 17191/03/NL/LvH (Aurora Programme).                     *
29// *                                                                  *
30// * By using,  copying,  modifying or  distributing the software (or *
31// * any work based  on the software)  you  agree  to acknowledge its *
32// * use  in  resulting  scientific  publications,  and indicate your *
33// * acceptance of all terms of the Geant4 Software license.          *
34// ********************************************************************
35//
36#ifndef G4WilsonAblationModel_h
37#define G4WilsonAblationModel_h 1
38// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
39//
40// MODULE:              G4WilsonAblationModel.hh
41//
42// Version:             1.0
43// Date:                08/12/2009
44// Author:              P R Truscott
45// Organisation:        QinetiQ Ltd, UK
46// Customer:            ESA/ESTEC, NOORDWIJK
47// Contract:            17191/03/NL/LvH
48//
49// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50//
51// CHANGE HISTORY
52// --------------
53//
54// 6 October 2003, P R Truscott, QinetiQ Ltd, UK
55// Created.
56//
57// 15 March 2004, P R Truscott, QinetiQ Ltd, UK
58// Beta release
59//
60// 08 December 2009, P R Truscott, QinetiQ Ltd, UK
61// Ver 1.0
62// Introduced vector of evaporation channels and evaporation factory.  Also
63// copied directly over the SumProbabilities class in G4Evaporation.hh at
64// version 9.2.r9, just in cases there's any subtle differences.  See .cc
65// file comments to see impact of the rest of the changes.
66//
67// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
68////////////////////////////////////////////////////////////////////////////////
69//
70#include "G4VEvaporation.hh"
71#include "G4VEvaporationChannel.hh"
72#include "G4Fragment.hh"
73#include "G4FragmentVector.hh"
74#include "G4ParticleDefinition.hh"
75#include "globals.hh"
76#include "G4VEvaporationFactory.hh"
77#include "G4EvaporationFactory.hh"
78
79
80#include <vector>
81////////////////////////////////////////////////////////////////////////////////
82//
83class G4WilsonAblationModel : public G4VEvaporation
84{
85  public:
86    G4WilsonAblationModel();
87    ~G4WilsonAblationModel();
88   
89    typedef std::vector<G4ParticleDefinition*> VectorOfFragmentTypes;
90
91    G4FragmentVector * BreakItUp (const G4Fragment &theNucleus);
92    void SetProduceSecondaries (G4bool);
93    G4bool GetProduceSecondaries ();
94    void SetVerboseLevel (G4int);
95    G4int GetVerboseLevel ();
96
97  private:
98    void SelectSecondariesByEvaporation (G4Fragment*);
99    void SelectSecondariesByDefault (G4ThreeVector);
100    void PrintWelcomeMessage ();
101
102  private:
103    G4bool                 produceSecondaries;
104    G4int                  verboseLevel;
105    G4double               B;
106    G4int                  nFragTypes;
107    G4ParticleDefinition  *fragType[6];
108    G4FragmentVector      *fragmentVector;
109    VectorOfFragmentTypes  evapType;
110
111    std::vector<G4VEvaporationChannel*> * theChannels;
112    G4VEvaporationFactory * theChannelFactory;
113
114  class SumProbabilities : public std::binary_function<G4double,G4double,G4double>
115  {
116  public:
117    SumProbabilities() : total(0.0) {}
118    G4double operator() (G4double& /* probSoFar */, G4VEvaporationChannel*& frag)
119    { 
120      G4double temp_prob = frag->GetEmissionProbability();
121      if(temp_prob >= 0.0) total += temp_prob;
122      //      total += frag->GetEmissionProbability();
123      return total;
124    }
125   
126    G4double GetTotal() { return total; }
127  public:
128    G4double total;
129   
130  };
131
132};
133////////////////////////////////////////////////////////////////////////////////
134//
135inline void G4WilsonAblationModel::SetProduceSecondaries
136  (G4bool produceSecondaries1)
137  {produceSecondaries = produceSecondaries1;}
138////////////////////////////////////////////////////////////////////////////////
139//
140inline G4bool G4WilsonAblationModel::GetProduceSecondaries ()
141  {return produceSecondaries;}
142////////////////////////////////////////////////////////////////////////////////
143//
144inline void G4WilsonAblationModel::SetVerboseLevel (G4int verboseLevel1)
145  {verboseLevel = verboseLevel1;}
146////////////////////////////////////////////////////////////////////////////////
147//
148inline G4int G4WilsonAblationModel::GetVerboseLevel ()
149  {return verboseLevel;}
150////////////////////////////////////////////////////////////////////////////////
151//
152#endif
Note: See TracBrowser for help on using the repository browser.