00001
00002 #ifndef PYTHIA7_LundZGenerator_H
00003 #define PYTHIA7_LundZGenerator_H
00004
00005
00006 #include "FragConfig.h"
00007
00008
00009 #include "ThePEG/Handlers/ZGenerator.h"
00010
00011
00012 namespace Pythia7 {
00013
00035 class LundZGenerator: public ThePEG::ZGenerator {
00036
00037 public:
00038
00039
00045 inline LundZGenerator();
00046
00050 inline LundZGenerator(const LundZGenerator &);
00051
00055 virtual ~LundZGenerator();
00057
00058 public:
00059
00069 virtual double generate(cPDPtr lastPD, cPDPtr newPD, Energy2 mT2) const;
00070
00075 inline double aSym() const;
00076
00081 inline InvEnergy2 bSym() const;
00083
00084 public:
00085
00086
00093 void persistentOutput(PersistentOStream & os) const;
00094
00100 void persistentInput(PersistentIStream & is, int version);
00102
00106 static void Init();
00107
00108
00109 protected:
00110
00117 virtual void setShape(cPDPtr lastPD, cPDPtr newPD, Energy2 mT2) const;
00118
00125 inline virtual double rQ(long hf) const;
00126
00127
00128 protected:
00129
00136 inline virtual IBPtr clone() const;
00137
00142 inline virtual IBPtr fullclone() const;
00144
00145
00146 protected:
00147
00153 inline virtual void doupdate() throw(UpdateException);
00154
00160 inline virtual void doinit() throw(InitException);
00161
00166 inline virtual void dofinish();
00168
00169 private:
00170
00175 inline double af() const;
00176
00181 inline double bf() const;
00182
00187 inline double cf() const;
00188
00193 inline bool smallZmax(double zm) const;
00194
00198 inline bool largeZmax(double zm) const;
00199
00200
00204 inline bool largeZmax(double zm, double bmt2) const;
00205
00206
00210 inline bool cCloseToOne() const;
00211
00215 inline bool cCloseToA() const;
00216
00217 private:
00218
00223 double asym;
00224
00229 InvEnergy2 bsym;
00230
00231
00237 double deltaDQ;
00238
00243 double rQc;
00244
00245
00249 mutable double bmT2;
00250
00254 mutable double theAf;
00255
00259 mutable double theCf;
00260
00264 static ClassDescription<LundZGenerator> initLundZGenerator;
00265
00266
00270 LundZGenerator & operator=(const LundZGenerator &);
00271
00272 };
00273
00274 }
00275
00276 namespace ThePEG {
00277
00284 template <>
00285 struct BaseClassTrait<Pythia7::LundZGenerator,1>: public ClassTraitsType {
00287 typedef ZGenerator NthBase;
00288 };
00289
00295 template <>
00296 struct ClassTraits<Pythia7::LundZGenerator>
00297 : public ClassTraitsBase<Pythia7::LundZGenerator> {
00299 static string className() { return "Pythia7::LundZGenerator"; }
00305 static string library() { return "libP7String.so"; }
00306 };
00307
00310 }
00311
00312 #include "LundZGenerator.icc"
00313 #ifndef PYTHIA7_TEMPLATES_IN_CC_FILE
00314
00315 #endif
00316
00317 #endif
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328