Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/parton_string/hadronization/include/G4FragmentingString.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 
 49 class G4FragmentingString 
 50 {
 51   public:     
 52       G4FragmentingString(const G4FragmentingString &right);
 53       G4FragmentingString(const G4ExcitedString &excited);
 54       G4FragmentingString(const G4FragmentingString &old,
 55         G4ParticleDefinition * newdecay,
 56         const G4LorentzVector *momentum);
 57       G4FragmentingString(const G4FragmentingString &old,
 58         G4ParticleDefinition * newdecay);
 59         
 60       ~G4FragmentingString();
 61 
 62       G4FragmentingString& operator=(const G4FragmentingString &);
 63       G4bool operator==(const G4FragmentingString &right) const;
 64 
 65       G4bool operator!=(const G4FragmentingString &right) const;
 66       
 67       G4LorentzVector Get4Momentum() const;
 68 
 69       G4ThreeVector StablePt();
 70       G4ThreeVector DecayPt();
 71       
 72       G4double LightConePlus();
 73       G4double LightConeMinus();
 74       G4double LightConeDecay();
 75    
 76       G4double Mass() const;
 77       G4double Mass2() const;
 78       G4double MassT2() const;
 79       
 80       G4ParticleDefinition* GetLeftParton(void) const;
 81       G4ParticleDefinition* GetRightParton(void) const;
 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             
 91       G4bool    DecayIsQuark();
 92       G4bool    StableIsQuark();
 93       G4bool    IsAFourQuarkString(void) const;
 94 
 95       G4LorentzVector   GetPstring();
 96       G4LorentzVector   GetPleft();
 97       void              SetPleft(G4LorentzVector a4momentum);
 98       G4LorentzVector   GetPright();
 99       void              SetPright(G4LorentzVector a4momentum);
100       void              LorentzRotate(const G4LorentzRotation & rotation);
101       G4LorentzRotation TransformToCenterOfMass();
102       G4LorentzRotation TransformToAlignedCms();
103       void              Boost(G4ThreeVector& Velocity);
104 
105   private:
106       G4ParticleDefinition *LeftParton, *RightParton; 
107       G4ThreeVector Ptleft,Ptright;    // Pt (px,py) for partons (pz ignored!)
108       G4double Pplus, Pminus;          // p-, p+ of string, Plus associated to Left!
109   
110       G4ParticleDefinition * theStableParton, * theDecayParton;
111       
112       G4LorentzVector Pstring, Pleft, Pright;
113       enum DecaySide { None, Left, Right };
114       DecaySide decaying; 
115 };
116 
117 inline
118 G4bool G4FragmentingString::operator==(const G4FragmentingString &right) const
119 {
120   return this == &right;
121 }
122 
123 inline
124 G4bool G4FragmentingString::operator!=(const G4FragmentingString &right) const
125 {
126   return this != &right;
127 }
128 
129 
130 inline
131 G4ParticleDefinition * G4FragmentingString::GetStableParton() const
132 {
133      return  theStableParton;
134 } 
135 
136 inline
137 G4ParticleDefinition * G4FragmentingString::GetDecayParton() const
138 {
139      return  theDecayParton;
140 } 
141 
142 inline
143 G4ParticleDefinition* G4FragmentingString::GetLeftParton(void) const
144 {
145     return LeftParton; 
146 }
147 
148 inline
149 G4ParticleDefinition* G4FragmentingString::GetRightParton(void) const
150 {
151     return RightParton; 
152 }
153 
154 //+++++++++++++++++++++++++++
155 inline
156 void G4FragmentingString::LorentzRotate(const G4LorentzRotation & rotation)
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
168 G4LorentzRotation G4FragmentingString::TransformToCenterOfMass()
169 {
170      G4LorentzVector momentum=Pstring;
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
184 void G4FragmentingString::SetPleft(G4LorentzVector a4momentum)
185 {    
186      Pleft   = a4momentum;
187      Ptleft  = Pleft.vect(); Ptleft.setZ(0.);
188      Pstring = Pleft + Pright;
189      Pplus   = Pstring.plus();
190      Pminus  = Pstring.minus();
191 }
192 
193 inline
194 void G4FragmentingString::SetPright(G4LorentzVector a4momentum)
195 {    
196      Pright  = a4momentum;
197      Ptright = Pright.vect(); Ptright.setZ(0.);
198      Pstring = Pleft + Pright;
199      Pplus   = Pstring.plus();
200      Pminus  = Pstring.minus();
201 }
202 
203 #endif
204 
205