herwig is hosted by Hepforge, IPPP Durham
Herwig++  2.7.0
KtJetFinder.h
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 */