00001 #ifndef DQMOFFLINE_TRIGGER_ELEHLTPATHMON 00002 #define DQMOFFLINE_TRIGGER_ELEHLTPATHMON 00003 00004 #include "DQMOffline/Trigger/interface/EleHLTFilterMon.h" 00005 #include "DQMOffline/Trigger/interface/EgHLTOffData.h" 00006 00007 #include <vector> 00008 #include <string> 00009 00010 //class: EleHLTPathMon 00011 // 00012 //author: Sam Harper (June 2008) 00013 // 00014 //WARNING: interface is NOT final, please dont use this class for now without clearing it with me 00015 // as I will change it and possibly break all your code 00016 // 00017 //aim: this object will manage all histograms associated with a particular HLT path 00018 // ie histograms for computing efficiency of each filter step, id efficiency of gsf electrons passing trigger etc 00019 // 00020 //implimentation: 00021 // has a vector of all filter path names, generates efficiency hists for each step 00022 // 00023 00024 class EleHLTPathMon { 00025 private: 00026 std::string pathName_; 00027 std::vector<EleHLTFilterMon*> filters_; //we own these 00028 00029 00030 00031 public: 00032 explicit EleHLTPathMon(std::string pathName=""):pathName_(pathName){} 00033 ~EleHLTPathMon(); 00034 00035 void addFilter(const std::string& filterName); 00036 void addFilters(const std::vector<std::string>& names); 00037 //void setStdFilters(); //egamma electron triggers all have the same filter names, time saving function 00038 00039 //does exactly what it says on the tin (fills all the filterMons) 00040 void fill(const EgHLTOffData& evtData,float weight); 00041 00042 std::vector<std::string> getFilterNames()const; //expensive function, gets names of all the functions, if slow, will cache the results 00043 00044 //sort by path name 00045 bool operator<(const EleHLTPathMon& rhs)const{return pathName_<rhs.pathName_;} 00046 }; 00047 00048 00049 00050 #endif