CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
TtEvtBuilder< C > Class Template Reference

Template class to fill the TtEvent structure. More...

#include "TopQuarkAnalysis/TopEventProducers/interface/TtEvtBuilder.h"

Inheritance diagram for TtEvtBuilder< C >:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 TtEvtBuilder (const edm::ParameterSet &)
 default constructor More...
 
 ~TtEvtBuilder ()
 default destructor More...
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Types

typedef std::vector
< edm::EDGetTokenT< int >
>::const_iterator 
EventHypoIntToken
 
typedef std::vector
< edm::EDGetTokenT
< std::vector
< TtEvent::HypoCombPair >
> >::const_iterator 
EventHypoToken
 

Private Member Functions

virtual void fillSpecific (C &, const edm::Event &)
 fill data members that are decay-channel specific More...
 
template<>
void fillSpecific (TtFullHadronicEvent &ttEvent, const edm::Event &evt)
 
template<>
void fillSpecific (TtFullLeptonicEvent &ttEvent, const edm::Event &evt)
 
template<>
void fillSpecific (TtSemiLeptonicEvent &ttEvent, const edm::Event &evt)
 
virtual void produce (edm::Event &, const edm::EventSetup &)
 

Private Attributes

int decayChnTop1_
 
int decayChnTop2_
 
edm::EDGetTokenT< std::vector
< double > > 
discToken_
 
edm::EDGetTokenT< std::vector
< double > > 
fitChi2Token_
 
edm::EDGetTokenT< std::vector
< double > > 
fitProbToken_
 
edm::InputTag genEvt_
 TtGenEvent. More...
 
edm::EDGetTokenT< TtGenEventgenEvtToken_
 
edm::ParameterSet genMatch_
 
edm::ParameterSet hitFit_
 
edm::EDGetTokenT< std::vector
< double > > 
hitFitChi2Token_
 
edm::EDGetTokenT< std::vector
< double > > 
hitFitMTToken_
 
edm::EDGetTokenT< std::vector
< double > > 
hitFitProbToken_
 
edm::EDGetTokenT< std::vector
< double > > 
hitFitSigMTToken_
 
std::vector< edm::EDGetTokenT
< int > > 
hypJetTokens_
 
std::vector< edm::EDGetTokenT
< int > > 
hypKeyTokens_
 vector of hypothesis class names More...
 
std::vector< edm::EDGetTokenT
< int > > 
hypNeutrTokens_
 
std::vector< edm::EDGetTokenT
< std::vector
< TtEvent::HypoCombPair > > > 
hypTokens_
 
edm::ParameterSet kinFit_
 
edm::ParameterSet kinSolution_
 
edm::EDGetTokenT< std::string > methToken_
 
edm::ParameterSet mvaDisc_
 
edm::EDGetTokenT< std::vector
< double > > 
solWeightToken_
 
edm::EDGetTokenT< std::vector
< double > > 
sumDRToken_
 
edm::EDGetTokenT< std::vector
< double > > 
sumPtToken_
 
int verbosity_
 vebosity level More...
 
edm::EDGetTokenT< bool > wrongChargeToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

template<typename C>
class TtEvtBuilder< C >

Template class to fill the TtEvent structure.

Template class to fill the TtEvent structure for:

TtSemiLeptonicEvent TtFullLeptonicEvent TtFullHadronicEvent

event hypothesis, genEvent and extra information (if available) are read from the event and contracted into the TtEvent

Definition at line 30 of file TtEvtBuilder.h.

Member Typedef Documentation

template<typename C >
typedef std::vector<edm::EDGetTokenT<int> >::const_iterator TtEvtBuilder< C >::EventHypoIntToken
private

Definition at line 56 of file TtEvtBuilder.h.

template<typename C >
typedef std::vector<edm::EDGetTokenT<std::vector<TtEvent::HypoCombPair> > >::const_iterator TtEvtBuilder< C >::EventHypoToken
private

Definition at line 57 of file TtEvtBuilder.h.

Constructor & Destructor Documentation

template<typename C >
TtEvtBuilder< C >::TtEvtBuilder ( const edm::ParameterSet cfg)
explicit

default constructor

Definition at line 96 of file TtEvtBuilder.h.

References GlobalPosition_Frontier_DevDB_cff::tag.

96  :
97  verbosity_ (cfg.getParameter<int> ("verbosity" )),
98  hypKeyTokens_ (edm::vector_transform(cfg.getParameter<std::vector<edm::InputTag> >("hypotheses" ), [this](edm::InputTag const & tag){return consumes<int>(edm::InputTag(tag.label(), "Key"));})),
T getParameter(std::string const &) const
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
Definition: transform.h:11
std::vector< edm::EDGetTokenT< int > > hypKeyTokens_
vector of hypothesis class names
Definition: TtEvtBuilder.h:52
int verbosity_
vebosity level
Definition: TtEvtBuilder.h:50
std::string const & label() const
Definition: InputTag.h:42
template<typename C >
TtEvtBuilder< C >::~TtEvtBuilder ( )
inline

default destructor

Definition at line 37 of file TtEvtBuilder.h.

37 {};

Member Function Documentation

template<typename C >
virtual void TtEvtBuilder< C >::fillSpecific ( C &  ,
const edm::Event  
)
privatevirtual

fill data members that are decay-channel specific

template<>
void TtEvtBuilder< TtFullHadronicEvent >::fillSpecific ( TtFullHadronicEvent ttEvent,
const edm::Event evt 
)
private

Definition at line 244 of file TtEvtBuilder.h.

245 {
246 }
template<>
void TtEvtBuilder< TtFullLeptonicEvent >::fillSpecific ( TtFullLeptonicEvent ttEvent,
const edm::Event evt 
)
private

Definition at line 249 of file TtEvtBuilder.h.

References edm::Event::getByToken(), TtEvent::isHypoAvailable(), TtEvent::kKinSolution, TtFullLeptonicEvent::setSolWeight(), and TtFullLeptonicEvent::setWrongCharge().

250 {
251 
252  // set kKinSolution extras
253  if( ttEvent.isHypoAvailable(TtEvent::kKinSolution) ) {
255  evt.getByToken(solWeightToken_, solWeight);
256  ttEvent.setSolWeight( *solWeight );
257 
258  edm::Handle<bool> wrongCharge;
259  evt.getByToken(wrongChargeToken_, wrongCharge);
260  ttEvent.setWrongCharge( *wrongCharge );
261  }
262 
263 }
edm::EDGetTokenT< std::vector< double > > solWeightToken_
Definition: TtEvtBuilder.h:81
void setWrongCharge(const bool &val)
set right or wrong charge combination of kKinSolution hypothesis
bool isHypoAvailable(const std::string &key, const unsigned &cmb=0) const
Definition: TtEvent.h:60
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
edm::EDGetTokenT< bool > wrongChargeToken_
Definition: TtEvtBuilder.h:82
void setSolWeight(const std::vector< double > &val)
set weight of kKinSolution hypothesis
template<>
void TtEvtBuilder< TtSemiLeptonicEvent >::fillSpecific ( TtSemiLeptonicEvent ttEvent,
const edm::Event evt 
)
private

Definition at line 266 of file TtEvtBuilder.h.

References edm::Event::getByToken(), hypJetTokens_(), hypNeutrTokens_(), combine::key, TtEvent::setNumberOfConsideredJets(), and TtSemiLeptonicEvent::setNumberOfRealNeutrinoSolutions().

267 {
268 
269  EventHypoIntToken hKey = hypKeyTokens_.begin();
270  EventHypoIntToken hNeutr = hypNeutrTokens_.begin();
271  EventHypoIntToken hJet = hypJetTokens_.begin();
272  for( ; hKey != hypKeyTokens_.end(); ++hKey, ++hNeutr, ++hJet){
274  evt.getByToken(*hKey, key);
275 
276  // set number of real neutrino solutions for all hypotheses
277  edm::Handle<int> numberOfRealNeutrinoSolutions;
278  evt.getByToken(*hNeutr, numberOfRealNeutrinoSolutions);
279  ttEvent.setNumberOfRealNeutrinoSolutions((TtEvent::HypoClassKey&)*key, *numberOfRealNeutrinoSolutions);
280 
281  // set number of considered jets for all hypotheses
282  edm::Handle<int> numberOfConsideredJets;
283  evt.getByToken(*hJet, numberOfConsideredJets);
284  ttEvent.setNumberOfConsideredJets((TtEvent::HypoClassKey&)*key, *numberOfConsideredJets);
285  }
286 
287 }
HypoClassKey
supported classes of event hypotheses
Definition: TtEvent.h:31
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
void setNumberOfRealNeutrinoSolutions(const HypoClassKey &key, const int &nr)
set number of real neutrino solutions for a given hypo class
std::vector< edm::EDGetTokenT< int > >::const_iterator EventHypoIntToken
Definition: TtEvtBuilder.h:56
std::vector< edm::EDGetTokenT< int > > hypNeutrTokens_
Definition: TtEvtBuilder.h:54
std::vector< edm::EDGetTokenT< int > > hypKeyTokens_
vector of hypothesis class names
Definition: TtEvtBuilder.h:52
std::vector< edm::EDGetTokenT< int > > hypJetTokens_
Definition: TtEvtBuilder.h:55
void setNumberOfConsideredJets(const HypoClassKey &key, const unsigned int nJets)
set number of jets considered when building a given hypothesis
Definition: TtEvent.h:123
list key
Definition: combine.py:13
template<typename C >
void TtEvtBuilder< C >::produce ( edm::Event evt,
const edm::EventSetup setup 
)
privatevirtual

produce function (this one is not even accessible for derived classes)

Implements edm::EDProducer.

Definition at line 149 of file TtEvtBuilder.h.

References funct::C, decayChnTop1_(), fitChi2(), TtGenEvtProducer_cfi::genEvt, genEvt_(), genEvtToken_(), edm::Event::getByToken(), h, hypTokens_(), combine::key, TtEvent::kGenMatch, TtEvent::kHitFit, TtEvent::kKinFit, TtEvent::kMVADisc, and edm::Event::put().

150 {
151  C ttEvent;
152 
153  // set leptonic decay channels
155 
156  // set genEvent (if available)
158  if ( genEvt_.label().size() > 0 )
159  if( evt.getByToken(genEvtToken_, genEvt) )
160  ttEvent.setGenEvent(genEvt);
161 
162  // add event hypotheses for all given
163  // hypothesis classes to the TtEvent
164  EventHypoIntToken hKey = hypKeyTokens_.begin();
165  EventHypoToken h = hypTokens_.begin();
166  for( ; hKey != hypKeyTokens_.end(); ++hKey, ++h){
168  evt.getByToken(*hKey, key);
169 
171  evt.getByToken(*h, hypMatchVec);
172 
173  typedef std::vector<TtEvent::HypoCombPair>::const_iterator HypMatch;
174  for(HypMatch hm=hypMatchVec->begin(); hm != hypMatchVec->end(); ++hm){
175  ttEvent.addEventHypo((TtEvent::HypoClassKey&)*key, *hm);
176  }
177  }
178 
179  // set kKinFit extras
180  if( ttEvent.isHypoAvailable(TtEvent::kKinFit) ) {
182  evt.getByToken(fitChi2Token_, fitChi2);
183  ttEvent.setFitChi2( *fitChi2 );
184 
186  evt.getByToken(fitProbToken_, fitProb);
187  ttEvent.setFitProb( *fitProb );
188  }
189 
190  // set kHitFit extras
191  if( ttEvent.isHypoAvailable(TtEvent::kHitFit) ) {
192  edm::Handle<std::vector<double> > hitFitChi2;
193  evt.getByToken(hitFitChi2Token_, hitFitChi2);
194  ttEvent.setHitFitChi2( *hitFitChi2 );
195 
196  edm::Handle<std::vector<double> > hitFitProb;
197  evt.getByToken(hitFitProbToken_, hitFitProb);
198  ttEvent.setHitFitProb( *hitFitProb );
199 
201  evt.getByToken(hitFitMTToken_, hitFitMT);
202  ttEvent.setHitFitMT( *hitFitMT );
203 
204  edm::Handle<std::vector<double> > hitFitSigMT;
205  evt.getByToken(hitFitSigMTToken_, hitFitSigMT);
206  ttEvent.setHitFitSigMT( *hitFitSigMT );
207  }
208 
209  // set kGenMatch extras
210  if( ttEvent.isHypoAvailable(TtEvent::kGenMatch) ) {
212  evt.getByToken(sumPtToken_, sumPt);
213  ttEvent.setGenMatchSumPt( *sumPt );
214 
216  evt.getByToken(sumDRToken_, sumDR);
217  ttEvent.setGenMatchSumDR( *sumDR );
218  }
219 
220  // set kMvaDisc extras
221  if( ttEvent.isHypoAvailable(TtEvent::kMVADisc) ) {
223  evt.getByToken(methToken_, meth);
224  ttEvent.setMvaMethod( *meth );
225 
227  evt.getByToken(discToken_, disc);
228  ttEvent.setMvaDiscriminators( *disc );
229  }
230 
231  // fill data members that are decay-channel specific
232  fillSpecific(ttEvent, evt);
233 
234  // print summary via MessageLogger if verbosity_>0
235  ttEvent.print(verbosity_);
236 
237  // write object into the edm::Event
238  std::auto_ptr<C> pOut(new C);
239  *pOut=ttEvent;
240  evt.put(pOut);
241 }
HypoClassKey
supported classes of event hypotheses
Definition: TtEvent.h:31
edm::EDGetTokenT< std::vector< double > > hitFitMTToken_
Definition: TtEvtBuilder.h:76
edm::EDGetTokenT< std::string > methToken_
Definition: TtEvtBuilder.h:91
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
edm::InputTag genEvt_
TtGenEvent.
Definition: TtEvtBuilder.h:59
std::vector< edm::EDGetTokenT< std::vector< TtEvent::HypoCombPair > > > hypTokens_
Definition: TtEvtBuilder.h:53
std::vector< edm::EDGetTokenT< int > >::const_iterator EventHypoIntToken
Definition: TtEvtBuilder.h:56
static double fitChi2(const CachingVertex< 5 > &vtx)
edm::EDGetTokenT< std::vector< double > > sumDRToken_
Definition: TtEvtBuilder.h:87
std::vector< edm::EDGetTokenT< int > > hypKeyTokens_
vector of hypothesis class names
Definition: TtEvtBuilder.h:52
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
virtual void fillSpecific(C &, const edm::Event &)
fill data members that are decay-channel specific
edm::EDGetTokenT< std::vector< double > > discToken_
Definition: TtEvtBuilder.h:92
int verbosity_
vebosity level
Definition: TtEvtBuilder.h:50
edm::EDGetTokenT< std::vector< double > > hitFitSigMTToken_
Definition: TtEvtBuilder.h:77
edm::EDGetTokenT< std::vector< double > > fitChi2Token_
Definition: TtEvtBuilder.h:69
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
edm::EDGetTokenT< std::vector< double > > hitFitChi2Token_
Definition: TtEvtBuilder.h:74
std::vector< edm::EDGetTokenT< std::vector< TtEvent::HypoCombPair > > >::const_iterator EventHypoToken
Definition: TtEvtBuilder.h:57
edm::EDGetTokenT< std::vector< double > > fitProbToken_
Definition: TtEvtBuilder.h:70
std::string const & label() const
Definition: InputTag.h:42
list key
Definition: combine.py:13
edm::EDGetTokenT< std::vector< double > > sumPtToken_
Definition: TtEvtBuilder.h:86
edm::EDGetTokenT< TtGenEvent > genEvtToken_
Definition: TtEvtBuilder.h:60
edm::EDGetTokenT< std::vector< double > > hitFitProbToken_
Definition: TtEvtBuilder.h:75

Member Data Documentation

template<typename C >
int TtEvtBuilder< C >::decayChnTop1_
private

decay channels of the two top decay branches; to be filled according to WDecay::LeptonTypes in TtGenEvent

Definition at line 63 of file TtEvtBuilder.h.

template<typename C >
int TtEvtBuilder< C >::decayChnTop2_
private

Definition at line 64 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::discToken_
private

Definition at line 92 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::fitChi2Token_
private

Definition at line 69 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::fitProbToken_
private

Definition at line 70 of file TtEvtBuilder.h.

template<typename C >
edm::InputTag TtEvtBuilder< C >::genEvt_
private

TtGenEvent.

Definition at line 59 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<TtGenEvent> TtEvtBuilder< C >::genEvtToken_
private

Definition at line 60 of file TtEvtBuilder.h.

template<typename C >
edm::ParameterSet TtEvtBuilder< C >::genMatch_
private

input parameters for the kGenMatch hypothesis class extras

Definition at line 85 of file TtEvtBuilder.h.

template<typename C >
edm::ParameterSet TtEvtBuilder< C >::hitFit_
private

input parameters for the kHitFit hypothesis class extras

Definition at line 73 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::hitFitChi2Token_
private

Definition at line 74 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::hitFitMTToken_
private

Definition at line 76 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::hitFitProbToken_
private

Definition at line 75 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::hitFitSigMTToken_
private

Definition at line 77 of file TtEvtBuilder.h.

template<typename C >
std::vector<edm::EDGetTokenT<int> > TtEvtBuilder< C >::hypJetTokens_
private

Definition at line 55 of file TtEvtBuilder.h.

template<typename C >
std::vector<edm::EDGetTokenT<int> > TtEvtBuilder< C >::hypKeyTokens_
private

vector of hypothesis class names

Definition at line 52 of file TtEvtBuilder.h.

template<typename C >
std::vector<edm::EDGetTokenT<int> > TtEvtBuilder< C >::hypNeutrTokens_
private

Definition at line 54 of file TtEvtBuilder.h.

template<typename C >
std::vector<edm::EDGetTokenT<std::vector<TtEvent::HypoCombPair> > > TtEvtBuilder< C >::hypTokens_
private

Definition at line 53 of file TtEvtBuilder.h.

template<typename C >
edm::ParameterSet TtEvtBuilder< C >::kinFit_
private

input parameters for the kKinFit hypothesis class extras

Definition at line 68 of file TtEvtBuilder.h.

template<typename C >
edm::ParameterSet TtEvtBuilder< C >::kinSolution_
private

input parameters for the kKinSolution hypothesis class extras

Definition at line 80 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::string> TtEvtBuilder< C >::methToken_
private

Definition at line 91 of file TtEvtBuilder.h.

template<typename C >
edm::ParameterSet TtEvtBuilder< C >::mvaDisc_
private

input parameters for the kMVADisc hypothesis class extras

Definition at line 90 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::solWeightToken_
private

Definition at line 81 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::sumDRToken_
private

Definition at line 87 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<std::vector<double> > TtEvtBuilder< C >::sumPtToken_
private

Definition at line 86 of file TtEvtBuilder.h.

template<typename C >
int TtEvtBuilder< C >::verbosity_
private

vebosity level

Definition at line 50 of file TtEvtBuilder.h.

template<typename C >
edm::EDGetTokenT<bool> TtEvtBuilder< C >::wrongChargeToken_
private

Definition at line 82 of file TtEvtBuilder.h.