Go to the documentation of this file.00001 #ifndef HLTfilters_HLTLevel1GTSeed_h
00002 #define HLTfilters_HLTLevel1GTSeed_h
00003
00022
00023 #include <string>
00024 #include <vector>
00025
00026
00027
00028
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/Utilities/interface/InputTag.h"
00038
00039
00040 class L1GtTriggerMenu;
00041 class L1GtTriggerMask;
00042 class L1GlobalTriggerReadoutRecord;
00043
00044
00045 class HLTLevel1GTSeed : public HLTFilter
00046 {
00047
00048 public:
00049
00051 explicit HLTLevel1GTSeed(const edm::ParameterSet&);
00052
00054 virtual ~HLTLevel1GTSeed();
00055
00057 virtual bool hltFilter(edm::Event&, const edm::EventSetup&, trigger::TriggerFilterObjectWithRefs & filterproduct);
00058
00059 private:
00060
00062 const std::vector<L1GtObject>* objectTypeVec(const int chipNumber, const std::string& cndName);
00063
00066 void updateAlgoLogicParser(const L1GtTriggerMenu*, const AlgorithmMap&);
00067
00070 void updateAlgoLogicParser(const std::vector<bool>& gtWord,
00071 const std::vector<unsigned int>& triggerMask, const int physicsDaqPartition);
00072
00075 void convertStringToBitNumber();
00076
00079 void debugPrint(bool);
00080
00082 bool seedsL1TriggerObjectMaps(
00083 edm::Event &,
00084 trigger::TriggerFilterObjectWithRefs &,
00085 const L1GlobalTriggerReadoutRecord *,
00086 const int physicsDaqPartition);
00087
00093 bool seedsL1Extra(edm::Event &, trigger::TriggerFilterObjectWithRefs &);
00094
00096 void dumpTriggerFilterObjectWithRefs(trigger::TriggerFilterObjectWithRefs &);
00097
00098
00099 private:
00100
00101
00102
00104 const L1GtTriggerMenu* m_l1GtMenu;
00105 unsigned long long m_l1GtMenuCacheID;
00106
00108 const L1GtTriggerMask* m_l1GtTmAlgo;
00109 unsigned long long m_l1GtTmAlgoCacheID;
00110
00111 const L1GtTriggerMask* m_l1GtTmTech;
00112 unsigned long long m_l1GtTmTechCacheID;
00113
00114 std::vector<unsigned int> m_triggerMaskAlgoTrig;
00115 std::vector<unsigned int> m_triggerMaskTechTrig;
00116
00117
00118
00120 L1GtLogicParser m_l1AlgoLogicParser;
00121
00123 std::vector<L1GtLogicParser::OperandToken> m_l1AlgoSeeds;
00124
00126 std::vector< const std::vector<L1GtLogicParser::TokenRPN>* > m_l1AlgoSeedsRpn;
00127
00129 std::vector< std::vector< const std::vector<L1GtObject>* > > m_l1AlgoSeedsObjType;
00130
00131
00132 private:
00133
00142 bool m_l1UseL1TriggerObjectMaps;
00143
00146 int m_l1NrBxInEvent;
00147
00149 bool m_l1TechTriggerSeeding;
00150
00152 bool m_l1UseAliasesForSeeding;
00153
00156 std::string m_l1SeedsLogicalExpression;
00157
00159 edm::InputTag m_l1GtReadoutRecordTag;
00160
00162 edm::InputTag m_l1GtObjectMapTag;
00163
00165 edm::InputTag m_l1CollectionsTag;
00166
00168 edm::InputTag m_l1MuonCollectionTag;
00169
00171 edm::InputTag m_l1MuonTag;
00172 edm::InputTag m_l1ExtraTag;
00173 edm::InputTag m_l1IsoEGTag;
00174 edm::InputTag m_l1NoIsoEGTag;
00175 edm::InputTag m_l1CenJetTag;
00176 edm::InputTag m_l1ForJetTag;
00177 edm::InputTag m_l1TauJetTag;
00178 edm::InputTag m_l1EtMissMET;
00179 edm::InputTag m_l1EtMissMHT;
00180
00182 bool m_l1GlobalDecision;
00183
00185 bool m_isDebugEnabled;
00186 };
00187
00188 #endif // HLTfilters_HLTLevel1GTSeed_h