00001 #ifndef HLTTauDQMPlotter_h 00002 #define HLTTauDQMPlotter_h 00003 00004 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00005 #include "FWCore/ServiceRegistry/interface/Service.h" 00006 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00007 #include "FWCore/Framework/interface/Event.h" 00008 #include "FWCore/Framework/interface/Frameworkfwd.h" 00009 #include "FWCore/Framework/interface/EDAnalyzer.h" 00010 #include "FWCore/Framework/interface/MakerMacros.h" 00011 #include "FWCore/Utilities/interface/InputTag.h" 00012 00013 #include "DataFormats/Math/interface/LorentzVector.h" 00014 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h" 00015 00016 //Include DQM core 00017 #include "DQMServices/Core/interface/DQMStore.h" 00018 #include "DQMServices/Core/interface/MonitorElement.h" 00019 00020 #include "Math/GenVector/VectorUtil.h" 00021 00022 typedef math::XYZTLorentzVectorD LV; 00023 typedef std::vector<LV> LVColl; 00024 00025 //Virtual base class for HLT-Tau-DQM Plotters 00026 class HLTTauDQMPlotter { 00027 public: 00028 HLTTauDQMPlotter(); 00029 virtual ~HLTTauDQMPlotter(); 00030 virtual const std::string name() = 0; 00031 bool isValid() const { return validity_; } 00032 00033 protected: 00034 //Helper functions 00035 std::pair<bool,LV> match( const LV&, const LVColl&, double ); 00036 std::string triggerTag(); 00037 00038 class FilterObject { 00039 public: 00040 FilterObject( const edm::ParameterSet& ps ); 00041 virtual ~FilterObject(); 00042 00043 edm::InputTag getFilterName() const { return FilterName_; } 00044 double getMatchDeltaR() const { return MatchDeltaR_; } 00045 unsigned int getNTriggeredTaus() const { return NTriggeredTaus_; } 00046 int getTauType() const { return TauType_; } 00047 unsigned int getNTriggeredLeptons() const { return NTriggeredLeptons_; } 00048 int getLeptonType() const { return LeptonType_; } 00049 int leptonId(); 00050 std::string getAlias() const { return Alias_; } 00051 bool isValid() const { return validity_; } 00052 00053 private: 00054 edm::InputTag FilterName_; 00055 double MatchDeltaR_; 00056 unsigned int NTriggeredTaus_; 00057 int TauType_; 00058 unsigned int NTriggeredLeptons_; 00059 int LeptonType_; 00060 std::string Alias_; 00061 bool validity_; 00062 }; 00063 00064 //DQM store service 00065 DQMStore* store_; 00066 00067 //Name of the Plotter 00068 std::string name_; 00069 00070 //DQM folders 00071 std::string dqmBaseFolder_; 00072 std::string triggerTag_; 00073 std::string triggerTagAlias_; 00074 00075 //Validity check 00076 bool validity_; 00077 }; 00078 #endif