00001 // -*- C++ -*- 00002 #ifndef PYTHIA7_String_H 00003 #define PYTHIA7_String_H 00004 // This is the declaration of the String class. 00005 00006 #include "FragConfig.h" 00007 // #include "String.fh" 00008 // #include "String.xh" 00009 #include "ThePEG/EventRecord/Particle.h" 00010 #include "Oriented.h" 00011 00012 00013 namespace Pythia7 { 00014 00016 typedef pair<int,int> StringRegionIndex; 00018 ThePEG_DECLARE_MAP(StringRegionIndex, StringRegionPtr, StringRegionMap); 00019 // typedef map<StringRegionIndex, StringRegionPtr> StringRegionMap; 00021 typedef StringRegionMap::iterator StrRgMapIt; 00022 00023 00064 class String { 00065 00067 typedef vector<double> xRemVec; 00068 00069 public: 00070 00076 inline String(); 00077 00081 inline String(const String &); 00082 00091 String(const PVector &); 00092 00096 ~String(); 00098 00105 inline const LorentzMomentum& PtotRem() const; 00106 00111 inline Energy2 Wrem2() const; 00112 00117 inline const LorentzMomentum& Pfwd(int fidx) const; 00122 inline const LorentzMomentum& Pbwd(int bidx) const; 00123 00129 inline double Xremf(int fidx) const; 00130 00136 inline double Xremb(int bidx) const; 00137 00142 inline const LorentzMomentum & Pplus(int j) const; 00143 00148 inline const LorentzMomentum & Pminus(int k) const; 00149 00154 inline double XplusRem(int j) const; 00155 00160 inline double XminusRem(int k) const; 00162 00168 inline int nPrimaryStringRegion() const; 00169 00174 cStringRegionPtr getStringRegionPtr(int j, int k); 00175 00180 cStringRegionPtr nextUp(cStringRegionPtr firstSR); 00181 00186 cStringRegionPtr nextDown(cStringRegionPtr firstSR); 00187 00192 inline cStringRegionPtr firstSR(); 00193 00198 inline cStringRegionPtr lastSR(); 00200 00206 inline void reset(); 00207 00212 inline void updatePtotrem(const LorentzMomentum& HadronP); 00213 00219 inline void updateXremf(int fidx, double xfnH); 00220 00226 inline void updateXremb(int bidx, double xbnH); 00227 00232 inline void setXplusRem(int jj, double newX); 00233 00238 inline void setXminusRem(int kk, double newX); 00239 00241 00245 void echo() const; 00246 00247 00248 private: 00249 00254 // inline void sumMomentun(cPPtr firstPPtr); 00255 00259 inline void InitXrem(); 00260 00264 void clearStringRegionMap(); 00265 00266 private: 00267 00271 LorentzMomentum Ptotrem; 00272 00276 MomentumVector pplus; 00277 00281 MomentumVector pminus; 00282 00286 xRemVec xPlusRem; 00287 00291 xRemVec xMinusRem; 00292 00296 StringRegionMap theStringRegionMap; 00297 00301 int ns; 00302 00306 LorentzMomentum Ptot; 00307 00311 PVector partons; 00312 00313 }; 00314 00315 } 00316 00317 #include "String.icc" 00318 #ifndef PYTHIA7_TEMPLATES_IN_CC_FILE 00319 // #include "String.tcc" 00320 #endif 00321 00322 #endif /* PYTHIA7_String_H */