ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4FragmentingString.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4FragmentingString.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 G4FragmentingString_h
30 #define G4FragmentingString_h 1
31 
32 // ------------------------------------------------------------
33 // GEANT 4 class header file
34 //
35 // ---------------- G4FragmentingString ----------------
36 // by Gunter Folger, September 2001.
37 // class for an excited string used in Fragmention
38 // ------------------------------------------------------------
39 
40 #include "G4ios.hh"
41 #include "globals.hh"
42 #include "G4ThreeVector.hh"
43 #include "G4LorentzVector.hh"
44 #include "G4LorentzRotation.hh"
45 #include "G4ParticleDefinition.hh"
46 
47 class G4ExcitedString;
48 
50 {
51  public:
53  G4FragmentingString(const G4ExcitedString &excited);
55  G4ParticleDefinition * newdecay,
56  const G4LorentzVector *momentum);
58  G4ParticleDefinition * newdecay);
59 
61 
63  G4bool operator==(const G4FragmentingString &right) const;
64 
65  G4bool operator!=(const G4FragmentingString &right) const;
66 
68 
71 
75 
76  G4double Mass() const;
77  G4double Mass2() const;
78  G4double MassT2() const;
79 
82 
83  G4ParticleDefinition* GetStableParton() const; // stable at the moment
84  G4ParticleDefinition* GetDecayParton() const; // currently involved in fragmentation
85 
86  void SetLeftPartonStable();
87  void SetRightPartonStable();
88 
89  G4int GetDecayDirection() const;
90 
93  G4bool IsAFourQuarkString(void) const;
94 
97  void SetPleft(G4LorentzVector a4momentum);
99  void SetPright(G4LorentzVector a4momentum);
100  void LorentzRotate(const G4LorentzRotation & rotation);
103  void Boost(G4ThreeVector& Velocity);
104 
105  private:
107  G4ThreeVector Ptleft,Ptright; // Pt (px,py) for partons (pz ignored!)
108  G4double Pplus, Pminus; // p-, p+ of string, Plus ass. to Left!
109 
111 
113  enum DecaySide { None, Left, Right };
115 };
116 
117 inline
119 {
120  return this == &right;
121 }
122 
123 inline
125 {
126  return this != &right;
127 }
128 
129 
130 inline
132 {
133  return theStableParton;
134 }
135 
136 inline
138 {
139  return theDecayParton;
140 }
141 
142 inline
144 {
145  return LeftParton;
146 }
147 
148 inline
150 {
151  return RightParton;
152 }
153 
154 //+++++++++++++++++++++++++++
155 inline
157 {
158  SetPleft(rotation*Pleft);
159  SetPright(rotation*Pright);
160  Pstring = Pleft+Pright;
161  Ptleft =Pleft.vect(); Ptleft.setZ(0.);
162  Ptright=Pright.vect(); Ptright.setZ(0.);
163  Pplus =Pstring.plus();
164  Pminus=Pstring.minus();
165 }
166 
167 inline
169 {
171  G4LorentzRotation toCMS(-1*momentum.boostVector());
172 
173  Pleft *= toCMS;
174  Pright *= toCMS;
175  Pstring *= toCMS;
176  Ptleft =Pleft.vect(); Ptleft.setZ(0.);
177  Ptright=Pright.vect(); Ptright.setZ(0.);
178  Pplus =Pstring.plus();
179  Pminus=Pstring.minus();
180  return toCMS;
181 }
182 
183 inline
185 {
187  G4LorentzRotation toAlignedCms(-1*momentum.boostVector());
188 
189  momentum= toAlignedCms* Pleft;
190  toAlignedCms.rotateZ(-1*momentum.phi());
191  toAlignedCms.rotateY(-1*momentum.theta());
192 
193  Pleft *= toAlignedCms;
194  Pright *= toAlignedCms;
195  Pstring *= toAlignedCms;
196 
197  Ptleft = G4ThreeVector(0.,0.,0.);
198  Ptright = G4ThreeVector(0.,0.,0.);
199  Pplus = Pstring.plus();
200  Pminus = Pstring.minus();
201 
202  return toAlignedCms;
203 }
204 
205 inline
207 {
208  Pleft = a4momentum;
209 }
210 
211 inline
213 {
214  Pright = a4momentum;
215 }
216 
217 #endif
218