herwig is hosted by Hepforge, IPPP Durham
Herwig++  2.7.0
AcerDet.h
00001 // -*- C++ -*-
00002 #ifndef HERWIG_AcerDet_H
00003 #define HERWIG_AcerDet_H
00004 //
00005 // This is the declaration of the AcerDet class.
00006 //
00007 
00008 #include "ThePEG/Handlers/AnalysisHandler.h"
00009 #include "HepMC/GenEvent.h"
00010 #include "HepMC/IO_HEPEVT.h"
00011 
00012 namespace Herwig {
00013 
00014 using namespace ThePEG;
00015 
00023 class AcerDet: public AnalysisHandler {
00024 
00025 public:
00026 
00030   inline AcerDet() {}
00031 
00051   virtual void analyze(tEventPtr event, long ieve, int loop, int state);
00053 
00054 public:
00055 
00063   inline unsigned int numberOfPhotons() const {return _nphoton;}
00064 
00068   inline const vector<LorentzMomentum> & photonMomentum() const {return _photonMomentum;}
00069 
00073   inline unsigned int numberOfLeptons() const {return _nlepton;}
00074 
00078   inline const vector<LorentzMomentum> & leptonMomentum() const {return _leptonMomentum;}
00079 
00083   inline const vector<int> & leptonID() const {return _leptonID;}
00084 
00088   inline unsigned int numberOfJets() const {return _njet;}
00089 
00093   inline const vector<LorentzMomentum> & jetMomentum() const {return _jetMomentum;}
00094 
00099   inline const vector<int> & jetID() const {return _jetID;}
00100 
00105   inline const pair<Energy,Energy> & missingETCalorimeter() const {_etcalo;}
00106 
00111   inline const pair<Energy,Energy> & missingETNeutrino() const {_etneutrino;}
00112 
00117   inline const pair<Energy,Energy> & missingETStable() const {_etstable;}
00119 
00120 public:
00121 
00128   static void Init();
00129 
00130 protected:
00131 
00138   inline virtual IBPtr clone() const {return new_ptr(*this);}
00139 
00144   inline virtual IBPtr fullclone() const {return new_ptr(*this);}
00146 
00147 protected:
00148 
00155   virtual void doinitrun();
00156 
00161   virtual void dofinish();
00163 
00164 private:
00165 
00170   static NoPIOClassDescription<AcerDet> initAcerDet;
00171 
00176   AcerDet & operator=(const AcerDet &);
00177 
00178 private:
00179 
00183   HepMC::IO_HEPEVT * _converter;
00184 
00188   unsigned int _nphoton;
00189 
00193   vector<LorentzMomentum> _photonMomentum;
00194 
00198   unsigned int _nlepton;
00199 
00203   vector<LorentzMomentum> _leptonMomentum;
00204 
00208   vector<int> _leptonID;
00209 
00213   unsigned int _njet;
00214 
00218   vector<LorentzMomentum> _jetMomentum;
00219 
00223   vector<int> _jetID;
00224 
00228   pair<Energy,Energy> _etcalo;
00229 
00233   pair<Energy,Energy> _etneutrino;
00234 
00238   pair<Energy,Energy> _etstable;
00239 };
00240 
00241 }
00242 
00243 #include "ThePEG/Utilities/ClassTraits.h"
00244 
00245 namespace ThePEG {
00246 
00251 template <>
00252 struct BaseClassTrait<Herwig::AcerDet,1> {
00254   typedef AnalysisHandler NthBase;
00255 };
00256 
00259 template <>
00260 struct ClassTraits<Herwig::AcerDet>
00261   : public ClassTraitsBase<Herwig::AcerDet> {
00263   static string className() { return "Herwig::AcerDet"; }
00271   static string library() { return "HwAcerDet.so"; }
00272 };
00273 
00276 }
00277 
00278 #endif /* HERWIG_AcerDet_H */