rivet is hosted by Hepforge, IPPP Durham
FParameter.hh
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #ifndef RIVET_FParameter_HH
00003 #define RIVET_FParameter_HH
00004 
00005 #include "Rivet/Projection.hh"
00006 #include "Rivet/Projections/FinalState.hh"
00007 #include "Rivet/Event.hh"
00008 
00009 namespace Rivet {
00010 
00011 
00012   class FParameter : public Projection {
00013   public:
00014 
00015     /// @name Constructors etc.
00016     //@{
00017 
00018     /// Constructor
00019     FParameter(const FinalState& fsp);
00020 
00021     /// Clone on the heap.
00022     DEFAULT_RIVET_PROJ_CLONE(FParameter);
00023 
00024     //@}
00025 
00026 
00027   protected:
00028 
00029     /// Perform the projection on the Event
00030     void project(const Event& e);
00031 
00032     /// Compare with other projections
00033     //int compare(const Projection& p) const;
00034     // Taken from Thrust.hh
00035     int compare(const Projection& p) const {
00036       return mkNamedPCmp(p, "FS");
00037     }
00038   public:
00039 
00040     /// Reset the projection
00041     void clear();
00042 
00043     /// @name Access the event shapes by name
00044     /// @{
00045     /// F-Parametr
00046     double F() const { return lambda1() >= lambda2() ? lambda2()/lambda1() : lambda1()/lambda2(); }
00047     /// @}
00048 
00049     /// @name Access the linearised transverse momentum tensor eigenvalues
00050     /// @{
00051     double lambda1() const { return _lambdas[0]; }
00052     double lambda2() const { return _lambdas[1]; }
00053     /// @}
00054 
00055 
00056     /// @name Direct methods
00057     /// Ways to do the calculation directly, without engaging the caching system
00058     //@{
00059 
00060     /// Manually calculate the sphericity, without engaging the caching system
00061     void calc(const FinalState& fs);
00062 
00063     /// Manually calculate the sphericity, without engaging the caching system
00064     void calc(const vector<Particle>& fsparticles);
00065 
00066     /// Manually calculate the sphericity, without engaging the caching system
00067     void calc(const vector<FourMomentum>& fsmomenta);
00068 
00069     /// Manually calculate the sphericity, without engaging the caching system
00070     void calc(const vector<Vector3>& fsmomenta);
00071 
00072     //@}
00073   private:
00074     /// Eigenvalues.
00075     vector<double> _lambdas;
00076 
00077   private:
00078 
00079     /// Actually do the calculation
00080     void _calcFParameter(const vector<Vector3>& fsmomenta);
00081 
00082   };
00083 }
00084 
00085 
00086 #endif