CMS 3D CMS Logo

EgammaHLTPhase2ExtraProducer.cc
Go to the documentation of this file.
1 
10 
23 
28 
32 
33 #include <vector>
34 #include <unordered_map>
35 
36 //class compliments EgammaHLTExtraProducer and adds all the phase-II specific E/g HLT debug information to the event
37 //this allows phase-II to be factorised from the standard class rather than having to extend EgammaHLTExtraProducer to deal with it
38 //although to be fair, given all the phase-II code is now in the release, the need for this factorisation is not as great
39 //and ultimately it could be merged into EgammaHLTExtraProducer
40 
41 namespace {
42  //changes double to string for product name
43  //ie "." is replaced with "p" and for -ve vals, string is M instead so -28 is M28
44  //has a fixed precision of precision although it removes trailing zeros and the .
45  std::string convertToProdNameStr(double val, int precision = 3) {
46  std::ostringstream valOStr;
47  valOStr << std::fixed << std::setprecision(precision) << val;
48  std::string valStr = valOStr.str();
49  while (valStr.size() > 1 && valStr.back() == '0') {
50  valStr.pop_back();
51  }
52  if (valStr.size() > 1 && valStr.back() == '.') {
53  valStr.pop_back();
54  }
55  auto decPoint = valStr.find('.');
56  if (decPoint != std::string::npos) {
57  valStr.replace(decPoint, 1, "p");
58  }
59  if (val < 0)
60  valStr.replace(0, 1, "M");
61  return valStr;
62  }
63 
64  template <typename T>
65  std::vector<std::unique_ptr<int>> countRecHits(const T& recHitHandle, const std::vector<double>& thresholds) {
66  std::vector<std::unique_ptr<int>> counts(thresholds.size());
67  for (auto& count : counts)
68  count = std::make_unique<int>(0);
69  if (recHitHandle.isValid()) {
70  for (const auto& recHit : *recHitHandle) {
71  for (size_t thresNr = 0; thresNr < thresholds.size(); thresNr++) {
72  if (recHit.energy() >= thresholds[thresNr]) {
73  (*counts[thresNr])++;
74  }
75  }
76  }
77  }
78  return counts;
79  }
80 } // namespace
81 
83 public:
86 
87  void produce(edm::StreamID streamID, edm::Event& event, const edm::EventSetup& eventSetup) const override;
88  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
89 
90 private:
91  template <typename CollType, typename RefType>
92  std::unique_ptr<CollType> filterObjs(const trigger::EgammaObjectCollection& egTrigObjs,
94  std::vector<RefType>& orgRefs,
95  float maxDR2 = 0.4 * 0.4) const;
96 
97  //these three filter functions are overly similar but with annoying differences
98  //eg rechits needs to access geometry, trk dr is also w.r.t the track eta/phi
99  //still could collapse into a single function
100  template <typename RecHitCollection>
101  std::unique_ptr<RecHitCollection> filterRecHits(const trigger::EgammaObjectCollection& egTrigObjs,
103  const CaloGeometry& geom,
104  float maxDR2 = 0.4 * 0.4) const;
105 
106  struct Tokens {
113  std::vector<std::pair<edm::EDGetTokenT<HGCRecHitCollection>, std::string>> hgcal;
114 
115  template <typename T>
118  const edm::ParameterSet& pset,
119  const std::string& tagname) {
120  token = cc.consumes<T>(pset.getParameter<edm::InputTag>(tagname));
121  }
122  template <typename T>
125  const edm::ParameterSet& pset,
126  const std::string& tagname) {
127  auto inputTags = pset.getParameter<std::vector<edm::InputTag>>(tagname);
128  tokens.resize(inputTags.size());
129  for (size_t tagNr = 0; tagNr < inputTags.size(); tagNr++) {
130  tokens[tagNr] = cc.consumes<T>(inputTags[tagNr]);
131  }
132  }
133  template <typename T>
134  static void setToken(std::vector<std::pair<edm::EDGetTokenT<T>, std::string>>& tokens,
136  const edm::ParameterSet& pset,
137  const std::string& tagname) {
138  const auto& collectionPSets = pset.getParameter<std::vector<edm::ParameterSet>>(tagname);
139  for (const auto& collPSet : collectionPSets) {
140  edm::EDGetTokenT<T> token = cc.consumes<T>(collPSet.getParameter<edm::InputTag>("src"));
141  std::string label = collPSet.getParameter<std::string>("label");
142  tokens.emplace_back(std::make_pair(token, label));
143  }
144  }
146  };
147  template <typename T, typename H>
148  static std::unique_ptr<edm::ValueMap<T>> makeValueMap(const H& handle, const std::vector<T>& values) {
149  auto valueMap = std::make_unique<edm::ValueMap<T>>();
150  typename edm::ValueMap<T>::Filler filler(*valueMap);
151  filler.insert(handle, values.begin(), values.end());
152  filler.fill();
153  return valueMap;
154  }
155 
157 
161  std::vector<double> recHitCountThresholds_;
162 };
163 
165  setToken(egTrigObjs, cc, pset, "egTrigObjs");
166  setToken(l1Trks, cc, pset, "l1Trks");
167  setToken(trkParts, cc, pset, "trkParts");
168  setToken(l1TrkToTrkPartMap, cc, pset, "l1TrkToTrkPartMap");
169  setToken(hgcalLayerClusters, cc, pset, "hgcalLayerClusters");
170  setToken(hgcalLayerClustersTime, cc, pset, "hgcalLayerClustersTime");
171  setToken(hgcal, cc, pset, "hgcal");
172 }
173 
176  minPtToSaveHits_(pset.getParameter<double>("minPtToSaveHits")),
177  saveHitsPlusPi_(pset.getParameter<bool>("saveHitsPlusPi")),
178  saveHitsPlusHalfPi_(pset.getParameter<bool>("saveHitsPlusHalfPi")),
179  recHitCountThresholds_(pset.getParameter<std::vector<double>>("recHitCountThresholds")) {
180  produces<L1TrackCollection>();
181  produces<L1TrackTruthPairCollection>();
182  produces<TrackingParticleCollection>();
183  produces<reco::CaloClusterCollection>("hgcalLayerClusters");
184  produces<edm::ValueMap<std::pair<float, float>>>("hgcalLayerClustersTime");
185  for (auto& tokenLabel : tokens_.hgcal) {
186  produces<HGCRecHitCollection>(tokenLabel.second);
187  for (const auto& thres : recHitCountThresholds_) {
188  produces<int>("countHgcalRecHits" + tokenLabel.second + "Thres" + convertToProdNameStr(thres) + "GeV");
189  }
190  }
191 }
192 
195  desc.add<edm::InputTag>("egTrigObjs", edm::InputTag("hltEgammaHLTExtra"));
196  desc.add<edm::InputTag>("l1Trks", edm::InputTag("TTTracksFromTrackletEmulation", "Level1TTTracks"));
197  desc.add<edm::InputTag>("trkParts", edm::InputTag("mix", "MergedTrackTruth"));
198  desc.add<edm::InputTag>("l1TrkToTrkPartMap", edm::InputTag("TTTrackAssociatorFromPixelDigis", "Level1TTTracks"));
199  desc.add<edm::InputTag>("hgcalLayerClusters", edm::InputTag("hgcalLayerClusters"));
200  desc.add<edm::InputTag>("hgcalLayerClustersTime", edm::InputTag("hgcalLayerClusters", "timeLayerCluster"));
201  desc.add<double>("minPtToSaveHits", 0.);
202  desc.add<bool>("saveHitsPlusPi", true);
203  desc.add<bool>("saveHitsPlusHalfPi", true);
204  desc.add<std::vector<double>>("recHitCountThresholds", std::vector{0., 0.5, 1.0, 1.5, 2.0});
205  std::vector<edm::ParameterSet> ecalDefaults(2);
206  edm::ParameterSetDescription tokenLabelDesc;
207  tokenLabelDesc.add<edm::InputTag>("src", edm::InputTag(""));
208  tokenLabelDesc.add<std::string>("label", "");
209  std::vector<edm::ParameterSet> hgcalDefaults(3);
210  hgcalDefaults[0].addParameter("src", edm::InputTag("HGCalRecHit", "HGCEERecHits"));
211  hgcalDefaults[0].addParameter("label", std::string("HGCEERecHits"));
212  hgcalDefaults[1].addParameter("src", edm::InputTag("HGCalRecHit", "HGCHEFRecHits"));
213  hgcalDefaults[1].addParameter("label", std::string("HGCHEFRecHits"));
214  hgcalDefaults[2].addParameter("src", edm::InputTag("HGCalRecHit", "HGCHEBRecHits"));
215  hgcalDefaults[2].addParameter("label", std::string("HGCHEBRecHits"));
216  desc.addVPSet("hgcal", tokenLabelDesc, hgcalDefaults);
217  descriptions.add(("hltEgammaHLTPhase2ExtraProducer"), desc);
218 }
219 
221  edm::Event& event,
222  const edm::EventSetup& eventSetup) const {
223  auto egTrigObjs = event.getHandle(tokens_.egTrigObjs);
224 
225  auto trkParts = event.getHandle(tokens_.trkParts);
226  auto l1trks = event.getHandle(tokens_.l1Trks);
227  auto l1TrkToTrkPartMap = event.getHandle(tokens_.l1TrkToTrkPartMap);
228 
229  edm::ESHandle<CaloGeometry> caloGeomHandle;
230  eventSetup.get<CaloGeometryRecord>().get(caloGeomHandle);
231  for (const auto& tokenLabel : tokens_.hgcal) {
232  auto handle = event.getHandle(tokenLabel.first);
233  auto recHits = filterRecHits(*egTrigObjs, handle, *caloGeomHandle);
234  event.put(std::move(recHits), tokenLabel.second);
235  }
236  auto storeCountRecHits = [&event](const auto& tokenLabels, const auto& thresholds, const std::string& prefixLabel) {
237  for (const auto& tokenLabel : tokenLabels) {
238  auto handle = event.getHandle(tokenLabel.first);
239  auto count = countRecHits(handle, thresholds);
240  for (size_t thresNr = 0; thresNr < thresholds.size(); thresNr++) {
241  const auto& thres = thresholds[thresNr];
242  event.put(std::move(count[thresNr]),
243  prefixLabel + tokenLabel.second + "Thres" + convertToProdNameStr(thres) + "GeV");
244  }
245  }
246  };
247  storeCountRecHits(tokens_.hgcal, recHitCountThresholds_, "countHgcalRecHits");
248 
249  auto hgcalLayerClusters = event.getHandle(tokens_.hgcalLayerClusters);
250  auto hgcalLayerClustersTime = event.getHandle(tokens_.hgcalLayerClustersTime);
251  std::vector<edm::Ref<reco::CaloClusterCollection>> orgHGCalLayerClusterRefs;
252  auto hgcalLayerClustersFiltered = filterObjs(*egTrigObjs, hgcalLayerClusters, orgHGCalLayerClusterRefs);
253  std::vector<std::pair<float, float>> timesFiltered;
254  timesFiltered.reserve(orgHGCalLayerClusterRefs.size());
255  for (auto& clusRef : orgHGCalLayerClusterRefs) {
256  timesFiltered.push_back((*hgcalLayerClustersTime)[clusRef]);
257  }
258  auto hgcalLayerClustersFilteredHandle = event.put(std::move(hgcalLayerClustersFiltered), "hgcalLayerClusters");
259  event.put(makeValueMap(hgcalLayerClustersFilteredHandle, timesFiltered), "hgcalLayerClustersTime");
260 
261  std::vector<edm::Ref<L1TrackCollection>> orgL1TrkRefs;
262  auto l1TrksFiltered = filterObjs(*egTrigObjs, l1trks, orgL1TrkRefs);
263  std::vector<edm::Ref<TrackingParticleCollection>> orgTPRefs;
264  auto trkPartsFiltered = filterObjs(*egTrigObjs, trkParts, orgTPRefs);
265 
266  //meh should make this edm::Ref<T>::key_type
267  std::unordered_map<size_t, size_t> orgTPIndxToNewIndx;
268  for (size_t refNr = 0; refNr < orgTPRefs.size(); refNr++) {
269  orgTPIndxToNewIndx.insert(std::make_pair(orgTPRefs[refNr].key(), refNr));
270  }
271 
272  edm::OrphanHandle<L1TrackCollection> l1TrksFiltHandle = event.put(std::move(l1TrksFiltered));
273  edm::OrphanHandle<TrackingParticleCollection> trkPartsFiltHandle = event.put(std::move(trkPartsFiltered));
274 
275  auto l1TrkExtraColl = std::make_unique<L1TrackTruthPairCollection>();
276 
277  for (size_t l1TrkNr = 0; l1TrkNr < orgL1TrkRefs.size(); l1TrkNr++) {
278  auto orgTrkRef = orgL1TrkRefs[l1TrkNr];
279  auto orgTrkPtr = edm::refToPtr(orgTrkRef);
280  int flags = 0;
281  if (l1TrkToTrkPartMap->isGenuine(orgTrkPtr))
283  if (l1TrkToTrkPartMap->isLooselyGenuine(orgTrkPtr))
285  if (l1TrkToTrkPartMap->isCombinatoric(orgTrkPtr))
287  if (l1TrkToTrkPartMap->isUnknown(orgTrkPtr))
289 
290  auto orgTPRef = l1TrkToTrkPartMap->findTrackingParticlePtr(orgTrkPtr);
291  auto getNewTPRef = [&orgTPIndxToNewIndx, &orgTPRef, &trkPartsFiltHandle]() {
292  auto newIndexPair = orgTPIndxToNewIndx.find(orgTPRef.key());
293  if (newIndexPair != orgTPIndxToNewIndx.end()) {
294  return edm::Ref<TrackingParticleCollection>(trkPartsFiltHandle, newIndexPair->second);
295  } else
296  return edm::Ref<TrackingParticleCollection>(trkPartsFiltHandle.id());
297  };
298  auto newTPRef = getNewTPRef();
299  edm::Ref<L1TrackCollection> newL1TrkRef(l1TrksFiltHandle, l1TrkNr);
300 
301  L1TrackTruthPair l1TrkExtra(newL1TrkRef, newTPRef, flags);
302  l1TrkExtraColl->push_back(l1TrkExtra);
303  }
304  event.put(std::move(l1TrkExtraColl));
305 }
306 
307 template <typename CollType, typename RefType>
310  std::vector<RefType>& orgRefs,
311  float maxDR2) const {
312  auto filteredObjs = std::make_unique<CollType>();
313  orgRefs.clear();
314  if (!objs.isValid())
315  return filteredObjs;
316 
317  //so because each egamma object can have multiple eta/phi pairs
318  //easier to just make a temp vector and then copy that in with the +pi and +pi/2
319  std::vector<std::pair<float, float>> etaPhisTmp;
320  for (const auto& egTrigObj : egTrigObjs) {
321  if (egTrigObj.pt() >= minPtToSaveHits_) {
322  etaPhisTmp.push_back({egTrigObj.eta(), egTrigObj.phi()});
323  //also save the eta /phi of all gsf tracks with the object
324  for (const auto& gsfTrk : egTrigObj.gsfTracks()) {
325  etaPhisTmp.push_back({gsfTrk->eta(), gsfTrk->phi()});
326  }
327  }
328  }
329  std::vector<std::pair<float, float>> etaPhis;
330  for (const auto& etaPhi : etaPhisTmp) {
331  etaPhis.push_back(etaPhi);
332  if (saveHitsPlusPi_)
333  etaPhis.push_back({etaPhi.first, etaPhi.second + 3.14159});
335  etaPhis.push_back({etaPhi.first, etaPhi.second + 3.14159 / 2.});
336  }
337 
338  auto deltaR2Match = [&etaPhis, &maxDR2](float eta, float phi) {
339  for (auto& etaPhi : etaPhis) {
340  if (reco::deltaR2(eta, phi, etaPhi.first, etaPhi.second) < maxDR2)
341  return true;
342  }
343  return false;
344  };
345 
346  for (size_t objNr = 0; objNr < objs->size(); objNr++) {
347  RefType ref(objs, objNr);
348  if (deltaR2Match(ref->eta(), ref->phi())) {
349  filteredObjs->push_back(*ref);
350  orgRefs.push_back(ref);
351  }
352  }
353  return filteredObjs;
354 }
355 
356 template <typename RecHitCollection>
357 std::unique_ptr<RecHitCollection> EgammaHLTPhase2ExtraProducer::filterRecHits(
358  const trigger::EgammaObjectCollection& egTrigObjs,
360  const CaloGeometry& geom,
361  float maxDR2) const {
362  auto filteredHits = std::make_unique<RecHitCollection>();
363  if (!recHits.isValid())
364  return filteredHits;
365 
366  std::vector<std::pair<float, float>> etaPhis;
367  for (const auto& egTrigObj : egTrigObjs) {
368  if (egTrigObj.pt() >= minPtToSaveHits_) {
369  etaPhis.push_back({egTrigObj.eta(), egTrigObj.phi()});
370  if (saveHitsPlusPi_)
371  etaPhis.push_back({egTrigObj.eta(), egTrigObj.phi() + 3.14159});
373  etaPhis.push_back({egTrigObj.eta(), egTrigObj.phi() + 3.14159 / 2.});
374  }
375  }
376  auto deltaR2Match = [&etaPhis, &maxDR2](const GlobalPoint& pos) {
377  float eta = pos.eta();
378  float phi = pos.phi();
379  for (auto& etaPhi : etaPhis) {
380  if (reco::deltaR2(eta, phi, etaPhi.first, etaPhi.second) < maxDR2)
381  return true;
382  }
383  return false;
384  };
385 
386  for (auto& hit : *recHits) {
387  const CaloSubdetectorGeometry* subDetGeom = geom.getSubdetectorGeometry(hit.id());
388  if (subDetGeom) {
389  auto cellGeom = subDetGeom->getGeometry(hit.id());
390  if (deltaR2Match(cellGeom->getPosition()))
391  filteredHits->push_back(hit);
392  } else {
393  throw cms::Exception("GeomError") << "could not get geometry for det id " << hit.id().rawId();
394  }
395  }
396  return filteredHits;
397 }
398 
L1TrackTruthPair.h
EgammaHLTPhase2ExtraProducer::recHitCountThresholds_
std::vector< double > recHitCountThresholds_
Definition: EgammaHLTPhase2ExtraProducer.cc:161
ConfigurationDescriptions.h
EgammaHLTPhase2ExtraProducer::saveHitsPlusHalfPi_
bool saveHitsPlusHalfPi_
Definition: EgammaHLTPhase2ExtraProducer.cc:160
class-composition.H
H
Definition: class-composition.py:31
edm::StreamID
Definition: StreamID.h:30
alignBH_cfg.fixed
fixed
Definition: alignBH_cfg.py:54
electrons_cff.bool
bool
Definition: electrons_cff.py:366
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
hit::id
unsigned int id
Definition: SiStripHitEffFromCalibTree.cc:92
particleFlowZeroSuppressionECAL_cff.thresholds
thresholds
Definition: particleFlowZeroSuppressionECAL_cff.py:31
EgammaHLTPhase2ExtraProducer::tokens_
const Tokens tokens_
Definition: EgammaHLTPhase2ExtraProducer.cc:156
ESHandle.h
EgammaHLTPhase2ExtraProducer::makeValueMap
static std::unique_ptr< edm::ValueMap< T > > makeValueMap(const H &handle, const std::vector< T > &values)
Definition: EgammaHLTPhase2ExtraProducer.cc:148
patZpeak.handle
handle
Definition: patZpeak.py:23
EgammaHLTPhase2ExtraProducer::filterObjs
std::unique_ptr< CollType > filterObjs(const trigger::EgammaObjectCollection &egTrigObjs, const edm::Handle< CollType > &objs, std::vector< RefType > &orgRefs, float maxDR2=0.4 *0.4) const
Definition: EgammaHLTPhase2ExtraProducer.cc:308
edm::EDGetTokenT< trigger::EgammaObjectCollection >
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
EgammaHLTPhase2ExtraProducer::Tokens::l1TrkToTrkPartMap
edm::EDGetTokenT< TTTrackAssociationMap< Ref_Phase2TrackerDigi_ > > l1TrkToTrkPartMap
Definition: EgammaHLTPhase2ExtraProducer.cc:110
TTTrackTruthPair::StatusFlags::IsLooselyGenuine
Definition: TTTrackTruthPair.h:15
pos
Definition: PixelAliasList.h:18
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89281
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
EgammaHLTPhase2ExtraProducer::Tokens::hgcal
std::vector< std::pair< edm::EDGetTokenT< HGCRecHitCollection >, std::string > > hgcal
Definition: EgammaHLTPhase2ExtraProducer.cc:113
trigger::EgammaObjectCollection
std::vector< EgammaObject > EgammaObjectCollection
Definition: EgammaObjectFwd.h:10
edm::EDConsumerBase::consumesCollector
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
Definition: EDConsumerBase.cc:47
EgammaHLTPhase2ExtraProducer::~EgammaHLTPhase2ExtraProducer
~EgammaHLTPhase2ExtraProducer() override
Definition: EgammaHLTPhase2ExtraProducer.cc:85
EgammaHLTPhase2ExtraProducer::Tokens::setToken
static void setToken(std::vector< edm::EDGetTokenT< T >> &tokens, edm::ConsumesCollector &cc, const edm::ParameterSet &pset, const std::string &tagname)
Definition: EgammaHLTPhase2ExtraProducer.cc:123
TTTrackTruthPair::StatusFlags::IsGenuine
Definition: TTTrackTruthPair.h:15
edm::Handle
Definition: AssociativeIterator.h:50
rpcPointValidation_cfi.recHit
recHit
Definition: rpcPointValidation_cfi.py:7
hgcal
Definition: EgammaPCAHelper.h:31
edm::Ref< TrackingParticleCollection >
edm::refToPtr
Ptr< typename C::value_type > refToPtr(Ref< C, typename C::value_type, refhelper::FindUsingAdvance< C, typename C::value_type > > const &ref)
Definition: RefToPtr.h:18
MakerMacros.h
CaloGeometry
Definition: CaloGeometry.h:21
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
HGCRecHit.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
EgammaHLTPhase2ExtraProducer::saveHitsPlusPi_
bool saveHitsPlusPi_
Definition: EgammaHLTPhase2ExtraProducer.cc:159
EgammaHLTPhase2ExtraProducer::Tokens
Definition: EgammaHLTPhase2ExtraProducer.cc:106
PVValHelper::eta
Definition: PVValidationHelpers.h:70
contentValuesCheck.values
values
Definition: contentValuesCheck.py:38
EgammaHLTPhase2ExtraProducer::EgammaHLTPhase2ExtraProducer
EgammaHLTPhase2ExtraProducer(const edm::ParameterSet &pset)
Definition: EgammaHLTPhase2ExtraProducer.cc:174
edm::ESHandle< CaloGeometry >
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
submitPVResolutionJobs.count
count
Definition: submitPVResolutionJobs.py:352
HLTMuonOfflineAnalyzer_cfi.inputTags
inputTags
All input tags are specified in this pset for convenience.
Definition: HLTMuonOfflineAnalyzer_cfi.py:82
Point3DBase< float, GlobalTag >
ParameterSetDescription.h
EgammaHLTPhase2ExtraProducer::Tokens::setToken
static void setToken(std::vector< std::pair< edm::EDGetTokenT< T >, std::string >> &tokens, edm::ConsumesCollector &cc, const edm::ParameterSet &pset, const std::string &tagname)
Definition: EgammaHLTPhase2ExtraProducer.cc:134
edm::global::EDProducer
Definition: EDProducer.h:32
CaloGeometryRecord.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EgammaHLTPhase2ExtraProducer::Tokens::hgcalLayerClusters
edm::EDGetTokenT< reco::CaloClusterCollection > hgcalLayerClusters
Definition: EgammaHLTPhase2ExtraProducer.cc:111
EgammaHLTPhase2ExtraProducer::produce
void produce(edm::StreamID streamID, edm::Event &event, const edm::EventSetup &eventSetup) const override
Definition: EgammaHLTPhase2ExtraProducer.cc:220
FastTrackerRecHitMaskProducer_cfi.recHits
recHits
Definition: FastTrackerRecHitMaskProducer_cfi.py:8
CaloSubdetectorGeometry.h
common_cff.precision
precision
Definition: common_cff.py:44
HGCRecHitCollections.h
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
deltaR.h
EgammaHLTPhase2ExtraProducer::Tokens::hgcalLayerClustersTime
edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > hgcalLayerClustersTime
Definition: EgammaHLTPhase2ExtraProducer.cc:112
trigObjTnPSource_cfi.filler
filler
Definition: trigObjTnPSource_cfi.py:21
reco::deltaR2
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
edmPickEvents.event
event
Definition: edmPickEvents.py:273
RefToPtr.h
EgammaHLTPhase2ExtraProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: EgammaHLTPhase2ExtraProducer.cc:193
GsfTrack.h
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
EgammaObjectFwd.h
edm::EventSetup
Definition: EventSetup.h:58
get
#define get
cc
createPayload.tagname
tagname
Definition: createPayload.py:183
EgammaObject.h
ValueMap.h
TTTrackTruthPair
Definition: TTTrackTruthPair.h:12
DDAxes::phi
edm::OrphanHandleBase::id
ProductID id() const
Definition: OrphanHandleBase.cc:6
TrackingParticle.h
EgammaHLTPhase2ExtraProducer::Tokens::setToken
static void setToken(edm::EDGetTokenT< T > &token, edm::ConsumesCollector &cc, const edm::ParameterSet &pset, const std::string &tagname)
Definition: EgammaHLTPhase2ExtraProducer.cc:116
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
EgammaHLTPhase2ExtraProducer::minPtToSaveHits_
float minPtToSaveHits_
Definition: EgammaHLTPhase2ExtraProducer.cc:158
heppy_batch.val
val
Definition: heppy_batch.py:351
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
edm::OrphanHandle
Definition: EDProductfwd.h:39
EgammaHLTPhase2ExtraProducer::Tokens::trkParts
edm::EDGetTokenT< TrackingParticleCollection > trkParts
Definition: EgammaHLTPhase2ExtraProducer.cc:109
GsfTrackFwd.h
SuperClusterFwd.h
GeomDetEnumerators::subDetGeom
constexpr SubDetector subDetGeom[21]
Definition: GeomDetEnumerators.h:40
TrackingParticleFwd.h
TTTrackAssociationMap.h
EgammaHLTPhase2ExtraProducer::Tokens::l1Trks
edm::EDGetTokenT< L1TrackCollection > l1Trks
Definition: EgammaHLTPhase2ExtraProducer.cc:108
T
long double T
Definition: Basic3DVectorLD.h:48
SuperCluster.h
Exception
Definition: hltDiff.cc:245
EgammaHLTPhase2ExtraProducer::filterRecHits
std::unique_ptr< RecHitCollection > filterRecHits(const trigger::EgammaObjectCollection &egTrigObjs, const edm::Handle< RecHitCollection > &recHits, const CaloGeometry &geom, float maxDR2=0.4 *0.4) const
Definition: EgammaHLTPhase2ExtraProducer.cc:357
CaloGeometry.h
dqmiodumpmetadata.counts
counts
Definition: dqmiodumpmetadata.py:25
EventSetup.h
EgammaHLTPhase2ExtraProducer
Definition: EgammaHLTPhase2ExtraProducer.cc:82
L1Track.h
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
EgammaHLTPhase2ExtraProducer::Tokens::egTrigObjs
edm::EDGetTokenT< trigger::EgammaObjectCollection > egTrigObjs
Definition: EgammaHLTPhase2ExtraProducer.cc:107
EgammaHLTPhase2ExtraProducer::Tokens::Tokens
Tokens(const edm::ParameterSet &pset, edm::ConsumesCollector &&cc)
Definition: EgammaHLTPhase2ExtraProducer.cc:164
HLTEGTnPMonitor_cfi.objs
objs
Definition: HLTEGTnPMonitor_cfi.py:1018
ConsumesCollector.h
edm::helper::Filler
Definition: ValueMap.h:22
ParameterSet.h
EDProducer.h
event
Definition: event.py:1
HLT_FULL_cff.flags
flags
Definition: HLT_FULL_cff.py:13150
edm::Event
Definition: Event.h:73
crabWrapper.key
key
Definition: crabWrapper.py:19
TTTrackTruthPair::StatusFlags::IsUnknown
Definition: TTTrackTruthPair.h:15
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
label
const char * label
Definition: PFTauDecayModeTools.cc:11
hit
Definition: SiStripHitEffFromCalibTree.cc:88
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
TTTrackTruthPair::StatusFlags::IsCombinatoric
Definition: TTTrackTruthPair.h:15
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316
hgcalLayerClusters_cff.hgcalLayerClusters
hgcalLayerClusters
Definition: hgcalLayerClusters_cff.py:11