CMS 3D CMS Logo

TtFullHadKinFitProducer.cc
Go to the documentation of this file.
2 
3 static const unsigned int nPartons = 6;
4 
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 }
73 
76 
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  }
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 }
157 
TtFullHadKinFitProducer::matchToken_
edm::EDGetTokenT< std::vector< std::vector< int > > > matchToken_
input tag for matches (in case the fit should be performed on certain matches)
Definition: TtFullHadKinFitProducer.h:37
TtFullHadKinFitter::KinFit::setMatchInvalidity
void setMatchInvalidity(bool invalidMatch)
set the validity of a match
Definition: TtFullHadKinFitter.h:219
electrons_cff.bool
bool
Definition: electrons_cff.py:372
TtFullHadKinFitProducer::jetEnergyResolutionEtaBinning_
std::vector< double > jetEnergyResolutionEtaBinning_
Definition: TtFullHadKinFitProducer.h:75
TtFullHadKinFitProducer::jetParam_
unsigned int jetParam_
numbering of different possible jet parametrizations
Definition: TtFullHadKinFitProducer.h:64
TtFullHadKinFitProducer::kinFitter
TtFullHadKinFitter::KinFit * kinFitter
kinematic fit interface
Definition: TtFullHadKinFitProducer.h:79
TtFullHadKinFitProducer::constraints_
std::vector< unsigned > constraints_
numbering of different possible kinematic constraints
Definition: TtFullHadKinFitProducer.h:66
edm
HLT enums.
Definition: AlignableModifier.h:19
TtFullHadKinFitProducer::produce
void produce(edm::Event &event, const edm::EventSetup &setup) override
produce fitted object collections and meta data describing fit quality
Definition: TtFullHadKinFitProducer.cc:78
singleTopDQM_cfi.jets
jets
Definition: singleTopDQM_cfi.py:42
TtFullHadKinFitProducer::useBTagging_
bool useBTagging_
switch to tell whether to use b-tagging or not
Definition: TtFullHadKinFitProducer.h:48
edm::Handle
Definition: AssociativeIterator.h:50
training_settings.idx
idx
Definition: training_settings.py:16
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
TtFullHadKinFitProducer::~TtFullHadKinFitProducer
~TtFullHadKinFitProducer() override
default destructor
Definition: TtFullHadKinFitProducer.cc:75
TtFullHadKinFitProducer::udscResolutions_
std::vector< edm::ParameterSet > udscResolutions_
store the resolutions for the jets
Definition: TtFullHadKinFitProducer.h:72
TtFullHadKinFitter::KinFit::setMatch
void setMatch(const std::vector< int > &match)
set match to be used
Definition: TtFullHadKinFitter.h:217
TtFullHadKinFitProducer::mW_
double mW_
W mass value used for constraints.
Definition: TtFullHadKinFitProducer.h:68
TtFullHadKinFitter::KinFit::fit
std::list< TtFullHadKinFitter::KinFitResult > fit(const std::vector< pat::Jet > &jets)
do the fitting and return fit result
Definition: TtFullHadKinFitter.cc:506
MakerMacros.h
TtFullHadKinFitProducer::mTop_
double mTop_
top mass value used for constraints
Definition: TtFullHadKinFitProducer.h:70
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
Jet
Definition: Jet.py:1
TtFullHadKinFitProducer::maxNComb_
int maxNComb_
maximal number of combinations to be written to the event
Definition: TtFullHadKinFitProducer.h:56
TtFullHadKinFitProducer::maxDeltaS_
double maxDeltaS_
maximal chi2 equivalent
Definition: TtFullHadKinFitProducer.h:60
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
TtFullHadKinFitProducer::bResolutions_
std::vector< edm::ParameterSet > bResolutions_
Definition: TtFullHadKinFitProducer.h:72
nPartons
static const unsigned int nPartons
Definition: TtFullHadKinFitProducer.cc:3
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
createfilelist.int
int
Definition: createfilelist.py:10
TtFullHadKinFitProducer::jetCorrectionLevel_
std::string jetCorrectionLevel_
correction level for jets
Definition: TtFullHadKinFitProducer.h:52
edm::EventSetup
Definition: EventSetup.h:57
pat
Definition: HeavyIon.h:7
TtFullHadKinFitProducer::maxF_
double maxF_
maximal deviation for contstraints
Definition: TtFullHadKinFitProducer.h:62
res
Definition: Electron.h:6
looper.cfg
cfg
Definition: looper.py:297
TtFullHadKinFitProducer::maxNrIter_
unsigned int maxNrIter_
maximal number of iterations to be performed for the fit
Definition: TtFullHadKinFitProducer.h:58
TtFullHadKinFitProducer
Definition: TtFullHadKinFitProducer.h:22
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
TtFullHadKinFitProducer::useOnlyMatch_
bool useOnlyMatch_
Definition: TtFullHadKinFitProducer.h:40
TtFullHadKinFitProducer.h
Exception
Definition: hltDiff.cc:246
TtFullHadKinFitter::KinFit
class that does the fitting
Definition: TtFullHadKinFitter.h:145
TtFullHadKinFitProducer::maxBTagValueNonBJet_
double maxBTagValueNonBJet_
max value of bTag for a non-b-jet
Definition: TtFullHadKinFitProducer.h:46
patCandidatesForDimuonsSequences_cff.matches
matches
Definition: patCandidatesForDimuonsSequences_cff.py:131
TtFullHadKinFitter::KinFit::setUseOnlyMatch
void setUseOnlyMatch(bool useOnlyMatch)
set useOnlyMatch
Definition: TtFullHadKinFitter.h:215
TtFullHadKinFitProducer::jetsToken_
edm::EDGetTokenT< std::vector< pat::Jet > > jetsToken_
input tag for jets
Definition: TtFullHadKinFitProducer.h:35
TtFullHadKinFitProducer::TtFullHadKinFitProducer
TtFullHadKinFitProducer(const edm::ParameterSet &cfg)
default constructor
Definition: TtFullHadKinFitProducer.cc:6
TtFullHadKinFitProducer::bTags_
unsigned int bTags_
minimal number of b-jets
Definition: TtFullHadKinFitProducer.h:50
cms::Exception
Definition: Exception.h:70
TtFullHadKinFitProducer::bTagAlgo_
std::string bTagAlgo_
input tag for b-tagging algorithm
Definition: TtFullHadKinFitProducer.h:42
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
TtFullHadKinFitProducer::maxNJets_
int maxNJets_
maximal number of jets (-1 possible to indicate 'all')
Definition: TtFullHadKinFitProducer.h:54
TtFullHadKinFitProducer::minBTagValueBJet_
double minBTagValueBJet_
min value of bTag for a b-jet
Definition: TtFullHadKinFitProducer.h:44
TtFullHadKinFitProducer::jetEnergyResolutionScaleFactors_
std::vector< double > jetEnergyResolutionScaleFactors_
scale factors for jet energy resolution
Definition: TtFullHadKinFitProducer.h:74