CMS 3D CMS Logo

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 () override
 default destructor More...
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

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)
 
void produce (edm::Event &, const edm::EventSetup &) override
 

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
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- 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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ESProduct , Transition Tr = Transition::Event>
auto esConsumes (eventsetup::EventSetupRecordKey const &, ESInputTag const &tag)
 
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 33 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 59 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 60 of file TtEvtBuilder.h.

Constructor & Destructor Documentation

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

default constructor

Definition at line 99 of file TtEvtBuilder.h.

References looper::cfg, TtEvtBuilder< C >::decayChnTop1_, TtEvtBuilder< C >::decayChnTop2_, TtEvtBuilder< C >::discToken_, TtEvtBuilder< C >::fitChi2Token_, TtEvtBuilder< C >::fitProbToken_, TtEvtBuilder< C >::genEvt_, TtEvtBuilder< C >::genEvtToken_, TtEvtBuilder< C >::genMatch_, edm::ParameterSet::getParameter(), TtEvtBuilder< C >::hitFit_, TtEvtBuilder< C >::hitFitChi2Token_, TtEvtBuilder< C >::hitFitMTToken_, TtEvtBuilder< C >::hitFitProbToken_, TtEvtBuilder< C >::hitFitSigMTToken_, TtEvtBuilder< C >::hypJetTokens_, TtEvtBuilder< C >::hypNeutrTokens_, TtEvtBuilder< C >::hypTokens_, TtEvtBuilder< C >::kinFit_, TtEvtBuilder< C >::kinSolution_, TtEvtBuilder< C >::methToken_, TtEvtBuilder< C >::mvaDisc_, TtEvtBuilder< C >::solWeightToken_, TtEvtBuilder< C >::sumDRToken_, TtEvtBuilder< C >::sumPtToken_, GlobalPosition_Frontier_DevDB_cff::tag, edm::vector_transform(), and TtEvtBuilder< C >::wrongChargeToken_.

99  :
100  verbosity_ (cfg.getParameter<int> ("verbosity" )),
101  hypKeyTokens_ (edm::vector_transform(cfg.getParameter<std::vector<edm::InputTag> >("hypotheses" ), [this](edm::InputTag const & tag){return consumes<int>(edm::InputTag(tag.label(), "Key"));})),
102  hypTokens_ (edm::vector_transform(cfg.getParameter<std::vector<edm::InputTag> >("hypotheses" ), [this](edm::InputTag const & tag){return consumes<std::vector<TtEvent::HypoCombPair> >(tag);})),
103  hypNeutrTokens_ (edm::vector_transform(cfg.getParameter<std::vector<edm::InputTag> >("hypotheses" ), [this](edm::InputTag const & tag){return consumes<int>(edm::InputTag(tag.label(), "NumberOfRealNeutrinoSolutions"));})),
104  hypJetTokens_ (edm::vector_transform(cfg.getParameter<std::vector<edm::InputTag> >("hypotheses" ), [this](edm::InputTag const & tag){return consumes<int>(edm::InputTag(tag.label(), "NumberOfConsideredJets"));})),
105  genEvt_ (cfg.getParameter<edm::InputTag> ("genEvent" )),
106  genEvtToken_ (mayConsume<TtGenEvent>(genEvt_)),
107  decayChnTop1_(cfg.getParameter<int> ("decayChannel1")),
108  decayChnTop2_(cfg.getParameter<int> ("decayChannel2"))
109 {
110  // parameter subsets for kKinFit
111  if( cfg.exists("kinFit") ) {
112  kinFit_ = cfg.getParameter<edm::ParameterSet>("kinFit");
113  fitChi2Token_ = mayConsume<std::vector<double> >(kinFit_.getParameter<edm::InputTag>("chi2"));
114  fitProbToken_ = mayConsume<std::vector<double> >(kinFit_.getParameter<edm::InputTag>("prob"));
115  }
116  // parameter subsets for kHitFit
117  if( cfg.exists("hitFit") ) {
118  hitFit_ = cfg.getParameter<edm::ParameterSet>("hitFit");
119  hitFitChi2Token_ = mayConsume<std::vector<double> >(hitFit_.getParameter<edm::InputTag>("chi2"));
120  hitFitProbToken_ = mayConsume<std::vector<double> >(hitFit_.getParameter<edm::InputTag>("prob"));
121  hitFitMTToken_ = mayConsume<std::vector<double> >(hitFit_.getParameter<edm::InputTag>("mt"));
122  hitFitSigMTToken_ = mayConsume<std::vector<double> >(hitFit_.getParameter<edm::InputTag>("sigmt"));
123  }
124  // parameter subsets for kKinSolution
125  if( cfg.exists("kinSolution") ) {
126  kinSolution_ = cfg.getParameter<edm::ParameterSet>("kinSolution");
127  solWeightToken_ = mayConsume<std::vector<double> >(kinSolution_.getParameter<edm::InputTag>("solWeight"));
128  wrongChargeToken_ = mayConsume<bool>(kinSolution_.getParameter<edm::InputTag>("wrongCharge"));
129  }
130  // parameter subsets for kGenMatch
131  if( cfg.exists("genMatch") ) {
132  genMatch_ = cfg.getParameter<edm::ParameterSet>("genMatch");
133  sumPtToken_ = mayConsume<std::vector<double> >(genMatch_.getParameter<edm::InputTag>("sumPt"));
134  sumDRToken_ = mayConsume<std::vector<double> >(genMatch_.getParameter<edm::InputTag>("sumDR"));
135  }
136  // parameter subsets for kMvaDisc
137  if( cfg.exists("mvaDisc") ) {
138  mvaDisc_ = cfg.getParameter<edm::ParameterSet>("mvaDisc");
139  methToken_ = mayConsume<std::string>(mvaDisc_.getParameter<edm::InputTag>("meth"));
140  discToken_ = mayConsume<std::vector<double> >(mvaDisc_.getParameter<edm::InputTag>("disc"));
141  }
142  // produces a TtEventEvent for:
143  // * TtSemiLeptonicEvent
144  // * TtFullLeptonicEvent
145  // * TtFullHadronicEvent
146  // from hypotheses and associated extra information
147  produces<C>();
148 }
edm::EDGetTokenT< std::vector< double > > solWeightToken_
Definition: TtEvtBuilder.h:84
T getParameter(std::string const &) const
edm::EDGetTokenT< std::vector< double > > hitFitMTToken_
Definition: TtEvtBuilder.h:79
edm::EDGetTokenT< std::string > methToken_
Definition: TtEvtBuilder.h:94
edm::InputTag genEvt_
TtGenEvent.
Definition: TtEvtBuilder.h:62
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::vector< edm::EDGetTokenT< std::vector< TtEvent::HypoCombPair > > > hypTokens_
Definition: TtEvtBuilder.h:56
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
edm::ParameterSet genMatch_
Definition: TtEvtBuilder.h:88
std::vector< edm::EDGetTokenT< int > > hypNeutrTokens_
Definition: TtEvtBuilder.h:57
edm::EDGetTokenT< std::vector< double > > sumDRToken_
Definition: TtEvtBuilder.h:90
std::vector< edm::EDGetTokenT< int > > hypKeyTokens_
vector of hypothesis class names
Definition: TtEvtBuilder.h:55
edm::EDGetTokenT< std::vector< double > > discToken_
Definition: TtEvtBuilder.h:95
std::vector< edm::EDGetTokenT< int > > hypJetTokens_
Definition: TtEvtBuilder.h:58
int verbosity_
vebosity level
Definition: TtEvtBuilder.h:53
edm::EDGetTokenT< std::vector< double > > hitFitSigMTToken_
Definition: TtEvtBuilder.h:80
edm::ParameterSet mvaDisc_
Definition: TtEvtBuilder.h:93
edm::EDGetTokenT< bool > wrongChargeToken_
Definition: TtEvtBuilder.h:85
edm::EDGetTokenT< std::vector< double > > fitChi2Token_
Definition: TtEvtBuilder.h:72
edm::ParameterSet kinFit_
Definition: TtEvtBuilder.h:71
edm::ParameterSet kinSolution_
Definition: TtEvtBuilder.h:83
edm::EDGetTokenT< std::vector< double > > hitFitChi2Token_
Definition: TtEvtBuilder.h:77
edm::ParameterSet hitFit_
Definition: TtEvtBuilder.h:76
edm::EDGetTokenT< std::vector< double > > fitProbToken_
Definition: TtEvtBuilder.h:73
edm::EDGetTokenT< std::vector< double > > sumPtToken_
Definition: TtEvtBuilder.h:89
edm::EDGetTokenT< TtGenEvent > genEvtToken_
Definition: TtEvtBuilder.h:63
edm::EDGetTokenT< std::vector< double > > hitFitProbToken_
Definition: TtEvtBuilder.h:78
template<typename C >
TtEvtBuilder< C >::~TtEvtBuilder ( )
inlineoverride

default destructor

Definition at line 40 of file TtEvtBuilder.h.

References patCaloMETCorrections_cff::C, TtEvtBuilder< C >::fillSpecific(), and TtEvtBuilder< C >::produce().

40 {};

Member Function Documentation

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

fill data members that are decay-channel specific

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::~TtEvtBuilder().

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

Definition at line 247 of file TtEvtBuilder.h.

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

Definition at line 252 of file TtEvtBuilder.h.

References edm::Event::getByToken(), TtEvent::isHypoAvailable(), TtEvent::kKinSolution, TtFullLeptonicEvent::setSolWeight(), TtFullLeptonicEvent::setWrongCharge(), TtFullLepEvtBuilder_cfi::solWeight, TtEvtBuilder< C >::solWeightToken_, TtFullLepEvtBuilder_cfi::wrongCharge, and TtEvtBuilder< C >::wrongChargeToken_.

253 {
254 
255  // set kKinSolution extras
256  if( ttEvent.isHypoAvailable(TtEvent::kKinSolution) ) {
258  evt.getByToken(solWeightToken_, solWeight);
259  ttEvent.setSolWeight( *solWeight );
260 
262  evt.getByToken(wrongChargeToken_, wrongCharge);
263  ttEvent.setWrongCharge( *wrongCharge );
264  }
265 
266 }
edm::EDGetTokenT< std::vector< double > > solWeightToken_
Definition: TtEvtBuilder.h:84
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:579
edm::EDGetTokenT< bool > wrongChargeToken_
Definition: TtEvtBuilder.h:85
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 269 of file TtEvtBuilder.h.

References edm::Event::getByToken(), TtEvtBuilder< C >::hypJetTokens_, TtEvtBuilder< C >::hypKeyTokens_, TtEvtBuilder< C >::hypNeutrTokens_, crabWrapper::key, TtEvent::setNumberOfConsideredJets(), and TtSemiLeptonicEvent::setNumberOfRealNeutrinoSolutions().

270 {
271 
272  EventHypoIntToken hKey = hypKeyTokens_.begin();
273  EventHypoIntToken hNeutr = hypNeutrTokens_.begin();
274  EventHypoIntToken hJet = hypJetTokens_.begin();
275  for( ; hKey != hypKeyTokens_.end(); ++hKey, ++hNeutr, ++hJet){
277  evt.getByToken(*hKey, key);
278 
279  // set number of real neutrino solutions for all hypotheses
280  edm::Handle<int> numberOfRealNeutrinoSolutions;
281  evt.getByToken(*hNeutr, numberOfRealNeutrinoSolutions);
282  ttEvent.setNumberOfRealNeutrinoSolutions((TtEvent::HypoClassKey&)*key, *numberOfRealNeutrinoSolutions);
283 
284  // set number of considered jets for all hypotheses
285  edm::Handle<int> numberOfConsideredJets;
286  evt.getByToken(*hJet, numberOfConsideredJets);
287  ttEvent.setNumberOfConsideredJets((TtEvent::HypoClassKey&)*key, *numberOfConsideredJets);
288  }
289 
290 }
HypoClassKey
supported classes of event hypotheses
Definition: TtEvent.h:31
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
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:59
std::vector< edm::EDGetTokenT< int > > hypNeutrTokens_
Definition: TtEvtBuilder.h:57
std::vector< edm::EDGetTokenT< int > > hypKeyTokens_
vector of hypothesis class names
Definition: TtEvtBuilder.h:55
std::vector< edm::EDGetTokenT< int > > hypJetTokens_
Definition: TtEvtBuilder.h:58
void setNumberOfConsideredJets(const HypoClassKey &key, const unsigned int nJets)
set number of jets considered when building a given hypothesis
Definition: TtEvent.h:123
template<typename C >
void TtEvtBuilder< C >::produce ( edm::Event evt,
const edm::EventSetup setup 
)
overrideprivate

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

Definition at line 152 of file TtEvtBuilder.h.

References patCaloMETCorrections_cff::C, TtEvtBuilder< C >::decayChnTop1_, TtEvtBuilder< C >::decayChnTop2_, TtSemiLepEvtBuilder_cfi::disc, TtEvtBuilder< C >::discToken_, TtEvtBuilder< C >::fillSpecific(), fitChi2(), TtEvtBuilder< C >::fitChi2Token_, TtEvtBuilder< C >::fitProbToken_, TtGenEvtProducer_cfi::genEvt, TtEvtBuilder< C >::genEvt_, TtEvtBuilder< C >::genEvtToken_, edm::Event::getByToken(), h, TtEvtBuilder< C >::hitFitChi2Token_, TtEvtBuilder< C >::hitFitMTToken_, TtEvtBuilder< C >::hitFitProbToken_, TtEvtBuilder< C >::hitFitSigMTToken_, TtEvtBuilder< C >::hypKeyTokens_, TtEvtBuilder< C >::hypTokens_, crabWrapper::key, TtEvent::kGenMatch, TtEvent::kHitFit, TtEvent::kKinFit, TtEvent::kMVADisc, edm::InputTag::label(), TtSemiLepEvtBuilder_cfi::meth, TtEvtBuilder< C >::methToken_, eostools::move(), edm::Event::put(), TtFullHadEvtBuilder_cfi::sumDR, TtEvtBuilder< C >::sumDRToken_, TtFullHadEvtBuilder_cfi::sumPt, TtEvtBuilder< C >::sumPtToken_, and TtEvtBuilder< C >::verbosity_.

Referenced by TtEvtBuilder< C >::~TtEvtBuilder().

153 {
154  C ttEvent;
155 
156  // set leptonic decay channels
158 
159  // set genEvent (if available)
161  if ( !genEvt_.label().empty() )
162  if( evt.getByToken(genEvtToken_, genEvt) )
163  ttEvent.setGenEvent(genEvt);
164 
165  // add event hypotheses for all given
166  // hypothesis classes to the TtEvent
167  EventHypoIntToken hKey = hypKeyTokens_.begin();
168  EventHypoToken h = hypTokens_.begin();
169  for( ; hKey != hypKeyTokens_.end(); ++hKey, ++h){
171  evt.getByToken(*hKey, key);
172 
174  evt.getByToken(*h, hypMatchVec);
175 
176  typedef std::vector<TtEvent::HypoCombPair>::const_iterator HypMatch;
177  for(HypMatch hm=hypMatchVec->begin(); hm != hypMatchVec->end(); ++hm){
178  ttEvent.addEventHypo((TtEvent::HypoClassKey&)*key, *hm);
179  }
180  }
181 
182  // set kKinFit extras
183  if( ttEvent.isHypoAvailable(TtEvent::kKinFit) ) {
185  evt.getByToken(fitChi2Token_, fitChi2);
186  ttEvent.setFitChi2( *fitChi2 );
187 
189  evt.getByToken(fitProbToken_, fitProb);
190  ttEvent.setFitProb( *fitProb );
191  }
192 
193  // set kHitFit extras
194  if( ttEvent.isHypoAvailable(TtEvent::kHitFit) ) {
195  edm::Handle<std::vector<double> > hitFitChi2;
196  evt.getByToken(hitFitChi2Token_, hitFitChi2);
197  ttEvent.setHitFitChi2( *hitFitChi2 );
198 
199  edm::Handle<std::vector<double> > hitFitProb;
200  evt.getByToken(hitFitProbToken_, hitFitProb);
201  ttEvent.setHitFitProb( *hitFitProb );
202 
204  evt.getByToken(hitFitMTToken_, hitFitMT);
205  ttEvent.setHitFitMT( *hitFitMT );
206 
207  edm::Handle<std::vector<double> > hitFitSigMT;
208  evt.getByToken(hitFitSigMTToken_, hitFitSigMT);
209  ttEvent.setHitFitSigMT( *hitFitSigMT );
210  }
211 
212  // set kGenMatch extras
213  if( ttEvent.isHypoAvailable(TtEvent::kGenMatch) ) {
215  evt.getByToken(sumPtToken_, sumPt);
216  ttEvent.setGenMatchSumPt( *sumPt );
217 
219  evt.getByToken(sumDRToken_, sumDR);
220  ttEvent.setGenMatchSumDR( *sumDR );
221  }
222 
223  // set kMvaDisc extras
224  if( ttEvent.isHypoAvailable(TtEvent::kMVADisc) ) {
226  evt.getByToken(methToken_, meth);
227  ttEvent.setMvaMethod( *meth );
228 
230  evt.getByToken(discToken_, disc);
231  ttEvent.setMvaDiscriminators( *disc );
232  }
233 
234  // fill data members that are decay-channel specific
235  fillSpecific(ttEvent, evt);
236 
237  // print summary via MessageLogger if verbosity_>0
238  ttEvent.print(verbosity_);
239 
240  // write object into the edm::Event
241  std::unique_ptr<C> pOut(new C);
242  *pOut=ttEvent;
243  evt.put(std::move(pOut));
244 }
HypoClassKey
supported classes of event hypotheses
Definition: TtEvent.h:31
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:137
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
edm::EDGetTokenT< std::vector< double > > hitFitMTToken_
Definition: TtEvtBuilder.h:79
edm::EDGetTokenT< std::string > methToken_
Definition: TtEvtBuilder.h:94
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
edm::InputTag genEvt_
TtGenEvent.
Definition: TtEvtBuilder.h:62
std::vector< edm::EDGetTokenT< std::vector< TtEvent::HypoCombPair > > > hypTokens_
Definition: TtEvtBuilder.h:56
std::vector< edm::EDGetTokenT< int > >::const_iterator EventHypoIntToken
Definition: TtEvtBuilder.h:59
static double fitChi2(const CachingVertex< 5 > &vtx)
edm::EDGetTokenT< std::vector< double > > sumDRToken_
Definition: TtEvtBuilder.h:90
std::vector< edm::EDGetTokenT< int > > hypKeyTokens_
vector of hypothesis class names
Definition: TtEvtBuilder.h:55
virtual void fillSpecific(C &, const edm::Event &)
fill data members that are decay-channel specific
edm::EDGetTokenT< std::vector< double > > discToken_
Definition: TtEvtBuilder.h:95
int verbosity_
vebosity level
Definition: TtEvtBuilder.h:53
edm::EDGetTokenT< std::vector< double > > hitFitSigMTToken_
Definition: TtEvtBuilder.h:80
edm::EDGetTokenT< std::vector< double > > fitChi2Token_
Definition: TtEvtBuilder.h:72
edm::EDGetTokenT< std::vector< double > > hitFitChi2Token_
Definition: TtEvtBuilder.h:77
std::vector< edm::EDGetTokenT< std::vector< TtEvent::HypoCombPair > > >::const_iterator EventHypoToken
Definition: TtEvtBuilder.h:60
edm::EDGetTokenT< std::vector< double > > fitProbToken_
Definition: TtEvtBuilder.h:73
std::string const & label() const
Definition: InputTag.h:36
edm::EDGetTokenT< std::vector< double > > sumPtToken_
Definition: TtEvtBuilder.h:89
edm::EDGetTokenT< TtGenEvent > genEvtToken_
Definition: TtEvtBuilder.h:63
edm::EDGetTokenT< std::vector< double > > hitFitProbToken_
Definition: TtEvtBuilder.h:78
def move(src, dest)
Definition: eostools.py:511

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 66 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 67 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 95 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 72 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 73 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 63 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

input parameters for the kGenMatch hypothesis class extras

Definition at line 88 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::TtEvtBuilder().

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

input parameters for the kHitFit hypothesis class extras

Definition at line 76 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 77 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 79 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 78 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 80 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

vector of hypothesis class names

Definition at line 55 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::fillSpecific(), and TtEvtBuilder< C >::produce().

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

Definition at line 56 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

input parameters for the kKinFit hypothesis class extras

Definition at line 71 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::TtEvtBuilder().

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

input parameters for the kKinSolution hypothesis class extras

Definition at line 83 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 94 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

input parameters for the kMVADisc hypothesis class extras

Definition at line 93 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 90 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

Definition at line 89 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce(), and TtEvtBuilder< C >::TtEvtBuilder().

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

vebosity level

Definition at line 53 of file TtEvtBuilder.h.

Referenced by TtEvtBuilder< C >::produce().

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