Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4VSplitableHadron.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//
27//
28
29#ifndef G4VSplitableHadron_h
30#define G4VSplitableHadron_h 1
31
32// ------------------------------------------------------------
33// GEANT 4 class header file
34//
35// ---------------- G4VSplitableHadron----------------
36// by Gunter Folger, June 1998.
37// class storing an interacting particle. Used by Parton String Models.
38// ------------------------------------------------------------
39
40#include "globals.hh"
42#include "G4ReactionProduct.hh"
43#include "G4ThreeVector.hh"
44#include "G4LorentzVector.hh"
45
46class G4Nucleon;
47class G4Parton;
49
50#include <vector>
51
53{
54 public:
56 G4VSplitableHadron(const G4ReactionProduct & aPrimary);
57 G4VSplitableHadron(const G4Nucleon & aNucleon);
58 G4VSplitableHadron(const G4VKineticNucleon * aNucleon);
59
60 virtual ~G4VSplitableHadron();
61
62 G4bool operator==(const G4VSplitableHadron &right) const;
63 G4bool operator!=(const G4VSplitableHadron &right) const;
64
65 void Set4Momentum(const G4LorentzVector &a4Momentum);
66 const G4LorentzVector & Get4Momentum() const;
67
68 void SetDefinition(const G4ParticleDefinition *aDefinition);
69 const G4ParticleDefinition * GetDefinition() const;
70
71 void IncrementCollisionCount(G4int aCount);
72 void SetCollisionCount(G4int aCount);
73
74 void SetTimeOfCreation(G4double aTime);
76
77 void SetPosition(const G4ThreeVector &aPosition);
78 const G4ThreeVector & GetPosition() const;
79
80 void SetStatus(const G4int aStatus);
82
83 virtual void SplitUp() = 0;
84 virtual void SetFirstParton(G4int PDGcode) = 0;
85 virtual void SetSecondParton(G4int PDGcode)= 0;
86 virtual G4Parton * GetNextParton() = 0 ;
87 virtual G4Parton * GetNextAntiParton() = 0 ;
88 G4bool IsSplit() { return isSplit;}
89
91
92 void Splitting() {isSplit = true;}
93
94 private:
96 const G4VSplitableHadron & operator=(const G4VSplitableHadron &right);
97
98 const G4ParticleDefinition *theDefinition;
99
100 G4LorentzVector the4Momentum;
101
102 G4double TimeOfCreation;
103 G4ThreeVector thePosition;
104 G4int theCollisionCount;
105
106 G4int curStatus;
107 G4bool isSplit;
108};
109
111{
112 return theCollisionCount;
113}
114
116{
117 theCollisionCount = aCount;
118}
119
121{
122 the4Momentum=a4Momentum;
123}
124
126{
127 return the4Momentum;
128}
129
131{
132 theDefinition=aDefinition;
133}
134
136{
137 return theDefinition;
138}
139
141{
142 theCollisionCount += aCount;
143}
144
146{
147 TimeOfCreation=aTime;
148}
149
151{
152 return TimeOfCreation;
153}
154
156{
157 thePosition=aPosition;
158}
159
161{
162 return thePosition;
163}
164
166{
167 curStatus=aStatus;
168}
169
171{
172 return curStatus;
173}
174
175#endif
176
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
void SetTimeOfCreation(G4double aTime)
void SetStatus(const G4int aStatus)
virtual void SplitUp()=0
void SetCollisionCount(G4int aCount)
const G4ParticleDefinition * GetDefinition() const
void Set4Momentum(const G4LorentzVector &a4Momentum)
virtual G4Parton * GetNextParton()=0
virtual void SetSecondParton(G4int PDGcode)=0
virtual G4Parton * GetNextAntiParton()=0
void SetDefinition(const G4ParticleDefinition *aDefinition)
G4bool operator==(const G4VSplitableHadron &right) const
const G4LorentzVector & Get4Momentum() const
const G4ThreeVector & GetPosition() const
void IncrementCollisionCount(G4int aCount)
virtual void SetFirstParton(G4int PDGcode)=0
G4bool operator!=(const G4VSplitableHadron &right) const
void SetPosition(const G4ThreeVector &aPosition)