Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 00003 // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de 00004 00005 #ifndef Analysis2_KtJetFinder_H 00006 #define Analysis2_KtJetFinder_H 00007 // 00008 // This is the declaration of the KtJetFinder class. 00009 // 00010 00011 #include "JetFinder.h" 00012 #include "KtJetFinder.fh" 00013 00014 #include "KtJet/KtEvent.h" 00015 00016 #include <memory> 00017 00018 namespace Analysis2 { 00019 00020 using namespace ThePEG; 00021 00031 class KtJetFinder: public JetFinder { 00032 00033 public: 00034 00040 inline KtJetFinder(); 00041 00045 inline KtJetFinder(const KtJetFinder &); 00046 00050 virtual ~KtJetFinder(); 00052 00053 public: 00054 00060 virtual void use (const vector<Lorentz5Momentum>&, bool); 00061 00064 00068 virtual inline void findJets (); 00069 00073 virtual inline void findJetsN (unsigned int nJets); 00074 00078 virtual inline void findJetsD (); 00079 00083 virtual inline void findJetsY (double y = -1.); 00084 00088 virtual inline Energy getDMerge (unsigned int nJets) const; 00089 00093 virtual inline double getYMerge (unsigned int nJets) const; 00094 00096 00097 public: 00098 00101 00105 inline int collisionType () const; 00106 00110 inline int distanceScheme () const; 00111 00115 inline int recombinationScheme () const; 00116 00118 00119 protected: 00120 00124 void convert (); 00125 00130 void convert (const vector<KtJet::KtLorentzVector>&); 00131 00135 void cluster (); 00136 00140 void clusterInclusive (); 00141 00146 inline const vector<KtJet::KtLorentzVector>& lastMomenta () const; 00147 00151 inline const KtJet::KtEvent& lastKtEvent () const; 00152 00153 public: 00154 00161 void persistentOutput(PersistentOStream & os) const; 00162 00168 void persistentInput(PersistentIStream & is, int version); 00170 00177 static void Init(); 00178 00179 protected: 00180 00187 inline virtual IBPtr clone() const; 00188 00193 inline virtual IBPtr fullclone() const; 00195 00196 00197 // If needed, insert declarations of virtual function defined in the 00198 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 00199 00200 00201 private: 00202 00206 int _collisionType; 00207 00211 int _distanceScheme; 00212 00216 int _recombinationScheme; 00217 00221 vector<KtJet::KtLorentzVector> _lastMomenta; 00222 00226 std::auto_ptr<KtJet::KtEvent> _lastKtEvent; 00227 00232 static ClassDescription<KtJetFinder> initKtJetFinder; 00233 00238 KtJetFinder & operator=(const KtJetFinder &); 00239 00240 }; 00241 00242 } 00243 00244 #include "ThePEG/Utilities/ClassTraits.h" 00245 00246 namespace ThePEG { 00247 00252 template <> 00253 struct BaseClassTrait<Analysis2::KtJetFinder,1> { 00255 typedef Analysis2::JetFinder NthBase; 00256 }; 00257 00260 template <> 00261 struct ClassTraits<Analysis2::KtJetFinder> 00262 : public ClassTraitsBase<Analysis2::KtJetFinder> { 00264 static string className() { return "Analysis2::KtJetFinder"; } 00272 static string library() { return "KtJetFinder.so Analysis2.so"; } 00273 }; 00274 00277 } 00278 00279 #include "KtJetFinder.icc" 00280 #ifndef ThePEG_TEMPLATES_IN_CC_FILE 00281 // #include "KtJetFinder.tcc" 00282 #endif 00283 00284 #endif /* Analysis2_KtJetFinder_H */