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