Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 00003 // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de 00004 00005 #ifndef Analysis2_FastJetFinder_H 00006 #define Analysis2_FastJetFinder_H 00007 // 00008 // This is the declaration of the FastJetFinder class. 00009 // 00010 00011 #include "JetFinder.h" 00012 #include "FastJetFinder.fh" 00013 00014 #include "fastjet/JetDefinition.hh" 00015 #include "fastjet/PseudoJet.hh" 00016 #include "fastjet/ClusterSequence.hh" 00017 00018 #include <memory> 00019 00020 namespace Analysis2 { 00021 00022 using namespace ThePEG; 00023 00035 class FastJetFinder: public JetFinder { 00036 00037 public: 00038 00044 inline FastJetFinder(); 00045 00049 inline FastJetFinder (const FastJetFinder&); 00050 00054 virtual ~FastJetFinder(); 00056 00057 public: 00058 00062 virtual void use (const vector<Lorentz5Momentum>&,bool); 00063 00066 00070 virtual inline void findJets (); 00071 00075 virtual inline void findJetsN (unsigned int nJets); 00076 00080 virtual inline void findJetsD (); 00081 00085 virtual inline void findJetsY (double y = -1.); 00086 00090 virtual inline Energy getDMerge (unsigned int nJets) const; 00091 00095 virtual inline double getYMerge (unsigned int nJets) const; 00096 00098 00099 public: 00100 00103 00107 inline int jetFinder () const; 00108 00112 inline int recombinationScheme () const; 00113 00117 inline int strategy () const; 00118 00122 inline const fastjet::JetDefinition& jetDefintion () const; 00123 00125 00126 protected: 00127 00131 void convert (); 00132 00136 void convert (const vector<fastjet::PseudoJet>&); 00137 00141 void cluster (); 00142 00147 inline const vector<fastjet::PseudoJet>& lastPseudojets () const; 00148 00152 inline const fastjet::ClusterSequence& lastClusterSequence () const; 00153 00154 public: 00155 00162 void persistentOutput(PersistentOStream & os) const; 00163 00169 void persistentInput(PersistentIStream & is, int version); 00171 00178 static void Init(); 00179 00180 protected: 00181 00188 inline virtual IBPtr clone() const; 00189 00194 inline virtual IBPtr fullclone() const; 00196 00197 00198 // If needed, insert declarations of virtual function defined in the 00199 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 00200 00201 00202 protected: 00203 00206 00211 inline virtual void doinitrun(); 00212 00217 inline virtual void dofinish(); 00218 00220 00221 private: 00222 00226 int _jetFinder; 00227 00231 int _strategy; 00232 00236 int _recombinationScheme; 00237 00241 vector<fastjet::PseudoJet> _lastPseudojets; 00242 00246 std::auto_ptr<fastjet::ClusterSequence> _lastClusterSequence; 00247 00251 fastjet::JetDefinition _jetDefinition; 00252 00257 Energy2 _E2vis; 00258 00263 static ClassDescription<FastJetFinder> initFastJetFinder; 00264 00269 FastJetFinder & operator=(const FastJetFinder &); 00270 00271 }; 00272 00273 } 00274 00275 #include "ThePEG/Utilities/ClassTraits.h" 00276 00277 namespace ThePEG { 00278 00283 template <> 00284 struct BaseClassTrait<Analysis2::FastJetFinder,1> { 00286 typedef Analysis2::JetFinder NthBase; 00287 }; 00288 00291 template <> 00292 struct ClassTraits<Analysis2::FastJetFinder> 00293 : public ClassTraitsBase<Analysis2::FastJetFinder> { 00295 static string className() { return "Analysis2::FastJetFinder"; } 00303 static string library() { return "FastJetFinder.so Analysis2.so"; } 00304 }; 00305 00308 } 00309 00310 #include "FastJetFinder.icc" 00311 #ifndef ThePEG_TEMPLATES_IN_CC_FILE 00312 // #include "FastJetFinder.tcc" 00313 #endif 00314 00315 #endif /* Analysis2_FastJetFinder_H */