78 pfJetPtCut(iConfig.getParameter<double>(
"pfJetPtCut")),
79 pfJetEtaCut(iConfig.getParameter<double>(
"pfJetEtaCut")),
81 doJetTags(iConfig.getParameter<bool>(
"doJetTags")),
82 doCandidates(iConfig.getParameter<bool>(
"doCandidates")),
83 doMet(iConfig.getParameter<bool>(
"doMet"))
86 produces<ScoutingPFJetCollection>();
87 produces<ScoutingParticleCollection>();
88 produces<double>(
"rho");
89 produces<double>(
"pfMetPt");
90 produces<double>(
"pfMetPhi");
105 for(
auto &vtx : *vertexCollection){
106 outVertices->emplace_back(
107 vtx.x(), vtx.y(), vtx.z(), vtx.zError(), vtx.xError(), vtx.yError(), vtx.tracksSize(), vtx.chi2(), vtx.ndof(), vtx.isValid()
114 std::unique_ptr<double> outRho(
new double(-999));
116 outRho.reset(
new double(*rho));
121 std::unique_ptr<double> outMetPt(
new double(-999));
122 std::unique_ptr<double> outMetPhi(
new double(-999));
124 outMetPt.reset(
new double(metCollection->front().pt()));
125 outMetPhi.reset(
new double(metCollection->front().phi()));
132 for(
auto &
cand : *pfCandidateCollection){
134 int vertex_index = -1;
135 int index_counter = 0;
137 for (
auto &vtx: *outVertices) {
138 double tmp_dr2 =
pow(vtx.x() -
cand.vx(), 2) +
pow(vtx.y() -
cand.vy(), 2)
142 vertex_index = index_counter;
148 outPFCandidates->emplace_back(
161 bool haveJetTags =
false;
166 for(
auto &
jet : *pfJetCollection){
169 float tagValue = -20;
172 for(
auto &
tag : *pfJetTagCollection){
176 tagValue =
tag.second;
181 std::vector<int> candIndices;
183 for(
auto &
cand :
jet.getPFConstituents()){
186 float minDR2 = 0.0001;
189 for(
auto &outCand : *outPFCandidates){
190 float dR2 =
pow(
cand->eta() - outCand.eta(), 2) +
pow(
cand->phi() - outCand.phi(), 2);
193 matchIndex = outIndex;
200 candIndices.push_back(matchIndex);
204 outPFJets->emplace_back(
206 jet.chargedHadronEnergy(),
jet.neutralHadronEnergy(),
jet.photonEnergy(),
207 jet.electronEnergy(),
jet.muonEnergy(),
jet.HFHadronEnergy(),
jet.HFEMEnergy(),
208 jet.chargedHadronMultiplicity(),
jet.neutralHadronMultiplicity(),
jet.photonMultiplicity(),
209 jet.electronMultiplicity(),
jet.muonMultiplicity(),
210 jet.HFHadronMultiplicity(),
jet.HFEMMultiplicity(),
211 jet.hoEnergy(), tagValue, 0.0, candIndices
233 desc.
add<
double>(
"pfJetPtCut", 20.0);
234 desc.
add<
double>(
"pfJetEtaCut", 3.0);
235 desc.
add<
double>(
"pfCandidatePtCut", 0.6);
236 desc.
add<
bool>(
"doJetTags",
true);
237 desc.
add<
bool>(
"doCandidates",
true);
238 desc.
add<
bool>(
"doMet",
true);
239 descriptions.
add(
"hltScoutingPFProducer", desc);
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
const edm::EDGetTokenT< reco::PFMETCollection > metCollection_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
def setup(process, global_tag, zero_tesla=False)
std::vector< Vertex > VertexCollection
collection of Vertex objects
JetFloatAssociation::Container JetTagCollection
const edm::EDGetTokenT< reco::PFCandidateCollection > pfCandidateCollection_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
const edm::EDGetTokenT< reco::VertexCollection > vertexCollection_
std::vector< ScoutingVertex > ScoutingVertexCollection
std::vector< ScoutingParticle > ScoutingParticleCollection
const edm::EDGetTokenT< reco::PFJetCollection > pfJetCollection_
HLTScoutingPFProducer(const edm::ParameterSet &)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
const edm::EDGetTokenT< reco::JetTagCollection > pfJetTagCollection_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
virtual void produce(edm::StreamID sid, edm::Event &iEvent, edm::EventSetup const &setup) const override final
const edm::EDGetTokenT< double > rho_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
T1 deltaR2(T1 eta1, T2 phi1, T3 eta2, T4 phi2)
std::vector< PFJet > PFJetCollection
collection of PFJet objects
std::vector< ScoutingPFJet > ScoutingPFJetCollection
Power< A, B >::type pow(const A &a, const B &b)
const double pfCandidatePtCut