1 #ifndef TtSemiLepHypothesis_h
2 #define TtSemiLepHypothesis_h
61 std::vector<int>& jetPartonAssociation);
67 return (0 <= idx && idx < (
int)
jets->size());
82 const edm::Handle<std::vector<pat::MET> >& neutrino,
84 std::vector<int>& jetPartonAssociation,
85 const unsigned int iComb) = 0;
109 std::unique_ptr<reco::ShallowClonePtrCandidate>
lightQ_;
113 std::unique_ptr<reco::ShallowClonePtrCandidate>
neutrino_;
114 std::unique_ptr<reco::ShallowClonePtrCandidate>
lepton_;
119 template <
typename C>
124 return std::make_unique<reco::ShallowClonePtrCandidate>(ptr, ptr->charge(), ptr->p4(), ptr->vertex());
std::string jetCorrectionLevel_
edm::EDGetTokenT< int > nJetsConsideredToken_
WDecay::LeptonType leptonType(const reco::RecoCandidate *cand)
determine lepton type of reco candidate and return a corresponding WDecay::LeptonType; the type is kN...
bool isValid(const int &idx, const edm::Handle< std::vector< pat::Jet > > &jets)
check if index is in valid range of selected jets
void buildHypo(const edm::Handle< edm::View< reco::RecoCandidate > > &leps, const edm::Handle< std::vector< pat::MET > > &mets, const edm::Handle< std::vector< pat::Jet > > &jets, std::vector< int > &jetPartonAssociation)
minimalistic build function for simple hypotheses
std::unique_ptr< reco::ShallowClonePtrCandidate > leptonicB_
TtSemiLepHypothesis(const edm::ParameterSet &)
default constructor
std::unique_ptr< reco::ShallowClonePtrCandidate > lepton_
Container::value_type value_type
void resetCandidates()
reset candidate pointers before hypo build process
std::unique_ptr< reco::ShallowClonePtrCandidate > makeCandidate(const edm::Handle< C > &handle, const int &idx)
use one object in a collection to set a ShallowClonePtrCandidate
virtual void buildKey()=0
build the event hypothesis key
edm::EDGetTokenT< std::vector< pat::Jet > > jetsToken_
input label for all necessary collections
int numberOfRealNeutrinoSolutions_
std::unique_ptr< reco::ShallowClonePtrCandidate > lightQBar_
void setNeutrino(const edm::Handle< std::vector< pat::MET > > &met, const edm::Handle< edm::View< reco::RecoCandidate > > &leps, const int &idx, const int &type)
set neutrino, using mW = 80.4 to calculate the neutrino pz
reco::CompositeCandidate hypo()
return event hypothesis
std::unique_ptr< reco::ShallowClonePtrCandidate > neutrino_
std::unique_ptr< reco::ShallowClonePtrCandidate > lightQ_
edm::EDGetTokenT< edm::View< reco::RecoCandidate > > lepsToken_
edm::EDGetTokenT< std::vector< std::vector< int > > > matchToken_
int neutrinoSolutionType_
algorithm used to calculate neutrino solutions (see cfi for further details)
void produce(edm::Event &, const edm::EventSetup &) override
produce the event hypothesis as CompositeCandidate and Key
std::unique_ptr< reco::ShallowClonePtrCandidate > hadronicB_
edm::EDGetTokenT< std::vector< pat::MET > > metsToken_
std::string jetCorrectionLevel(const std::string &quarkType)
helper function to construct the proper correction level string for corresponding quarkType ...
int key_
hypothesis key (to be set by the buildKey function)