00001 #ifndef HLTfilters_HLTLevel1GTSeed_h 00002 #define HLTfilters_HLTLevel1GTSeed_h 00003 00022 // system include files 00023 #include <string> 00024 #include <vector> 00025 00026 // user include files 00027 00028 // base class 00029 #include "HLTrigger/HLTcore/interface/HLTFilter.h" 00030 00031 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h" 00032 00033 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h" 00034 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenuFwd.h" 00035 #include "DataFormats/L1GlobalTrigger/interface/L1GtLogicParser.h" 00036 00037 #include "FWCore/ParameterSet/interface/InputTag.h" 00038 00039 // forward declarations 00040 class L1GtTriggerMenu; 00041 class L1GtTriggerMask; 00042 00043 // class declaration 00044 class HLTLevel1GTSeed : public HLTFilter 00045 { 00046 00047 public: 00048 00050 explicit HLTLevel1GTSeed(const edm::ParameterSet&); 00051 00053 virtual ~HLTLevel1GTSeed(); 00054 00056 virtual bool filter(edm::Event&, const edm::EventSetup&); 00057 00058 private: 00059 00061 const std::vector<L1GtObject>* objectTypeVec(const int chipNumber, const std::string& cndName); 00062 00065 void updateAlgoLogicParser(const L1GtTriggerMenu*); 00066 00069 void updateAlgoLogicParser(const std::vector<bool>& gtWord, 00070 const std::vector<unsigned int>& triggerMask, const int physicsDaqPartition); 00071 00074 void convertStringToBitNumber(); 00075 00078 void debugPrint(bool); 00079 00080 00081 private: 00082 00083 // cached stuff 00084 00086 const L1GtTriggerMenu* m_l1GtMenu; 00087 unsigned long long m_l1GtMenuCacheID; 00088 00090 const L1GtTriggerMask* m_l1GtTmAlgo; 00091 unsigned long long m_l1GtTmAlgoCacheID; 00092 00093 const L1GtTriggerMask* m_l1GtTmTech; 00094 unsigned long long m_l1GtTmTechCacheID; 00095 00096 std::vector<unsigned int> m_triggerMaskAlgoTrig; 00097 std::vector<unsigned int> m_triggerMaskTechTrig; 00098 00099 // 00100 00102 L1GtLogicParser m_l1AlgoLogicParser; 00103 00105 std::vector<L1GtLogicParser::OperandToken> m_l1AlgoSeeds; 00106 00108 std::vector< const std::vector<L1GtLogicParser::TokenRPN>* > m_l1AlgoSeedsRpn; 00109 00111 std::vector< std::vector< const std::vector<L1GtObject>* > > m_l1AlgoSeedsObjType; 00112 00113 private: 00114 00116 bool m_l1TechTriggerSeeding; 00117 00120 std::string m_l1SeedsLogicalExpression; 00121 00123 edm::InputTag m_l1GtReadoutRecordTag; 00124 00126 edm::InputTag m_l1GtObjectMapTag; 00127 00129 edm::InputTag m_l1CollectionsTag; 00130 00132 edm::InputTag m_l1MuonCollectionTag; 00133 00135 edm::InputTag m_l1MuonTag; 00136 edm::InputTag m_l1ExtraTag; 00137 edm::InputTag m_l1IsoEGTag; 00138 edm::InputTag m_l1NoIsoEGTag; 00139 edm::InputTag m_l1CenJetTag; 00140 edm::InputTag m_l1ForJetTag; 00141 edm::InputTag m_l1TauJetTag; 00142 00144 bool saveTags_; 00145 }; 00146 00147 #endif // HLTfilters_HLTLevel1GTSeed_h