CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/HLTrigger/HLTfilters/interface/HLTLevel1GTSeed.h

Go to the documentation of this file.
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/Utilities/interface/InputTag.h"
00038 
00039 // forward declarations
00040 class L1GtTriggerMenu;
00041 class L1GtTriggerMask;
00042 class L1GlobalTriggerReadoutRecord;
00043 
00044 // class declaration
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     // cached stuff
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