Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:04:22

0001 #ifndef HLTReco_TriggerEventWithRefs_h
0002 #define HLTReco_TriggerEventWithRefs_h
0003 
0004 /** \class trigger::TriggerEventWithRefs
0005  *
0006  *  The single EDProduct to be saved for events (RAW case)
0007  *  describing the details of the (HLT) trigger table
0008  *
0009  *
0010  *  \author Martin Grunewald
0011  *
0012  */
0013 
0014 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
0015 #include "DataFormats/HLTReco/interface/TriggerRefsCollections.h"
0016 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
0017 #include "FWCore/Utilities/interface/InputTag.h"
0018 #include "DataFormats/Common/interface/traits.h"
0019 #include <string>
0020 #include <vector>
0021 
0022 namespace trigger {
0023 
0024   /// The single EDProduct to be saved in addition for each event
0025   /// - but only in the "RAW" case: for a fraction of all events
0026 
0027   class TriggerEventWithRefs : public TriggerRefsCollections, public edm::DoNotRecordParents {
0028   public:
0029     /// Helper class: trigger objects firing a single filter
0030     class TriggerFilterObject {
0031     public:
0032       /// encoded InputTag of filter product
0033       std::string filterTag_;
0034       /// 1-after-end (std C++) indices into linearised vector of Refs
0035       /// (-> first start index is always 0)
0036       size_type photons_;
0037       size_type electrons_;
0038       size_type muons_;
0039       size_type jets_;
0040       size_type composites_;
0041       size_type basemets_;
0042       size_type calomets_;
0043       size_type pixtracks_;
0044       size_type l1em_;
0045       size_type l1muon_;
0046       size_type l1jet_;
0047       size_type l1etmiss_;
0048       size_type l1hfrings_;
0049       size_type pfjets_;
0050       size_type pftaus_;
0051       size_type pfmets_;
0052       size_type l1tmuon_;
0053       size_type l1tmuonShower_;
0054       size_type l1tegamma_;
0055       size_type l1tjet_;
0056       size_type l1ttkmuon_;
0057       size_type l1ttkele_;
0058       size_type l1ttkem_;
0059       size_type l1tpfjet_;
0060       size_type l1tpftau_;
0061       size_type l1thpspftau_;
0062       size_type l1tpftrack_;
0063       size_type l1tp2etsum_;
0064       size_type l1ttau_;
0065       size_type l1tetsum_;
0066       size_type l1tp2gtcand_;
0067 
0068       /// constructor
0069       TriggerFilterObject()
0070           : filterTag_(),
0071             photons_(0),
0072             electrons_(0),
0073             muons_(0),
0074             jets_(0),
0075             composites_(0),
0076             basemets_(0),
0077             calomets_(0),
0078             pixtracks_(0),
0079             l1em_(0),
0080             l1muon_(0),
0081             l1jet_(0),
0082             l1etmiss_(0),
0083             l1hfrings_(0),
0084             pfjets_(0),
0085             pftaus_(0),
0086             pfmets_(0),
0087             l1tmuon_(0),
0088             l1tmuonShower_(0),
0089             l1tegamma_(0),
0090             l1tjet_(0),
0091             l1ttkmuon_(0),
0092             l1ttkele_(0),
0093             l1ttkem_(0),
0094             l1tpfjet_(0),
0095             l1tpftau_(0),
0096             l1thpspftau_(0),
0097             l1tpftrack_(0),
0098             l1tp2etsum_(0),
0099             l1ttau_(0),
0100             l1tetsum_(0),
0101             l1tp2gtcand_(0) {
0102         filterTag_ = edm::InputTag().encode();
0103       }
0104       TriggerFilterObject(const edm::InputTag& filterTag,
0105                           size_type np,
0106                           size_type ne,
0107                           size_type nm,
0108                           size_type nj,
0109                           size_type nc,
0110                           size_type nB,
0111                           size_type nC,
0112                           size_type nt,
0113                           size_type l1em,
0114                           size_type l1muon,
0115                           size_type l1jet,
0116                           size_type l1etmiss,
0117                           size_type l1hfrings,
0118                           size_type pfjets,
0119                           size_type pftaus,
0120                           size_type pfmets,
0121                           size_type l1tmuon,
0122                           size_type l1tmuonShower,
0123                           size_type l1tegamma,
0124                           size_type l1tjet,
0125                           size_type l1ttkmuon,
0126                           size_type l1ttkele,
0127                           size_type l1ttkem,
0128                           size_type l1tpfjet,
0129                           size_type l1tpftau,
0130                           size_type l1thpspftau,
0131                           size_type l1tpftrack,
0132                           size_type l1tp2etsum,
0133                           size_type l1ttau,
0134                           size_type l1tetsum,
0135                           size_type l1tp2gtcand)
0136           : filterTag_(filterTag.encode()),
0137             photons_(np),
0138             electrons_(ne),
0139             muons_(nm),
0140             jets_(nj),
0141             composites_(nc),
0142             basemets_(nB),
0143             calomets_(nC),
0144             pixtracks_(nt),
0145             l1em_(l1em),
0146             l1muon_(l1muon),
0147             l1jet_(l1jet),
0148             l1etmiss_(l1etmiss),
0149             l1hfrings_(l1hfrings),
0150             pfjets_(pfjets),
0151             pftaus_(pftaus),
0152             pfmets_(pfmets),
0153             l1tmuon_(l1tmuon),
0154             l1tmuonShower_(l1tmuonShower),
0155             l1tegamma_(l1tegamma),
0156             l1tjet_(l1tjet),
0157             l1ttkmuon_(l1ttkmuon),
0158             l1ttkele_(l1ttkele),
0159             l1ttkem_(l1ttkem),
0160             l1tpfjet_(l1tpfjet),
0161             l1tpftau_(l1tpftau),
0162             l1thpspftau_(l1thpspftau),
0163             l1tpftrack_(l1tpftrack),
0164             l1tp2etsum_(l1tp2etsum),
0165             l1ttau_(l1ttau),
0166             l1tetsum_(l1tetsum),
0167             l1tp2gtcand_(l1tp2gtcand) {}
0168     };
0169 
0170     /// data members
0171   private:
0172     /// processName used to select products packed up
0173     std::string usedProcessName_;
0174     /// the filters recorded here
0175     std::vector<TriggerFilterObject> filterObjects_;
0176 
0177     /// methods
0178   public:
0179     /// constructors
0180     TriggerEventWithRefs() : TriggerRefsCollections(), usedProcessName_(), filterObjects_() {}
0181     TriggerEventWithRefs(const std::string& usedProcessName, size_type n)
0182         : TriggerRefsCollections(), usedProcessName_(usedProcessName), filterObjects_() {
0183       filterObjects_.reserve(n);
0184     }
0185 
0186     /// setters - to build EDProduct
0187     void addFilterObject(const edm::InputTag& filterTag, const TriggerFilterObjectWithRefs& tfowr) {
0188       filterObjects_.push_back(
0189 
0190           TriggerFilterObject(filterTag,
0191                               addObjects(tfowr.photonIds(), tfowr.photonRefs()),
0192                               addObjects(tfowr.electronIds(), tfowr.electronRefs()),
0193                               addObjects(tfowr.muonIds(), tfowr.muonRefs()),
0194                               addObjects(tfowr.jetIds(), tfowr.jetRefs()),
0195                               addObjects(tfowr.compositeIds(), tfowr.compositeRefs()),
0196                               addObjects(tfowr.basemetIds(), tfowr.basemetRefs()),
0197                               addObjects(tfowr.calometIds(), tfowr.calometRefs()),
0198                               addObjects(tfowr.pixtrackIds(), tfowr.pixtrackRefs()),
0199                               addObjects(tfowr.l1emIds(), tfowr.l1emRefs()),
0200                               addObjects(tfowr.l1muonIds(), tfowr.l1muonRefs()),
0201                               addObjects(tfowr.l1jetIds(), tfowr.l1jetRefs()),
0202                               addObjects(tfowr.l1etmissIds(), tfowr.l1etmissRefs()),
0203                               addObjects(tfowr.l1hfringsIds(), tfowr.l1hfringsRefs()),
0204                               addObjects(tfowr.pfjetIds(), tfowr.pfjetRefs()),
0205                               addObjects(tfowr.pftauIds(), tfowr.pftauRefs()),
0206                               addObjects(tfowr.pfmetIds(), tfowr.pfmetRefs()),
0207                               addObjects(tfowr.l1tmuonIds(), tfowr.l1tmuonRefs()),
0208                               addObjects(tfowr.l1tmuonShowerIds(), tfowr.l1tmuonShowerRefs()),
0209                               addObjects(tfowr.l1tegammaIds(), tfowr.l1tegammaRefs()),
0210                               addObjects(tfowr.l1tjetIds(), tfowr.l1tjetRefs()),
0211                               addObjects(tfowr.l1ttkmuonIds(), tfowr.l1ttkmuonRefs()),
0212                               addObjects(tfowr.l1ttkeleIds(), tfowr.l1ttkeleRefs()),
0213                               addObjects(tfowr.l1ttkemIds(), tfowr.l1ttkemRefs()),
0214                               addObjects(tfowr.l1tpfjetIds(), tfowr.l1tpfjetRefs()),
0215                               addObjects(tfowr.l1tpftauIds(), tfowr.l1tpftauRefs()),
0216                               addObjects(tfowr.l1thpspftauIds(), tfowr.l1thpspftauRefs()),
0217                               addObjects(tfowr.l1tpftrackIds(), tfowr.l1tpftrackRefs()),
0218                               addObjects(tfowr.l1tp2etsumIds(), tfowr.l1tp2etsumRefs()),
0219                               addObjects(tfowr.l1ttauIds(), tfowr.l1ttauRefs()),
0220                               addObjects(tfowr.l1tetsumIds(), tfowr.l1tetsumRefs()),
0221                               addObjects(tfowr.l1tp2gtcandIds(), tfowr.l1tp2gtcandRefs()))
0222 
0223       );
0224     }
0225 
0226     /// getters - for user access
0227     const std::string& usedProcessName() const { return usedProcessName_; }
0228 
0229     /// number of filters
0230     size_type size() const { return filterObjects_.size(); }
0231 
0232     /// tag from index
0233     const edm::InputTag filterTag(size_type filterIndex) const {
0234       return edm::InputTag(filterObjects_.at(filterIndex).filterTag_);
0235     }
0236 
0237     /// index from tag
0238     size_type filterIndex(const edm::InputTag& filterTag) const {
0239       const std::string encodedFilterTag(filterTag.encode());
0240       const size_type n(filterObjects_.size());
0241       for (size_type i = 0; i != n; ++i) {
0242         if (encodedFilterTag == filterObjects_[i].filterTag_) {
0243           return i;
0244         }
0245       }
0246       return n;
0247     }
0248 
0249     /// slices of objects for a specific filter: [begin,end[
0250 
0251     std::pair<size_type, size_type> photonSlice(size_type filter) const {
0252       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).photons_);
0253       const size_type end(filterObjects_.at(filter).photons_);
0254       return std::pair<size_type, size_type>(begin, end);
0255     }
0256 
0257     std::pair<size_type, size_type> electronSlice(size_type filter) const {
0258       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).electrons_);
0259       const size_type end(filterObjects_.at(filter).electrons_);
0260       return std::pair<size_type, size_type>(begin, end);
0261     }
0262 
0263     std::pair<size_type, size_type> muonSlice(size_type filter) const {
0264       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).muons_);
0265       const size_type end(filterObjects_.at(filter).muons_);
0266       return std::pair<size_type, size_type>(begin, end);
0267     }
0268 
0269     std::pair<size_type, size_type> jetSlice(size_type filter) const {
0270       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).jets_);
0271       const size_type end(filterObjects_.at(filter).jets_);
0272       return std::pair<size_type, size_type>(begin, end);
0273     }
0274 
0275     std::pair<size_type, size_type> compositeSlice(size_type filter) const {
0276       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).composites_);
0277       const size_type end(filterObjects_.at(filter).composites_);
0278       return std::pair<size_type, size_type>(begin, end);
0279     }
0280 
0281     std::pair<size_type, size_type> basemetSlice(size_type filter) const {
0282       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).basemets_);
0283       const size_type end(filterObjects_.at(filter).basemets_);
0284       return std::pair<size_type, size_type>(begin, end);
0285     }
0286 
0287     std::pair<size_type, size_type> calometSlice(size_type filter) const {
0288       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).calomets_);
0289       const size_type end(filterObjects_.at(filter).calomets_);
0290       return std::pair<size_type, size_type>(begin, end);
0291     }
0292 
0293     std::pair<size_type, size_type> pixtrackSlice(size_type filter) const {
0294       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).pixtracks_);
0295       const size_type end(filterObjects_.at(filter).pixtracks_);
0296       return std::pair<size_type, size_type>(begin, end);
0297     }
0298 
0299     std::pair<size_type, size_type> l1emSlice(size_type filter) const {
0300       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1em_);
0301       const size_type end(filterObjects_.at(filter).l1em_);
0302       return std::pair<size_type, size_type>(begin, end);
0303     }
0304 
0305     std::pair<size_type, size_type> l1muonSlice(size_type filter) const {
0306       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1muon_);
0307       const size_type end(filterObjects_.at(filter).l1muon_);
0308       return std::pair<size_type, size_type>(begin, end);
0309     }
0310 
0311     std::pair<size_type, size_type> l1jetSlice(size_type filter) const {
0312       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1jet_);
0313       const size_type end(filterObjects_.at(filter).l1jet_);
0314       return std::pair<size_type, size_type>(begin, end);
0315     }
0316 
0317     std::pair<size_type, size_type> l1etmissSlice(size_type filter) const {
0318       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1etmiss_);
0319       const size_type end(filterObjects_.at(filter).l1etmiss_);
0320       return std::pair<size_type, size_type>(begin, end);
0321     }
0322 
0323     std::pair<size_type, size_type> l1hfringsSlice(size_type filter) const {
0324       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1hfrings_);
0325       const size_type end(filterObjects_.at(filter).l1hfrings_);
0326       return std::pair<size_type, size_type>(begin, end);
0327     }
0328 
0329     std::pair<size_type, size_type> pfjetSlice(size_type filter) const {
0330       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).pfjets_);
0331       const size_type end(filterObjects_.at(filter).pfjets_);
0332       return std::pair<size_type, size_type>(begin, end);
0333     }
0334 
0335     std::pair<size_type, size_type> pftauSlice(size_type filter) const {
0336       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).pftaus_);
0337       const size_type end(filterObjects_.at(filter).pftaus_);
0338       return std::pair<size_type, size_type>(begin, end);
0339     }
0340 
0341     std::pair<size_type, size_type> pfmetSlice(size_type filter) const {
0342       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).pfmets_);
0343       const size_type end(filterObjects_.at(filter).pfmets_);
0344       return std::pair<size_type, size_type>(begin, end);
0345     }
0346 
0347     std::pair<size_type, size_type> l1tmuonSlice(size_type filter) const {
0348       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tmuon_);
0349       const size_type end(filterObjects_.at(filter).l1tmuon_);
0350       return std::pair<size_type, size_type>(begin, end);
0351     }
0352     std::pair<size_type, size_type> l1tmuonShowerSlice(size_type filter) const {
0353       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tmuonShower_);
0354       const size_type end(filterObjects_.at(filter).l1tmuonShower_);
0355       return std::pair<size_type, size_type>(begin, end);
0356     }
0357     std::pair<size_type, size_type> l1tegammaSlice(size_type filter) const {
0358       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tegamma_);
0359       const size_type end(filterObjects_.at(filter).l1tegamma_);
0360       return std::pair<size_type, size_type>(begin, end);
0361     }
0362     std::pair<size_type, size_type> l1tjetSlice(size_type filter) const {
0363       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tjet_);
0364       const size_type end(filterObjects_.at(filter).l1tjet_);
0365       return std::pair<size_type, size_type>(begin, end);
0366     }
0367 
0368     /* Phase-2 */
0369     std::pair<size_type, size_type> l1ttkmuonSlice(size_type filter) const {
0370       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1ttkmuon_);
0371       const size_type end(filterObjects_.at(filter).l1ttkmuon_);
0372       return std::pair<size_type, size_type>(begin, end);
0373     }
0374     std::pair<size_type, size_type> l1ttkeleSlice(size_type filter) const {
0375       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1ttkele_);
0376       const size_type end(filterObjects_.at(filter).l1ttkele_);
0377       return std::pair<size_type, size_type>(begin, end);
0378     }
0379     std::pair<size_type, size_type> l1ttkemSlice(size_type filter) const {
0380       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1ttkem_);
0381       const size_type end(filterObjects_.at(filter).l1ttkem_);
0382       return std::pair<size_type, size_type>(begin, end);
0383     }
0384     std::pair<size_type, size_type> l1tpfjetSlice(size_type filter) const {
0385       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tpfjet_);
0386       const size_type end(filterObjects_.at(filter).l1tpfjet_);
0387       return std::pair<size_type, size_type>(begin, end);
0388     }
0389     std::pair<size_type, size_type> l1tpftauSlice(size_type filter) const {
0390       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tpftau_);
0391       const size_type end(filterObjects_.at(filter).l1tpftau_);
0392       return std::pair<size_type, size_type>(begin, end);
0393     }
0394     std::pair<size_type, size_type> l1thpspftauSlice(size_type filter) const {
0395       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1thpspftau_);
0396       const size_type end(filterObjects_.at(filter).l1thpspftau_);
0397       return std::pair<size_type, size_type>(begin, end);
0398     }
0399     std::pair<size_type, size_type> l1tpftrackSlice(size_type filter) const {
0400       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tpftrack_);
0401       const size_type end(filterObjects_.at(filter).l1tpftrack_);
0402       return std::pair<size_type, size_type>(begin, end);
0403     }
0404 
0405     std::pair<size_type, size_type> l1tp2etsumSlice(size_type filter) const {
0406       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tp2etsum_);
0407       const size_type end(filterObjects_.at(filter).l1tp2etsum_);
0408       return std::pair<size_type, size_type>(begin, end);
0409     }
0410 
0411     std::pair<size_type, size_type> l1ttauSlice(size_type filter) const {
0412       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1ttau_);
0413       const size_type end(filterObjects_.at(filter).l1ttau_);
0414       return std::pair<size_type, size_type>(begin, end);
0415     }
0416 
0417     std::pair<size_type, size_type> l1tetsumSlice(size_type filter) const {
0418       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tetsum_);
0419       const size_type end(filterObjects_.at(filter).l1tetsum_);
0420       return std::pair<size_type, size_type>(begin, end);
0421     }
0422 
0423     std::pair<size_type, size_type> l1tp2gtcandSlice(size_type filter) const {
0424       const size_type begin(filter == 0 ? 0 : filterObjects_.at(filter - 1).l1tp2gtcand_);
0425       const size_type end(filterObjects_.at(filter).l1tp2gtcand_);
0426       return std::pair<size_type, size_type>(begin, end);
0427     }
0428 
0429     /// extract Ref<C>s for a specific filter and of specific physics type
0430 
0431     void getObjects(size_type filter, Vids& ids, VRphoton& photons) const {
0432       const size_type begin(photonSlice(filter).first);
0433       const size_type end(photonSlice(filter).second);
0434       TriggerRefsCollections::getObjects(ids, photons, begin, end);
0435     }
0436     void getObjects(size_type filter, int id, VRphoton& photons) const {
0437       const size_type begin(photonSlice(filter).first);
0438       const size_type end(photonSlice(filter).second);
0439       TriggerRefsCollections::getObjects(id, photons, begin, end);
0440     }
0441 
0442     void getObjects(size_type filter, Vids& ids, VRelectron& electrons) const {
0443       const size_type begin(electronSlice(filter).first);
0444       const size_type end(electronSlice(filter).second);
0445       TriggerRefsCollections::getObjects(ids, electrons, begin, end);
0446     }
0447     void getObjects(size_type filter, int id, VRelectron& electrons) const {
0448       const size_type begin(electronSlice(filter).first);
0449       const size_type end(electronSlice(filter).second);
0450       TriggerRefsCollections::getObjects(id, electrons, begin, end);
0451     }
0452 
0453     void getObjects(size_type filter, Vids& ids, VRmuon& muons) const {
0454       const size_type begin(muonSlice(filter).first);
0455       const size_type end(muonSlice(filter).second);
0456       TriggerRefsCollections::getObjects(ids, muons, begin, end);
0457     }
0458     void getObjects(size_type filter, int id, VRmuon& muons) const {
0459       const size_type begin(muonSlice(filter).first);
0460       const size_type end(muonSlice(filter).second);
0461       TriggerRefsCollections::getObjects(id, muons, begin, end);
0462     }
0463 
0464     void getObjects(size_type filter, Vids& ids, VRjet& jets) const {
0465       const size_type begin(jetSlice(filter).first);
0466       const size_type end(jetSlice(filter).second);
0467       TriggerRefsCollections::getObjects(ids, jets, begin, end);
0468     }
0469     void getObjects(size_type filter, int id, VRjet& jets) const {
0470       const size_type begin(jetSlice(filter).first);
0471       const size_type end(jetSlice(filter).second);
0472       TriggerRefsCollections::getObjects(id, jets, begin, end);
0473     }
0474 
0475     void getObjects(size_type filter, Vids& ids, VRcomposite& composites) const {
0476       const size_type begin(compositeSlice(filter).first);
0477       const size_type end(compositeSlice(filter).second);
0478       TriggerRefsCollections::getObjects(ids, composites, begin, end);
0479     }
0480     void getObjects(size_type filter, int id, VRcomposite& composites) const {
0481       const size_type begin(compositeSlice(filter).first);
0482       const size_type end(compositeSlice(filter).second);
0483       TriggerRefsCollections::getObjects(id, composites, begin, end);
0484     }
0485 
0486     void getObjects(size_type filter, Vids& ids, VRbasemet& basemets) const {
0487       const size_type begin(basemetSlice(filter).first);
0488       const size_type end(basemetSlice(filter).second);
0489       TriggerRefsCollections::getObjects(ids, basemets, begin, end);
0490     }
0491     void getObjects(size_type filter, int id, VRbasemet& basemets) const {
0492       const size_type begin(basemetSlice(filter).first);
0493       const size_type end(basemetSlice(filter).second);
0494       TriggerRefsCollections::getObjects(id, basemets, begin, end);
0495     }
0496 
0497     void getObjects(size_type filter, Vids& ids, VRcalomet& calomets) const {
0498       const size_type begin(calometSlice(filter).first);
0499       const size_type end(calometSlice(filter).second);
0500       TriggerRefsCollections::getObjects(ids, calomets, begin, end);
0501     }
0502     void getObjects(size_type filter, int id, VRcalomet& calomets) const {
0503       const size_type begin(calometSlice(filter).first);
0504       const size_type end(calometSlice(filter).second);
0505       TriggerRefsCollections::getObjects(id, calomets, begin, end);
0506     }
0507 
0508     void getObjects(size_type filter, Vids& ids, VRpixtrack& pixtracks) const {
0509       const size_type begin(pixtrackSlice(filter).first);
0510       const size_type end(pixtrackSlice(filter).second);
0511       TriggerRefsCollections::getObjects(ids, pixtracks, begin, end);
0512     }
0513     void getObjects(size_type filter, int id, VRpixtrack& pixtracks) const {
0514       const size_type begin(pixtrackSlice(filter).first);
0515       const size_type end(pixtrackSlice(filter).second);
0516       TriggerRefsCollections::getObjects(id, pixtracks, begin, end);
0517     }
0518 
0519     void getObjects(size_type filter, Vids& ids, VRl1em& l1em) const {
0520       const size_type begin(l1emSlice(filter).first);
0521       const size_type end(l1emSlice(filter).second);
0522       TriggerRefsCollections::getObjects(ids, l1em, begin, end);
0523     }
0524     void getObjects(size_type filter, int id, VRl1em& l1em) const {
0525       const size_type begin(l1emSlice(filter).first);
0526       const size_type end(l1emSlice(filter).second);
0527       TriggerRefsCollections::getObjects(id, l1em, begin, end);
0528     }
0529 
0530     void getObjects(size_type filter, Vids& ids, VRl1muon& l1muon) const {
0531       const size_type begin(l1muonSlice(filter).first);
0532       const size_type end(l1muonSlice(filter).second);
0533       TriggerRefsCollections::getObjects(ids, l1muon, begin, end);
0534     }
0535     void getObjects(size_type filter, int id, VRl1muon& l1muon) const {
0536       const size_type begin(l1muonSlice(filter).first);
0537       const size_type end(l1muonSlice(filter).second);
0538       TriggerRefsCollections::getObjects(id, l1muon, begin, end);
0539     }
0540 
0541     void getObjects(size_type filter, Vids& ids, VRl1jet& l1jet) const {
0542       const size_type begin(l1jetSlice(filter).first);
0543       const size_type end(l1jetSlice(filter).second);
0544       TriggerRefsCollections::getObjects(ids, l1jet, begin, end);
0545     }
0546     void getObjects(size_type filter, int id, VRl1jet& l1jet) const {
0547       const size_type begin(l1jetSlice(filter).first);
0548       const size_type end(l1jetSlice(filter).second);
0549       TriggerRefsCollections::getObjects(id, l1jet, begin, end);
0550     }
0551 
0552     void getObjects(size_type filter, Vids& ids, VRl1etmiss& l1etmiss) const {
0553       const size_type begin(l1etmissSlice(filter).first);
0554       const size_type end(l1etmissSlice(filter).second);
0555       TriggerRefsCollections::getObjects(ids, l1etmiss, begin, end);
0556     }
0557     void getObjects(size_type filter, int id, VRl1etmiss& l1etmiss) const {
0558       const size_type begin(l1etmissSlice(filter).first);
0559       const size_type end(l1etmissSlice(filter).second);
0560       TriggerRefsCollections::getObjects(id, l1etmiss, begin, end);
0561     }
0562 
0563     void getObjects(size_type filter, Vids& ids, VRl1hfrings& l1hfrings) const {
0564       const size_type begin(l1hfringsSlice(filter).first);
0565       const size_type end(l1hfringsSlice(filter).second);
0566       TriggerRefsCollections::getObjects(ids, l1hfrings, begin, end);
0567     }
0568     void getObjects(size_type filter, int id, VRl1hfrings& l1hfrings) const {
0569       const size_type begin(l1hfringsSlice(filter).first);
0570       const size_type end(l1hfringsSlice(filter).second);
0571       TriggerRefsCollections::getObjects(id, l1hfrings, begin, end);
0572     }
0573 
0574     void getObjects(size_type filter, Vids& ids, VRpfjet& pfjets) const {
0575       const size_type begin(pfjetSlice(filter).first);
0576       const size_type end(pfjetSlice(filter).second);
0577       TriggerRefsCollections::getObjects(ids, pfjets, begin, end);
0578     }
0579     void getObjects(size_type filter, int id, VRpfjet& pfjets) const {
0580       const size_type begin(pfjetSlice(filter).first);
0581       const size_type end(pfjetSlice(filter).second);
0582       TriggerRefsCollections::getObjects(id, pfjets, begin, end);
0583     }
0584 
0585     void getObjects(size_type filter, Vids& ids, VRpftau& pftaus) const {
0586       const size_type begin(pftauSlice(filter).first);
0587       const size_type end(pftauSlice(filter).second);
0588       TriggerRefsCollections::getObjects(ids, pftaus, begin, end);
0589     }
0590     void getObjects(size_type filter, int id, VRpftau& pftaus) const {
0591       const size_type begin(pftauSlice(filter).first);
0592       const size_type end(pftauSlice(filter).second);
0593       TriggerRefsCollections::getObjects(id, pftaus, begin, end);
0594     }
0595 
0596     void getObjects(size_type filter, Vids& ids, VRpfmet& pfmets) const {
0597       const size_type begin(pfmetSlice(filter).first);
0598       const size_type end(pfmetSlice(filter).second);
0599       TriggerRefsCollections::getObjects(ids, pfmets, begin, end);
0600     }
0601     void getObjects(size_type filter, int id, VRpfmet& pfmets) const {
0602       const size_type begin(pfmetSlice(filter).first);
0603       const size_type end(pfmetSlice(filter).second);
0604       TriggerRefsCollections::getObjects(id, pfmets, begin, end);
0605     }
0606 
0607     void getObjects(size_type filter, Vids& ids, VRl1tmuon& l1tmuon) const {
0608       const size_type begin(l1tmuonSlice(filter).first);
0609       const size_type end(l1tmuonSlice(filter).second);
0610       TriggerRefsCollections::getObjects(ids, l1tmuon, begin, end);
0611     }
0612     void getObjects(size_type filter, int id, VRl1tmuon& l1tmuon) const {
0613       const size_type begin(l1tmuonSlice(filter).first);
0614       const size_type end(l1tmuonSlice(filter).second);
0615       TriggerRefsCollections::getObjects(id, l1tmuon, begin, end);
0616     }
0617 
0618     void getObjects(size_type filter, Vids& ids, VRl1tmuonShower& l1tmuonShower) const {
0619       const size_type begin(l1tmuonShowerSlice(filter).first);
0620       const size_type end(l1tmuonShowerSlice(filter).second);
0621       TriggerRefsCollections::getObjects(ids, l1tmuonShower, begin, end);
0622     }
0623     void getObjects(size_type filter, int id, VRl1tmuonShower& l1tmuonShower) const {
0624       const size_type begin(l1tmuonShowerSlice(filter).first);
0625       const size_type end(l1tmuonShowerSlice(filter).second);
0626       TriggerRefsCollections::getObjects(id, l1tmuonShower, begin, end);
0627     }
0628 
0629     void getObjects(size_type filter, Vids& ids, VRl1tegamma& l1tegamma) const {
0630       const size_type begin(l1tegammaSlice(filter).first);
0631       const size_type end(l1tegammaSlice(filter).second);
0632       TriggerRefsCollections::getObjects(ids, l1tegamma, begin, end);
0633     }
0634     void getObjects(size_type filter, int id, VRl1tegamma& l1tegamma) const {
0635       const size_type begin(l1tegammaSlice(filter).first);
0636       const size_type end(l1tegammaSlice(filter).second);
0637       TriggerRefsCollections::getObjects(id, l1tegamma, begin, end);
0638     }
0639 
0640     void getObjects(size_type filter, Vids& ids, VRl1tjet& l1tjet) const {
0641       const size_type begin(l1tjetSlice(filter).first);
0642       const size_type end(l1tjetSlice(filter).second);
0643       TriggerRefsCollections::getObjects(ids, l1tjet, begin, end);
0644     }
0645     void getObjects(size_type filter, int id, VRl1tjet& l1tjet) const {
0646       const size_type begin(l1tjetSlice(filter).first);
0647       const size_type end(l1tjetSlice(filter).second);
0648       TriggerRefsCollections::getObjects(id, l1tjet, begin, end);
0649     }
0650 
0651     /* Phase-2 */
0652     void getObjects(size_type filter, Vids& ids, VRl1ttkmuon& l1ttkmuon) const {
0653       const size_type begin(l1ttkmuonSlice(filter).first);
0654       const size_type end(l1ttkmuonSlice(filter).second);
0655       TriggerRefsCollections::getObjects(ids, l1ttkmuon, begin, end);
0656     }
0657     void getObjects(size_type filter, int id, VRl1ttkmuon& l1ttkmuon) const {
0658       const size_type begin(l1ttkmuonSlice(filter).first);
0659       const size_type end(l1ttkmuonSlice(filter).second);
0660       TriggerRefsCollections::getObjects(id, l1ttkmuon, begin, end);
0661     }
0662 
0663     void getObjects(size_type filter, Vids& ids, VRl1ttkele& l1ttkele) const {
0664       const size_type begin(l1ttkeleSlice(filter).first);
0665       const size_type end(l1ttkeleSlice(filter).second);
0666       TriggerRefsCollections::getObjects(ids, l1ttkele, begin, end);
0667     }
0668     void getObjects(size_type filter, int id, VRl1ttkele& l1ttkele) const {
0669       const size_type begin(l1ttkeleSlice(filter).first);
0670       const size_type end(l1ttkeleSlice(filter).second);
0671       TriggerRefsCollections::getObjects(id, l1ttkele, begin, end);
0672     }
0673 
0674     void getObjects(size_type filter, Vids& ids, VRl1ttkem& l1ttkem) const {
0675       const size_type begin(l1ttkemSlice(filter).first);
0676       const size_type end(l1ttkemSlice(filter).second);
0677       TriggerRefsCollections::getObjects(ids, l1ttkem, begin, end);
0678     }
0679     void getObjects(size_type filter, int id, VRl1ttkem& l1ttkem) const {
0680       const size_type begin(l1ttkemSlice(filter).first);
0681       const size_type end(l1ttkemSlice(filter).second);
0682       TriggerRefsCollections::getObjects(id, l1ttkem, begin, end);
0683     }
0684 
0685     void getObjects(size_type filter, Vids& ids, VRl1tpfjet& l1tpfjet) const {
0686       const size_type begin(l1tpfjetSlice(filter).first);
0687       const size_type end(l1tpfjetSlice(filter).second);
0688       TriggerRefsCollections::getObjects(ids, l1tpfjet, begin, end);
0689     }
0690     void getObjects(size_type filter, int id, VRl1tpfjet& l1tpfjet) const {
0691       const size_type begin(l1tpfjetSlice(filter).first);
0692       const size_type end(l1tpfjetSlice(filter).second);
0693       TriggerRefsCollections::getObjects(id, l1tpfjet, begin, end);
0694     }
0695 
0696     void getObjects(size_type filter, Vids& ids, VRl1tpftau& l1tpftau) const {
0697       const size_type begin(l1tpftauSlice(filter).first);
0698       const size_type end(l1tpftauSlice(filter).second);
0699       TriggerRefsCollections::getObjects(ids, l1tpftau, begin, end);
0700     }
0701     void getObjects(size_type filter, int id, VRl1tpftau& l1tpftau) const {
0702       const size_type begin(l1tpftauSlice(filter).first);
0703       const size_type end(l1tpftauSlice(filter).second);
0704       TriggerRefsCollections::getObjects(id, l1tpftau, begin, end);
0705     }
0706 
0707     void getObjects(size_type filter, Vids& ids, VRl1thpspftau& l1thpspftau) const {
0708       const size_type begin(l1thpspftauSlice(filter).first);
0709       const size_type end(l1thpspftauSlice(filter).second);
0710       TriggerRefsCollections::getObjects(ids, l1thpspftau, begin, end);
0711     }
0712     void getObjects(size_type filter, int id, VRl1thpspftau& l1thpspftau) const {
0713       const size_type begin(l1thpspftauSlice(filter).first);
0714       const size_type end(l1thpspftauSlice(filter).second);
0715       TriggerRefsCollections::getObjects(id, l1thpspftau, begin, end);
0716     }
0717 
0718     void getObjects(size_type filter, Vids& ids, VRl1tpftrack& l1tpftrack) const {
0719       const size_type begin(l1tpftrackSlice(filter).first);
0720       const size_type end(l1tpftrackSlice(filter).second);
0721       TriggerRefsCollections::getObjects(ids, l1tpftrack, begin, end);
0722     }
0723     void getObjects(size_type filter, int id, VRl1tpftrack& l1tpftrack) const {
0724       const size_type begin(l1tpftrackSlice(filter).first);
0725       const size_type end(l1tpftrackSlice(filter).second);
0726       TriggerRefsCollections::getObjects(id, l1tpftrack, begin, end);
0727     }
0728 
0729     void getObjects(size_type filter, Vids& ids, VRl1tp2etsum& l1tp2etsum) const {
0730       const size_type begin(l1tp2etsumSlice(filter).first);
0731       const size_type end(l1tp2etsumSlice(filter).second);
0732       TriggerRefsCollections::getObjects(ids, l1tp2etsum, begin, end);
0733     }
0734     void getObjects(size_type filter, int id, VRl1tp2etsum& l1tp2etsum) const {
0735       const size_type begin(l1tp2etsumSlice(filter).first);
0736       const size_type end(l1tp2etsumSlice(filter).second);
0737       TriggerRefsCollections::getObjects(id, l1tp2etsum, begin, end);
0738     }
0739 
0740     void getObjects(size_type filter, Vids& ids, VRl1ttau& l1ttau) const {
0741       const size_type begin(l1ttauSlice(filter).first);
0742       const size_type end(l1ttauSlice(filter).second);
0743       TriggerRefsCollections::getObjects(ids, l1ttau, begin, end);
0744     }
0745     void getObjects(size_type filter, int id, VRl1ttau& l1ttau) const {
0746       const size_type begin(l1ttauSlice(filter).first);
0747       const size_type end(l1ttauSlice(filter).second);
0748       TriggerRefsCollections::getObjects(id, l1ttau, begin, end);
0749     }
0750 
0751     void getObjects(size_type filter, Vids& ids, VRl1tetsum& l1tetsum) const {
0752       const size_type begin(l1tetsumSlice(filter).first);
0753       const size_type end(l1tetsumSlice(filter).second);
0754       TriggerRefsCollections::getObjects(ids, l1tetsum, begin, end);
0755     }
0756     void getObjects(size_type filter, int id, VRl1tetsum& l1tetsum) const {
0757       const size_type begin(l1tetsumSlice(filter).first);
0758       const size_type end(l1tetsumSlice(filter).second);
0759       TriggerRefsCollections::getObjects(id, l1tetsum, begin, end);
0760     }
0761 
0762     void getObjects(size_type filter, Vids& ids, VRl1tp2gtcand& l1tp2gtcand) const {
0763       const size_type begin(l1tp2gtcandSlice(filter).first);
0764       const size_type end(l1tp2gtcandSlice(filter).second);
0765       TriggerRefsCollections::getObjects(ids, l1tp2gtcand, begin, end);
0766     }
0767     void getObjects(size_type filter, int id, VRl1tp2gtcand& l1tp2gtcand) const {
0768       const size_type begin(l1tp2gtcandSlice(filter).first);
0769       const size_type end(l1tp2gtcandSlice(filter).second);
0770       TriggerRefsCollections::getObjects(id, l1tp2gtcand, begin, end);
0771     }
0772   };
0773 
0774 }  // namespace trigger
0775 
0776 #endif