00001 // -*- C++ -*- 00002 // 00003 // SimpleKTCut.h is a part of ThePEG - Toolkit for HEP Event Generation 00004 // Copyright (C) 1999-2007 Leif Lonnblad 00005 // 00006 // ThePEG 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 THEPEG_SimpleKTCut_H 00010 #define THEPEG_SimpleKTCut_H 00011 // 00012 // This is the declaration of the SimpleKTCut class. 00013 // 00014 00015 #include "ThePEG/Cuts/OneCutBase.h" 00016 00017 namespace ThePEG { 00018 00029 class SimpleKTCut: public OneCutBase { 00030 00031 public: 00032 00038 SimpleKTCut(Energy minKT=10*GeV) 00039 : theMinKT(minKT), theMaxKT(Constants::MaxEnergy), 00040 theMinEta(-Constants::MaxRapidity), 00041 theMaxEta(Constants::MaxRapidity) {} 00042 00046 virtual ~SimpleKTCut(); 00048 00049 public: 00050 00057 virtual Energy minKT(tcPDPtr p) const; 00058 00064 virtual double minEta(tcPDPtr p) const; 00065 00071 virtual double maxEta(tcPDPtr p) const; 00072 00078 virtual bool passCuts(tcCutsPtr parent, 00079 tcPDPtr ptype, LorentzMomentum p) const; 00081 00085 virtual void describe() const; 00086 00087 public: 00088 00095 void persistentOutput(PersistentOStream & os) const; 00096 00102 void persistentInput(PersistentIStream & is, int version); 00104 00111 static void Init(); 00112 00113 protected: 00114 00121 virtual IBPtr clone() const; 00122 00127 virtual IBPtr fullclone() const; 00129 00130 private: 00131 00135 Energy maxKTMin() const; 00136 00140 Energy minKTMax() const; 00141 00145 double maxEtaMin() const; 00146 00150 double minEtaMax() const; 00151 00152 private: 00153 00158 Energy theMinKT; 00159 00164 Energy theMaxKT; 00165 00170 double theMinEta; 00171 00176 double theMaxEta; 00177 00182 PMPtr theMatcher; 00183 00184 private: 00185 00190 static ClassDescription<SimpleKTCut> initSimpleKTCut; 00191 00196 SimpleKTCut & operator=(const SimpleKTCut &); 00197 00198 }; 00199 00200 } 00201 00202 #include "ThePEG/Utilities/ClassTraits.h" 00203 00204 namespace ThePEG { 00205 00210 template <> 00211 struct BaseClassTrait<SimpleKTCut,1> { 00213 typedef OneCutBase NthBase; 00214 }; 00215 00218 template <> 00219 struct ClassTraits<SimpleKTCut> 00220 : public ClassTraitsBase<SimpleKTCut> { 00222 static string className() { return "ThePEG::SimpleKTCut"; } 00226 static string library() { return "SimpleKTCut.so"; } 00227 }; 00228 00231 } 00232 00233 #endif /* THEPEG_SimpleKTCut_H */