CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
TtFullHadHypothesis Class Referenceabstract

#include <TtFullHadHypothesis.h>

Inheritance diagram for TtFullHadHypothesis:
edm::stream::EDProducer<> TtFullHadHypGenMatch TtFullHadHypKinFit

Public Member Functions

 TtFullHadHypothesis (const edm::ParameterSet &cfg)
 default constructor More...
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Protected Member Functions

virtual void buildHypo (edm::Event &event, const edm::Handle< std::vector< pat::Jet > > &jets, std::vector< int > &jetPartonAssociation, const unsigned int iComb)=0
 build event hypothesis from the reco objects of a full-hadronic event More...
 
virtual void buildKey ()=0
 build the event hypothesis key More...
 
reco::CompositeCandidate hypo ()
 return event hypothesis More...
 
bool isValid (const int &idx, const edm::Handle< std::vector< pat::Jet > > &jets)
 check if index is in valid range of selected jets More...
 
std::string jetCorrectionLevel (const std::string &quarkType)
 helper function to construct the proper correction level string for corresponding quarkType More...
 
int key () const
 return key More...
 
template<typename C >
std::unique_ptr
< reco::ShallowClonePtrCandidate
makeCandidate (const edm::Handle< C > &handle, const int &idx)
 use one object in a collection to set a ShallowClonePtrCandidate More...
 
std::unique_ptr
< reco::ShallowClonePtrCandidate
makeCandidate (const edm::Handle< std::vector< pat::Jet > > &handle, const int &idx, const std::string &correctionLevel)
 use one object in a jet collection to set a ShallowClonePtrCandidate with proper jet corrections More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 produce the event hypothesis as CompositeCandidate and Key More...
 
void resetCandidates ()
 reset candidate pointers before hypo build process More...
 

Protected Attributes

std::unique_ptr
< reco::ShallowClonePtrCandidate
b_
 
std::unique_ptr
< reco::ShallowClonePtrCandidate
bBar_
 
bool getMatch_
 
std::string jetCorrectionLevel_
 
edm::EDGetTokenT< std::vector
< pat::Jet > > 
jetsToken_
 input label for all necessary collections More...
 
int key_
 hypothesis key (to be set by the buildKey function) More...
 
std::unique_ptr
< reco::ShallowClonePtrCandidate
lightP_
 
std::unique_ptr
< reco::ShallowClonePtrCandidate
lightPBar_
 
std::unique_ptr
< reco::ShallowClonePtrCandidate
lightQ_
 
std::unique_ptr
< reco::ShallowClonePtrCandidate
lightQBar_
 
edm::EDGetTokenT< std::vector
< std::vector< int > > > 
matchToken_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Definition at line 29 of file TtFullHadHypothesis.h.

Constructor & Destructor Documentation

TtFullHadHypothesis::TtFullHadHypothesis ( const edm::ParameterSet cfg)
explicit

default constructor

Definition at line 5 of file TtFullHadHypothesis.cc.

References edm::ParameterSet::exists(), getMatch_, edm::ParameterSet::getParameter(), jetCorrectionLevel_, matchToken_, and AlCaHLTBitMon_QueryRunRegistry::string.

6  : jetsToken_(consumes<std::vector<pat::Jet> >(cfg.getParameter<edm::InputTag>("jets"))) {
7  getMatch_ = false;
8  if (cfg.exists("match")) {
9  getMatch_ = true;
10  matchToken_ = consumes<std::vector<std::vector<int> > >(cfg.getParameter<edm::InputTag>("match"));
11  }
12  if (cfg.exists("jetCorrectionLevel")) {
13  jetCorrectionLevel_ = cfg.getParameter<std::string>("jetCorrectionLevel");
14  }
15  produces<std::vector<std::pair<reco::CompositeCandidate, std::vector<int> > > >();
16  produces<int>("Key");
17 }
bool exists(std::string const &parameterName) const
checks if a parameter exists
edm::EDGetTokenT< std::vector< std::vector< int > > > matchToken_
std::string jetCorrectionLevel_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< std::vector< pat::Jet > > jetsToken_
input label for all necessary collections

Member Function Documentation

virtual void TtFullHadHypothesis::buildHypo ( edm::Event event,
const edm::Handle< std::vector< pat::Jet > > &  jets,
std::vector< int > &  jetPartonAssociation,
const unsigned int  iComb 
)
protectedpure virtual

build event hypothesis from the reco objects of a full-hadronic event

Implemented in TtFullHadHypGenMatch, and TtFullHadHypKinFit.

Referenced by produce().

virtual void TtFullHadHypothesis::buildKey ( )
protectedpure virtual

build the event hypothesis key

Implemented in TtFullHadHypGenMatch, and TtFullHadHypKinFit.

Referenced by produce().

reco::CompositeCandidate TtFullHadHypothesis::hypo ( )
protected

return event hypothesis

Definition at line 71 of file TtFullHadHypothesis.cc.

References reco::CompositeCandidate::addDaughter(), TtFullHadDaughter::B, b_, TtFullHadDaughter::BBar, bBar_, TtFullHadDaughter::LightP, lightP_, TtFullHadDaughter::LightPBar, lightPBar_, TtFullHadDaughter::LightQ, lightQ_, TtFullHadDaughter::LightQBar, lightQBar_, eostools::move(), AddFourMomenta::set(), TtFullHadDaughter::Top, TtFullHadDaughter::TopBar, w(), TtFullHadDaughter::WMinus, and TtFullHadDaughter::WPlus.

Referenced by produce().

71  {
72  // check for sanity of the hypothesis
73  if (!lightQ_ || !lightQBar_ || !b_ || !bBar_ || !lightP_ || !lightPBar_)
74  return reco::CompositeCandidate();
75 
76  // setup transient references
77  reco::CompositeCandidate hyp, top, w, topBar, wBar;
78 
79  AddFourMomenta addFourMomenta;
80  // build up the top bar branch
83  addFourMomenta.set(wBar);
86  addFourMomenta.set(topBar);
87 
88  // build up the top branch that decays hadronically
91  addFourMomenta.set(w);
94  addFourMomenta.set(top);
95 
96  // build ttbar hypotheses
99  addFourMomenta.set(hyp);
100 
101  return hyp;
102 }
static const std::string LightPBar
static const std::string LightQ
std::unique_ptr< reco::ShallowClonePtrCandidate > b_
static const std::string Top
std::unique_ptr< reco::ShallowClonePtrCandidate > lightP_
def move
Definition: eostools.py:511
static const std::string LightP
static const std::string WMinus
static const std::string B
std::unique_ptr< reco::ShallowClonePtrCandidate > bBar_
std::unique_ptr< reco::ShallowClonePtrCandidate > lightQ_
void addDaughter(const Candidate &, const std::string &s="")
add a clone of the passed candidate as daughter
static const std::string WPlus
std::unique_ptr< reco::ShallowClonePtrCandidate > lightPBar_
static const std::string BBar
static const std::string TopBar
void set(reco::Candidate &c) const
set up a candidate
static const std::string LightQBar
T w() const
std::unique_ptr< reco::ShallowClonePtrCandidate > lightQBar_
bool TtFullHadHypothesis::isValid ( const int &  idx,
const edm::Handle< std::vector< pat::Jet > > &  jets 
)
inlineprotected

check if index is in valid range of selected jets

Definition at line 54 of file TtFullHadHypothesis.h.

References fwrapper::jets.

Referenced by ntupleDataFormat._Object::_checkIsValid(), TtFullHadHypGenMatch::buildHypo(), and core.AutoHandle.AutoHandle::ReallyLoad().

54  {
55  return (0 <= idx && idx < (int)jets->size());
56  };
std::string TtFullHadHypothesis::jetCorrectionLevel ( const std::string &  quarkType)
protected

helper function to construct the proper correction level string for corresponding quarkType

helper function to construct the proper correction level string for corresponding quarkType, for unknown quarkTypes an empty string is returned

Definition at line 105 of file TtFullHadHypothesis.cc.

References jetCorrectionLevel_, testEve_cfg::level, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by TtFullHadHypGenMatch::buildHypo().

105  {
106  // jetCorrectionLevel was not configured
107  if (jetCorrectionLevel_.empty())
108  throw cms::Exception("Configuration")
109  << "Unconfigured jetCorrectionLevel. Please use an appropriate, non-empty string.\n";
110 
111  // quarkType is unknown
112  if (!(quarkType == "wQuarkMix" || quarkType == "udsQuark" || quarkType == "cQuark" || quarkType == "bQuark"))
113  throw cms::Exception("Configuration") << quarkType << " is unknown as a quarkType for the jetCorrectionLevel.\n";
114 
115  // combine correction level; start with a ':' even if
116  // there is no flavor tag to be added, as it is needed
117  // by makeCandidate to disentangle the correction tag
118  // from a potential flavor tag, which can be empty
120  if (level == "L5Flavor:" || level == "L6UE:" || level == "L7Parton:") {
121  if (quarkType == "wQuarkMix") {
122  level += "wMix";
123  }
124  if (quarkType == "udsQuark") {
125  level += "uds";
126  }
127  if (quarkType == "cQuark") {
128  level += "charm";
129  }
130  if (quarkType == "bQuark") {
131  level += "bottom";
132  }
133  } else {
134  level += "none";
135  }
136  return level;
137 }
std::string jetCorrectionLevel_
tuple level
Definition: testEve_cfg.py:47
int TtFullHadHypothesis::key ( ) const
inlineprotected

return key

Definition at line 50 of file TtFullHadHypothesis.h.

References key_.

Referenced by produce().

50 { return key_; };
int key_
hypothesis key (to be set by the buildKey function)
template<typename C >
std::unique_ptr< reco::ShallowClonePtrCandidate > TtFullHadHypothesis::makeCandidate ( const edm::Handle< C > &  handle,
const int &  idx 
)
protected

use one object in a collection to set a ShallowClonePtrCandidate

Definition at line 96 of file TtFullHadHypothesis.h.

References patZpeak::handle.

Referenced by TtFullHadHypGenMatch::buildHypo(), and TtFullHadHypKinFit::buildHypo().

97  {
98  typedef typename C::value_type O;
99  edm::Ptr<O> ptr = edm::Ptr<O>(handle, idx);
100  return std::make_unique<reco::ShallowClonePtrCandidate>(ptr, ptr->charge(), ptr->p4(), ptr->vertex());
101 }
tuple handle
Definition: patZpeak.py:25
std::unique_ptr< reco::ShallowClonePtrCandidate > TtFullHadHypothesis::makeCandidate ( const edm::Handle< std::vector< pat::Jet > > &  handle,
const int &  idx,
const std::string &  correctionLevel 
)
protected

use one object in a jet collection to set a ShallowClonePtrCandidate with proper jet corrections

Definition at line 140 of file TtFullHadHypothesis.cc.

References patZpeak::handle, and AlCaHLTBitMon_QueryRunRegistry::string.

141  {
143  // disentangle the correction from the potential flavor tag
144  // by the separating ':'; the flavor tag can be empty though
145  std::string step = correctionLevel.substr(0, correctionLevel.find(':'));
146  std::string flavor = correctionLevel.substr(1 + correctionLevel.find(':'));
147  float corrFactor = 1.;
148  if (flavor == "wMix")
149  corrFactor = 0.75 * ptr->jecFactor(step, "uds") + 0.25 * ptr->jecFactor(step, "charm");
150  else
151  corrFactor = ptr->jecFactor(step, flavor);
152  return std::make_unique<reco::ShallowClonePtrCandidate>(ptr, ptr->charge(), ptr->p4() * corrFactor, ptr->vertex());
153 }
tuple handle
Definition: patZpeak.py:25
step
Definition: StallMonitor.cc:98
void TtFullHadHypothesis::produce ( edm::Event evt,
const edm::EventSetup setup 
)
overrideprotected

produce the event hypothesis as CompositeCandidate and Key

Definition at line 20 of file TtFullHadHypothesis.cc.

References buildHypo(), buildKey(), edm::Event::getByToken(), getMatch_, hypo(), mps_fire::i, fwrapper::jets, jetsToken_, key(), match(), matchToken_, eostools::move(), edm::Event::put(), resetCandidates(), and trackerHitRTTI::vector.

20  {
22  evt.getByToken(jetsToken_, jets);
23 
24  std::vector<std::vector<int> > matchVec;
25  if (getMatch_) {
27  evt.getByToken(matchToken_, matchHandle);
28  matchVec = *matchHandle;
29  } else {
30  std::vector<int> dummyMatch;
31  for (unsigned int i = 0; i < 4; ++i)
32  dummyMatch.push_back(-1);
33  matchVec.push_back(dummyMatch);
34  }
35 
36  // declare unique_ptr for products
37  std::unique_ptr<std::vector<std::pair<reco::CompositeCandidate, std::vector<int> > > > pOut(
38  new std::vector<std::pair<reco::CompositeCandidate, std::vector<int> > >);
39  std::unique_ptr<int> pKey(new int);
40 
41  // go through given vector of jet combinations
42  unsigned int idMatch = 0;
43  typedef std::vector<std::vector<int> >::iterator MatchVecIterator;
44  for (MatchVecIterator match = matchVec.begin(); match != matchVec.end(); ++match) {
45  // reset pointers
47  // build hypothesis
48  buildHypo(evt, jets, *match, idMatch++);
49  pOut->push_back(std::make_pair(hypo(), *match));
50  }
51  // feed out hyps and matches
52  evt.put(std::move(pOut));
53 
54  // build and feed out key
55  buildKey();
56  *pKey = key();
57  evt.put(std::move(pKey), "Key");
58 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
int key() const
return key
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
vector< PseudoJet > jets
def move
Definition: eostools.py:511
virtual void buildHypo(edm::Event &event, const edm::Handle< std::vector< pat::Jet > > &jets, std::vector< int > &jetPartonAssociation, const unsigned int iComb)=0
build event hypothesis from the reco objects of a full-hadronic event
edm::EDGetTokenT< std::vector< std::vector< int > > > matchToken_
virtual void buildKey()=0
build the event hypothesis key
void resetCandidates()
reset candidate pointers before hypo build process
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
reco::CompositeCandidate hypo()
return event hypothesis
edm::EDGetTokenT< std::vector< pat::Jet > > jetsToken_
input label for all necessary collections
void TtFullHadHypothesis::resetCandidates ( )
protected

reset candidate pointers before hypo build process

Definition at line 61 of file TtFullHadHypothesis.cc.

References b_, bBar_, lightP_, lightPBar_, lightQ_, and lightQBar_.

Referenced by produce().

61  {
62  lightQ_.reset();
63  lightQBar_.reset();
64  b_.reset();
65  bBar_.reset();
66  lightP_.reset();
67  lightPBar_.reset();
68 }
std::unique_ptr< reco::ShallowClonePtrCandidate > b_
std::unique_ptr< reco::ShallowClonePtrCandidate > lightP_
std::unique_ptr< reco::ShallowClonePtrCandidate > bBar_
std::unique_ptr< reco::ShallowClonePtrCandidate > lightQ_
std::unique_ptr< reco::ShallowClonePtrCandidate > lightPBar_
std::unique_ptr< reco::ShallowClonePtrCandidate > lightQBar_

Member Data Documentation

std::unique_ptr<reco::ShallowClonePtrCandidate> TtFullHadHypothesis::b_
protected
std::unique_ptr<reco::ShallowClonePtrCandidate> TtFullHadHypothesis::bBar_
protected
bool TtFullHadHypothesis::getMatch_
protected

internal check whether the match information exists or not, if false a blind dummy match vector will be used internally

Definition at line 74 of file TtFullHadHypothesis.h.

Referenced by produce(), and TtFullHadHypothesis().

std::string TtFullHadHypothesis::jetCorrectionLevel_
protected

specify the desired jet correction level (the default should be L3Absolute-'abs')

Definition at line 80 of file TtFullHadHypothesis.h.

Referenced by jetCorrectionLevel(), and TtFullHadHypothesis().

edm::EDGetTokenT<std::vector<pat::Jet> > TtFullHadHypothesis::jetsToken_
protected

input label for all necessary collections

Definition at line 76 of file TtFullHadHypothesis.h.

Referenced by produce().

int TtFullHadHypothesis::key_
protected

hypothesis key (to be set by the buildKey function)

Definition at line 82 of file TtFullHadHypothesis.h.

Referenced by TtFullHadHypGenMatch::buildKey(), TtFullHadHypKinFit::buildKey(), and key().

std::unique_ptr<reco::ShallowClonePtrCandidate> TtFullHadHypothesis::lightP_
protected
std::unique_ptr<reco::ShallowClonePtrCandidate> TtFullHadHypothesis::lightPBar_
protected
std::unique_ptr<reco::ShallowClonePtrCandidate> TtFullHadHypothesis::lightQ_
protected

candidates for internal use for the creation of the hypothesis candidate

Definition at line 85 of file TtFullHadHypothesis.h.

Referenced by TtFullHadHypGenMatch::buildHypo(), TtFullHadHypKinFit::buildHypo(), hypo(), and resetCandidates().

std::unique_ptr<reco::ShallowClonePtrCandidate> TtFullHadHypothesis::lightQBar_
protected
edm::EDGetTokenT<std::vector<std::vector<int> > > TtFullHadHypothesis::matchToken_
protected

Definition at line 77 of file TtFullHadHypothesis.h.

Referenced by produce(), and TtFullHadHypothesis().