Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 // 00003 // QTildeSudakov.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator 00004 // Copyright (C) 2002-2011 The Herwig Collaboration 00005 // 00006 // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. 00007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 00008 // 00009 #ifndef HERWIG_QTildeSudakov_H 00010 #define HERWIG_QTildeSudakov_H 00011 // 00012 // This is the declaration of the QTildeSudakov class. 00013 // 00014 00015 #include "Herwig++/Shower/Base/SudakovFormFactor.h" 00016 00017 namespace Herwig { 00018 00019 using namespace ThePEG; 00020 00029 class QTildeSudakov: public SudakovFormFactor { 00030 00031 public: 00032 00036 inline QTildeSudakov() {} 00037 00051 virtual ShoKinPtr generateNextTimeBranching(const Energy startingScale, 00052 const IdList &ids,const bool cc, 00053 double enhance); 00054 00066 virtual ShoKinPtr generateNextDecayBranching(const Energy startingScale, 00067 const Energy stoppingScale, 00068 const Energy minmass, 00069 const IdList &ids, 00070 const bool cc, 00071 double enhance); 00072 00084 virtual ShoKinPtr generateNextSpaceBranching(const Energy startingScale, 00085 const IdList &ids,double x, 00086 const bool cc, double enhance, 00087 tcBeamPtr beam); 00089 00094 virtual Energy calculateScale(double z, Energy pt, IdList ids,unsigned int iopt); 00095 00099 virtual ShoKinPtr createFinalStateBranching(Energy scale,double z, 00100 double phi, Energy pt); 00101 00105 virtual ShoKinPtr createInitialStateBranching(Energy scale,double z, 00106 double phi, Energy pt); 00107 00111 virtual ShoKinPtr createDecayBranching(Energy scale,double z, 00112 double phi, Energy pt); 00113 00114 public: 00115 00122 void persistentOutput(PersistentOStream & os) const; 00123 00129 void persistentInput(PersistentIStream & is, int version); 00131 00138 static void Init(); 00139 00140 protected: 00153 bool guessTimeLike(Energy2 &t, Energy2 tmin, double enhance); 00154 00162 bool guessDecay(Energy2 &t, Energy2 tmax,Energy minmass, 00163 double enhance); 00164 00172 bool guessSpaceLike(Energy2 &t, Energy2 tmin, const double x, 00173 double enhance); 00175 00182 void initialize(const IdList & ids,Energy2 &tmin, const bool cc); 00183 00190 bool PSVeto(const Energy2 t); 00191 00197 bool computeTimeLikeLimits(Energy2 & scale); 00198 00205 bool computeSpaceLikeLimits(Energy2 & scale, double x); 00206 00207 protected: 00208 00215 inline virtual IBPtr clone() const {return new_ptr(*this);} 00216 00221 inline virtual IBPtr fullclone() const {return new_ptr(*this);} 00223 00224 private: 00225 00230 QTildeSudakov & operator=(const QTildeSudakov &); 00231 00232 private: 00233 00237 Energy q_; 00238 00242 IdList ids_; 00243 00247 vector<Energy> masses_; 00248 00252 vector<Energy2> masssquared_; 00253 00254 }; 00255 00256 } 00257 00258 #endif /* HERWIG_QTildeSudakov_H */