Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-10-04 09:23:02

0001 // -*- C++ -*-
0002 #ifndef RIVET_METFinder_HH
0003 #define RIVET_METFinder_HH
0004 
0005 #include "Rivet/Projection.hh"
0006 
0007 namespace Rivet {
0008 
0009 
0010   /// Interface for projections that find missing transverse energy/momentum
0011   class METFinder : public Projection {
0012   public:
0013 
0014     /// Import to avoid warnings about overload-hiding
0015     using Projection::operator=;
0016 
0017     /// @name Transverse momentum functions
0018     ///
0019     /// @note This may be what you want, even if the paper calls it "missing Et"!
0020     /// @{
0021 
0022     /// The vector-summed visible transverse momentum in the event, as a 3-vector with z=0
0023     ///
0024     /// @note Reverse this vector with operator- to get the missing pT vector.
0025     /// @todo Currently equivalent to vectorEt
0026     virtual const Vector3& vectorSumPt() const = 0;
0027     /// Alias for vectorSumPt
0028     virtual const Vector3& vectorPt() const { return vectorSumPt(); }
0029 
0030     /// Convenience vector MPT function
0031     const Vector3 vectorMissingPt() const { return -vectorSumPt(); }
0032     // Alias
0033     const Vector3 vectorPtMiss() const { return vectorMissingPt(); }
0034     // Alias
0035     const Vector3 vectorMPT() const { return vectorMissingPt(); }
0036 
0037     /// The vector-summed missing transverse momentum in the event.
0038     double missingPt() const { return vectorPt().mod(); }
0039     /// Alias for missingPt
0040     double pTmiss() const { return missingPt(); }
0041     /// Alias for missingPt
0042     double scalarPtMiss() const { return missingPt(); }
0043     /// Alias for missingPt
0044     double mpt() const { return missingPt(); }
0045 
0046     /// The scalar-summed visible transverse momentum in the event.
0047     virtual double scalarSumPt() const = 0;
0048     /// Alias for scalarSumPt
0049     double scalarPt() const { return scalarSumPt(); }
0050     /// Alias for scalarSumPt
0051     double spt() const { return scalarSumPt(); }
0052 
0053     /// @}
0054 
0055 
0056     /// @name Transverse energy functions
0057     ///
0058     /// @warning Despite the common names "MET" and "SET", what's often meant is the pT functions above!
0059     /// @{
0060 
0061     /// The vector-summed visible transverse energy in the event, as a 3-vector with z=0
0062     ///
0063     /// @note Reverse this vector with operator- to get the missing ET vector.
0064     virtual const Vector3& vectorSumEt() const = 0;
0065     /// Alias for vectorSumEt
0066     virtual const Vector3& vectorEt() const { return vectorSumEt(); }
0067 
0068     /// Convenience vector MET function
0069     const Vector3 vectorMissingEt() const { return -vectorSumEt(); }
0070     // Alias
0071     const Vector3 vectorEtMiss() const { return vectorMissingEt(); }
0072     // Alias
0073     const Vector3 vectorMET() const { return vectorMissingEt(); }
0074 
0075     /// The vector-summed missing transverse energy in the event.
0076     double missingEt() const { return vectorMissingEt().mod(); }
0077     /// Alias for missingPt
0078     double eTmiss() const { return missingEt(); }
0079     /// Alias for missingPt
0080     double scalarEtMiss() const { return missingEt(); }
0081     /// Alias for missingEt
0082     double met() const { return missingEt(); }
0083 
0084     /// The scalar-summed visible transverse energy in the event.
0085     virtual double scalarSumEt() const = 0;
0086     /// Alias for scalarSumEt
0087     double scalarEt() const { return scalarSumEt(); }
0088     /// Alias for scalarSumEt
0089     double set() const { return scalarSumEt(); }
0090 
0091     /// @}
0092 
0093 
0094     /// Reset the projection. Smearing functions will be unchanged.
0095     virtual void reset() {  }
0096 
0097   };
0098 
0099 
0100 }
0101 
0102 #endif