Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VIntraNuclearTransportModel.hh
Go to the documentation of this file.
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 // $Id$
27 //
28 // -----------------------------------------------------------------------------
29 // GEANT 4 class header file
30 //
31 // History: first implementation, A. Feliciello, 30th June 1998
32 // A.Pavliouk 26.11.98
33 // In Set...() methods a pointer is deleted now before new
34 // value will be asigned.
35 // M.Kelsey 07.03.2011
36 // Add data member and Set method to store original projectile
37 // V.Ivanchenko 03.01.2012
38 // Added G4VPreCompoundModel pointer to the constructor and cleanup
39 // -----------------------------------------------------------------------------
40 
41 #ifndef G4VIntraNuclearTransportModel_h
42 #define G4VIntraNuclearTransportModel_h 1
43 
44 // Class Description
45 // Base class for intra-nuclear transport models in geant4. By merit
46 // of inheriting from this class a intra-nuclear transport model can
47 // be used in conjunction with any precompound, string parton model
48 // or other high energy generator in the generation of final states
49 // for inelastic scattering.
50 // Class Description - End
51 
52 #include "G4V3DNucleus.hh"
53 #include "G4VPreCompoundModel.hh"
54 #include "G4HadronicInteraction.hh"
56 #include "G4ReactionProduct.hh"
57 #include "G4HadProjectile.hh"
58 #include "G4HadFinalState.hh"
59 
61 
63 {
64 public:
65 
66  G4VIntraNuclearTransportModel(const G4String& modelName = "CascadeModel",
67  G4VPreCompoundModel* ptr = 0);
68 
70 
71  virtual
73  G4V3DNucleus* theNucleus) = 0;
74 
75  inline void SetDeExcitation(G4VPreCompoundModel* ptr);
76 
77  inline void Set3DNucleus(G4V3DNucleus* const value);
78 
79  inline void SetPrimaryProjectile(const G4HadProjectile &aPrimary);
80 
81  inline const G4String& GetModelName() const;
82 
83  virtual void ModelDescription(std::ostream& outFile) const ;
84  virtual void PropagateModelDescription(std::ostream& outFile) const ;
85 
86 private:
87 
89  const G4VIntraNuclearTransportModel& operator=(const G4VIntraNuclearTransportModel &right);
90  int operator==(const G4VIntraNuclearTransportModel& right) const;
91  int operator!=(const G4VIntraNuclearTransportModel& right) const;
92 
93 protected:
94 
95  inline G4V3DNucleus* Get3DNucleus() const;
96 
97  inline G4VPreCompoundModel* GetDeExcitation() const;
98 
99  inline const G4HadProjectile* GetPrimaryProjectile() const;
100 
102 
104 
106 
108 };
109 
111 {
112  return theTransportModelName;
113 }
114 
116 {
117  return the3DNucleus;
118 }
119 
121 {
122  delete the3DNucleus; the3DNucleus = value;
123 }
124 
126 {
127  return theDeExcitation;
128 }
129 
130 inline void
132 {
133  // previous pre-compound model will be deleted at the end of job
135 }
136 
137 inline const G4HadProjectile*
139 {
140  return thePrimaryProjectile;
141 }
142 
143 inline void
145 {
146  // NOTE: Previous pointer is NOT deleted: passed by reference, no ownership
147  thePrimaryProjectile = &aPrimary;
148 }
149 
150 #endif
151 
152