00001 #include <string>
00002 #include <vector>
00003
00004 #include "FWCore/Framework/interface/EDProducer.h"
00005 #include "FWCore/Framework/interface/Event.h"
00006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00007 #include "FWCore/ParameterSet/interface/InputTag.h"
00008
00009 #include <DataFormats/Candidate/interface/Candidate.h>
00010
00011 class TtDilepLRSignalSelObservables;
00012
00013 class TtDilepEvtSolutionMaker : public edm::EDProducer {
00014
00015 public:
00016
00017 explicit TtDilepEvtSolutionMaker(const edm::ParameterSet & iConfig);
00018 ~TtDilepEvtSolutionMaker();
00019
00020 virtual void produce(edm::Event & iEvent, const edm::EventSetup & iSetup);
00021
00022 private:
00023
00024
00025 inline bool PTComp(const reco::Candidate*, const reco::Candidate*) const;
00026 inline bool LepDiffCharge(const reco::Candidate* , const reco::Candidate*) const;
00027 inline bool HasPositiveCharge(const reco::Candidate*) const;
00028
00029 private:
00030
00031 edm::InputTag electronSource_;
00032 edm::InputTag muonSource_;
00033 edm::InputTag tauSource_;
00034 edm::InputTag metSource_;
00035 edm::InputTag jetSource_;
00036 edm::InputTag evtSource_;
00037 int jetCorrScheme_;
00038 unsigned int nrCombJets_;
00039 bool matchToGenEvt_, calcTopMass_, useMCforBest_;
00040 bool eeChannel_, emuChannel_, mumuChannel_, etauChannel_, mutauChannel_, tautauChannel_;
00041 double tmassbegin_, tmassend_, tmassstep_;
00042 TtDilepLRSignalSelObservables * myLRSignalSelObservables;
00043 };
00044
00045 inline bool TtDilepEvtSolutionMaker::PTComp(const reco::Candidate* l1, const reco::Candidate* l2) const
00046 {
00047 return (l1->pt() > l2->pt());
00048 }
00049
00050 inline bool TtDilepEvtSolutionMaker::LepDiffCharge(const reco::Candidate* l1, const reco::Candidate* l2) const
00051 {
00052 return (l1->charge() != l2->charge());
00053 }
00054
00055 inline bool TtDilepEvtSolutionMaker::HasPositiveCharge(const reco::Candidate* l) const
00056 {
00057 return (l->charge() > 0);
00058 }
00059