CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MET.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 
3 // Package: METReco
4 // Class: MET
5 //
20 // Original authors: Michael Schmitt, Richard Cavanaugh The University of Florida
21 // changes by: Freya Blekman, Cornell University
22 //
23 
24 //____________________________________________________________________________||
25 #ifndef METRECO_MET_H
26 #define METRECO_MET_H
27 
28 //____________________________________________________________________________||
31 #include <cmath>
32 #include <vector>
33 #include <cstring>
34 #include <Math/SMatrix.h>
35 #include <Math/SVector.h>
36 
37 //____________________________________________________________________________||
38 namespace reco
39 {
40  typedef ROOT::Math::SMatrix<double,2> METCovMatrix;
41 
42  class MET : public RecoCandidate
43  {
44  public:
45 
46  MET();
47  MET( const LorentzVector& p4_, const Point& vtx_ );
48  MET( double sumet_, const LorentzVector& p4_, const Point& vtx_ );
49  MET( double sumet_, const std::vector<CorrMETData>& corr_,
50  const LorentzVector& p4_, const Point& vtx_ );
51 
52  MET * clone() const;
53 
54  //________________________________________________________________________||
55  //scalar sum of transverse energy over all objects
56  double sumEt() const { return sumet; }
57  //MET Significance = MET / std::sqrt(SumET)
58  double mEtSig() const { return ( sumet ? (this->et() / std::sqrt(sumet)) : (0.0) ); }
59  //real MET significance
60  double significance() const;
61  //longitudinal component of the vector sum of energy over all object
62  //(useful for data quality monitoring)
63  double e_longitudinal() const {return elongit; }
64 
65  //________________________________________________________________________||
66  //Define different methods for the corrections to individual MET elements
67  std::vector<double> dmEx() const ;
68  std::vector<double> dmEy() const ;
69  std::vector<double> dsumEt() const ;
70  std::vector<CorrMETData> mEtCorr() const { return corr; }
71 
72  //________________________________________________________________________||
75 
76  private:
77  virtual bool overlap( const Candidate & ) const;
78  double sumet;
79  double elongit;
80  // bookkeeping for the significance
81  double signif_dxx;
82  double signif_dyy;
83  double signif_dyx;
84  double signif_dxy;
85  std::vector<CorrMETData> corr;
86  };
87 }
88 
89 //____________________________________________________________________________||
90 #endif // METRECO_MET_H
std::vector< double > dsumEt() const
Definition: MET.cc:126
double e_longitudinal() const
Definition: MET.h:63
double signif_dyx
Definition: MET.h:83
MET * clone() const
returns a clone of the Candidate object
Definition: MET.cc:72
double signif_dxy
Definition: MET.h:84
virtual double et() const
transverse energy
void setSignificanceMatrix(const reco::METCovMatrix &matrix)
Definition: MET.cc:157
double signif_dxx
Definition: MET.h:81
ROOT::Math::SMatrix< double, 2 > METCovMatrix
Definition: MET.h:40
std::vector< double > dmEx() const
Definition: MET.cc:98
MET()
Definition: MET.cc:19
double mEtSig() const
Definition: MET.h:58
double sumEt() const
Definition: MET.h:56
Definition: MET.h:42
T sqrt(T t)
Definition: SSEVec.h:48
std::vector< CorrMETData > corr
Definition: MET.h:85
std::vector< double > dmEy() const
Definition: MET.cc:112
double signif_dyy
Definition: MET.h:82
std::vector< CorrMETData > mEtCorr() const
Definition: MET.h:70
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:37
virtual bool overlap(const Candidate &) const
check overlap with another candidate
Definition: MET.cc:151
math::XYZPoint Point
point in the space
Definition: Candidate.h:41
double elongit
Definition: MET.h:79
double significance() const
Definition: MET.cc:78
double sumet
Definition: MET.h:78
reco::METCovMatrix getSignificanceMatrix(void) const
Definition: MET.cc:139