00001 #ifndef TtHadLRSignalSelObservables_h 00002 #define TtHadLRSignalSelObservables_h 00003 00004 #include "FWCore/Framework/interface/EventSetup.h" 00005 #include "FWCore/Framework/interface/Event.h" 00006 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00007 #include "FWCore/Utilities/interface/Exception.h" 00008 00009 #include <iostream> 00010 #include <string> 00011 #include <vector> 00012 00013 #include "TLorentzVector.h" 00014 #include "TVector.h" 00015 #include "TVectorD.h" 00016 #include "TMatrix.h" 00017 #include "TMatrixDSymEigen.h" 00018 #include "TMatrixDSym.h" 00019 #include "TMatrixTSym.h" 00020 00021 #include "AnalysisDataFormats/TopObjects/interface/TtHadEvtSolution.h" 00022 #include "DataFormats/PatCandidates/interface/Jet.h" 00023 00024 const double PI=3.14159265; 00025 00026 class TtHadLRSignalSelObservables{ 00027 00028 public: 00029 00030 TtHadLRSignalSelObservables(); 00031 ~TtHadLRSignalSelObservables(); 00032 00033 void operator()(TtHadEvtSolution&); 00034 00035 private: 00036 00037 // compare two jets in ET 00038 struct CompareET { 00039 bool operator()( const pat::Jet& j1, const pat::Jet& j2 ) const 00040 { 00041 return j1.et() > j2.et(); 00042 } 00043 }; 00044 00045 CompareET EtComparator; 00046 00047 // compare two jets in bdisc 00048 struct CompareBdisc { 00049 bool operator()( const pat::Jet& j1, const pat::Jet& j2 ) const 00050 { 00051 return j1.bDiscriminator("trackCountingJetTags") > j2.bDiscriminator("trackCountingJetTags"); 00052 } 00053 }; 00054 00055 CompareBdisc BdiscComparator; 00056 00057 // compare two double 00058 struct CompareDouble { 00059 bool operator()( double j1, double j2 ) const 00060 { 00061 return j1 > j2 ; 00062 } 00063 }; 00064 00065 CompareDouble dComparator; 00066 00067 std::vector<std::pair<unsigned int,double> > evtselectVarVal; 00068 00069 }; 00070 00071 #endif