Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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"
56#include "G4ReactionProduct.hh"
57#include "G4HadProjectile.hh"
58#include "G4HadFinalState.hh"
59
61
63{
64public:
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
86private:
87
90 int operator==(const G4VIntraNuclearTransportModel& right) const;
91 int operator!=(const G4VIntraNuclearTransportModel& right) const;
92
93protected:
94
95 inline G4V3DNucleus* Get3DNucleus() const;
96
98
99 inline const G4HadProjectile* GetPrimaryProjectile() const;
100
102
104
106
108};
109
111{
113}
114
116{
117 return the3DNucleus;
118}
119
121{
122 delete the3DNucleus; the3DNucleus = value;
123}
124
126{
127 return theDeExcitation;
128}
129
130inline void
132{
133 // previous pre-compound model will be deleted at the end of job
134 theDeExcitation = value;
135}
136
137inline const G4HadProjectile*
139{
141}
142
143inline void
145{
146 // NOTE: Previous pointer is NOT deleted: passed by reference, no ownership
147 thePrimaryProjectile = &aPrimary;
148}
149
150#endif
151
152
std::vector< G4ReactionProduct * > G4ReactionProductVector
virtual void ModelDescription(std::ostream &outFile) const
void SetPrimaryProjectile(const G4HadProjectile &aPrimary)
G4VPreCompoundModel * GetDeExcitation() const
const G4HadProjectile * GetPrimaryProjectile() const
void SetDeExcitation(G4VPreCompoundModel *ptr)
virtual void PropagateModelDescription(std::ostream &outFile) const
virtual G4ReactionProductVector * Propagate(G4KineticTrackVector *theSecondaries, G4V3DNucleus *theNucleus)=0
void Set3DNucleus(G4V3DNucleus *const value)