74 std::unique_ptr<TtFullHadKinFitter::KinFit>
kinFitter;
81 : jetsToken_(consumes<std::
vector<pat::
Jet> >(cfg.getParameter<edm::
InputTag>(
"jets"))),
82 matchToken_(mayConsume<std::
vector<std::
vector<int> > >(cfg.getParameter<edm::
InputTag>(
"match"))),
83 useOnlyMatch_(cfg.getParameter<bool>(
"useOnlyMatch")),
84 bTagAlgo_(cfg.getParameter<std::
string>(
"bTagAlgo")),
85 minBTagValueBJet_(cfg.getParameter<double>(
"minBTagValueBJet")),
86 maxBTagValueNonBJet_(cfg.getParameter<double>(
"maxBTagValueNonBJet")),
87 useBTagging_(cfg.getParameter<bool>(
"useBTagging")),
88 bTags_(cfg.getParameter<unsigned int>(
"bTags")),
89 jetCorrectionLevel_(cfg.getParameter<std::
string>(
"jetCorrectionLevel")),
90 maxNJets_(cfg.getParameter<int>(
"maxNJets")),
91 maxNComb_(cfg.getParameter<int>(
"maxNComb")),
92 maxNrIter_(cfg.getParameter<unsigned int>(
"maxNrIter")),
93 maxDeltaS_(cfg.getParameter<double>(
"maxDeltaS")),
94 maxF_(cfg.getParameter<double>(
"maxF")),
95 jetParam_(cfg.getParameter<unsigned>(
"jetParametrisation")),
96 constraints_(cfg.getParameter<std::
vector<unsigned> >(
"constraints")),
97 mW_(cfg.getParameter<double>(
"mW")),
98 mTop_(cfg.getParameter<double>(
"mTop")),
99 jetEnergyResolutionScaleFactors_(cfg.getParameter<std::
vector<double> >(
"jetEnergyResolutionScaleFactors")),
100 jetEnergyResolutionEtaBinning_(cfg.getParameter<std::
vector<double> >(
"jetEnergyResolutionEtaBinning")) {
101 if (cfg.
exists(
"udscResolutions") && cfg.
exists(
"bResolutions")) {
104 }
else if (cfg.
exists(
"udscResolutions") || cfg.
exists(
"bResolutions")) {
105 if (cfg.
exists(
"udscResolutions"))
107 <<
"Parameter 'bResolutions' is needed if parameter 'udscResolutions' is defined!\n";
110 <<
"Parameter 'udscResolutions' is needed if parameter 'bResolutions' is defined!\n";
135 produces<std::vector<pat::Particle> >(
"PartonsB");
136 produces<std::vector<pat::Particle> >(
"PartonsBBar");
137 produces<std::vector<pat::Particle> >(
"PartonsLightQ");
138 produces<std::vector<pat::Particle> >(
"PartonsLightQBar");
139 produces<std::vector<pat::Particle> >(
"PartonsLightP");
140 produces<std::vector<pat::Particle> >(
"PartonsLightPBar");
142 produces<std::vector<std::vector<int> > >();
143 produces<std::vector<double> >(
"Chi2");
144 produces<std::vector<double> >(
"Prob");
145 produces<std::vector<int> >(
"Status");
155 std::vector<int>
match;
156 bool invalidMatch =
false;
162 match = *(matches->begin());
167 for (
unsigned int idx = 0; idx < match.size(); ++idx) {
168 if (match[idx] < 0 || match[idx] >= (
int)jets->size()) {
179 kinFitter->setMatchInvalidity(invalidMatch);
181 std::list<TtFullHadKinFitter::KinFitResult> fitResults =
kinFitter->fit(*jets);
184 std::unique_ptr<std::vector<pat::Particle> > pPartonsB(
new std::vector<pat::Particle>);
185 std::unique_ptr<std::vector<pat::Particle> > pPartonsBBar(
new std::vector<pat::Particle>);
186 std::unique_ptr<std::vector<pat::Particle> > pPartonsLightQ(
new std::vector<pat::Particle>);
187 std::unique_ptr<std::vector<pat::Particle> > pPartonsLightQBar(
new std::vector<pat::Particle>);
188 std::unique_ptr<std::vector<pat::Particle> > pPartonsLightP(
new std::vector<pat::Particle>);
189 std::unique_ptr<std::vector<pat::Particle> > pPartonsLightPBar(
new std::vector<pat::Particle>);
191 std::unique_ptr<std::vector<std::vector<int> > > pCombi(
new std::vector<std::vector<int> >);
192 std::unique_ptr<std::vector<double> > pChi2(
new std::vector<double>);
193 std::unique_ptr<std::vector<double> > pProb(
new std::vector<double>);
194 std::unique_ptr<std::vector<int> > pStatus(
new std::vector<int>);
196 unsigned int iComb = 0;
197 for (std::list<TtFullHadKinFitter::KinFitResult>::const_iterator res = fitResults.begin(); res != fitResults.end();
204 pPartonsB->push_back(res->B);
205 pPartonsBBar->push_back(res->BBar);
206 pPartonsLightQ->push_back(res->LightQ);
207 pPartonsLightQBar->push_back(res->LightQBar);
208 pPartonsLightP->push_back(res->LightP);
209 pPartonsLightPBar->push_back(res->LightPBar);
211 pCombi->push_back(res->JetCombi);
212 pChi2->push_back(res->Chi2);
213 pProb->push_back(res->Prob);
214 pStatus->push_back(res->Status);
218 event.put(
std::move(pPartonsB),
"PartonsB");
219 event.put(
std::move(pPartonsBBar),
"PartonsBBar");
220 event.put(
std::move(pPartonsLightQ),
"PartonsLightQ");
221 event.put(
std::move(pPartonsLightQBar),
"PartonsLightQBar");
222 event.put(
std::move(pPartonsLightP),
"PartonsLightP");
223 event.put(
std::move(pPartonsLightPBar),
"PartonsLightPBar");
static const unsigned int nPartons
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
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::vector< edm::ParameterSet > udscResolutions_
store the resolutions for the jets
bool useBTagging_
switch to tell whether to use b-tagging or not
std::unique_ptr< TtFullHadKinFitter::KinFit > kinFitter
kinematic fit interface
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
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