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 using namespace std; 00027 00028 class TtHadLRSignalSelObservables{ 00029 00030 public: 00031 00032 TtHadLRSignalSelObservables(); 00033 ~TtHadLRSignalSelObservables(); 00034 00035 void operator()(TtHadEvtSolution&); 00036 00037 private: 00038 00039 // compare two jets in ET 00040 struct CompareET { 00041 bool operator()( pat::Jet j1, pat::Jet j2 ) const 00042 { 00043 return j1.et() > j2.et(); 00044 } 00045 }; 00046 00047 CompareET EtComparator; 00048 00049 // compare two jets in bdisc 00050 struct CompareBdisc { 00051 bool operator()( pat::Jet j1, pat::Jet j2 ) const 00052 { 00053 return j1.bDiscriminator("trackCountingJetTags") > j2.bDiscriminator("trackCountingJetTags"); 00054 } 00055 }; 00056 00057 CompareBdisc BdiscComparator; 00058 00059 // compare two double 00060 struct CompareDouble { 00061 bool operator()( double j1, double j2 ) const 00062 { 00063 return j1 > j2 ; 00064 } 00065 }; 00066 00067 CompareDouble dComparator; 00068 00069 vector<pair<unsigned int,double> > evtselectVarVal; 00070 00071 }; 00072 00073 #endif