9 useOnlyMatch_(
cfg.getParameter<
bool>(
"useOnlyMatch")),
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")) {
29 bResolutions_ =
cfg.getParameter<std::vector<edm::ParameterSet> >(
"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;
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");