74 std::unique_ptr<TtFullHadKinFitter::KinFit>
kinFitter;
83 useOnlyMatch_(
cfg.getParameter<
bool>(
"useOnlyMatch")),
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")) {
103 bResolutions_ =
cfg.getParameter<std::vector<edm::ParameterSet> >(
"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");
154 std::vector<int>
match;
155 bool invalidMatch =
false;
177 kinFitter->setMatchInvalidity(invalidMatch);
179 std::list<TtFullHadKinFitter::KinFitResult> fitResults =
kinFitter->fit(*
jets);
182 std::unique_ptr<std::vector<pat::Particle> > pPartonsB(
new std::vector<pat::Particle>);
183 std::unique_ptr<std::vector<pat::Particle> > pPartonsBBar(
new std::vector<pat::Particle>);
184 std::unique_ptr<std::vector<pat::Particle> > pPartonsLightQ(
new std::vector<pat::Particle>);
185 std::unique_ptr<std::vector<pat::Particle> > pPartonsLightQBar(
new std::vector<pat::Particle>);
186 std::unique_ptr<std::vector<pat::Particle> > pPartonsLightP(
new std::vector<pat::Particle>);
187 std::unique_ptr<std::vector<pat::Particle> > pPartonsLightPBar(
new std::vector<pat::Particle>);
189 std::unique_ptr<std::vector<std::vector<int> > > pCombi(
new std::vector<std::vector<int> >);
190 std::unique_ptr<std::vector<double> > pChi2(
new std::vector<double>);
191 std::unique_ptr<std::vector<double> > pProb(
new std::vector<double>);
192 std::unique_ptr<std::vector<int> > pStatus(
new std::vector<int>);
194 unsigned int iComb = 0;
195 for (std::list<TtFullHadKinFitter::KinFitResult>::const_iterator
res = fitResults.begin();
res != fitResults.end();
202 pPartonsB->push_back(
res->B);
203 pPartonsBBar->push_back(
res->BBar);
204 pPartonsLightQ->push_back(
res->LightQ);
205 pPartonsLightQBar->push_back(
res->LightQBar);
206 pPartonsLightP->push_back(
res->LightP);
207 pPartonsLightPBar->push_back(
res->LightPBar);
209 pCombi->push_back(
res->JetCombi);
210 pChi2->push_back(
res->Chi2);
211 pProb->push_back(
res->Prob);
212 pStatus->push_back(
res->Status);
216 event.put(
std::move(pPartonsB),
"PartonsB");
217 event.put(
std::move(pPartonsBBar),
"PartonsBBar");
218 event.put(
std::move(pPartonsLightQ),
"PartonsLightQ");
219 event.put(
std::move(pPartonsLightQBar),
"PartonsLightQBar");
220 event.put(
std::move(pPartonsLightP),
"PartonsLightP");
221 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)
void produce(edm::Event &event, const edm::EventSetup &setup) override
produce fitted object collections and meta data describing fit quality
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
#define DEFINE_FWK_MODULE(type)
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
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