CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
TriggerObjectTableProducer Class Reference
Inheritance diagram for TriggerObjectTableProducer:
edm::stream::EDProducer<>

Classes

struct  SelectedObject
 

Public Member Functions

 TriggerObjectTableProducer (const edm::ParameterSet &iConfig)
 
 ~TriggerObjectTableProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Member Functions

void produce (edm::Event &, edm::EventSetup const &) override
 

Private Attributes

std::string bitsDoc_
 
std::string idDoc_
 
edm::EDGetTokenT< l1t::EGammaBxCollectionl1EG_
 
edm::EDGetTokenT< l1t::JetBxCollectionl1Jet_
 
edm::EDGetTokenT< l1t::MuonBxCollectionl1Muon_
 
edm::EDGetTokenT< l1t::EtSumBxCollectionl1Sum_
 
edm::EDGetTokenT< l1t::TauBxCollectionl1Tau_
 
std::string name_
 
std::vector< SelectedObjectsels_
 
edm::EDGetTokenT< std::vector< pat::TriggerObjectStandAlone > > src_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 27 of file TriggerObjectTableProducer.cc.

Constructor & Destructor Documentation

◆ TriggerObjectTableProducer()

TriggerObjectTableProducer::TriggerObjectTableProducer ( const edm::ParameterSet iConfig)
inlineexplicit

Definition at line 29 of file TriggerObjectTableProducer.cc.

30  : name_(iConfig.getParameter<std::string>("name")),
31  src_(consumes<std::vector<pat::TriggerObjectStandAlone>>(iConfig.getParameter<edm::InputTag>("src"))),
32  l1EG_(consumes<l1t::EGammaBxCollection>(iConfig.getParameter<edm::InputTag>("l1EG"))),
33  l1Sum_(consumes<l1t::EtSumBxCollection>(iConfig.getParameter<edm::InputTag>("l1Sum"))),
34  l1Jet_(consumes<l1t::JetBxCollection>(iConfig.getParameter<edm::InputTag>("l1Jet"))),
35  l1Muon_(consumes<l1t::MuonBxCollection>(iConfig.getParameter<edm::InputTag>("l1Muon"))),
36  l1Tau_(consumes<l1t::TauBxCollection>(iConfig.getParameter<edm::InputTag>("l1Tau"))) {
37  std::vector<edm::ParameterSet> selPSets = iConfig.getParameter<std::vector<edm::ParameterSet>>("selections");
38  sels_.reserve(selPSets.size());
39  std::stringstream idstr, qualitystr;
40  idstr << "ID of the object: ";
41  for (auto &pset : selPSets) {
42  sels_.emplace_back(pset);
43  idstr << sels_.back().id << " = " << sels_.back().name;
44  if (sels_.size() < selPSets.size())
45  idstr << ", ";
46  if (!sels_.back().qualityBitsDoc.empty()) {
47  qualitystr << sels_.back().qualityBitsDoc << " for " << sels_.back().name << "; ";
48  }
49  }
50  idDoc_ = idstr.str();
51  bitsDoc_ = qualitystr.str();
52 
53  produces<nanoaod::FlatTable>();
54  }

References bitsDoc_, edm::ParameterSet::getParameter(), idDoc_, muonDTDigis_cfi::pset, and sels_.

◆ ~TriggerObjectTableProducer()

TriggerObjectTableProducer::~TriggerObjectTableProducer ( )
inlineoverride

Definition at line 56 of file TriggerObjectTableProducer.cc.

56 {}

Member Function Documentation

◆ produce()

void TriggerObjectTableProducer::produce ( edm::Event iEvent,
edm::EventSetup const &  iSetup 
)
overrideprivate

Definition at line 115 of file TriggerObjectTableProducer.cc.

115  {
117  iEvent.getByToken(src_, src);
118 
119  std::vector<std::pair<const pat::TriggerObjectStandAlone *, const SelectedObject *>> selected;
120  for (const auto &obj : *src) {
121  for (const auto &sel : sels_) {
122  if (sel.match(obj) && (sel.skipObjectsNotPassingQualityBits ? (int(sel.qualityBits(obj)) > 0) : true)) {
123  selected.emplace_back(&obj, &sel);
124  break;
125  }
126  }
127  }
128 
129  // Self-cleaning
130  std::map<const pat::TriggerObjectStandAlone *, int> selected_bits;
131  for (unsigned int i = 0; i < selected.size(); ++i) {
132  const auto &obj = *selected[i].first;
133  const auto &sel = *selected[i].second;
134  selected_bits[&obj] = int(sel.qualityBits(obj));
135 
136  for (unsigned int j = 0; j < i; ++j) {
137  const auto &obj2 = *selected[j].first;
138  const auto &sel2 = *selected[j].second;
139  if (sel.id == sel2.id && abs(obj.pt() - obj2.pt()) < 1e-6 && deltaR2(obj, obj2) < 1e-6) {
140  selected_bits[&obj2] |= selected_bits[&obj]; //Keep filters from all the objects
141  selected.erase(selected.begin() + i);
142  i--;
143  }
144  }
145  }
146 
152  iEvent.getByToken(l1EG_, l1EG);
153  iEvent.getByToken(l1Sum_, l1Sum);
154  iEvent.getByToken(l1Jet_, l1Jet);
155  iEvent.getByToken(l1Muon_, l1Muon);
156  iEvent.getByToken(l1Tau_, l1Tau);
157 
158  std::vector<pair<pat::TriggerObjectStandAlone, int>> l1Objects;
159 
160  for (l1t::EGammaBxCollection::const_iterator it = l1EG->begin(0); it != l1EG->end(0); it++) {
161  pat::TriggerObjectStandAlone l1obj(it->p4());
162  l1obj.setCollection("L1EG");
163  l1obj.addTriggerObjectType(trigger::TriggerL1EG);
164  l1Objects.emplace_back(l1obj, it->hwIso());
165  }
166 
167  for (l1t::EtSumBxCollection::const_iterator it = l1Sum->begin(0); it != l1Sum->end(0); it++) {
168  pat::TriggerObjectStandAlone l1obj(it->p4());
169 
170  switch (it->getType()) {
172  l1obj.addTriggerObjectType(trigger::TriggerL1ETM);
173  l1obj.setCollection("L1ETM");
174  break;
175 
177  l1obj.addTriggerObjectType(trigger::TriggerL1ETM);
178  l1obj.setCollection("L1ETMHF");
179  break;
180 
182  l1obj.addTriggerObjectType(trigger::TriggerL1ETT);
183  l1obj.setCollection("L1ETT");
184  break;
185 
187  l1obj.addTriggerObjectType(trigger::TriggerL1ETT);
188  l1obj.setCollection("L1ETEm");
189  break;
190 
192  l1obj.addTriggerObjectType(trigger::TriggerL1HTT);
193  l1obj.setCollection("L1HTT");
194  break;
195 
197  l1obj.addTriggerObjectType(trigger::TriggerL1HTT);
198  l1obj.setCollection("L1HTTHF");
199  break;
200 
202  l1obj.addTriggerObjectType(trigger::TriggerL1HTM);
203  l1obj.setCollection("L1HTM");
204  break;
205 
207  l1obj.addTriggerObjectType(trigger::TriggerL1HTM);
208  l1obj.setCollection("L1HTMHF");
209  break;
210 
211  default:
212  continue;
213  }
214 
215  l1Objects.emplace_back(l1obj, it->hwIso());
216  }
217 
218  for (l1t::JetBxCollection::const_iterator it = l1Jet->begin(0); it != l1Jet->end(0); it++) {
219  pat::TriggerObjectStandAlone l1obj(it->p4());
220  l1obj.setCollection("L1Jet");
221  l1obj.addTriggerObjectType(trigger::TriggerL1Jet);
222  l1Objects.emplace_back(l1obj, it->hwIso());
223  }
224 
225  for (l1t::MuonBxCollection::const_iterator it = l1Muon->begin(0); it != l1Muon->end(0); it++) {
226  pat::TriggerObjectStandAlone l1obj(it->p4());
227  l1obj.setCollection("L1Mu");
228  l1obj.addTriggerObjectType(trigger::TriggerL1Mu);
229  l1obj.setCharge(it->charge());
230  l1Objects.emplace_back(l1obj, it->hwIso());
231  }
232 
233  for (l1t::TauBxCollection::const_iterator it = l1Tau->begin(0); it != l1Tau->end(0); it++) {
234  pat::TriggerObjectStandAlone l1obj(it->p4());
235  l1obj.setCollection("L1Tau");
236  l1obj.addTriggerObjectType(trigger::TriggerL1Tau);
237  l1Objects.emplace_back(l1obj, it->hwIso());
238  }
239 
240  unsigned int nobj = selected.size();
241  std::vector<float> pt(nobj, 0), eta(nobj, 0), phi(nobj, 0), l1pt(nobj, 0), l1pt_2(nobj, 0), l2pt(nobj, 0);
242  std::vector<int> id(nobj, 0), bits(nobj, 0), l1iso(nobj, 0), l1charge(nobj, 0);
243  for (unsigned int i = 0; i < nobj; ++i) {
244  const auto &obj = *selected[i].first;
245  const auto &sel = *selected[i].second;
246  pt[i] = obj.pt();
247  eta[i] = obj.eta();
248  phi[i] = obj.phi();
249  id[i] = sel.id;
250  bits[i] = selected_bits[&obj];
251  if (sel.l1DR2 > 0) {
252  float best = sel.l1DR2;
253  for (const auto &l1obj : l1Objects) {
254  const auto &seed = l1obj.first;
255  float dr2 = deltaR2(seed, obj);
256  if (dr2 < best && sel.l1cut(seed)) {
257  l1pt[i] = seed.pt();
258  l1iso[i] = l1obj.second;
259  l1charge[i] = seed.charge();
260  }
261  }
262  }
263  if (sel.l1DR2_2 > 0) {
264  float best = sel.l1DR2_2;
265  for (const auto &l1obj : l1Objects) {
266  const auto &seed = l1obj.first;
267  float dr2 = deltaR2(seed, obj);
268  if (dr2 < best && sel.l1cut_2(seed)) {
269  l1pt_2[i] = seed.pt();
270  }
271  }
272  }
273  if (sel.l2DR2 > 0) {
274  float best = sel.l2DR2;
275  for (const auto &seed : *src) {
276  float dr2 = deltaR2(seed, obj);
277  if (dr2 < best && sel.l2cut(seed)) {
278  l2pt[i] = seed.pt();
279  }
280  }
281  }
282  }
283 
284  auto tab = std::make_unique<nanoaod::FlatTable>(nobj, name_, false, false);
285  tab->addColumn<int>("id", id, idDoc_);
286  tab->addColumn<float>("pt", pt, "pt", 12);
287  tab->addColumn<float>("eta", eta, "eta", 12);
288  tab->addColumn<float>("phi", phi, "phi", 12);
289  tab->addColumn<float>("l1pt", l1pt, "pt of associated L1 seed", 8);
290  tab->addColumn<int>("l1iso", l1iso, "iso of associated L1 seed");
291  tab->addColumn<int>("l1charge", l1charge, "charge of associated L1 seed");
292  tab->addColumn<float>("l1pt_2", l1pt_2, "pt of associated secondary L1 seed", 8);
293  tab->addColumn<float>("l2pt", l2pt, "pt of associated 'L2' seed (i.e. HLT before tracking/PF)", 10);
294  tab->addColumn<int>("filterBits", bits, "extra bits of associated information: " + bitsDoc_);
295  iEvent.put(std::move(tab));
296 }

References funct::abs(), bitsDoc_, HLTMuonOfflineAnalyzer_cfi::deltaR2, MillePedeFileConverter_cfg::e, PVValHelper::eta, mps_fire::i, triggerObjects_cff::id, idDoc_, iEvent, createfilelist::int, dqmiolumiharvest::j, L1Analysis::kMissingEt, L1Analysis::kMissingEtHF, L1Analysis::kMissingHt, L1Analysis::kMissingHtHF, L1Analysis::kTotalEt, L1Analysis::kTotalEtEm, L1Analysis::kTotalHt, L1Analysis::kTotalHtHF, triggerObjects_cff::l1EG, l1EG_, triggerObjects_cff::l1Jet, l1Jet_, triggerObjects_cff::l1Muon, l1Muon_, triggerObjects_cff::l1Sum, l1Sum_, triggerObjects_cff::l1Tau, l1Tau_, eostools::move(), name_, getGTfromDQMFile::obj, phi, DiDispStaMuonMonitor_cfi::pt, fileCollector::seed, EgammaValidation_Wenu_cff::sel, sels_, pat::TriggerObject::setCollection(), TrackRefitter_38T_cff::src, src_, trigger::TriggerL1EG, trigger::TriggerL1ETM, trigger::TriggerL1ETT, trigger::TriggerL1HTM, trigger::TriggerL1HTT, trigger::TriggerL1Jet, trigger::TriggerL1Mu, and trigger::TriggerL1Tau.

Member Data Documentation

◆ bitsDoc_

std::string TriggerObjectTableProducer::bitsDoc_
private

Definition at line 63 of file TriggerObjectTableProducer.cc.

Referenced by produce(), and TriggerObjectTableProducer().

◆ idDoc_

std::string TriggerObjectTableProducer::idDoc_
private

Definition at line 63 of file TriggerObjectTableProducer.cc.

Referenced by produce(), and TriggerObjectTableProducer().

◆ l1EG_

edm::EDGetTokenT<l1t::EGammaBxCollection> TriggerObjectTableProducer::l1EG_
private

Definition at line 65 of file TriggerObjectTableProducer.cc.

Referenced by produce().

◆ l1Jet_

edm::EDGetTokenT<l1t::JetBxCollection> TriggerObjectTableProducer::l1Jet_
private

Definition at line 67 of file TriggerObjectTableProducer.cc.

Referenced by produce().

◆ l1Muon_

edm::EDGetTokenT<l1t::MuonBxCollection> TriggerObjectTableProducer::l1Muon_
private

Definition at line 68 of file TriggerObjectTableProducer.cc.

Referenced by produce().

◆ l1Sum_

edm::EDGetTokenT<l1t::EtSumBxCollection> TriggerObjectTableProducer::l1Sum_
private

Definition at line 66 of file TriggerObjectTableProducer.cc.

Referenced by produce().

◆ l1Tau_

edm::EDGetTokenT<l1t::TauBxCollection> TriggerObjectTableProducer::l1Tau_
private

Definition at line 69 of file TriggerObjectTableProducer.cc.

Referenced by produce().

◆ name_

std::string TriggerObjectTableProducer::name_
private

Definition at line 61 of file TriggerObjectTableProducer.cc.

Referenced by produce().

◆ sels_

std::vector<SelectedObject> TriggerObjectTableProducer::sels_
private

Definition at line 111 of file TriggerObjectTableProducer.cc.

Referenced by produce(), and TriggerObjectTableProducer().

◆ src_

edm::EDGetTokenT<std::vector<pat::TriggerObjectStandAlone> > TriggerObjectTableProducer::src_
private

Definition at line 62 of file TriggerObjectTableProducer.cc.

Referenced by produce().

L1Analysis::kMissingHtHF
Definition: L1AnalysisL1UpgradeDataFormat.h:37
triggerObjects_cff.l1Tau
l1Tau
Definition: triggerObjects_cff.py:25
trigger::TriggerL1HTM
Definition: TriggerTypeDefs.h:39
mps_fire.i
i
Definition: mps_fire.py:428
TriggerObjectTableProducer::l1EG_
edm::EDGetTokenT< l1t::EGammaBxCollection > l1EG_
Definition: TriggerObjectTableProducer.cc:65
TriggerObjectTableProducer::src_
edm::EDGetTokenT< std::vector< pat::TriggerObjectStandAlone > > src_
Definition: TriggerObjectTableProducer.cc:62
triggerObjects_cff.l1EG
l1EG
Definition: triggerObjects_cff.py:21
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
pat::TriggerObjectStandAlone
Analysis-level trigger object class (stand-alone)
Definition: TriggerObjectStandAlone.h:32
BXVector::const_iterator
std::vector< T >::const_iterator const_iterator
Definition: BXVector.h:18
TriggerObjectTableProducer::l1Muon_
edm::EDGetTokenT< l1t::MuonBxCollection > l1Muon_
Definition: TriggerObjectTableProducer.cc:68
TriggerObjectTableProducer::name_
std::string name_
Definition: TriggerObjectTableProducer.cc:61
TriggerObjectTableProducer::bitsDoc_
std::string bitsDoc_
Definition: TriggerObjectTableProducer.cc:63
edm::Handle
Definition: AssociativeIterator.h:50
fileCollector.seed
seed
Definition: fileCollector.py:127
TriggerObjectTableProducer::idDoc_
std::string idDoc_
Definition: TriggerObjectTableProducer.cc:63
L1Analysis::kMissingEtHF
Definition: L1AnalysisL1UpgradeDataFormat.h:25
PVValHelper::eta
Definition: PVValidationHelpers.h:70
L1Analysis::kTotalEt
Definition: L1AnalysisL1UpgradeDataFormat.h:17
TriggerObjectTableProducer::l1Sum_
edm::EDGetTokenT< l1t::EtSumBxCollection > l1Sum_
Definition: TriggerObjectTableProducer.cc:66
triggerObjects_cff.l1Jet
l1Jet
Definition: triggerObjects_cff.py:23
getGTfromDQMFile.obj
obj
Definition: getGTfromDQMFile.py:32
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TrackRefitter_38T_cff.src
src
Definition: TrackRefitter_38T_cff.py:24
trigger::TriggerL1Tau
Definition: TriggerTypeDefs.h:49
trigger::TriggerL1Mu
enum start value shifted to 81 so as to avoid clashes with PDG codes
Definition: TriggerTypeDefs.h:30
TriggerObjectTableProducer::l1Jet_
edm::EDGetTokenT< l1t::JetBxCollection > l1Jet_
Definition: TriggerObjectTableProducer.cc:67
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
trigger::TriggerL1Jet
Definition: TriggerTypeDefs.h:48
TriggerObjectTableProducer::sels_
std::vector< SelectedObject > sels_
Definition: TriggerObjectTableProducer.cc:111
L1Analysis::kMissingHt
Definition: L1AnalysisL1UpgradeDataFormat.h:20
L1Analysis::kMissingEt
Definition: L1AnalysisL1UpgradeDataFormat.h:19
trigger::TriggerL1EG
Definition: TriggerTypeDefs.h:47
L1Analysis::kTotalHtHF
Definition: L1AnalysisL1UpgradeDataFormat.h:34
TriggerObjectTableProducer::l1Tau_
edm::EDGetTokenT< l1t::TauBxCollection > l1Tau_
Definition: TriggerObjectTableProducer.cc:69
DDAxes::phi
eostools.move
def move(src, dest)
Definition: eostools.py:511
triggerObjects_cff.l1Sum
l1Sum
Definition: triggerObjects_cff.py:22
trigger::TriggerL1HTT
Definition: TriggerTypeDefs.h:38
HLTMuonOfflineAnalyzer_cfi.deltaR2
deltaR2
Definition: HLTMuonOfflineAnalyzer_cfi.py:105
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
triggerObjects_cff.l1Muon
l1Muon
Definition: triggerObjects_cff.py:24
trigger::TriggerL1ETM
Definition: TriggerTypeDefs.h:36
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
L1Analysis::kTotalEtEm
Definition: L1AnalysisL1UpgradeDataFormat.h:33
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
EgammaValidation_Wenu_cff.sel
sel
Definition: EgammaValidation_Wenu_cff.py:33
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
L1Analysis::kTotalHt
Definition: L1AnalysisL1UpgradeDataFormat.h:18
pat::TriggerObject::setCollection
void setCollection(const std::string &collName)
Methods.
Definition: TriggerObject.h:79
trigger::TriggerL1ETT
Definition: TriggerTypeDefs.h:37
edm::InputTag
Definition: InputTag.h:15
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37