herwig is hosted by Hepforge, IPPP Durham
Herwig++  2.7.0
SemiLeptonicDPiAnalysis.h
00001 // -*- C++ -*-
00002 #ifndef HERWIG_SemiLeptonicDPiAnalysis_H
00003 #define HERWIG_SemiLeptonicDPiAnalysis_H
00004 //
00005 // This is the declaration of the SemiLeptonicDPiAnalysis class.
00006 //
00007 
00008 #include "ThePEG/Handlers/AnalysisHandler.h"
00009 #include "Herwig++/Utilities/Histogram.h"
00010 #include "ThePEG/EventRecord/Event.h"
00011 
00012 namespace Herwig {
00013 
00014 using namespace ThePEG;
00015 
00022 class SemiLeptonicDPiAnalysis: public AnalysisHandler {
00023 
00024 public:
00025 
00045   virtual void analyze(tEventPtr event, long ieve, int loop, int state);
00046 
00053   virtual LorentzRotation transform(tEventPtr event) const;
00054 
00060   virtual void analyze(const tPVector & particles);
00061 
00066   virtual void analyze(tPPtr particle);
00068 
00069 public:
00070 
00077   void persistentOutput(PersistentOStream & os) const;
00078 
00084   void persistentInput(PersistentIStream & is, int version);
00086 
00093   static void Init();
00094 
00095 protected:
00096 
00103   inline virtual IBPtr clone() const {return new_ptr(*this);}
00104 
00109   inline virtual IBPtr fullclone() const {return new_ptr(*this);}
00111 
00112 
00113 protected:
00114 
00121   virtual void dofinish();
00123 
00124 protected:
00125 
00129   void findChildren(tPPtr,ParticleVector &);
00130 
00131 private:
00132 
00137   static ClassDescription<SemiLeptonicDPiAnalysis> initSemiLeptonicDPiAnalysis;
00138 
00143   SemiLeptonicDPiAnalysis & operator=(const SemiLeptonicDPiAnalysis &);
00144 
00145 private:
00146 
00150   vector<int> _incoming;
00151 
00155   vector<int> _outgoingD;
00156 
00160   vector<int> _outgoingP;
00161 
00165   vector<long> _outgoingL;
00166 
00170   vector<HistogramPtr> _energy;
00171 
00175   vector<HistogramPtr> _scale;
00176 
00180   vector<HistogramPtr> _mDpi;
00181 
00182 };
00183 
00184 }
00185 
00186 #include "ThePEG/Utilities/ClassTraits.h"
00187 
00188 namespace ThePEG {
00189 
00194 template <>
00195 struct BaseClassTrait<Herwig::SemiLeptonicDPiAnalysis,1> {
00197   typedef AnalysisHandler NthBase;
00198 };
00199 
00202 template <>
00203 struct ClassTraits<Herwig::SemiLeptonicDPiAnalysis>
00204   : public ClassTraitsBase<Herwig::SemiLeptonicDPiAnalysis> {
00206   static string className() { return "Herwig::SemiLeptonicDPiAnalysis"; }
00214   static string library() { return "HwDecayAnalysis.so"; }
00215 };
00216 
00219 }
00220 
00221 #endif /* HERWIG_SemiLeptonicDPiAnalysis_H */