@@ -54,7 +54,7 @@ class DeepFlavourONNXJetTagsProducer : public edm::stream::EDProducer<edm::Globa
5454
5555 // hold the input data
5656 FloatArrays data_;
57-
57+ bool produceValueMap_;
5858 edm::Handle<edm::View<reco::Jet>> jets;
5959};
6060
@@ -64,14 +64,20 @@ const std::vector<unsigned> DeepFlavourONNXJetTagsProducer::input_sizes_{
6464DeepFlavourONNXJetTagsProducer::DeepFlavourONNXJetTagsProducer (const edm::ParameterSet& iConfig,
6565 const ONNXRuntime* cache)
6666 : src_(consumes<TagInfoCollection>(iConfig.getParameter<edm::InputTag>(" src" ))),
67- jet_(consumes<edm::View<reco::Jet>>(iConfig.getParameter<edm::InputTag>(" jets" ))),
6867 flav_names_(iConfig.getParameter<std::vector<std::string>>(" flav_names" )),
6968 input_names_(iConfig.getParameter<std::vector<std::string>>(" input_names" )),
70- output_names_(iConfig.getParameter<std::vector<std::string>>(" output_names" )) {
69+ output_names_(iConfig.getParameter<std::vector<std::string>>(" output_names" )),
70+ produceValueMap_(iConfig.getUntrackedParameter<bool >(" produceValueMap" , false )) {
71+ if (produceValueMap_) {
72+ jet_ = consumes<edm::View<reco::Jet>>(iConfig.getParameter <edm::InputTag>(" jets" ));
73+ }
74+
7175 // get output names from flav_names
7276 for (const auto & flav_name : flav_names_) {
7377 produces<JetTagCollection>(flav_name);
74- produces<edm::ValueMap<float >>(flav_name);
78+ if (produceValueMap_) {
79+ produces<edm::ValueMap<float >>(flav_name);
80+ }
7581 }
7682
7783 assert (input_names_.size () == input_sizes_.size ());
@@ -91,6 +97,7 @@ void DeepFlavourONNXJetTagsProducer::fillDescriptions(edm::ConfigurationDescript
9197 desc.add <std::vector<std::string>>(
9298 " flav_names" , std::vector<std::string>{" probb" , " probbb" , " problepb" , " probc" , " probuds" , " probg" });
9399 desc.add <edm::InputTag>(" jets" , edm::InputTag (" hltAK4PFPuppiJets" ));
100+ desc.addOptionalUntracked <bool >(" produceValueMap" , false );
94101
95102 descriptions.add (" pfDeepFlavourJetTags" , desc);
96103}
@@ -104,10 +111,13 @@ void DeepFlavourONNXJetTagsProducer::globalEndJob(const ONNXRuntime* cache) {}
104111void DeepFlavourONNXJetTagsProducer::produce (edm::Event& iEvent, const edm::EventSetup& iSetup) {
105112 edm::Handle<TagInfoCollection> tag_infos;
106113 iEvent.getByToken (src_, tag_infos);
107- iEvent.getByToken (jet_, jets);
108- if (!jets.isValid ()) {
109- edm::LogWarning (" DeepFlavourONNXJetTagsProducer" ) << " Invalid handle in jet input collection" ;
110- return ;
114+
115+ if (produceValueMap_) {
116+ iEvent.getByToken (jet_, jets);
117+ if (!jets.isValid ()) {
118+ edm::LogWarning (" DeepFlavourONNXJetTagsProducer" ) << " Invalid handle in jet input collection" ;
119+ return ;
120+ }
111121 }
112122
113123 std::vector<std::unique_ptr<JetTagCollection>> output_tags;
@@ -142,7 +152,9 @@ void DeepFlavourONNXJetTagsProducer::produce(edm::Event& iEvent, const edm::Even
142152 const auto & jet_ref = tag_infos->at (jet_n).jet ();
143153 for (std::size_t flav_n = 0 ; flav_n < flav_names_.size (); flav_n++) {
144154 (*(output_tags[flav_n]))[jet_ref] = outputs[i_output];
145- output_scores[flav_n][jet_n] = outputs[flav_n];
155+ if (produceValueMap_) {
156+ output_scores[flav_n][jet_n] = outputs[flav_n];
157+ }
146158 ++i_output;
147159 }
148160 }
@@ -155,14 +167,16 @@ void DeepFlavourONNXJetTagsProducer::produce(edm::Event& iEvent, const edm::Even
155167
156168 // put into the event
157169 for (std::size_t flav_n = 0 ; flav_n < flav_names_.size (); ++flav_n) {
158- iEvent.put (std::move (output_tags[flav_n]), flav_names_[flav_n]);
159- for (size_t k = 0 ; k < output_scores.size (); k++) {
160- std::unique_ptr<edm::ValueMap<float >> VM (new edm::ValueMap<float >());
161- edm::ValueMap<float >::Filler filler (*VM);
162- filler.insert (jets, output_scores.at (k).begin (), output_scores.at (k).end ());
163- filler.fill ();
164- iEvent.put (std::move (VM), flav_names_[k]);
170+ if (produceValueMap_) {
171+ for (size_t k = 0 ; k < output_scores.size (); k++) {
172+ std::unique_ptr<edm::ValueMap<float >> VM (new edm::ValueMap<float >());
173+ edm::ValueMap<float >::Filler filler (*VM);
174+ filler.insert (jets, output_scores.at (k).begin (), output_scores.at (k).end ());
175+ filler.fill ();
176+ iEvent.put (std::move (VM), flav_names_[k]);
177+ }
165178 }
179+ iEvent.put (std::move (output_tags[flav_n]), flav_names_[flav_n]);
166180 }
167181 data_.clear ();
168182}
0 commit comments