Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:20:01

0001 #ifndef L1Trigger_GlobalTriggerAnalyzer_L1RetrieveL1Extra_h
0002 #define L1Trigger_GlobalTriggerAnalyzer_L1RetrieveL1Extra_h
0003 
0004 /**
0005  * \class L1RetrieveL1Extra
0006  *
0007  *
0008  * Description: retrieve L1Extra collection, return validity flag and pointer to collection.
0009  *
0010  * Implementation:
0011  *    <TODO: enter implementation details>
0012  *
0013  * \author: Vasile Mihai Ghete   - HEPHY Vienna
0014  *
0015  *
0016  */
0017 
0018 // system include files
0019 #include <iosfwd>
0020 #include <memory>
0021 #include <vector>
0022 #include <string>
0023 
0024 // user include files
0025 //   base classes
0026 
0027 //
0028 #include "FWCore/Framework/interface/Frameworkfwd.h"
0029 #include "FWCore/ServiceRegistry/interface/Service.h"
0030 
0031 #include "FWCore/Framework/interface/Event.h"
0032 #include "FWCore/Framework/interface/Run.h"
0033 #include "FWCore/Framework/interface/EventSetup.h"
0034 
0035 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0036 #include "FWCore/Utilities/interface/InputTag.h"
0037 
0038 // L1Extra objects
0039 #include "DataFormats/L1Trigger/interface/L1MuonParticle.h"
0040 #include "DataFormats/L1Trigger/interface/L1MuonParticleFwd.h"
0041 #include "DataFormats/L1Trigger/interface/L1EmParticle.h"
0042 #include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h"
0043 #include "DataFormats/L1Trigger/interface/L1JetParticle.h"
0044 #include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
0045 #include "DataFormats/L1Trigger/interface/L1EtMissParticle.h"
0046 #include "DataFormats/L1Trigger/interface/L1EtMissParticleFwd.h"
0047 #include "DataFormats/L1Trigger/interface/L1HFRings.h"
0048 #include "DataFormats/L1Trigger/interface/L1HFRingsFwd.h"
0049 #include "FWCore/Framework/interface/ConsumesCollector.h"
0050 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
0051 
0052 // forward declarations
0053 
0054 // class declaration
0055 class L1RetrieveL1Extra {
0056 public:
0057   // constructor(s)
0058   explicit L1RetrieveL1Extra(const edm::ParameterSet&, edm::ConsumesCollector&& iC);
0059 
0060   // destructor
0061   virtual ~L1RetrieveL1Extra();
0062 
0063 public:
0064   /// validity for retrieval of L1Extra products (false: product not found)
0065 
0066   inline const bool validL1ExtraMuon() const { return m_validL1ExtraMuon; }
0067 
0068   //
0069   inline const bool validL1ExtraIsoEG() const { return m_validL1ExtraIsoEG; }
0070 
0071   inline const bool validL1ExtraNoIsoEG() const { return m_validL1ExtraNoIsoEG; }
0072 
0073   //
0074   inline const bool validL1ExtraCenJet() const { return m_validL1ExtraCenJet; }
0075 
0076   inline const bool validL1ExtraForJet() const { return m_validL1ExtraForJet; }
0077 
0078   inline const bool validL1ExtraTauJet() const { return m_validL1ExtraTauJet; }
0079 
0080   //
0081   inline const bool validL1ExtraETT() const { return m_validL1ExtraETT; }
0082 
0083   inline const bool validL1ExtraETM() const { return m_validL1ExtraETM; }
0084 
0085   inline const bool validL1ExtraHTT() const { return m_validL1ExtraHTT; }
0086 
0087   inline const bool validL1ExtraHTM() const { return m_validL1ExtraHTM; }
0088 
0089   //
0090   inline const bool validL1ExtraHfBitCounts() const { return m_validL1ExtraHfBitCounts; }
0091 
0092   inline const bool validL1ExtraHfRingEtSums() const { return m_validL1ExtraHfRingEtSums; }
0093 
0094   const bool validL1ExtraColl(const L1GtObject&) const;
0095 
0096   /// input tag for a given collection
0097   const edm::InputTag inputTagL1ExtraColl(const L1GtObject&) const;
0098 
0099   /// return retrieved L1Extra collections
0100 
0101   inline const l1extra::L1MuonParticleCollection* l1ExtraMuon() const { return m_l1ExtraMuon; }
0102 
0103   inline const l1extra::L1EmParticleCollection* l1ExtraIsoEG() const { return m_l1ExtraIsoEG; }
0104   inline const l1extra::L1EmParticleCollection* l1ExtraNoIsoEG() const { return m_l1ExtraNoIsoEG; }
0105 
0106   inline const l1extra::L1JetParticleCollection* l1ExtraCenJet() const { return m_l1ExtraCenJet; }
0107   inline const l1extra::L1JetParticleCollection* l1ExtraForJet() const { return m_l1ExtraForJet; }
0108   inline const l1extra::L1JetParticleCollection* l1ExtraTauJet() const { return m_l1ExtraTauJet; }
0109 
0110   inline const l1extra::L1EtMissParticleCollection* l1ExtraETT() const { return m_l1ExtraETT; }
0111   inline const l1extra::L1EtMissParticleCollection* l1ExtraETM() const { return m_l1ExtraETM; }
0112   inline const l1extra::L1EtMissParticleCollection* l1ExtraHTT() const { return m_l1ExtraHTT; }
0113   inline const l1extra::L1EtMissParticleCollection* l1ExtraHTM() const { return m_l1ExtraHTM; }
0114 
0115   inline const l1extra::L1HFRingsCollection* l1ExtraHfBitCounts() const { return m_l1ExtraHfBitCounts; }
0116   inline const l1extra::L1HFRingsCollection* l1ExtraHfRingEtSums() const { return m_l1ExtraHfRingEtSums; }
0117 
0118   /// retrieve L1Extra objects
0119   /// if a collection is not found, the corresponding m_valid(Object) is set to "false"
0120   void retrieveL1ExtraObjects(const edm::Event&, const edm::EventSetup&);
0121 
0122   /// user-friendly print of L1Extra
0123   /// TODO should have been defined in DataFormats for L1Extra collections...
0124 
0125   /// print L1GtObject object from bxInEvent, if checkBxInEvent is true,
0126   /// having the objIndexInColl order index in collection, if checkObjIndexInColl is true
0127   /// if checkBxInEvent and /or checkObjIndexInColl are false, print the objects without
0128   /// the bxInEvent and / or objIndexInColl check
0129   /// the combination checkBxInEvent = false, checkObjIndexInColl = true not supported
0130   void printL1Extra(std::ostream& oStr,
0131                     const L1GtObject& gtObject,
0132                     const bool checkBxInEvent,
0133                     const int bxInEvent,
0134                     const bool checkObjIndexInColl,
0135                     const int objIndexInColl) const;
0136 
0137   /// print all L1GtObject objects from bxInEvent
0138   void printL1Extra(std::ostream&, const L1GtObject&, const int bxInEvent) const;
0139 
0140   /// print all L1GtObject objects from all bxInEvent
0141   void printL1Extra(std::ostream&, const L1GtObject&) const;
0142 
0143   /// print all L1Extra collections from a given BxInEvent
0144   void printL1Extra(std::ostream&, const int bxInEvent) const;
0145 
0146   /// print all L1Extra collections from all BxInEvent
0147   void printL1Extra(std::ostream&) const;
0148 
0149 private:
0150   /// input parameters
0151 
0152   /// input tags for L1Extra objects
0153 
0154   edm::InputTag m_tagL1ExtraMuon;
0155 
0156   edm::InputTag m_tagL1ExtraIsoEG;
0157   edm::InputTag m_tagL1ExtraNoIsoEG;
0158 
0159   edm::InputTag m_tagL1ExtraCenJet;
0160   edm::InputTag m_tagL1ExtraForJet;
0161   edm::InputTag m_tagL1ExtraTauJet;
0162 
0163   edm::InputTag m_tagL1ExtraEtMissMET;
0164   edm::InputTag m_tagL1ExtraEtMissHTM;
0165 
0166   edm::InputTag m_tagL1ExtraHFRings;
0167 
0168   int m_nrBxInEventGmt;
0169   int m_nrBxInEventGct;
0170 
0171   /// validity for retrieval of L1Extra products (false: product not found)
0172 
0173   bool m_validL1ExtraMuon;
0174 
0175   bool m_validL1ExtraIsoEG;
0176   bool m_validL1ExtraNoIsoEG;
0177 
0178   bool m_validL1ExtraCenJet;
0179   bool m_validL1ExtraForJet;
0180   bool m_validL1ExtraTauJet;
0181 
0182   bool m_validL1ExtraETT;
0183   bool m_validL1ExtraETM;
0184   bool m_validL1ExtraHTT;
0185   bool m_validL1ExtraHTM;
0186 
0187   bool m_validL1ExtraHfBitCounts;
0188   bool m_validL1ExtraHfRingEtSums;
0189 
0190   /// retrieved L1Extra collections
0191 
0192   const l1extra::L1MuonParticleCollection* m_l1ExtraMuon;
0193 
0194   const l1extra::L1EmParticleCollection* m_l1ExtraIsoEG;
0195   const l1extra::L1EmParticleCollection* m_l1ExtraNoIsoEG;
0196 
0197   const l1extra::L1JetParticleCollection* m_l1ExtraCenJet;
0198   const l1extra::L1JetParticleCollection* m_l1ExtraForJet;
0199   const l1extra::L1JetParticleCollection* m_l1ExtraTauJet;
0200 
0201   const l1extra::L1EtMissParticleCollection* m_l1ExtraETT;
0202   const l1extra::L1EtMissParticleCollection* m_l1ExtraETM;
0203   const l1extra::L1EtMissParticleCollection* m_l1ExtraHTT;
0204   const l1extra::L1EtMissParticleCollection* m_l1ExtraHTM;
0205 
0206   const l1extra::L1HFRingsCollection* m_l1ExtraHfBitCounts;
0207   const l1extra::L1HFRingsCollection* m_l1ExtraHfRingEtSums;
0208 
0209   edm::EDGetTokenT<l1extra::L1MuonParticleCollection> m_tagL1ExtraMuonTok;
0210   edm::EDGetTokenT<l1extra::L1EmParticleCollection> m_tagL1ExtraIsoEGTok;
0211   edm::EDGetTokenT<l1extra::L1EmParticleCollection> m_tagL1ExtraNoIsoEGTok;
0212   edm::EDGetTokenT<l1extra::L1JetParticleCollection> m_tagL1ExtraCenJetTok;
0213   edm::EDGetTokenT<l1extra::L1JetParticleCollection> m_tagL1ExtraForJetTok;
0214   edm::EDGetTokenT<l1extra::L1JetParticleCollection> m_tagL1ExtraTauJetTok;
0215   edm::EDGetTokenT<l1extra::L1EtMissParticleCollection> m_tagL1ExtraEtMissMETTok;
0216   edm::EDGetTokenT<l1extra::L1EtMissParticleCollection> m_tagL1ExtraEtMissHTMTok;
0217   edm::EDGetTokenT<l1extra::L1HFRingsCollection> m_tagL1ExtraHFRingsTok;
0218 };
0219 
0220 #endif