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
 
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)
 

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::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

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_.

6  :
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 {
28  if(cfg.exists("udscResolutions") && cfg.exists("bResolutions")){
29  udscResolutions_ = cfg.getParameter <std::vector<edm::ParameterSet> >("udscResolutions");
30  bResolutions_ = cfg.getParameter <std::vector<edm::ParameterSet> >("bResolutions");
31  }
32  else if(cfg.exists("udscResolutions") || cfg.exists("bResolutions")){
33  if(cfg.exists("udscResolutions")) throw cms::Exception("Configuration") << "Parameter 'bResolutions' is needed if parameter 'udscResolutions' is defined!\n";
34  else throw cms::Exception("Configuration") << "Parameter 'udscResolutions' is needed if parameter 'bResolutions' is defined!\n";
35  }
36 
37  // define kinematic fit interface
42 
43  // produces the following collections
44  produces< std::vector<pat::Particle> >("PartonsB");
45  produces< std::vector<pat::Particle> >("PartonsBBar");
46  produces< std::vector<pat::Particle> >("PartonsLightQ");
47  produces< std::vector<pat::Particle> >("PartonsLightQBar");
48  produces< std::vector<pat::Particle> >("PartonsLightP");
49  produces< std::vector<pat::Particle> >("PartonsLightPBar");
50 
51  produces< std::vector<std::vector<int> > >();
52  produces< std::vector<double> >("Chi2");
53  produces< std::vector<double> >("Prob");
54  produces< std::vector<int> >("Status");
55 }
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 58 of file TtFullHadKinFitProducer.cc.

References kinFitter.

59 {
60  delete kinFitter;
61 }
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 65 of file TtFullHadKinFitProducer.cc.

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

66 {
67  // get jet collection
69  event.getByToken(jetsToken_, jets);
70 
71  // get match in case that useOnlyMatch_ is true
72  std::vector<int> match;
73  bool invalidMatch=false;
74  if(useOnlyMatch_) {
76  // in case that only a ceratin match should be used, get match here
78  event.getByToken(matchToken_, matches);
79  match = *(matches->begin());
80  // check if match is valid
81  if( match.size()!=nPartons ){
82  invalidMatch=true;
83  }
84  else {
85  for(unsigned int idx=0; idx<match.size(); ++idx) {
86  if(match[idx]<0 || match[idx]>=(int)jets->size()) {
87  invalidMatch=true;
88  break;
89  }
90  }
91  }
93  kinFitter->setMatch(match);
94  }
95 
97  kinFitter->setMatchInvalidity(invalidMatch);
98 
99  std::list<TtFullHadKinFitter::KinFitResult> fitResults = kinFitter->fit(*jets);
100 
101  // pointer for output collections
102  std::unique_ptr< std::vector<pat::Particle> > pPartonsB( new std::vector<pat::Particle> );
103  std::unique_ptr< std::vector<pat::Particle> > pPartonsBBar( new std::vector<pat::Particle> );
104  std::unique_ptr< std::vector<pat::Particle> > pPartonsLightQ ( new std::vector<pat::Particle> );
105  std::unique_ptr< std::vector<pat::Particle> > pPartonsLightQBar( new std::vector<pat::Particle> );
106  std::unique_ptr< std::vector<pat::Particle> > pPartonsLightP ( new std::vector<pat::Particle> );
107  std::unique_ptr< std::vector<pat::Particle> > pPartonsLightPBar( new std::vector<pat::Particle> );
108  // pointer for meta information
109  std::unique_ptr< std::vector<std::vector<int> > > pCombi ( new std::vector<std::vector<int> > );
110  std::unique_ptr< std::vector<double> > pChi2 ( new std::vector<double> );
111  std::unique_ptr< std::vector<double> > pProb ( new std::vector<double> );
112  std::unique_ptr< std::vector<int> > pStatus( new std::vector<int> );
113 
114  unsigned int iComb = 0;
115  for(std::list<TtFullHadKinFitter::KinFitResult>::const_iterator res = fitResults.begin(); res != fitResults.end(); ++res){
116  if(maxNComb_>=1 && iComb==(unsigned int)maxNComb_){
117  break;
118  }
119  ++iComb;
120 
121  pPartonsB ->push_back( res->B );
122  pPartonsBBar ->push_back( res->BBar );
123  pPartonsLightQ ->push_back( res->LightQ );
124  pPartonsLightQBar->push_back( res->LightQBar );
125  pPartonsLightP ->push_back( res->LightP );
126  pPartonsLightPBar->push_back( res->LightPBar );
127 
128  pCombi ->push_back( res->JetCombi );
129  pChi2 ->push_back( res->Chi2 );
130  pProb ->push_back( res->Prob );
131  pStatus->push_back( res->Status );
132 
133  }
134 
135  event.put(std::move(pCombi));
136  event.put(std::move(pPartonsB ), "PartonsB" );
137  event.put(std::move(pPartonsBBar ), "PartonsBBar" );
138  event.put(std::move(pPartonsLightQ ), "PartonsLightQ" );
139  event.put(std::move(pPartonsLightQBar), "PartonsLightQBar");
140  event.put(std::move(pPartonsLightP ), "PartonsLightP" );
141  event.put(std::move(pPartonsLightPBar), "PartonsLightPBar");
142  event.put(std::move(pChi2 ), "Chi2" );
143  event.put(std::move(pProb ), "Prob" );
144  event.put(std::move(pStatus ), "Status" );
145 }
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
vector< PseudoJet > jets
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:510
void setMatchInvalidity(bool invalidMatch)
set the validity of a match

Member Data Documentation

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

Definition at line 73 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

std::string TtFullHadKinFitProducer::bTagAlgo_
private

input tag for b-tagging algorithm

Definition at line 43 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

unsigned int TtFullHadKinFitProducer::bTags_
private

minimal number of b-jets

Definition at line 51 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

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

numbering of different possible kinematic constraints

Definition at line 67 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

std::string TtFullHadKinFitProducer::jetCorrectionLevel_
private

correction level for jets

Definition at line 53 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

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

Definition at line 76 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

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

scale factors for jet energy resolution

Definition at line 75 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

unsigned int TtFullHadKinFitProducer::jetParam_
private

numbering of different possible jet parametrizations

Definition at line 65 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

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

input tag for jets

Definition at line 36 of file TtFullHadKinFitProducer.h.

Referenced by produce().

TtFullHadKinFitter::KinFit* TtFullHadKinFitProducer::kinFitter

kinematic fit interface

Definition at line 81 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 38 of file TtFullHadKinFitProducer.h.

Referenced by produce().

double TtFullHadKinFitProducer::maxBTagValueNonBJet_
private

max value of bTag for a non-b-jet

Definition at line 47 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::maxDeltaS_
private

maximal chi2 equivalent

Definition at line 61 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::maxF_
private

maximal deviation for contstraints

Definition at line 63 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

int TtFullHadKinFitProducer::maxNComb_
private

maximal number of combinations to be written to the event

Definition at line 57 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 55 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 59 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::minBTagValueBJet_
private

min value of bTag for a b-jet

Definition at line 45 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::mTop_
private

top mass value used for constraints

Definition at line 71 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

double TtFullHadKinFitProducer::mW_
private

W mass value used for constraints.

Definition at line 69 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

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

store the resolutions for the jets

Definition at line 73 of file TtFullHadKinFitProducer.h.

Referenced by TtFullHadKinFitProducer().

bool TtFullHadKinFitProducer::useBTagging_
private

switch to tell whether to use b-tagging or not

Definition at line 49 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 41 of file TtFullHadKinFitProducer.h.

Referenced by produce().