ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VEvaporationChannel.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VEvaporationChannel.hh
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 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 // Hadronic Process: Nuclear De-excitations
28 // by V. Lara (Oct 1998)
29 //
30 // Modified:
31 // 03.09.2008 (J.M.Quesada) for external choice of inverse cross section option
32 // 06.09.2008 (J.M.Quesada) external choices have been added for superimposed
33 // Coulomb barrier (if useSICB is set true, by default
34 // is false)
35 // 24.04.2010 (V.Ivanchenko) moved constructor and destructor to source; added
36 // two new virtual methods EmittedFragment(s) to allow
37 // more optimal work with G4Fragment objects
38 // 12.02.2013 (V.Ivanchenko) added virtual method GetLifeTime,
39 // enumerator G4EvaporationChannelType,
40 // which is defined in constructor of the class
41 //
42 
43 #ifndef G4VEvaporationChannel_h
44 #define G4VEvaporationChannel_h 1
45 
46 #include "globals.hh"
47 #include "G4Fragment.hh"
48 
50 {
51 public:
52 
53  explicit G4VEvaporationChannel(const G4String & aName = "");
54  virtual ~G4VEvaporationChannel();
55 
56  virtual G4double GetEmissionProbability(G4Fragment* theNucleus) = 0;
57 
58  // option definition
59  virtual void Initialise();
60 
61  // return level life time, by default zero
62  virtual G4double GetLifeTime(G4Fragment* theNucleus);
63 
64  // return emitted fragment, initial fragment is modified
65  // and not deleted
66  virtual G4Fragment* EmittedFragment(G4Fragment* theNucleus);
67 
68  // returns "true" if primary fragment is decayed and deleted
69  // returns "false" if primary fragment is modified but stay alive
70  // emitted fragments are added to the vector of results
71  virtual G4bool
72  BreakUpChain(G4FragmentVector* theResult, G4Fragment* theNucleus);
73 
74  // return vector of emitted fragments, initial fragment is modified
75  // but not included in this vector
76  inline G4FragmentVector* BreakUpFragment(G4Fragment* theNucleus);
77 
78  virtual void Dump() const;
79 
80  // enable internal conversion
81  virtual void SetICM(G4bool);
82 
83  // flag of the radioactive decay module
84  virtual void RDMForced(G4bool);
85 
86  // for cross section selection
87  inline void SetOPTxs(G4int opt);
88  // for superimposed Coulomb Barrier for inverse cross sections
89  inline void UseSICB(G4bool use);
90 
91 protected:
92 
95 
96 private:
97 
99  const G4VEvaporationChannel & operator=
100  (const G4VEvaporationChannel & right);
103 };
104 
105 inline G4FragmentVector*
107 {
108  G4FragmentVector* results = new G4FragmentVector();
109  BreakUpChain(results, theNucleus);
110  return results;
111 }
112 
114 {}
115 
117 {}
118 
119 #endif