Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
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 // $Id: G4FragmentingString.hh 107869 2017-12-07 14:46:39Z gcosmo $
28 //
29 
30 #ifndef G4FragmentingString_h
31 #define G4FragmentingString_h 1
32 
33 // ------------------------------------------------------------
34 // GEANT 4 class header file
35 //
36 // ---------------- G4FragmentingString ----------------
37 // by Gunter Folger, September 2001.
38 // class for an excited string used in Fragmention
39 // ------------------------------------------------------------
40 
41 #include "G4ios.hh"
42 #include "globals.hh"
43 #include "G4ThreeVector.hh"
44 #include "G4LorentzVector.hh"
45 #include "G4LorentzRotation.hh"
46 #include "G4ParticleDefinition.hh"
47 
48 class G4ExcitedString;
49 
51 {
52 
53  public:
54 
56  G4FragmentingString(const G4ExcitedString &excited);
58  G4ParticleDefinition * newdecay,
59  const G4LorentzVector *momentum);
61  G4ParticleDefinition * newdecay);
62 
64 
66  int operator==(const G4FragmentingString &right) const;
67 
68  int operator!=(const G4FragmentingString &right) const;
69 
70 
72 
75 
79 
80  G4double Mass() const;
81  G4double Mass2() const;
82  G4double MassT2() const;
83 
86 
87  G4ParticleDefinition* GetStableParton() const; // stable at the moment
88  G4ParticleDefinition* GetDecayParton() const; // currently involved in fragmentation
89 
90  void SetLeftPartonStable();
91  void SetRightPartonStable();
92 
93  G4int GetDecayDirection() const;
94 
97  G4bool FourQuarkString(void) const;
98 
101 void SetPleft(G4LorentzVector a4momentum);
103 void SetPright(G4LorentzVector a4momentum);
104 void LorentzRotate(const G4LorentzRotation & rotation);
107 void Boost(G4ThreeVector& Velocity);
108 
109 
110  private:
111 
113  G4ThreeVector Ptleft,Ptright; // Pt (px,py) for partons (pz ignored!)
114  G4double Pplus, Pminus; // p-, p+ of string, Plus ass. to Left!
115 
117 
119  enum DecaySide { None, Left, Right };
121 };
122 
123 inline
125 {
126  return this == &right;
127 }
128 
129 inline
131 {
132  return this != &right;
133 }
134 
135 
136 inline
138 {
139  return theStableParton;
140 }
141 
142 inline
144 {
145  return theDecayParton;
146 }
147 
148 inline
150  {
151  return LeftParton;
152  }
153 
154 inline
156  {
157  return RightParton;
158  }
159 
160 //+++++++++++++++++++++++++++
161 inline
163 {
164  SetPleft(rotation*Pleft);
165  SetPright(rotation*Pright);
166  Pstring = Pleft+Pright;
167 Ptleft =Pleft.vect(); Ptleft.setZ(0.);
168 Ptright=Pright.vect(); Ptright.setZ(0.);
169 Pplus =Pstring.plus();
171 }
172 
173 inline
175 {
176  G4LorentzVector momentum=Pstring;
177  G4LorentzRotation toCMS(-1*momentum.boostVector());
178 
179  Pleft *= toCMS;
180  Pright *= toCMS;
181  Pstring *= toCMS;
182 Ptleft =Pleft.vect(); Ptleft.setZ(0.);
184 Pplus =Pstring.plus();
186  return toCMS;
187 }
188 
189 inline
191 {
192  G4LorentzVector momentum=Pstring;
193  G4LorentzRotation toAlignedCms(-1*momentum.boostVector());
194 
195  momentum= toAlignedCms* Pleft;
196  toAlignedCms.rotateZ(-1*momentum.phi());
197  toAlignedCms.rotateY(-1*momentum.theta());
198 
199  Pleft *= toAlignedCms;
200  Pright *= toAlignedCms;
201  Pstring *= toAlignedCms;
202 
203 Ptleft = G4ThreeVector(0.,0.,0.);
204 Ptright = G4ThreeVector(0.,0.,0.);
205 Pplus = Pstring.plus();
206 Pminus = Pstring.minus();
207 
208  return toAlignedCms;
209 }
210 
211 inline
213 { Pleft = a4momentum;}
214 
215 inline
217 { Pright = a4momentum;}
218 #endif
219 
220 
G4LorentzVector GetPleft()
G4LorentzVector GetPright()
G4double Mass() const
void LorentzRotate(const G4LorentzRotation &rotation)
CLHEP::Hep3Vector G4ThreeVector
double plus() const
G4ParticleDefinition * GetRightParton(void) const
G4ParticleDefinition * theDecayParton
G4FragmentingString(const G4FragmentingString &right)
G4FragmentingString & operator=(const G4FragmentingString &)
G4ParticleDefinition * GetStableParton() const
G4double MassT2() const
double G4double
Definition: G4Types.hh:76
bool G4bool
Definition: G4Types.hh:79
G4ParticleDefinition * theStableParton
G4int GetDecayDirection() const
void Boost(G4ThreeVector &Velocity)
double minus() const
void setZ(double)
void SetPright(G4LorentzVector a4momentum)
G4LorentzRotation TransformToAlignedCms()
HepLorentzVector & rotateY(double)
HepLorentzVector & rotateZ(double)
int G4int
Definition: G4Types.hh:78
G4ParticleDefinition * GetLeftParton(void) const
G4ParticleDefinition * LeftParton
G4bool FourQuarkString(void) const
G4LorentzVector Get4Momentum() const
G4ParticleDefinition * GetDecayParton() const
int operator!=(const G4FragmentingString &right) const
Hep3Vector boostVector() const
Hep3Vector vect() const
G4LorentzRotation TransformToCenterOfMass()
G4double Mass2() const
void SetPleft(G4LorentzVector a4momentum)
G4LorentzVector GetPstring()
G4ParticleDefinition * RightParton
int operator==(const G4FragmentingString &right) const