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");
155 std::vector<int>
match;
156 bool invalidMatch =
false;
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
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
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