ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VPreCompoundFragment.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VPreCompoundFragment.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 // J. M. Quesada (August 2008).
28 // Based on previous work by V. Lara
29 //
30 // Modif (03 September 2008) by J. M. Quesada for external choice of inverse
31 // cross section option
32 // JMQ (06 September 2008) Also external choice has been added for:
33 // - superimposed Coulomb barrier (if useSICB=true)
34 // 20.08.2010 V.Ivanchenko added int Z and A and cleanup; added
35 // G4ParticleDefinition to constructor,
36 // inline method to build G4ReactionProduct;
37 // remove string name
38 //
39 
40 #ifndef G4VPreCompoundFragment_h
41 #define G4VPreCompoundFragment_h 1
42 
43 #include "G4ios.hh"
44 #include <iomanip>
45 #include "G4ParticleDefinition.hh"
46 #include "G4IonTable.hh"
47 #include "G4Fragment.hh"
48 #include "G4VCoulombBarrier.hh"
49 #include "G4ReactionProduct.hh"
50 #include "G4Pow.hh"
51 
52 class G4NuclearLevelData;
54 
56 {
57 public:
58 
60  G4VCoulombBarrier * aCoulombBarrier);
61 
62  virtual ~G4VPreCompoundFragment();
63 
64  friend std::ostream&
65  operator<<(std::ostream&, const G4VPreCompoundFragment*);
66  friend std::ostream&
67  operator<<(std::ostream&, const G4VPreCompoundFragment&);
68 
69  // =====================
70  // Pure Virtual methods
71  // =====================
72 
73  // Initialization method
74  void Initialize(const G4Fragment & aFragment);
75 
76  // Methods for calculating the emission probability
77  // ------------------------------------------------
78 
79  // Calculates the total (integrated over kinetic energy) emission
80  // probability of a fragment
81  virtual G4double CalcEmissionProbability(const G4Fragment & aFragment) = 0;
82 
83  // sample kinetic energy of emitted fragment
84  virtual G4double SampleKineticEnergy(const G4Fragment & aFragment) = 0;
85 
86  inline G4bool IsItPossible(const G4Fragment & aFragment) const;
87 
88  inline G4ReactionProduct * GetReactionProduct() const;
89 
90  inline G4int GetA() const;
91 
92  inline G4int GetZ() const;
93 
94  inline G4int GetRestA() const;
95 
96  inline G4int GetRestZ() const;
97 
98  inline G4double GetBindingEnergy() const;
99 
100  inline G4double GetEnergyThreshold() const;
101 
102  inline G4double GetEmissionProbability() const;
103 
104  inline G4double GetNuclearMass() const;
105 
106  inline G4double GetRestNuclearMass() const;
107 
108  inline const G4LorentzVector& GetMomentum() const;
109 
110  inline void SetMomentum(const G4LorentzVector & value);
111 
112  //for inverse cross section choice
113  inline void SetOPTxs(G4int);
114  //for superimposed Coulomb Barrier for inverse cross sections
115  inline void UseSICB(G4bool);
116 
117 protected:
118 
119  virtual G4double GetAlpha() const = 0;
120 
121  virtual G4double GetBeta() const = 0;
122 
123 private:
124 
126  const G4VPreCompoundFragment&
127  operator= (const G4VPreCompoundFragment &right) = delete;
128  G4bool operator==(const G4VPreCompoundFragment &right) const = delete;
129  G4bool operator!=(const G4VPreCompoundFragment &right) const = delete;
130 
131  // =============
132  // Data members
133  // =============
134 
137 
139 
140 protected:
141 
145 
152 
160 
163 
164  //for inverse cross section choice
166  //for superimposed Coulomb Barrier for inverse cross sections
168 };
169 
170 #include "G4VPreCompoundFragment.icc"
171 
172 #endif