CMS 3D CMS Logo

FourVectorHLTOffline.h

Go to the documentation of this file.
00001 #ifndef FOURVECTORHLTOFFLINE_H
00002 #define FOURVECTORHLTOFFLINE_H
00003 // -*- C++ -*-
00004 //
00005 // Package:    FourVectorHLTOffline
00006 // Class:      FourVectorHLTOffline
00007 // 
00016 //
00017 // Original Author:  Jeffrey Berryhill
00018 //         Created:  June 2008
00019 // $Id: FourVectorHLTOffline.h,v 1.12 2008/12/04 18:37:38 berryhil Exp $
00020 //
00021 //
00022 
00023 
00024 // system include files
00025 #include <memory>
00026 #include <unistd.h>
00027 
00028 
00029 // user include files
00030 #include "FWCore/Framework/interface/Frameworkfwd.h"
00031 #include "FWCore/Framework/interface/EDAnalyzer.h"
00032 
00033 #include "FWCore/Framework/interface/Event.h"
00034 #include "FWCore/Framework/interface/MakerMacros.h"
00035 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
00036 #include "DataFormats/Common/interface/TriggerResults.h"
00037 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
00038 
00039 #include "DQMServices/Core/interface/DQMStore.h"
00040 #include "DQMServices/Core/interface/MonitorElement.h"
00041 #include "FWCore/ServiceRegistry/interface/Service.h"
00042 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00043 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00044 #include <iostream>
00045 #include <fstream>
00046 #include <vector>
00047 
00048 //
00049 // class decleration
00050 //
00051 
00052 class FourVectorHLTOffline : public edm::EDAnalyzer {
00053    public:
00054       explicit FourVectorHLTOffline(const edm::ParameterSet&);
00055       ~FourVectorHLTOffline();
00056 
00057 
00058    private:
00059       virtual void beginJob(const edm::EventSetup&) ;
00060       virtual void analyze(const edm::Event&, const edm::EventSetup&);
00061       virtual void endJob() ;
00062 
00063       // BeginRun
00064       void beginRun(const edm::Run& run, const edm::EventSetup& c);
00065 
00066       // EndRun
00067       void endRun(const edm::Run& run, const edm::EventSetup& c);
00068 
00069 
00070       // ----------member data --------------------------- 
00071       int nev_;
00072       DQMStore * dbe_;
00073 
00074       MonitorElement* total_;
00075 
00076       bool plotAll_;
00077       bool resetMe_;
00078       int currentRun_;
00079  
00080       unsigned int nBins_; 
00081       double ptMin_ ;
00082       double ptMax_ ;
00083       
00084       std::string dirname_;
00085       std::string processname_;
00086       bool monitorDaemon_;
00087       int theHLTOutputType;
00088       edm::InputTag triggerSummaryLabel_;
00089       edm::InputTag triggerResultsLabel_;
00090       HLTConfigProvider hltConfig_;
00091       // data across paths
00092       MonitorElement* scalersSelect;
00093       // helper class to store the data path
00094 
00095       class PathInfo {
00096         PathInfo():
00097           pathIndex_(-1), denomPathName_("unset"), pathName_("unset"), l1pathName_("unset"), filterName_("unset"), processName_("unset"), objectType_(-1)
00098           {};
00099       public:
00100         void setHistos(
00101                        MonitorElement* const NOn, 
00102                        MonitorElement* const onEtOn, 
00103                        MonitorElement* const onEtaOn, 
00104                        MonitorElement* const onPhiOn, 
00105                        MonitorElement* const onEtavsonPhiOn,  
00106                        MonitorElement* const offEtOff, 
00107                        MonitorElement* const offEtaOff, 
00108                        MonitorElement* const offPhiOff, 
00109                        MonitorElement* const offEtavsoffPhiOff,
00110                        MonitorElement* const l1EtL1, 
00111                        MonitorElement* const l1EtaL1, 
00112                        MonitorElement* const l1PhiL1, 
00113                        MonitorElement* const l1Etavsl1PhiL1,
00114                        MonitorElement* const l1EtL1On, 
00115                        MonitorElement* const l1EtaL1On, 
00116                        MonitorElement* const l1PhiL1On, 
00117                        MonitorElement* const l1Etavsl1PhiL1On,  
00118                        MonitorElement* const offEtL1Off, 
00119                        MonitorElement* const offEtaL1Off, 
00120                        MonitorElement* const offPhiL1Off, 
00121                        MonitorElement* const offEtavsoffPhiL1Off,
00122                        MonitorElement* const offEtOnOff, 
00123                        MonitorElement* const offEtaOnOff, 
00124                        MonitorElement* const offPhiOnOff, 
00125                        MonitorElement* const offEtavsoffPhiOnOff) {
00126           NOn_ = NOn;
00127           onEtOn_ = onEtOn;
00128           onEtaOn_ = onEtaOn;
00129           onPhiOn_ = onPhiOn;
00130           onEtavsonPhiOn_ = onEtavsonPhiOn;
00131           offEtOff_ = offEtOff;
00132           offEtaOff_ = offEtaOff;
00133           offPhiOff_ = offPhiOff;
00134           offEtavsoffPhiOff_ = offEtavsoffPhiOff;
00135           l1EtL1_ = l1EtL1;
00136           l1EtaL1_ = l1EtaL1;
00137           l1PhiL1_ = l1PhiL1;
00138           l1Etavsl1PhiL1_ = l1Etavsl1PhiL1;
00139           l1EtL1On_ = l1EtL1On;
00140           l1EtaL1On_ = l1EtaL1On;
00141           l1PhiL1On_ = l1PhiL1On;
00142           l1Etavsl1PhiL1On_ = l1Etavsl1PhiL1On;
00143           offEtL1Off_ = offEtL1Off;
00144           offEtaL1Off_ = offEtaL1Off;
00145           offPhiL1Off_ = offPhiL1Off;
00146           offEtavsoffPhiL1Off_ = offEtavsoffPhiL1Off;
00147           offEtOnOff_ = offEtOnOff;
00148           offEtaOnOff_ = offEtaOnOff;
00149           offPhiOnOff_ = offPhiOnOff;
00150           offEtavsoffPhiOnOff_ = offEtavsoffPhiOnOff;
00151         }
00152         MonitorElement * getNOnHisto() {
00153           return NOn_;
00154         }
00155         MonitorElement * getOnEtOnHisto() {
00156           return onEtOn_;
00157         }
00158         MonitorElement * getOnEtaOnHisto() {
00159           return onEtaOn_;
00160         }
00161         MonitorElement * getOnPhiOnHisto() {
00162           return onPhiOn_;
00163         }
00164         MonitorElement * getOnEtaVsOnPhiOnHisto() {
00165           return onEtavsonPhiOn_;
00166         }
00167         MonitorElement * getOffEtOffHisto() {
00168           return offEtOff_;
00169         }
00170         MonitorElement * getOffEtaOffHisto() {
00171           return offEtaOff_;
00172         }
00173         MonitorElement * getOffPhiOffHisto() {
00174           return offPhiOff_;
00175         }
00176         MonitorElement * getOffEtaVsOffPhiOffHisto() {
00177           return offEtavsoffPhiOff_;
00178         }
00179         MonitorElement * getL1EtL1Histo() {
00180           return l1EtL1_;
00181         }
00182         MonitorElement * getL1EtaL1Histo() {
00183           return l1EtaL1_;
00184         }
00185         MonitorElement * getL1PhiL1Histo() {
00186           return l1PhiL1_;
00187         }
00188         MonitorElement * getL1EtaVsL1PhiL1Histo() {
00189           return l1Etavsl1PhiL1_;
00190         }
00191         MonitorElement * getL1EtL1OnHisto() {
00192           return l1EtL1On_;
00193         }
00194         MonitorElement * getL1EtaL1OnHisto() {
00195           return l1EtaL1On_;
00196         }
00197         MonitorElement * getL1PhiL1OnHisto() {
00198           return l1PhiL1On_;
00199         }
00200         MonitorElement * getL1EtaVsL1PhiL1OnHisto() {
00201           return l1Etavsl1PhiL1On_;
00202         }
00203         MonitorElement * getOffEtL1OffHisto() {
00204           return offEtL1Off_;
00205         }
00206         MonitorElement * getOffEtaL1OffHisto() {
00207           return offEtaL1Off_;
00208         }
00209         MonitorElement * getOffPhiL1OffHisto() {
00210           return offPhiL1Off_;
00211         }
00212         MonitorElement * getOffEtaVsOffPhiL1OffHisto() {
00213           return offEtavsoffPhiL1Off_;
00214         }
00215         MonitorElement * getOffEtOnOffHisto() {
00216           return offEtOnOff_;
00217         }
00218         MonitorElement * getOffEtaOnOffHisto() {
00219           return offEtaOnOff_;
00220         }
00221         MonitorElement * getOffPhiOnOffHisto() {
00222           return offPhiOnOff_;
00223         }
00224         MonitorElement * getOffEtaVsOffPhiOnOffHisto() {
00225           return offEtavsoffPhiOnOff_;
00226         }
00227         const std::string getLabel(void ) const {
00228           return filterName_;
00229         }
00230         void setLabel(std::string labelName){
00231           filterName_ = labelName;
00232           return;
00233         }
00234         const std::string getPath(void ) const {
00235           return pathName_;
00236         }
00237         const std::string getl1Path(void ) const {
00238           return l1pathName_;
00239         }
00240         const std::string getDenomPath(void ) const {
00241           return denomPathName_;
00242         }
00243         const std::string getProcess(void ) const {
00244           return processName_;
00245         }
00246         const int getObjectType(void ) const {
00247           return objectType_;
00248         }
00249 
00250         const edm::InputTag getTag(void) const{
00251           edm::InputTag tagName(filterName_,"",processName_);
00252           return tagName;
00253         }
00254         ~PathInfo() {};
00255         PathInfo(std::string denomPathName, std::string pathName, std::string l1pathName, std::string filterName, std::string processName, size_t type, float ptmin, 
00256                  float ptmax):
00257           denomPathName_(denomPathName), pathName_(pathName), l1pathName_(l1pathName), filterName_(filterName), processName_(processName), objectType_(type),
00258           NOn_(0),
00259           onEtOn_(0), onEtaOn_(0), onPhiOn_(0), onEtavsonPhiOn_(0),
00260           offEtOff_(0), offEtaOff_(0), offPhiOff_(0), offEtavsoffPhiOff_(0),
00261           l1EtL1_(0), l1EtaL1_(0), l1PhiL1_(0), l1Etavsl1PhiL1_(0),
00262           l1EtL1On_(0), l1EtaL1On_(0), l1PhiL1On_(0), l1Etavsl1PhiL1On_(0),
00263           offEtL1Off_(0), offEtaL1Off_(0), offPhiL1Off_(0), offEtavsoffPhiL1Off_(0),
00264           offEtOnOff_(0), offEtaOnOff_(0), offPhiOnOff_(0), offEtavsoffPhiOnOff_(0),
00265           ptmin_(ptmin), ptmax_(ptmax)
00266           {
00267           };
00268           PathInfo(std::string denomPathName, std::string pathName, std::string l1pathName, std::string filterName, std::string processName, size_t type,
00269                    MonitorElement *NOn,
00270                    MonitorElement *onEtOn,
00271                    MonitorElement *onEtaOn,
00272                    MonitorElement *onPhiOn,
00273                    MonitorElement *onEtavsonPhiOn,
00274                    MonitorElement *offEtOff,
00275                    MonitorElement *offEtaOff,
00276                    MonitorElement *offPhiOff,
00277                    MonitorElement *offEtavsoffPhiOff,
00278                    MonitorElement *l1EtL1,
00279                    MonitorElement *l1EtaL1,
00280                    MonitorElement *l1PhiL1,
00281                    MonitorElement *l1Etavsl1PhiL1,
00282                    MonitorElement *l1EtL1On,
00283                    MonitorElement *l1EtaL1On,
00284                    MonitorElement *l1PhiL1On,
00285                    MonitorElement *l1Etavsl1PhiL1On,
00286                    MonitorElement *offEtL1Off,
00287                    MonitorElement *offEtaL1Off,
00288                    MonitorElement *offPhiL1Off,
00289                    MonitorElement *offEtavsoffPhiL1Off,
00290                    MonitorElement *offEtOnOff,
00291                    MonitorElement *offEtaOnOff,
00292                    MonitorElement *offPhiOnOff,
00293                    MonitorElement *offEtavsoffPhiOnOff,
00294                    float ptmin, float ptmax
00295                    ):
00296             denomPathName_(denomPathName), pathName_(pathName), l1pathName_(l1pathName), filterName_(filterName), processName_(processName), objectType_(type),
00297             NOn_(NOn), 
00298             onEtOn_(onEtOn), onEtaOn_(onEtaOn), onPhiOn_(onPhiOn), onEtavsonPhiOn_(onEtavsonPhiOn),
00299             offEtOff_(offEtOff), offEtaOff_(offEtaOff), offPhiOff_(offPhiOff), offEtavsoffPhiOff_(offEtavsoffPhiOff),
00300             l1EtL1_(l1EtL1), l1EtaL1_(l1EtaL1), l1PhiL1_(l1PhiL1), l1Etavsl1PhiL1_(l1Etavsl1PhiL1),
00301             l1EtL1On_(l1EtL1On), l1EtaL1On_(l1EtaL1On), l1PhiL1On_(l1PhiL1On), l1Etavsl1PhiL1On_(l1Etavsl1PhiL1On),
00302             offEtL1Off_(offEtL1Off), offEtaL1Off_(offEtaL1Off), offPhiL1Off_(offPhiL1Off), offEtavsoffPhiL1Off_(offEtavsoffPhiL1Off),
00303             offEtOnOff_(offEtOnOff), offEtaOnOff_(offEtaOnOff), offPhiOnOff_(offPhiOnOff), offEtavsoffPhiOnOff_(offEtavsoffPhiOnOff),
00304             ptmin_(ptmin), ptmax_(ptmax)
00305             {};
00306             bool operator==(const std::string v) 
00307             {
00308               return v==filterName_;
00309             }
00310       private:
00311           int pathIndex_;
00312           std::string denomPathName_;
00313           std::string pathName_;
00314           std::string l1pathName_;
00315           std::string filterName_;
00316           std::string processName_;
00317           int objectType_;
00318 
00319           // we don't own this data
00320           MonitorElement *NOn_, *onEtOn_, *onEtaOn_, *onPhiOn_, *onEtavsonPhiOn_;
00321           MonitorElement *offEtOff_, *offEtaOff_, *offPhiOff_, *offEtavsoffPhiOff_;
00322           MonitorElement *l1EtL1_, *l1EtaL1_, *l1PhiL1_, *l1Etavsl1PhiL1_;
00323           MonitorElement *l1EtL1On_, *l1EtaL1On_, *l1PhiL1On_, *l1Etavsl1PhiL1On_;
00324           MonitorElement *offEtL1Off_, *offEtaL1Off_, *offPhiL1Off_, *offEtavsoffPhiL1Off_;
00325           MonitorElement *offEtOnOff_, *offEtaOnOff_, *offPhiOnOff_, *offEtavsoffPhiOnOff_;
00326 
00327           float ptmin_, ptmax_;
00328 
00329           const int index() { 
00330             return pathIndex_;
00331           }
00332           const int type() { 
00333             return objectType_;
00334           }
00335       public:
00336           float getPtMin() const { return ptmin_; }
00337           float getPtMax() const { return ptmax_; }
00338       };
00339 
00340       // simple collection - just 
00341       class PathInfoCollection: public std::vector<PathInfo> {
00342       public:
00343         PathInfoCollection(): std::vector<PathInfo>() 
00344           {};
00345           std::vector<PathInfo>::iterator find(std::string pathName) {
00346             return std::find(begin(), end(), pathName);
00347           }
00348       };
00349       PathInfoCollection hltPaths_;
00350 
00351 
00352 };
00353 #endif

Generated on Tue Jun 9 17:34:09 2009 for CMSSW by  doxygen 1.5.4