CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes
TtFullHadKinFitProducer Class Reference

#include <TtFullHadKinFitProducer.h>

Inheritance diagram for TtFullHadKinFitProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 TtFullHadKinFitProducer (const edm::ParameterSet &cfg)
 default constructor More...
 
 ~TtFullHadKinFitProducer () 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
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
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)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Public Attributes

TtFullHadKinFitter::KinFitkinFitter
 kinematic fit interface More...
 

Private Member Functions

void produce (edm::Event &event, const edm::EventSetup &setup) override
 produce fitted object collections and meta data describing fit quality More...
 

Private Attributes

std::vector< edm::ParameterSetbResolutions_
 
std::string bTagAlgo_
 input tag for b-tagging algorithm More...
 
unsigned int bTags_
 minimal number of b-jets More...
 
std::vector< unsigned > constraints_
 numbering of different possible kinematic constraints More...
 
std::string jetCorrectionLevel_
 correction level for jets More...
 
std::vector< double > jetEnergyResolutionEtaBinning_
 
std::vector< double > jetEnergyResolutionScaleFactors_
 scale factors for jet energy resolution More...
 
unsigned int jetParam_
 numbering of different possible jet parametrizations More...
 
edm::EDGetTokenT< std::vector< pat::Jet > > jetsToken_
 input tag for jets More...
 
edm::EDGetTokenT< std::vector< std::vector< int > > > matchToken_
 input tag for matches (in case the fit should be performed on certain matches) More...
 
double maxBTagValueNonBJet_
 max value of bTag for a non-b-jet More...
 
double maxDeltaS_
 maximal chi2 equivalent More...
 
double maxF_
 maximal deviation for contstraints More...
 
int maxNComb_
 maximal number of combinations to be written to the event More...
 
int maxNJets_
 maximal number of jets (-1 possible to indicate 'all') More...
 
unsigned int maxNrIter_
 maximal number of iterations to be performed for the fit More...
 
double minBTagValueBJet_
 min value of bTag for a b-jet More...
 
double mTop_
 top mass value used for constraints More...
 
double mW_
 W mass value used for constraints. More...
 
std::vector< edm::ParameterSetudscResolutions_
 store the resolutions for the jets More...
 
bool useBTagging_
 switch to tell whether to use b-tagging or not More...
 
bool useOnlyMatch_
 

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::ProducerBase
ProducesCollector producesCollector ()
 
- 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 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

Definition at line 22 of file TtFullHadKinFitProducer.h.

Constructor & Destructor Documentation

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

default constructor

Definition at line 6 of file TtFullHadKinFitProducer.cc.

References bResolutions_, bTagAlgo_, bTags_, constraints_, Exception, edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), jetCorrectionLevel_, jetEnergyResolutionEtaBinning_, jetEnergyResolutionScaleFactors_, jetParam_, kinFitter, maxBTagValueNonBJet_, maxDeltaS_, maxF_, maxNComb_, maxNJets_, maxNrIter_, minBTagValueBJet_, mTop_, mW_, udscResolutions_, and useBTagging_.

7  : jetsToken_(consumes<std::vector<pat::Jet> >(cfg.getParameter<edm::InputTag>("jets"))),
8  matchToken_(mayConsume<std::vector<std::vector<int> > >(cfg.getParameter<edm::InputTag>("match"))),
9  useOnlyMatch_(cfg.getParameter<bool>("useOnlyMatch")),
10  bTagAlgo_(cfg.getParameter<std::string>("bTagAlgo")),
11  minBTagValueBJet_(cfg.getParameter<double>("minBTagValueBJet")),
12  maxBTagValueNonBJet_(cfg.getParameter<double>("maxBTagValueNonBJet")),
13  useBTagging_(cfg.getParameter<bool>("useBTagging")),
14  bTags_(cfg.getParameter<unsigned int>("bTags")),
15  jetCorrectionLevel_(cfg.getParameter<std::string>("jetCorrectionLevel")),
16  maxNJets_(cfg.getParameter<int>("maxNJets")),
17  maxNComb_(cfg.getParameter<int>("maxNComb")),
18  maxNrIter_(cfg.getParameter<unsigned int>("maxNrIter")),
19  maxDeltaS_(cfg.getParameter<double>("maxDeltaS")),
20  maxF_(cfg.getParameter<double>("maxF")),
21  jetParam_(cfg.getParameter<unsigned>("jetParametrisation")),
22  constraints_(cfg.getParameter<std::vector<unsigned> >("constraints")),
23  mW_(cfg.getParameter<double>("mW")),
24  mTop_(cfg.getParameter<double>("mTop")),
25  jetEnergyResolutionScaleFactors_(cfg.getParameter<std::vector<double> >("jetEnergyResolutionScaleFactors")),
26  jetEnergyResolutionEtaBinning_(cfg.getParameter<std::vector<double> >("jetEnergyResolutionEtaBinning")) {
27  if (cfg.exists("udscResolutions") && cfg.exists("bResolutions")) {
28  udscResolutions_ = cfg.getParameter<std::vector<edm::ParameterSet> >("udscResolutions");
29  bResolutions_ = cfg.getParameter<std::vector<edm::ParameterSet> >("bResolutions");
30  } else if (cfg.exists("udscResolutions") || cfg.exists("bResolutions")) {
31  if (cfg.exists("udscResolutions"))
32  throw cms::Exception("Configuration")
33  << "Parameter 'bResolutions' is needed if parameter 'udscResolutions' is defined!\n";
34  else
35  throw cms::Exception("Configuration")
36  << "Parameter 'udscResolutions' is needed if parameter 'bResolutions' is defined!\n";
37  }
38 
39  // define kinematic fit interface
41  bTags_,
42  bTagAlgo_,
50  maxNJets_,
51  maxNComb_,
52  maxNrIter_,
53  maxDeltaS_,
54  maxF_,
55  jetParam_,
57  mW_,
58  mTop_);
59 
60  // produces the following collections
61  produces<std::vector<pat::Particle> >("PartonsB");
62  produces<std::vector<pat::Particle> >("PartonsBBar");
63  produces<std::vector<pat::Particle> >("PartonsLightQ");
64  produces<std::vector<pat::Particle> >("PartonsLightQBar");
65  produces<std::vector<pat::Particle> >("PartonsLightP");
66  produces<std::vector<pat::Particle> >("PartonsLightPBar");
67 
68  produces<std::vector<std::vector<int> > >();
69  produces<std::vector<double> >("Chi2");
70  produces<std::vector<double> >("Prob");
71  produces<std::vector<int> >("Status");
72 }
T getParameter(std::string const &) const
TtFullHadKinFitter::KinFit * kinFitter
kinematic fit interface
edm::EDGetTokenT< std::vector< std::vector< int > > > matchToken_
input tag for matches (in case the fit should be performed on certain matches)
bool exists(std::string const &parameterName) const
checks if a parameter exists
unsigned int jetParam_
numbering of different possible jet parametrizations
double mTop_
top mass value used for constraints
std::vector< unsigned > constraints_
numbering of different possible kinematic constraints
double mW_
W mass value used for constraints.
std::vector< edm::ParameterSet > udscResolutions_
store the resolutions for the jets
class that does the fitting
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
bool useBTagging_
switch to tell whether to use b-tagging or not
std::vector< edm::ParameterSet > bResolutions_
int maxNComb_
maximal number of combinations to be written to the event
std::string jetCorrectionLevel_
correction level for jets
double maxF_
maximal deviation for contstraints
double maxDeltaS_
maximal chi2 equivalent
edm::EDGetTokenT< std::vector< pat::Jet > > jetsToken_
input tag for jets
unsigned int maxNrIter_
maximal number of iterations to be performed for the fit
std::string bTagAlgo_
input tag for b-tagging algorithm
std::vector< double > jetEnergyResolutionScaleFactors_
scale factors for jet energy resolution
int maxNJets_
maximal number of jets (-1 possible to indicate &#39;all&#39;)
double maxBTagValueNonBJet_
max value of bTag for a non-b-jet
unsigned int bTags_
minimal number of b-jets
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
std::vector< double > jetEnergyResolutionEtaBinning_
double minBTagValueBJet_
min value of bTag for a b-jet
TtFullHadKinFitProducer::~TtFullHadKinFitProducer ( )
override

default destructor

Definition at line 75 of file TtFullHadKinFitProducer.cc.

References kinFitter.

75 { delete kinFitter; }
TtFullHadKinFitter::KinFit * kinFitter
kinematic fit interface

Member Function Documentation

void TtFullHadKinFitProducer::produce ( edm::Event event,
const edm::EventSetup setup 
)
overrideprivate

produce fitted object collections and meta data describing fit quality

set match to be used

set the validity of a match

Definition at line 78 of file TtFullHadKinFitProducer.cc.

References DEFINE_FWK_MODULE, TtFullHadKinFitter::KinFit::fit(), training_settings::idx, singleTopDQM_cfi::jets, jetsToken_, kinFitter, match(), patCandidatesForDimuonsSequences_cff::matches, matchToken_, maxNComb_, eostools::move(), nPartons, TtFullHadKinFitter::KinFit::setMatch(), TtFullHadKinFitter::KinFit::setMatchInvalidity(), TtFullHadKinFitter::KinFit::setUseOnlyMatch(), and useOnlyMatch_.

78  {
79  // get jet collection
81  event.getByToken(jetsToken_, jets);
82 
83  // get match in case that useOnlyMatch_ is true
84  std::vector<int> match;
85  bool invalidMatch = false;
86  if (useOnlyMatch_) {
88  // in case that only a ceratin match should be used, get match here
90  event.getByToken(matchToken_, matches);
91  match = *(matches->begin());
92  // check if match is valid
93  if (match.size() != nPartons) {
94  invalidMatch = true;
95  } else {
96  for (unsigned int idx = 0; idx < match.size(); ++idx) {
97  if (match[idx] < 0 || match[idx] >= (int)jets->size()) {
98  invalidMatch = true;
99  break;
100  }
101  }
102  }
104  kinFitter->setMatch(match);
105  }
106 
108  kinFitter->setMatchInvalidity(invalidMatch);
109 
110  std::list<TtFullHadKinFitter::KinFitResult> fitResults = kinFitter->fit(*jets);
111 
112  // pointer for output collections
113  std::unique_ptr<std::vector<pat::Particle> > pPartonsB(new std::vector<pat::Particle>);
114  std::unique_ptr<std::vector<pat::Particle> > pPartonsBBar(new std::vector<pat::Particle>);
115  std::unique_ptr<std::vector<pat::Particle> > pPartonsLightQ(new std::vector<pat::Particle>);
116  std::unique_ptr<std::vector<pat::Particle> > pPartonsLightQBar(new std::vector<pat::Particle>);
117  std::unique_ptr<std::vector<pat::Particle> > pPartonsLightP(new std::vector<pat::Particle>);
118  std::unique_ptr<std::vector<pat::Particle> > pPartonsLightPBar(new std::vector<pat::Particle>);
119  // pointer for meta information
120  std::unique_ptr<std::vector<std::vector<int> > > pCombi(new std::vector<std::vector<int> >);
121  std::unique_ptr<std::vector<double> > pChi2(new std::vector<double>);
122  std::unique_ptr<std::vector<double> > pProb(new std::vector<double>);
123  std::unique_ptr<std::vector<int> > pStatus(new std::vector<int>);
124 
125  unsigned int iComb = 0;
126  for (std::list<TtFullHadKinFitter::KinFitResult>::const_iterator res = fitResults.begin(); res != fitResults.end();
127  ++res) {
128  if (maxNComb_ >= 1 && iComb == (unsigned int)maxNComb_) {
129  break;
130  }
131  ++iComb;
132 
133  pPartonsB->push_back(res->B);
134  pPartonsBBar->push_back(res->BBar);
135  pPartonsLightQ->push_back(res->LightQ);
136  pPartonsLightQBar->push_back(res->LightQBar);
137  pPartonsLightP->push_back(res->LightP);
138  pPartonsLightPBar->push_back(res->LightPBar);
139 
140  pCombi->push_back(res->JetCombi);
141  pChi2->push_back(res->Chi2);
142  pProb->push_back(res->Prob);
143  pStatus->push_back(res->Status);
144  }
145 
146  event.put(std::move(pCombi));
147  event.put(std::move(pPartonsB), "PartonsB");
148  event.put(std::move(pPartonsBBar), "PartonsBBar");
149  event.put(std::move(pPartonsLightQ), "PartonsLightQ");
150  event.put(std::move(pPartonsLightQBar), "PartonsLightQBar");
151  event.put(std::move(pPartonsLightP), "PartonsLightP");
152  event.put(std::move(pPartonsLightPBar), "PartonsLightPBar");
153  event.put(std::move(pChi2), "Chi2");
154  event.put(std::move(pProb), "Prob");
155  event.put(std::move(pStatus), "Status");
156 }
static const unsigned int nPartons
TtFullHadKinFitter::KinFit * kinFitter
kinematic fit interface
edm::EDGetTokenT< std::vector< std::vector< int > > > matchToken_
input tag for matches (in case the fit should be performed on certain matches)
void setUseOnlyMatch(bool useOnlyMatch)
set useOnlyMatch
std::list< TtFullHadKinFitter::KinFitResult > fit(const std::vector< pat::Jet > &jets)
do the fitting and return fit result
Definition: Electron.h:6
void setMatch(const std::vector< int > &match)
set match to be used
int maxNComb_
maximal number of combinations to be written to the event
edm::EDGetTokenT< std::vector< pat::Jet > > jetsToken_
input tag for jets
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
def move(src, dest)
Definition: eostools.py:511
void setMatchInvalidity(bool invalidMatch)
set the validity of a match

Member Data Documentation

std::vector<edm::ParameterSet> TtFullHadKinFitProducer::bResolutions_
private

Definition at line 72 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

std::string TtFullHadKinFitProducer::bTagAlgo_
private

input tag for b-tagging algorithm

Definition at line 42 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

unsigned int TtFullHadKinFitProducer::bTags_
private

minimal number of b-jets

Definition at line 50 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

std::vector<unsigned> TtFullHadKinFitProducer::constraints_
private

numbering of different possible kinematic constraints

Definition at line 66 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

std::string TtFullHadKinFitProducer::jetCorrectionLevel_
private

correction level for jets

Definition at line 52 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

std::vector<double> TtFullHadKinFitProducer::jetEnergyResolutionEtaBinning_
private

Definition at line 75 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

std::vector<double> TtFullHadKinFitProducer::jetEnergyResolutionScaleFactors_
private

scale factors for jet energy resolution

Definition at line 74 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

unsigned int TtFullHadKinFitProducer::jetParam_
private

numbering of different possible jet parametrizations

Definition at line 64 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

edm::EDGetTokenT<std::vector<pat::Jet> > TtFullHadKinFitProducer::jetsToken_
private

input tag for jets

Definition at line 35 of file TtFullHadKinFitProducer.h.

Referenced by produce().

TtFullHadKinFitter::KinFit* TtFullHadKinFitProducer::kinFitter

kinematic fit interface

Definition at line 79 of file TtFullHadKinFitProducer.h.

Referenced by produce(), TtFullHadKinFitProducer(), and ~TtFullHadKinFitProducer().

edm::EDGetTokenT<std::vector<std::vector<int> > > TtFullHadKinFitProducer::matchToken_
private

input tag for matches (in case the fit should be performed on certain matches)

Definition at line 37 of file TtFullHadKinFitProducer.h.

Referenced by produce().

double TtFullHadKinFitProducer::maxBTagValueNonBJet_
private

max value of bTag for a non-b-jet

Definition at line 46 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::maxDeltaS_
private

maximal chi2 equivalent

Definition at line 60 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::maxF_
private

maximal deviation for contstraints

Definition at line 62 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

int TtFullHadKinFitProducer::maxNComb_
private

maximal number of combinations to be written to the event

Definition at line 56 of file TtFullHadKinFitProducer.h.

Referenced by produce(), and TtFullHadKinFitProducer().

int TtFullHadKinFitProducer::maxNJets_
private

maximal number of jets (-1 possible to indicate 'all')

Definition at line 54 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

unsigned int TtFullHadKinFitProducer::maxNrIter_
private

maximal number of iterations to be performed for the fit

Definition at line 58 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::minBTagValueBJet_
private

min value of bTag for a b-jet

Definition at line 44 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::mTop_
private

top mass value used for constraints

Definition at line 70 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::mW_
private

W mass value used for constraints.

Definition at line 68 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

std::vector<edm::ParameterSet> TtFullHadKinFitProducer::udscResolutions_
private

store the resolutions for the jets

Definition at line 72 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

bool TtFullHadKinFitProducer::useBTagging_
private

switch to tell whether to use b-tagging or not

Definition at line 48 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

bool TtFullHadKinFitProducer::useOnlyMatch_
private

switch to tell whether all possible combinations should be used for the fit or only a certain combination

Definition at line 40 of file TtFullHadKinFitProducer.h.

Referenced by produce().