CMS 3D CMS Logo

EgammaHLTPhase2ExtraProducer.cc
Go to the documentation of this file.
1 
10 
24 
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>
123  static void setToken(std::vector<edm::EDGetTokenT<T>>& tokens,
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:372
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
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:71
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
deltaR.h
MakerMacros.h
CaloGeometry
Definition: CaloGeometry.h:21
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
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:69
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
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
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
HGCRecHitCollections.h
edm::ParameterSet
Definition: ParameterSet.h:36
Event.h
edm::ParameterSetDescription::addVPSet
ParameterDescriptionBase * addVPSet(U const &iLabel, ParameterSetDescription const &validator, std::vector< ParameterSet > const &defaults)
Definition: ParameterSetDescription.h:149
EgammaHLTPhase2ExtraProducer::Tokens::hgcalLayerClustersTime
edm::EDGetTokenT< edm::ValueMap< std::pair< float, float > > > hgcalLayerClustersTime
Definition: EgammaHLTPhase2ExtraProducer.cc:112
KineDebug3::count
void count()
Definition: KinematicConstrainedVertexUpdatorT.h:21
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
RefToPtr.h
EgammaHLTPhase2ExtraProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: EgammaHLTPhase2ExtraProducer.cc:193
GsfTrack.h
EgammaObjectFwd.h
edm::EventSetup
Definition: EventSetup.h:57
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
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:246
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
edm::Event
Definition: Event.h:73
crabWrapper.key
key
Definition: crabWrapper.py:19
event
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of "!*" before the partial wildcard feature was incorporated). The per-event "cost" of each negative criterion with multiple relevant triggers is about the same as ! *was in the past
TTTrackTruthPair::StatusFlags::IsUnknown
Definition: TTTrackTruthPair.h:15
HLT_2018_cff.flags
flags
Definition: HLT_2018_cff.py:11758
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
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