herwig is hosted by Hepforge, IPPP Durham
Herwig++  2.7.0
IdentifiedParticleAnalysis.h
00001 // -*- C++ -*-
00002 //
00003 // IdentifiedParticleAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator
00004 // Copyright (C) 2002-2011 The Herwig Collaboration
00005 //
00006 // Herwig++ is licenced under version 2 of the GPL, see COPYING for details.
00007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
00008 //
00009 #ifndef HERWIG_IdentifiedParticleAnalysis_H
00010 #define HERWIG_IdentifiedParticleAnalysis_H
00011 //
00012 // This is the declaration of the IdentifiedParticleAnalysis class.
00013 //
00014 
00015 #include "ThePEG/Repository/CurrentGenerator.h"
00016 #include "ThePEG/Handlers/AnalysisHandler.h"
00017 #include "ThePEG/Repository/EventGenerator.h"
00018 #include "Herwig++/Utilities/Histogram.h"
00019 #include "ThePEG/Vectors/Lorentz5Vector.h"
00020 
00021 namespace Herwig {
00022 
00023 using namespace ThePEG;
00024 
00032 class IdentifiedParticleAnalysis: public AnalysisHandler {
00033 
00034 public:
00035 
00055   virtual void analyze(tEventPtr event, long ieve, int loop, int state);
00056 
00057 public:
00058 
00065   static void Init();
00066 
00067 protected:
00068 
00072   int getFlavour(const tPVector &);
00073 
00074   double getX(const Lorentz5Momentum & p, const Energy & Ebeam) {
00075     return Ebeam > ZERO ? double(p.vect().mag()/Ebeam) : -1.;
00076   }
00077 
00078 protected:
00079 
00086   virtual IBPtr clone() const {return new_ptr(*this);}
00087 
00092   virtual IBPtr fullclone() const {return new_ptr(*this);}
00094 
00095 protected:
00096 
00103   virtual void doinitrun();
00104 
00109   virtual void dofinish();
00111 
00112 private:
00113 
00118   static NoPIOClassDescription<IdentifiedParticleAnalysis>
00119   initIdentifiedParticleAnalysis;
00120 
00125   IdentifiedParticleAnalysis & operator=(const IdentifiedParticleAnalysis &);
00126 
00127 private:
00128 
00136   HistogramPtr _xpa;
00137 
00141   HistogramPtr _xpl;
00142 
00146   HistogramPtr _xpc;
00147 
00151   HistogramPtr _xpb;
00152 
00156   HistogramPtr _pipma;
00157 
00161   HistogramPtr _pipml;
00162 
00166   HistogramPtr _pipmc;
00167 
00171   HistogramPtr _pipmb;
00172 
00176   HistogramPtr _pipm;
00177 
00181   HistogramPtr _kpma;
00182 
00186   HistogramPtr _kpml;
00187 
00191   HistogramPtr _kpmc;
00192 
00196   HistogramPtr _kpmb;
00197 
00201   HistogramPtr _kpm;
00202 
00203 
00207   HistogramPtr _ppma;
00208 
00212   HistogramPtr _ppml;
00213 
00217   HistogramPtr _ppmc;
00218 
00222   HistogramPtr _ppmb;
00223 
00227   HistogramPtr _ppm;
00228 
00232   HistogramPtr _udsxp;
00233 
00237   HistogramPtr _udsxip;
00238 
00242   HistogramPtr _lpm;
00243 
00247   HistogramPtr _xpKstarplus;
00248 
00252   HistogramPtr _xpXiminus;
00253 
00257   HistogramPtr _xiXiminus;
00258 
00262   HistogramPtr _xpSigmaplus;
00263 
00267   HistogramPtr _xiSigmaplus;
00268 
00272   HistogramPtr _xpSigmaminus;
00273 
00277   HistogramPtr _xiSigmaminus;
00278 
00282   HistogramPtr _xpXi0;
00283 
00287   HistogramPtr _xiXi0;
00288 
00292   HistogramPtr _xpLambda1520;
00293 
00297   HistogramPtr _xiLambda1520;
00298 
00302   HistogramPtr _xeDelta;
00303 
00307   HistogramPtr _xpf980;
00308 
00312   HistogramPtr _xpphi;
00313 
00317   HistogramPtr _xpf2;
00318 
00322   HistogramPtr _xpKstar0;  
00323 
00327   HistogramPtr _xpK0; 
00328 
00332   HistogramPtr _xerho0;
00333 
00337   HistogramPtr _xepi0;
00338 
00342   HistogramPtr _xipi0;
00343 
00347   HistogramPtr _xeeta;
00348 
00352   HistogramPtr _xieta;
00353 
00357   HistogramPtr _xeetap;
00358 
00362   HistogramPtr _xietap;
00363 
00367   HistogramPtr _xeomega;
00368 
00372   HistogramPtr _xiomega;
00373 
00377   HistogramPtr _xerhop;
00378 
00382   HistogramPtr _xirhop;
00383 
00387   HistogramPtr _xea_0p;
00388 
00392   HistogramPtr _xia_0p;
00393 
00397   HistogramPtr _xeD0; 
00398 
00402   HistogramPtr _xeDstar;
00403 
00404 };
00405 
00406 }
00407 
00408 #include "ThePEG/Utilities/ClassTraits.h"
00409 
00410 namespace ThePEG {
00411 
00416 template <>
00417 struct BaseClassTrait<Herwig::IdentifiedParticleAnalysis,1> {
00419   typedef AnalysisHandler NthBase;
00420 };
00421 
00424 template <>
00425 struct ClassTraits<Herwig::IdentifiedParticleAnalysis>
00426   : public ClassTraitsBase<Herwig::IdentifiedParticleAnalysis> {
00428   static string className() { return "Herwig::IdentifiedParticleAnalysis"; }
00432   static string library() { return "HwAnalysis.so HwLEPAnalysis.so"; }
00433 };
00434 
00437 }
00438 
00439 #endif /* HERWIG_IdentifiedParticleAnalysis_H */