Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-05-12 09:05:02

0001 // -*- C++ -*-
0002 #ifndef RIVET_FParameter_HH
0003 #define RIVET_FParameter_HH
0004 
0005 #include "Rivet/Projection.hh"
0006 #include "Rivet/Projections/FinalState.hh"
0007 #include "Rivet/Event.hh"
0008 
0009 namespace Rivet {
0010 
0011 
0012   /// Calculator of the @f$ F @f$-parameter observable
0013   class FParameter : public Projection {
0014   public:
0015 
0016     /// @name Constructors etc.
0017     /// @{
0018 
0019     /// Constructor
0020     FParameter(const FinalState& fsp);
0021 
0022     /// Clone on the heap.
0023     RIVET_DEFAULT_PROJ_CLONE(FParameter);
0024 
0025     /// @}
0026 
0027     /// Import to avoid warnings about overload-hiding
0028     using Projection::operator =;
0029 
0030 
0031   protected:
0032 
0033     /// Perform the projection on the Event
0034     void project(const Event& e);
0035 
0036     /// Compare with other projections
0037     //CmpState compare(const Projection& p) const;
0038     // Taken from Thrust.hh
0039     CmpState compare(const Projection& p) const {
0040       return mkNamedPCmp(p, "FS");
0041     }
0042 
0043 
0044   public:
0045 
0046     /// Reset the projection
0047     void clear();
0048 
0049     /// @name Access the event shapes by name
0050     /// @{
0051     /// F-Parametr
0052     double F() const { return lambda1() >= lambda2() ? lambda2()/lambda1() : lambda1()/lambda2(); }
0053     /// @}
0054 
0055     /// @name Access the linearised transverse momentum tensor eigenvalues
0056     /// @{
0057     double lambda1() const { return _lambdas[0]; }
0058     double lambda2() const { return _lambdas[1]; }
0059     /// @}
0060 
0061 
0062     /// @name Direct methods
0063     /// Ways to do the calculation directly, without engaging the caching system
0064     /// @{
0065 
0066     /// Manually calculate the sphericity, without engaging the caching system
0067     void calc(const FinalState& fs);
0068 
0069     /// Manually calculate the sphericity, without engaging the caching system
0070     void calc(const vector<Particle>& fsparticles);
0071 
0072     /// Manually calculate the sphericity, without engaging the caching system
0073     void calc(const vector<FourMomentum>& fsmomenta);
0074 
0075     /// Manually calculate the sphericity, without engaging the caching system
0076     void calc(const vector<Vector3>& fsmomenta);
0077 
0078     /// @}
0079 
0080 
0081   protected:
0082 
0083     /// Eigenvalues
0084     vector<double> _lambdas;
0085 
0086 
0087   protected:
0088 
0089     /// Actually do the calculation
0090     void _calcFParameter(const vector<Vector3>& fsmomenta);
0091 
0092   };
0093 
0094 
0095 }
0096 
0097 #endif