![]() |
![]() |
00001 #ifndef TtSemiLRSignalSelObservables_h 00002 #define TtSemiLRSignalSelObservables_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 "TVector3.h" 00016 #include "TVectorD.h" 00017 00018 #include "TMatrix.h" 00019 #include "TMatrixDSymEigen.h" 00020 #include "TMatrixDSym.h" 00021 #include "TMatrixTSym.h" 00022 00023 #include "AnalysisDataFormats/TopObjects/interface/TtSemiEvtSolution.h" 00024 #include "TopQuarkAnalysis/TopTools/interface/MEzCalculator.h" 00025 #include "DataFormats/PatCandidates/interface/Jet.h" 00026 00027 const double PI=3.14159265; 00028 00029 using namespace std; 00030 00031 class TtSemiLRSignalSelObservables{ 00032 00033 public: 00034 00035 TtSemiLRSignalSelObservables(); 00036 ~TtSemiLRSignalSelObservables(); 00037 00038 void operator()(TtSemiEvtSolution&, const std::vector<pat::Jet>&); 00039 00040 private: 00041 00042 vector<pair<unsigned int,double> > evtselectVarVal; 00043 00044 // compare two jets in ET 00045 struct CompareET { 00046 bool operator()( pat::Jet j1, pat::Jet j2 ) const 00047 { 00048 return j1.et() > j2.et(); 00049 } 00050 }; 00051 00052 CompareET EtComparator; 00053 00054 // compare two jets in bdisc 00055 struct CompareBdisc { 00056 bool operator()( pat::Jet j1, pat::Jet j2 ) const 00057 { 00058 return j1.bDiscriminator("trackCountingJetTags") > j2.bDiscriminator("trackCountingJetTags"); 00059 } 00060 }; 00061 00062 CompareBdisc BdiscComparator; 00063 00064 // compare two double 00065 struct CompareDouble { 00066 bool operator()( double j1, double j2 ) const 00067 { 00068 return j1 > j2 ; 00069 } 00070 }; 00071 00072 CompareDouble dComparator; 00073 }; 00074 00075 #endif