00001 // -*- C++ -*- 00002 #ifndef THEPEG_KTRapidityCut_H 00003 #define THEPEG_KTRapidityCut_H 00004 // 00005 // This is the declaration of the KTRapidityCut class. 00006 // 00007 00008 #include "ThePEG/Cuts/OneCutBase.h" 00009 00010 namespace ThePEG { 00011 00023 class KTRapidityCut: public OneCutBase { 00024 00025 public: 00026 00032 KTRapidityCut(Energy minKT=10*GeV) 00033 : theMinKT(minKT), theMaxKT(Constants::MaxEnergy), 00034 theMinRapidity(-Constants::MaxRapidity), 00035 theMaxRapidity(Constants::MaxRapidity) {} 00036 00040 virtual ~KTRapidityCut(); 00042 00043 public: 00044 00051 virtual Energy minKT(tcPDPtr p) const; 00052 00058 virtual double minEta(tcPDPtr p) const; 00059 00065 virtual double maxEta(tcPDPtr p) const; 00066 00072 virtual bool passCuts(tcCutsPtr parent, 00073 tcPDPtr ptype, LorentzMomentum p) const; 00075 00079 virtual void describe() const; 00080 00081 public: 00082 00089 void persistentOutput(PersistentOStream & os) const; 00090 00096 void persistentInput(PersistentIStream & is, int version); 00098 00105 static void Init(); 00106 00107 protected: 00108 00115 virtual IBPtr clone() const; 00116 00121 virtual IBPtr fullclone() const; 00123 00124 private: 00125 00129 Energy maxKTMin() const; 00130 00134 Energy minKTMax() const; 00135 00139 double maxRapidityMin() const; 00140 00144 double minRapidityMax() const; 00145 00146 private: 00147 00152 Energy theMinKT; 00153 00158 Energy theMaxKT; 00159 00164 double theMinRapidity; 00165 00170 double theMaxRapidity; 00171 00176 PMPtr theMatcher; 00177 00178 private: 00179 00184 static ClassDescription<KTRapidityCut> initKTRapidityCut; 00185 00190 KTRapidityCut & operator=(const KTRapidityCut &); 00191 00192 }; 00193 00194 } 00195 00196 #include "ThePEG/Utilities/ClassTraits.h" 00197 00198 namespace ThePEG { 00199 00204 template <> 00205 struct BaseClassTrait<KTRapidityCut,1> { 00207 typedef OneCutBase NthBase; 00208 }; 00209 00212 template <> 00213 struct ClassTraits<KTRapidityCut> 00214 : public ClassTraitsBase<KTRapidityCut> { 00216 static string className() { return "ThePEG::KTRapidityCut"; } 00224 static string library() { return "KTRapidityCut.so"; } 00225 }; 00226 00229 } 00230 00231 #endif /* THEPEG_KTRapidityCut_H */