ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VSplitableHadron.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VSplitableHadron.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 //
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"
41 #include "G4ParticleDefinition.hh"
42 #include "G4ReactionProduct.hh"
43 #include "G4ThreeVector.hh"
44 #include "G4LorentzVector.hh"
45 
46 class G4Nucleon;
47 class G4Parton;
48 class G4VKineticNucleon;
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 
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);
81  G4int GetStatus();
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  protected:
93  void Splitting() {isSplit = true;}
94 
95  private:
97  const G4VSplitableHadron & operator=(const G4VSplitableHadron &right);
98 
99  private:
101 
103 
107 
110 };
111 
113 {
114  return theCollisionCount;
115 }
116 
118 {
119  theCollisionCount = aCount;
120 }
121 
122 inline void G4VSplitableHadron::Set4Momentum(const G4LorentzVector &a4Momentum)
123 {
124  the4Momentum=a4Momentum;
125 }
126 
128 {
129  return the4Momentum;
130 }
131 
133 {
134  theDefinition=aDefinition;
135 }
136 
138 {
139  return theDefinition;
140 }
141 
143 {
144  theCollisionCount += aCount;
145 }
146 
148 {
149  TimeOfCreation=aTime;
150 }
151 
153 {
154  return TimeOfCreation;
155 }
156 
157 inline void G4VSplitableHadron::SetPosition(const G4ThreeVector &aPosition)
158 {
159  thePosition=aPosition;
160 }
161 
163 {
164  return thePosition;
165 }
166 
168 {
169  curStatus=aStatus;
170 }
171 
173 {
174  return curStatus;
175 }
176 
177 #endif
178