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")) {
30 }
else if (cfg.
exists(
"udscResolutions") || cfg.
exists(
"bResolutions")) {
31 if (cfg.
exists(
"udscResolutions"))
33 <<
"Parameter 'bResolutions' is needed if parameter 'udscResolutions' is defined!\n";
36 <<
"Parameter 'udscResolutions' is needed if parameter 'bResolutions' is defined!\n";
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");
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");
84 std::vector<int>
match;
85 bool invalidMatch =
false;
91 match = *(matches->begin());
96 for (
unsigned int idx = 0; idx < match.size(); ++idx) {
97 if (match[idx] < 0 || match[idx] >= (
int)jets->size()) {
110 std::list<TtFullHadKinFitter::KinFitResult> fitResults =
kinFitter->
fit(*jets);
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>);
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>);
125 unsigned int iComb = 0;
126 for (std::list<TtFullHadKinFitter::KinFitResult>::const_iterator res = fitResults.begin(); res != fitResults.end();
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);
140 pCombi->push_back(res->JetCombi);
141 pChi2->push_back(res->Chi2);
142 pProb->push_back(res->Prob);
143 pStatus->push_back(res->Status);
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");
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)
#define DEFINE_FWK_MODULE(type)
void produce(edm::Event &event, const edm::EventSetup &setup) override
produce fitted object collections and meta data describing fit quality
void setUseOnlyMatch(bool useOnlyMatch)
set useOnlyMatch
bool exists(std::string const ¶meterName) 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::list< TtFullHadKinFitter::KinFitResult > fit(const std::vector< pat::Jet > &jets)
do the fitting and return fit result
std::vector< edm::ParameterSet > udscResolutions_
store the resolutions for the jets
class that does the fitting
bool useBTagging_
switch to tell whether to use b-tagging or not
void setMatch(const std::vector< int > &match)
set match to be used
std::vector< edm::ParameterSet > bResolutions_
~TtFullHadKinFitProducer() override
default destructor
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
T getParameter(std::string const &) const
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
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
int maxNJets_
maximal number of jets (-1 possible to indicate 'all')
double maxBTagValueNonBJet_
max value of bTag for a non-b-jet
unsigned int bTags_
minimal number of b-jets
std::vector< double > jetEnergyResolutionEtaBinning_
double minBTagValueBJet_
min value of bTag for a b-jet
TtFullHadKinFitProducer(const edm::ParameterSet &cfg)
default constructor
void setMatchInvalidity(bool invalidMatch)
set the validity of a match