Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:40

0001 #ifndef SIGMET_ASIGNIFICANCE_H
0002 #define SIGMET_ASIGNIFICANCE_H
0003 // -*- C++ -*-
0004 //
0005 // Package:    METAlgorithms
0006 // Class:      SigInputObj
0007 //
0008 /**\class METSignificance SigInputObj.h RecoMET/METAlgorithms/include/SigInputObj.h
0009 
0010  Description: <one line class summary>
0011 
0012  Implementation:
0013 
0014   Purpose:
0015   
0016   This subroutine takes in a vector of type SigInputObj that includes
0017   all of the physics objects in the event.  It then calculates
0018   the log significance of the MET of the event.
0019 
0020   The Significance (S) is defined as:
0021     ln(S) = 1/2 Chisq_0
0022   where Chisq_0 is the value of Chi squared at MET=0.
0023 
0024 */
0025 //
0026 // Original Author:  Kyle Story, Freya Blekman (Cornell University)
0027 //         Created:  Fri Apr 18 11:58:33 CEST 2008
0028 //
0029 //
0030 
0031 //
0032 //  Purpose:
0033 //
0034 //  This subroutine takes in a vector of type SigInputObj that includes
0035 //  all of the physics objects in the event.  It then calculates
0036 //  the log significance of the MET of the event.
0037 //
0038 //  The Significance (S) is defined as:
0039 //    ln(S) = 1/2 Chisq_0
0040 //  where Chisq_0 is the value of Chi squared at MET=0.
0041 //
0042 //
0043 //
0044 // Revision history
0045 //
0046 // Revision 1.2  2009/10/21 11:27:11  fblekman
0047 // merged version with cvs head - includes new interfaces for MET significance to make it possible to correct MET objects later and also correct the signficance.
0048 //
0049 // Revision 1.1  2008/04/18 10:12:55  fblekman
0050 // First implementation (very preliminary) of missing ET significance algorithm.
0051 // This code is currently still heavily under development so please bear with us.
0052 //
0053 // cheers,
0054 //
0055 //   Freya (for the Cornell MET significance group)
0056 //
0057 // Revision 1.2  2008/03/26 17:52:19  kstory
0058 // Tower Based Algorithm.  significanceAlgo now using matrix operations.
0059 //
0060 // Revision 1.1.1.1  2008/02/29 22:25:02  kstory
0061 // Tower-Based Algorithm
0062 //
0063 // Revision 1.2  2008/02/13 13:14:37  fblekman
0064 // updated version with electrons
0065 //
0066 // Revision 1.3  2007/12/07 00:20:10  kstory
0067 // MET phi was changed to have a range of [-pi, pi]
0068 //
0069 // Revision 1.2  2007/11/30 22:02:33  kstory
0070 // Changed the arguments to allow calculation of the total MET and the MET_phi.
0071 //
0072 //
0073 
0074 #include <vector>
0075 #include <string>
0076 #include <iostream>
0077 #include <sstream>
0078 
0079 #include "DataFormats/METReco/interface/SigInputObj.h"
0080 #include "DataFormats/METReco/interface/MET.h"
0081 #include "TMatrixTBase.h"
0082 #include "TMatrixD.h"
0083 #include "TVectorD.h"
0084 
0085 namespace metsig {
0086   class significanceAlgo {
0087   public:
0088     significanceAlgo();
0089     ~significanceAlgo();
0090 
0091     const void addSignifMatrix(const reco::METCovMatrix& input);
0092     const void setSignifMatrix(const reco::METCovMatrix& input,
0093                                const double& met_r,
0094                                const double& met_phi,
0095                                const double& met_set);
0096     const double significance(double& met_r, double& met_phi, double& met_set);
0097     const void addObjects(const std::vector<metsig::SigInputObj>& EventVec);
0098     const void subtractObjects(const std::vector<metsig::SigInputObj>& EventVec);
0099     reco::METCovMatrix getSignifMatrix() const { return signifmatrix_; }
0100     //    const std::vector<metsig::SigInputObj> eventVec(){return eventVec_;}
0101   private:
0102     //void rotateMatrix( Double_t theta, reco::METCovMatrix  &v);
0103 
0104     //    std::vector<metsig::SigInputObj> eventVec_;
0105     reco::METCovMatrix signifmatrix_;
0106     // workers:
0107     double set_worker_;
0108     double xmet_;
0109     double ymet_;
0110   };
0111 }  // namespace metsig
0112 
0113 #endif