CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/src/DQMOffline/Trigger/interface/JetMETHLTOfflineSource.h

Go to the documentation of this file.
00001 /*
00002   JetMETHLTOffline DQM code
00003   Responsible: Sunil Bansal, Shabnam Jabeen, Michael Luk, Phat Srimanobhas
00004   Contact: Phat Srimanobhas (srimanob@mail.cern.ch)
00005   Last modified: 31 July 2012
00006 */
00007 
00008 #ifndef JetMETHLTOfflineSource_H
00009 #define JetMETHLTOfflineSource_H
00010 
00011 // system include files
00012 #include <memory>
00013 #include <unistd.h>
00014 
00015 // user include files
00016 #include "DQMServices/Core/interface/DQMStore.h"
00017 #include "DQMServices/Core/interface/MonitorElement.h"
00018 
00019 #include "FWCore/Common/interface/TriggerNames.h"
00020 #include "FWCore/Framework/interface/Frameworkfwd.h"
00021 #include "FWCore/Framework/interface/EDAnalyzer.h"
00022 #include "FWCore/Framework/interface/Event.h"
00023 #include "FWCore/Framework/interface/MakerMacros.h"
00024 #include "FWCore/ServiceRegistry/interface/Service.h"
00025 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00026 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00027 
00028 #include "DataFormats/Common/interface/TriggerResults.h"
00029 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
00030 #include "DataFormats/HLTReco/interface/TriggerObject.h"
00031 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
00032 
00033 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
00034 
00035 #include "RecoJets/JetProducers/interface/JetIDHelper.h"
00036 
00037 #include "DataFormats/JetReco/interface/Jet.h"
00038 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00039 #include "DataFormats/JetReco/interface/CaloJet.h"
00040 #include "DataFormats/JetReco/interface/PFJetCollection.h"
00041 #include "DataFormats/JetReco/interface/PFJet.h"
00042 
00043 #include "DataFormats/METReco/interface/MET.h"
00044 #include "DataFormats/METReco/interface/CaloMETCollection.h"
00045 #include "DataFormats/METReco/interface/CaloMET.h"
00046 #include "DataFormats/METReco/interface/PFMETCollection.h"
00047 #include "DataFormats/METReco/interface/PFMET.h"
00048 
00049 #include "DataFormats/VertexReco/interface/Vertex.h"
00050 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00051 
00052 #include <iostream>
00053 #include <fstream>
00054 #include <vector>
00055 #include <string>
00056 #include <sstream> 
00057 
00058 class PtSorter {
00059  public:
00060    template <class T> bool operator() ( const T& a, const T& b ) {
00061      return ( a.pt() > b.pt() );
00062    }
00063  };
00064 
00065 class JetMETHLTOfflineSource : public edm::EDAnalyzer {
00066  public:
00067   explicit JetMETHLTOfflineSource(const edm::ParameterSet&);
00068   ~JetMETHLTOfflineSource();
00069   
00070  private:
00071   virtual void beginJob() ;
00072   virtual void analyze(const edm::Event&, const edm::EventSetup&);
00073   virtual void endJob() ;
00074   void beginRun(const edm::Run& run, const edm::EventSetup& c);
00075   void histobooking( const edm::EventSetup& c);
00076   void endRun(const edm::Run& run, const edm::EventSetup& c);
00077   void beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, 
00078                             const edm::EventSetup& c);
00080   void endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, 
00081                           const edm::EventSetup& c);
00082   
00083   virtual bool   isBarrel(double eta);
00084   virtual bool   isEndCap(double eta); 
00085   virtual bool   isForward(double eta);
00086   virtual bool   validPathHLT(std::string path);
00087   virtual bool   isHLTPathAccepted(std::string pathName);
00088   virtual bool   isTriggerObjectFound(std::string objectName);
00089   virtual double TriggerPosition(std::string trigName);
00090   virtual void   fillMEforMonTriggerSummary(const edm::Event & iEvent, const edm::EventSetup&);
00091   virtual void   fillMEforMonAllTrigger(const edm::Event & iEvent, const edm::EventSetup&);
00092   virtual void   fillMEforMonAllTriggerwrtMuonTrigger(const edm::Event & iEvent, const edm::EventSetup&);
00093   virtual void   fillMEforEffAllTrigger(const edm::Event & iEvent, const edm::EventSetup&);
00094   virtual void   fillMEforEffWrtMuTrigger(const edm::Event & iEvent, const edm::EventSetup&);
00095   virtual void   fillMEforEffWrtMBTrigger(const edm::Event & iEvent, const edm::EventSetup&);
00096   virtual void   fillMEforTriggerNTfired();
00097     
00098   const std::string getL1ConditionModuleName(const std::string& pathname); //ml added
00099   
00100   // ----------member data --------------------------- 
00101   int nev_;
00102   DQMStore * dbe;
00103   
00104   MonitorElement* total_;
00105   
00106   std::vector<std::string>  MuonTrigPaths_;
00107   std::vector<std::string>  MBTrigPaths_;
00108   std::vector<int>  prescUsed_;
00109   
00110   std::string dirname_;
00111   std::string processname_;
00112   // JetID helper
00113   reco::helper::JetIDHelper *jetID;
00114   
00115   bool verbose_;
00116   bool runStandalone_;
00117   bool plotAll_;
00118   bool plotAllwrtMu_;
00119   bool plotEff_ ;
00120   bool plotEffwrtMu_;
00121   bool plotEffwrtMB_;
00122   
00123   bool isSetup_;
00124   bool nameForEff_;  
00125   
00126   double _fEMF;
00127   double _feta;
00128   double _fHPD;
00129   double _n90Hits; 
00130   double _pfMHT;
00131   double _min_NHEF;
00132   double _max_NHEF;
00133   double _min_CHEF;
00134   double _max_CHEF;
00135   double _min_NEMF;
00136   double _max_NEMF;
00137   double _min_CEMF;
00138   double _max_CEMF;
00139   
00140   edm::InputTag triggerSummaryLabel_;
00141   edm::InputTag triggerResultsLabel_;
00142   edm::InputTag caloJetsTag_;
00143   edm::InputTag caloMETTag_;
00144   edm::InputTag pfJetsTag_;
00145   edm::InputTag pfMETTag_;
00146   
00147   edm::Handle<reco::CaloJetCollection> calojetColl_;
00148   edm::Handle<reco::CaloMETCollection> calometColl_; 
00149   edm::Handle<reco::PFJetCollection>   pfjetColl_;
00150   edm::Handle<reco::PFMETCollection>   pfmetColl_;
00151   
00152   std::string CaloJetCorService_;
00153   std::string PFJetCorService_;
00154 
00155   std::vector<std::string> pathFilter_;
00156   std::vector<std::string> pathRejectKeyword_;
00157   std::vector<std::pair<std::string, std::string> > custompathnamepairs_;
00158   
00159   reco::CaloJetCollection calojet;
00160   reco::PFJetCollection pfjet;
00161   HLTConfigProvider hltConfig_;
00162   edm::Handle<edm::TriggerResults> triggerResults_;
00163   edm::TriggerNames triggerNames_; // TriggerNames class
00164   edm::Handle<trigger::TriggerEvent> triggerObj_;
00165 
00166   double CaloJetPx[2];
00167   double CaloJetPy[2];
00168   double CaloJetPt[2];
00169   double CaloJetEta[2];
00170   double CaloJetPhi[2]; 
00171   double CaloJetEMF[2];
00172   double CaloJetfHPD[2];
00173   double CaloJetn90[2];
00174 
00175   double PFJetPx[2];
00176   double PFJetPy[2];
00177   double PFJetPt[2];
00178   double PFJetEta[2];
00179   double PFJetPhi[2];
00180   double PFJetNHEF[2];
00181   double PFJetCHEF[2];
00182   double PFJetNEMF[2];
00183   double PFJetCEMF[2];
00184 
00185   double pfMHTx_All;
00186   double pfMHTy_All;
00187   
00188   
00189   // data across paths
00190   MonitorElement* scalersSelect;
00191   // helper class to store the data path
00192   
00193   class PathInfo {
00194     PathInfo():
00195       pathIndex_(-1), 
00196       prescaleUsed_(-1),
00197       denomPathName_("unset"), 
00198       pathName_("unset"), 
00199       l1pathName_("unset"), 
00200       filterName_("unset"), 
00201       DenomfilterName_("unset"), 
00202       processName_("unset"), 
00203       objectType_(-1), 
00204       triggerType_("unset")
00205         {};
00206   public:
00207     void setHistos(MonitorElement* const N, 
00208                    MonitorElement* const Pt, 
00209                    MonitorElement* const PtBarrel,
00210                    MonitorElement* const PtEndcap,
00211                    MonitorElement* const PtForward,
00212                    MonitorElement* const Eta,
00213                    MonitorElement* const Phi, 
00214                    MonitorElement* const EtaPhi,
00215                    //
00216                    MonitorElement* const N_L1,
00217                    MonitorElement* const Pt_L1,
00218                    MonitorElement* const PtBarrel_L1,
00219                    MonitorElement* const PtEndcap_L1,
00220                    MonitorElement* const PtForward_L1,
00221                    MonitorElement* const Eta_L1,
00222                    MonitorElement* const Phi_L1,
00223                    MonitorElement* const EtaPhi_L1,
00224                    MonitorElement* const N_HLT,
00225                    MonitorElement* const Pt_HLT,
00226                    MonitorElement* const PtBarrel_HLT,
00227                    MonitorElement* const PtEndcap_HLT,
00228                    MonitorElement* const PtForward_HLT,
00229                    MonitorElement* const Eta_HLT,
00230                    MonitorElement* const Phi_HLT,
00231                    MonitorElement* const EtaPhi_HLT, 
00232                    //
00233                    MonitorElement* const PtResolution_L1HLT,
00234                    MonitorElement* const EtaResolution_L1HLT,
00235                    MonitorElement* const PhiResolution_L1HLT, 
00236                    MonitorElement* const PtResolution_HLTRecObj,
00237                    MonitorElement* const EtaResolution_HLTRecObj,
00238                    MonitorElement* const PhiResolution_HLTRecObj,
00239                    //
00240                    MonitorElement* const PtCorrelation_L1HLT,
00241                    MonitorElement* const EtaCorrelation_L1HLT,
00242                    MonitorElement* const PhiCorrelation_L1HLT,
00243                    MonitorElement* const PtCorrelation_HLTRecObj,
00244                    MonitorElement* const EtaCorrelation_HLTRecObj,
00245                    MonitorElement* const PhiCorrelation_HLTRecObj,
00246                    //
00247                    MonitorElement* const JetAveragePt,
00248                    MonitorElement* const JetAverageEta,  
00249                    MonitorElement* const JetPhiDifference,
00250                    MonitorElement* const HLTAveragePt,
00251                    MonitorElement* const HLTAverageEta,
00252                    MonitorElement* const HLTPhiDifference,
00253                    MonitorElement* const L1AveragePt,
00254                    MonitorElement* const L1AverageEta,
00255                    MonitorElement* const L1PhiDifference
00256                    //
00257                    //MonitorElement* const PVZ,
00258                    //MonitorElement* const NVertices
00259                    )    
00260       
00261     {
00262       N_                        = N;
00263       Pt_                       = Pt;
00264       PtBarrel_                 = PtBarrel;
00265       PtEndcap_                 = PtEndcap;
00266       PtForward_                = PtForward;
00267       Eta_                      = Eta;
00268       Phi_                      = Phi;
00269       EtaPhi_                   = EtaPhi;
00270       N_L1_                     = N_L1;
00271       Pt_L1_                    = Pt_L1;
00272       PtBarrel_L1_              = PtBarrel_L1;
00273       PtEndcap_L1_              = PtEndcap_L1;
00274       PtForward_L1_             = PtForward_L1;
00275       Eta_L1_                   = Eta_L1;
00276       Phi_L1_                   = Phi_L1;
00277       EtaPhi_L1_                = EtaPhi_L1 ;
00278       N_HLT_                    = N_HLT;
00279       Pt_HLT_                   = Pt_HLT;
00280       PtBarrel_HLT_             = PtBarrel_HLT;
00281       PtEndcap_HLT_             = PtEndcap_HLT;
00282       PtForward_HLT_            = PtForward_HLT;
00283       Eta_HLT_                  = Eta_HLT;
00284       Phi_HLT_                  = Phi_HLT;
00285       EtaPhi_HLT_               = EtaPhi_HLT ;
00286       //
00287       PtResolution_L1HLT_       = PtResolution_L1HLT;
00288       EtaResolution_L1HLT_      = EtaResolution_L1HLT;
00289       PhiResolution_L1HLT_      = PhiResolution_L1HLT;
00290       PtResolution_HLTRecObj_   = PtResolution_HLTRecObj;
00291       EtaResolution_HLTRecObj_  = EtaResolution_HLTRecObj;
00292       PhiResolution_HLTRecObj_  = PhiResolution_HLTRecObj;
00293       //
00294       PtCorrelation_L1HLT_      = PtCorrelation_L1HLT;
00295       EtaCorrelation_L1HLT_     = EtaCorrelation_L1HLT;
00296       PhiCorrelation_L1HLT_     = PhiCorrelation_L1HLT;
00297       PtCorrelation_HLTRecObj_  = PtCorrelation_HLTRecObj;
00298       EtaCorrelation_HLTRecObj_ = EtaCorrelation_HLTRecObj;
00299       PhiCorrelation_HLTRecObj_ = PhiCorrelation_HLTRecObj;
00300       //
00301       JetAveragePt_             = JetAveragePt;
00302       JetAverageEta_            = JetAverageEta;
00303       JetPhiDifference_         = JetPhiDifference;
00304       HLTAveragePt_             = HLTAveragePt;
00305       HLTAverageEta_            = HLTAverageEta;
00306       HLTPhiDifference_         = HLTPhiDifference; 
00307       L1AveragePt_              = L1AveragePt;
00308       L1AverageEta_             = L1AverageEta;
00309       L1PhiDifference_          = L1PhiDifference;
00310     };
00311     
00312     void setDgnsHistos(MonitorElement* const TriggerSummary,
00313                        MonitorElement* const JetSize,
00314                        MonitorElement* const JetPt,  
00315                        MonitorElement* const EtavsPt,
00316                        MonitorElement* const PhivsPt,
00317                        MonitorElement* const Pt12,
00318                        MonitorElement* const Eta12,
00319                        MonitorElement* const Phi12,                      
00320                        MonitorElement* const Pt3,
00321                        MonitorElement* const Pt12Pt3,
00322                        MonitorElement* const Pt12Phi12
00323                        )
00324     {
00325       TriggerSummary_ = TriggerSummary; 
00326       JetSize_        = JetSize;
00327       JetPt_          = JetPt;
00328       EtavsPt_        = EtavsPt;
00329       PhivsPt_        = PhivsPt;
00330       Pt12_           = Pt12;
00331       Eta12_          = Eta12;
00332       Phi12_          = Phi12;
00333       Pt3_            = Pt3;
00334       Pt12Pt3_        = Pt12Pt3;
00335       Pt12Phi12_      = Pt12Phi12; 
00336     };
00337     
00338     void setEffHistos(MonitorElement* const NumeratorPt,
00339                       MonitorElement* const NumeratorPtBarrel,
00340                       MonitorElement* const NumeratorPtEndcap,
00341                       MonitorElement* const NumeratorPtForward,
00342                       MonitorElement* const NumeratorEta,
00343                       MonitorElement* const NumeratorPhi,
00344                       MonitorElement* const NumeratorEtaPhi,
00345                       //
00346                       MonitorElement* const NumeratorEtaBarrel,
00347                       MonitorElement* const NumeratorPhiBarrel,
00348                       MonitorElement* const NumeratorEtaEndcap,
00349                       MonitorElement* const NumeratorPhiEndcap,
00350                       MonitorElement* const NumeratorEtaForward,
00351                       MonitorElement* const NumeratorPhiForward,
00352                       MonitorElement* const NumeratorEta_LowpTcut,
00353                       MonitorElement* const NumeratorPhi_LowpTcut,
00354                       MonitorElement* const NumeratorEtaPhi_LowpTcut,
00355                       MonitorElement* const NumeratorEta_MedpTcut,
00356                       MonitorElement* const NumeratorPhi_MedpTcut,
00357                       MonitorElement* const NumeratorEtaPhi_MedpTcut,
00358                       MonitorElement* const NumeratorEta_HighpTcut,
00359                       MonitorElement* const NumeratorPhi_HighpTcut,
00360                       MonitorElement* const NumeratorEtaPhi_HighpTcut,      
00361                       //
00362                       MonitorElement* const DenominatorPt,
00363                       MonitorElement* const DenominatorPtBarrel,
00364                       MonitorElement* const DenominatorPtEndcap,
00365                       MonitorElement* const DenominatorPtForward,
00366                       MonitorElement* const DenominatorEta,
00367                       MonitorElement* const DenominatorPhi,
00368                       MonitorElement* const DenominatorEtaPhi,
00369                       //
00370                       MonitorElement* const DenominatorEtaBarrel,
00371                       MonitorElement* const DenominatorPhiBarrel,
00372                       MonitorElement* const DenominatorEtaEndcap,
00373                       MonitorElement* const DenominatorPhiEndcap,
00374                       MonitorElement* const DenominatorEtaForward,
00375                       MonitorElement* const DenominatorPhiForward,
00376                       MonitorElement* const DenominatorEta_LowpTcut,
00377                       MonitorElement* const DenominatorPhi_LowpTcut,
00378                       MonitorElement* const DenominatorEtaPhi_LowpTcut,
00379                       MonitorElement* const DenominatorEta_MedpTcut,
00380                       MonitorElement* const DenominatorPhi_MedpTcut,
00381                       MonitorElement* const DenominatorEtaPhi_MedpTcut,
00382                       MonitorElement* const DenominatorEta_HighpTcut,
00383                       MonitorElement* const DenominatorPhi_HighpTcut,
00384                       MonitorElement* const DenominatorEtaPhi_HighpTcut,
00385                       //
00386                       MonitorElement* const DeltaR,
00387                       MonitorElement* const DeltaPhi,
00388                       //
00389                       MonitorElement* const NumeratorPFPt,
00390                       MonitorElement* const NumeratorPFMHT,
00391                       MonitorElement* const NumeratorPFPtBarrel,
00392                       MonitorElement* const NumeratorPFPtEndcap,
00393                       MonitorElement* const NumeratorPFPtForward,
00394                       MonitorElement* const NumeratorPFEta,
00395                       MonitorElement* const NumeratorPFPhi,
00396                       MonitorElement* const NumeratorPFEtaPhi,
00397                       //
00398                       MonitorElement* const NumeratorPFEtaBarrel,
00399                       MonitorElement* const NumeratorPFPhiBarrel,
00400                       MonitorElement* const NumeratorPFEtaEndcap,
00401                       MonitorElement* const NumeratorPFPhiEndcap,
00402                       MonitorElement* const NumeratorPFEtaForward,
00403                       MonitorElement* const NumeratorPFPhiForward,
00404                       MonitorElement* const NumeratorPFEta_LowpTcut,
00405                       MonitorElement* const NumeratorPFPhi_LowpTcut,
00406                       MonitorElement* const NumeratorPFEtaPhi_LowpTcut,
00407                       MonitorElement* const NumeratorPFEta_MedpTcut,
00408                       MonitorElement* const NumeratorPFPhi_MedpTcut,
00409                       MonitorElement* const NumeratorPFEtaPhi_MedpTcut,
00410                       MonitorElement* const NumeratorPFEta_HighpTcut,
00411                       MonitorElement* const NumeratorPFPhi_HighpTcut,
00412                       MonitorElement* const NumeratorPFEtaPhi_HighpTcut,      
00413                       //
00414                       MonitorElement* const DenominatorPFPt,
00415                       MonitorElement* const DenominatorPFMHT,
00416                       MonitorElement* const DenominatorPFPtBarrel,
00417                       MonitorElement* const DenominatorPFPtEndcap,
00418                       MonitorElement* const DenominatorPFPtForward,
00419                       MonitorElement* const DenominatorPFEta,
00420                       MonitorElement* const DenominatorPFPhi,
00421                       MonitorElement* const DenominatorPFEtaPhi,
00422                       //
00423                       MonitorElement* const DenominatorPFEtaBarrel,
00424                       MonitorElement* const DenominatorPFPhiBarrel,
00425                       MonitorElement* const DenominatorPFEtaEndcap,
00426                       MonitorElement* const DenominatorPFPhiEndcap,
00427                       MonitorElement* const DenominatorPFEtaForward,
00428                       MonitorElement* const DenominatorPFPhiForward,
00429                       MonitorElement* const DenominatorPFEta_LowpTcut,
00430                       MonitorElement* const DenominatorPFPhi_LowpTcut,
00431                       MonitorElement* const DenominatorPFEtaPhi_LowpTcut,
00432                       MonitorElement* const DenominatorPFEta_MedpTcut,
00433                       MonitorElement* const DenominatorPFPhi_MedpTcut,
00434                       MonitorElement* const DenominatorPFEtaPhi_MedpTcut,
00435                       MonitorElement* const DenominatorPFEta_HighpTcut,
00436                       MonitorElement* const DenominatorPFPhi_HighpTcut,
00437                       MonitorElement* const DenominatorPFEtaPhi_HighpTcut,
00438                       //
00439                       MonitorElement* const PFDeltaR,
00440                       MonitorElement* const PFDeltaPhi        
00441                       )
00442     {
00443       NumeratorPt_                   = NumeratorPt;
00444       NumeratorPtBarrel_             = NumeratorPtBarrel;
00445       NumeratorPtEndcap_             = NumeratorPtEndcap;
00446       NumeratorPtForward_            = NumeratorPtForward;
00447       NumeratorEta_                  = NumeratorEta;
00448       NumeratorPhi_                  = NumeratorPhi;
00449       NumeratorEtaPhi_               = NumeratorEtaPhi; 
00450       //
00451       NumeratorEtaBarrel_            = NumeratorEtaBarrel;
00452       NumeratorPhiBarrel_            = NumeratorPhiBarrel;
00453       NumeratorEtaEndcap_            = NumeratorEtaEndcap;
00454       NumeratorPhiEndcap_            = NumeratorPhiEndcap;
00455       NumeratorEtaForward_           = NumeratorEtaForward;
00456       NumeratorPhiForward_           = NumeratorPhiForward;
00457       NumeratorEta_LowpTcut_         = NumeratorEta_LowpTcut;
00458       NumeratorPhi_LowpTcut_         = NumeratorPhi_LowpTcut;
00459       NumeratorEtaPhi_LowpTcut_      = NumeratorEtaPhi_LowpTcut;
00460       NumeratorEta_MedpTcut_         = NumeratorEta_MedpTcut;
00461       NumeratorPhi_MedpTcut_         = NumeratorPhi_MedpTcut;
00462       NumeratorEtaPhi_MedpTcut_      = NumeratorEtaPhi_MedpTcut;
00463       NumeratorEta_HighpTcut_        = NumeratorEta_HighpTcut;
00464       NumeratorPhi_HighpTcut_        = NumeratorPhi_HighpTcut;
00465       NumeratorEtaPhi_HighpTcut_     = NumeratorEtaPhi_HighpTcut;
00466       //
00467       DenominatorPt_                 = DenominatorPt;
00468       DenominatorPtBarrel_           = DenominatorPtBarrel;
00469       DenominatorPtEndcap_           = DenominatorPtEndcap;
00470       DenominatorPtForward_          = DenominatorPtForward;
00471       DenominatorEta_                = DenominatorEta;
00472       DenominatorPhi_                = DenominatorPhi;
00473       DenominatorEtaPhi_             = DenominatorEtaPhi;
00474       //
00475       DenominatorEtaBarrel_          = DenominatorEtaBarrel;
00476       DenominatorPhiBarrel_          = DenominatorPhiBarrel;
00477       DenominatorEtaEndcap_          = DenominatorEtaEndcap;
00478       DenominatorPhiEndcap_          = DenominatorPhiEndcap;
00479       DenominatorEtaForward_         = DenominatorEtaForward;
00480       DenominatorPhiForward_         = DenominatorPhiForward;
00481       DenominatorEta_LowpTcut_       = DenominatorEta_LowpTcut;
00482       DenominatorPhi_LowpTcut_       = DenominatorPhi_LowpTcut;
00483       DenominatorEtaPhi_LowpTcut_    = DenominatorEtaPhi_LowpTcut;
00484       DenominatorEta_MedpTcut_       = DenominatorEta_MedpTcut;
00485       DenominatorPhi_MedpTcut_       = DenominatorPhi_MedpTcut;
00486       DenominatorEtaPhi_MedpTcut_    = DenominatorEtaPhi_MedpTcut;
00487       DenominatorEta_HighpTcut_      = DenominatorEta_HighpTcut;
00488       DenominatorPhi_HighpTcut_      = DenominatorPhi_HighpTcut;
00489       DenominatorEtaPhi_HighpTcut_   = DenominatorEtaPhi_HighpTcut;
00490       //
00491       DeltaR_                        = DeltaR;  
00492       DeltaPhi_                      = DeltaPhi;
00493       //
00494       NumeratorPFPt_                 = NumeratorPFPt;
00495       NumeratorPFMHT_                = NumeratorPFMHT;
00496       NumeratorPFPtBarrel_           = NumeratorPFPtBarrel;
00497       NumeratorPFPtEndcap_           = NumeratorPFPtEndcap;
00498       NumeratorPFPtForward_          = NumeratorPFPtForward;
00499       NumeratorPFEta_                = NumeratorPFEta;
00500       NumeratorPFPhi_                = NumeratorPFPhi;
00501       NumeratorPFEtaPhi_             = NumeratorPFEtaPhi; 
00502       //
00503       NumeratorPFEtaBarrel_          = NumeratorPFEtaBarrel;
00504       NumeratorPFPhiBarrel_          = NumeratorPFPhiBarrel;
00505       NumeratorPFEtaEndcap_          = NumeratorPFEtaEndcap;
00506       NumeratorPFPhiEndcap_          = NumeratorPFPhiEndcap;
00507       NumeratorPFEtaForward_         = NumeratorPFEtaForward;
00508       NumeratorPFPhiForward_         = NumeratorPFPhiForward;
00509       NumeratorPFEta_LowpTcut_       = NumeratorPFEta_LowpTcut;
00510       NumeratorPFPhi_LowpTcut_       = NumeratorPFPhi_LowpTcut;
00511       NumeratorPFEtaPhi_LowpTcut_    = NumeratorPFEtaPhi_LowpTcut;
00512       NumeratorPFEta_MedpTcut_       = NumeratorPFEta_MedpTcut;
00513       NumeratorPFPhi_MedpTcut_       = NumeratorPFPhi_MedpTcut;
00514       NumeratorPFEtaPhi_MedpTcut_    = NumeratorPFEtaPhi_MedpTcut;
00515       NumeratorPFEta_HighpTcut_      = NumeratorPFEta_HighpTcut;
00516       NumeratorPFPhi_HighpTcut_      = NumeratorPFPhi_HighpTcut;
00517       NumeratorPFEtaPhi_HighpTcut_   = NumeratorPFEtaPhi_HighpTcut;
00518       //
00519       DenominatorPFPt_               = DenominatorPFPt;
00520       DenominatorPFMHT_              = DenominatorPFMHT;
00521       DenominatorPFPtBarrel_         = DenominatorPFPtBarrel;
00522       DenominatorPFPtEndcap_         = DenominatorPFPtEndcap;
00523       DenominatorPFPtForward_        = DenominatorPFPtForward;
00524       DenominatorPFEta_              = DenominatorPFEta;
00525       DenominatorPFPhi_              = DenominatorPFPhi;
00526       DenominatorPFEtaPhi_           = DenominatorPFEtaPhi;
00527       //
00528       DenominatorPFEtaBarrel_        = DenominatorPFEtaBarrel;
00529       DenominatorPFPhiBarrel_        = DenominatorPFPhiBarrel;
00530       DenominatorPFEtaEndcap_        = DenominatorPFEtaEndcap;
00531       DenominatorPFPhiEndcap_        = DenominatorPFPhiEndcap;
00532       DenominatorPFEtaForward_       = DenominatorPFEtaForward;
00533       DenominatorPFPhiForward_       = DenominatorPFPhiForward;
00534       DenominatorPFEta_LowpTcut_     = DenominatorPFEta_LowpTcut;
00535       DenominatorPFPhi_LowpTcut_     = DenominatorPFPhi_LowpTcut;
00536       DenominatorPFEtaPhi_LowpTcut_  = DenominatorPFEtaPhi_LowpTcut;
00537       DenominatorPFEta_MedpTcut_     = DenominatorPFEta_MedpTcut;
00538       DenominatorPFPhi_MedpTcut_     = DenominatorPFPhi_MedpTcut;
00539       DenominatorPFEtaPhi_MedpTcut_  =  DenominatorPFEtaPhi_MedpTcut;
00540       DenominatorPFEta_HighpTcut_    = DenominatorPFEta_HighpTcut;
00541       DenominatorPFPhi_HighpTcut_    = DenominatorPFPhi_HighpTcut;
00542       DenominatorPFEtaPhi_HighpTcut_ = DenominatorPFEtaPhi_HighpTcut;
00543       //
00544       PFDeltaR_                      = PFDeltaR;  
00545       PFDeltaPhi_                    = PFDeltaPhi;
00546       
00547       
00548     }; 
00549     ~PathInfo() {};
00550     PathInfo(int prescaleUsed, 
00551              std::string denomPathName, 
00552              std::string pathName, 
00553              std::string l1pathName, 
00554              std::string filterName, 
00555              std::string DenomfilterName, 
00556              std::string processName, 
00557              size_t type, 
00558              std::string triggerType):
00559       prescaleUsed_(prescaleUsed),
00560       denomPathName_(denomPathName), 
00561       pathName_(pathName), 
00562       l1pathName_(l1pathName), 
00563       filterName_(filterName), 
00564       DenomfilterName_(DenomfilterName), 
00565       processName_(processName), 
00566       objectType_(type), 
00567       triggerType_(triggerType){};
00568       
00569       MonitorElement * getMEhisto_N() { return N_;}
00570       MonitorElement * getMEhisto_Pt() { return Pt_;}
00571       MonitorElement * getMEhisto_PtBarrel() { return PtBarrel_;}
00572       MonitorElement * getMEhisto_PtEndcap() { return PtEndcap_;}
00573       MonitorElement * getMEhisto_PtForward() { return PtForward_;}
00574       MonitorElement * getMEhisto_Eta() { return Eta_; }
00575       MonitorElement * getMEhisto_Phi() { return Phi_; }
00576       MonitorElement * getMEhisto_EtaPhi() { return EtaPhi_; }
00577       
00578       MonitorElement * getMEhisto_N_L1() { return N_L1_;}
00579       MonitorElement * getMEhisto_Pt_L1() { return Pt_L1_;}
00580       MonitorElement * getMEhisto_PtBarrel_L1() { return PtBarrel_L1_;}
00581       MonitorElement * getMEhisto_PtEndcap_L1() { return PtEndcap_L1_;}
00582       MonitorElement * getMEhisto_PtForward_L1() { return PtForward_L1_;}
00583       MonitorElement * getMEhisto_Eta_L1() { return Eta_L1_; }
00584       MonitorElement * getMEhisto_Phi_L1() { return Phi_L1_; }
00585       MonitorElement * getMEhisto_EtaPhi_L1() { return EtaPhi_L1_; } 
00586       
00587       MonitorElement * getMEhisto_N_HLT() { return N_HLT_;}
00588       MonitorElement * getMEhisto_Pt_HLT() { return Pt_HLT_;}
00589       MonitorElement * getMEhisto_PtBarrel_HLT() { return PtBarrel_HLT_;}
00590       MonitorElement * getMEhisto_PtEndcap_HLT() { return PtEndcap_HLT_;}
00591       MonitorElement * getMEhisto_PtForward_HLT() { return PtForward_HLT_;}
00592       MonitorElement * getMEhisto_Eta_HLT() { return Eta_HLT_; }
00593       MonitorElement * getMEhisto_Phi_HLT() { return Phi_HLT_; }
00594       MonitorElement * getMEhisto_EtaPhi_HLT() { return EtaPhi_HLT_; }
00595       
00596       MonitorElement * getMEhisto_PtResolution_L1HLT() { return PtResolution_L1HLT_;}
00597       MonitorElement * getMEhisto_EtaResolution_L1HLT() { return EtaResolution_L1HLT_;}
00598       MonitorElement * getMEhisto_PhiResolution_L1HLT() { return PhiResolution_L1HLT_;}
00599       MonitorElement * getMEhisto_PtResolution_HLTRecObj() { return PtResolution_HLTRecObj_;}
00600       MonitorElement * getMEhisto_EtaResolution_HLTRecObj() { return EtaResolution_HLTRecObj_;}
00601       MonitorElement * getMEhisto_PhiResolution_HLTRecObj() { return PhiResolution_HLTRecObj_;}
00602       
00603       MonitorElement * getMEhisto_PtCorrelation_L1HLT() { return PtCorrelation_L1HLT_;}
00604       MonitorElement * getMEhisto_EtaCorrelation_L1HLT() { return EtaCorrelation_L1HLT_;}
00605       MonitorElement * getMEhisto_PhiCorrelation_L1HLT() { return PhiCorrelation_L1HLT_;}
00606       MonitorElement * getMEhisto_PtCorrelation_HLTRecObj() { return PtCorrelation_HLTRecObj_;}
00607       MonitorElement * getMEhisto_EtaCorrelation_HLTRecObj() { return EtaCorrelation_HLTRecObj_;}
00608       MonitorElement * getMEhisto_PhiCorrelation_HLTRecObj() { return PhiCorrelation_HLTRecObj_;}
00609       
00610       MonitorElement * getMEhisto_AveragePt_RecObj() {return JetAveragePt_;}
00611       MonitorElement * getMEhisto_AverageEta_RecObj() {return JetAverageEta_;}
00612       MonitorElement * getMEhisto_DeltaPhi_RecObj() {return JetPhiDifference_;}
00613       MonitorElement * getMEhisto_AveragePt_HLTObj() {return HLTAveragePt_;}
00614       MonitorElement * getMEhisto_AverageEta_HLTObj() {return HLTAverageEta_;}
00615       MonitorElement * getMEhisto_DeltaPhi_HLTObj() {return HLTPhiDifference_;}
00616       MonitorElement * getMEhisto_AveragePt_L1Obj() {return L1AveragePt_;}
00617       MonitorElement * getMEhisto_AverageEta_L1Obj() {return L1AverageEta_;}
00618       MonitorElement * getMEhisto_DeltaPhi_L1Obj() {return L1PhiDifference_;}
00619       
00620       MonitorElement * getMEhisto_NumeratorPt() { return NumeratorPt_;}
00621       MonitorElement * getMEhisto_NumeratorPtBarrel() { return NumeratorPtBarrel_;}
00622       MonitorElement * getMEhisto_NumeratorPtEndcap() { return NumeratorPtEndcap_;}
00623       MonitorElement * getMEhisto_NumeratorPtForward() { return NumeratorPtForward_;}
00624       MonitorElement * getMEhisto_NumeratorEta() { return NumeratorEta_; }
00625       MonitorElement * getMEhisto_NumeratorPhi() { return NumeratorPhi_; }
00626       MonitorElement * getMEhisto_NumeratorEtaPhi() { return NumeratorEtaPhi_; } 
00627       
00628       //ml
00629       MonitorElement * getMEhisto_NVertices() { return NVertices_; }
00630       MonitorElement * getMEhisto_PVZ() { return PVZ_; }
00631       
00632       MonitorElement * getMEhisto_NumeratorEtaBarrel() { return NumeratorEtaBarrel_; }
00633       MonitorElement * getMEhisto_NumeratorPhiBarrel() { return NumeratorPhiBarrel_; }
00634       MonitorElement * getMEhisto_NumeratorEtaEndcap() { return NumeratorEtaEndcap_; }
00635       MonitorElement * getMEhisto_NumeratorPhiEndcap() { return NumeratorPhiEndcap_; }
00636       MonitorElement * getMEhisto_NumeratorEtaForward() { return NumeratorEtaForward_; }
00637       MonitorElement * getMEhisto_NumeratorPhiForward() { return NumeratorPhiForward_; }
00638       MonitorElement * getMEhisto_NumeratorEta_LowpTcut() { return NumeratorEta_LowpTcut_; }
00639       MonitorElement * getMEhisto_NumeratorPhi_LowpTcut() { return NumeratorPhi_LowpTcut_; }
00640       MonitorElement * getMEhisto_NumeratorEtaPhi_LowpTcut() { return NumeratorEtaPhi_LowpTcut_; }
00641       MonitorElement * getMEhisto_NumeratorEta_MedpTcut() { return NumeratorEta_MedpTcut_; }
00642       MonitorElement * getMEhisto_NumeratorPhi_MedpTcut() { return NumeratorPhi_MedpTcut_; }
00643       MonitorElement * getMEhisto_NumeratorEtaPhi_MedpTcut() { return NumeratorEtaPhi_MedpTcut_; }
00644       MonitorElement * getMEhisto_NumeratorEta_HighpTcut() { return NumeratorEta_HighpTcut_; }
00645       MonitorElement * getMEhisto_NumeratorPhi_HighpTcut() { return NumeratorPhi_HighpTcut_; }
00646       MonitorElement * getMEhisto_NumeratorEtaPhi_HighpTcut() { return NumeratorEtaPhi_HighpTcut_; }
00647       //ml
00648       
00649       MonitorElement * getMEhisto_DenominatorPt() { return DenominatorPt_;}
00650       MonitorElement * getMEhisto_DenominatorPtBarrel() { return DenominatorPtBarrel_;}
00651       MonitorElement * getMEhisto_DenominatorPtEndcap() { return DenominatorPtEndcap_;}
00652       MonitorElement * getMEhisto_DenominatorPtForward() { return DenominatorPtForward_;}
00653       MonitorElement * getMEhisto_DenominatorEta() { return DenominatorEta_; }
00654       MonitorElement * getMEhisto_DenominatorPhi() { return DenominatorPhi_; }
00655       MonitorElement * getMEhisto_DenominatorEtaPhi() { return DenominatorEtaPhi_; }
00656       
00657       //ml
00658       MonitorElement * getMEhisto_DenominatorEtaBarrel() { return DenominatorEtaBarrel_; }
00659       MonitorElement * getMEhisto_DenominatorPhiBarrel() { return DenominatorPhiBarrel_; }
00660       MonitorElement * getMEhisto_DenominatorEtaEndcap() { return DenominatorEtaEndcap_; }
00661       MonitorElement * getMEhisto_DenominatorPhiEndcap() { return DenominatorPhiEndcap_; }
00662       MonitorElement * getMEhisto_DenominatorEtaForward() { return DenominatorEtaForward_; }
00663       MonitorElement * getMEhisto_DenominatorPhiForward() { return DenominatorPhiForward_; }
00664       
00665       MonitorElement * getMEhisto_DenominatorEta_LowpTcut() { return DenominatorEta_LowpTcut_; }
00666       MonitorElement * getMEhisto_DenominatorPhi_LowpTcut() { return DenominatorPhi_LowpTcut_; }
00667       MonitorElement * getMEhisto_DenominatorEtaPhi_LowpTcut() { return DenominatorEtaPhi_LowpTcut_; }
00668       MonitorElement * getMEhisto_DenominatorEta_MedpTcut() { return DenominatorEta_MedpTcut_; }
00669       MonitorElement * getMEhisto_DenominatorPhi_MedpTcut() { return DenominatorPhi_MedpTcut_; }
00670       MonitorElement * getMEhisto_DenominatorEtaPhi_MedpTcut() { return DenominatorEtaPhi_MedpTcut_; }
00671       MonitorElement * getMEhisto_DenominatorEta_HighpTcut() { return DenominatorEta_HighpTcut_; }
00672       MonitorElement * getMEhisto_DenominatorPhi_HighpTcut() { return DenominatorPhi_HighpTcut_; }
00673       MonitorElement * getMEhisto_DenominatorEtaPhi_HighpTcut() { return DenominatorEtaPhi_HighpTcut_; }
00674       //adding PF histos SJ     
00675       MonitorElement * getMEhisto_NumeratorPFPt() { return NumeratorPFPt_;}
00676       MonitorElement * getMEhisto_NumeratorPFMHT() { return NumeratorPFMHT_;}
00677       
00678       MonitorElement * getMEhisto_NumeratorPFPtBarrel() { return NumeratorPFPtBarrel_;}
00679       MonitorElement * getMEhisto_NumeratorPFPtEndcap() { return NumeratorPFPtEndcap_;}
00680       MonitorElement * getMEhisto_NumeratorPFPtForward() { return NumeratorPFPtForward_;}
00681       MonitorElement * getMEhisto_NumeratorPFEta() { return NumeratorPFEta_; }
00682       MonitorElement * getMEhisto_NumeratorPFPhi() { return NumeratorPFPhi_; }
00683       MonitorElement * getMEhisto_NumeratorPFEtaPhi() { return NumeratorPFEtaPhi_; } 
00684       
00685       MonitorElement * getMEhisto_NumeratorPFEtaBarrel() { return NumeratorPFEtaBarrel_; }
00686       MonitorElement * getMEhisto_NumeratorPFPhiBarrel() { return NumeratorPFPhiBarrel_; }
00687       MonitorElement * getMEhisto_NumeratorPFEtaEndcap() { return NumeratorPFEtaEndcap_; }
00688       MonitorElement * getMEhisto_NumeratorPFPhiEndcap() { return NumeratorPFPhiEndcap_; }
00689       MonitorElement * getMEhisto_NumeratorPFEtaForward() { return NumeratorPFEtaForward_; }
00690       MonitorElement * getMEhisto_NumeratorPFPhiForward() { return NumeratorPFPhiForward_; }
00691       MonitorElement * getMEhisto_NumeratorPFEta_LowpTcut() { return NumeratorPFEta_LowpTcut_; }
00692       MonitorElement * getMEhisto_NumeratorPFPhi_LowpTcut() { return NumeratorPFPhi_LowpTcut_; }
00693       MonitorElement * getMEhisto_NumeratorPFEtaPhi_LowpTcut() { return NumeratorPFEtaPhi_LowpTcut_; }
00694       MonitorElement * getMEhisto_NumeratorPFEta_MedpTcut() { return NumeratorPFEta_MedpTcut_; }
00695       MonitorElement * getMEhisto_NumeratorPFPhi_MedpTcut() { return NumeratorPFPhi_MedpTcut_; }
00696       MonitorElement * getMEhisto_NumeratorPFEtaPhi_MedpTcut() { return NumeratorPFEtaPhi_MedpTcut_; }
00697       MonitorElement * getMEhisto_NumeratorPFEta_HighpTcut() { return NumeratorPFEta_HighpTcut_; }
00698       MonitorElement * getMEhisto_NumeratorPFPhi_HighpTcut() { return NumeratorPFPhi_HighpTcut_; }
00699       MonitorElement * getMEhisto_NumeratorPFEtaPhi_HighpTcut() { return NumeratorPFEtaPhi_HighpTcut_; }
00700       MonitorElement * getMEhisto_DenominatorPFPt() { return DenominatorPFPt_;}
00701       MonitorElement * getMEhisto_DenominatorPFMHT() { return DenominatorPFMHT_;}
00702       MonitorElement * getMEhisto_DenominatorPFPtBarrel() { return DenominatorPFPtBarrel_;}
00703       MonitorElement * getMEhisto_DenominatorPFPtEndcap() { return DenominatorPFPtEndcap_;}
00704       MonitorElement * getMEhisto_DenominatorPFPtForward() { return DenominatorPFPtForward_;}
00705       MonitorElement * getMEhisto_DenominatorPFEta() { return DenominatorPFEta_; }
00706       MonitorElement * getMEhisto_DenominatorPFPhi() { return DenominatorPFPhi_; }
00707       MonitorElement * getMEhisto_DenominatorPFEtaPhi() { return DenominatorPFEtaPhi_; }
00708       
00709       MonitorElement * getMEhisto_DenominatorPFEtaBarrel() { return DenominatorPFEtaBarrel_; }
00710       MonitorElement * getMEhisto_DenominatorPFPhiBarrel() { return DenominatorPFPhiBarrel_; }
00711       MonitorElement * getMEhisto_DenominatorPFEtaEndcap() { return DenominatorPFEtaEndcap_; }
00712       MonitorElement * getMEhisto_DenominatorPFPhiEndcap() { return DenominatorPFPhiEndcap_; }
00713       MonitorElement * getMEhisto_DenominatorPFEtaForward() { return DenominatorPFEtaForward_; }
00714       MonitorElement * getMEhisto_DenominatorPFPhiForward() { return DenominatorPFPhiForward_; }
00715       
00716       MonitorElement * getMEhisto_DenominatorPFEta_LowpTcut() { return DenominatorPFEta_LowpTcut_; }
00717       MonitorElement * getMEhisto_DenominatorPFPhi_LowpTcut() { return DenominatorPFPhi_LowpTcut_; }
00718       MonitorElement * getMEhisto_DenominatorPFEtaPhi_LowpTcut() { return DenominatorPFEtaPhi_LowpTcut_; }
00719       MonitorElement * getMEhisto_DenominatorPFEta_MedpTcut() { return DenominatorPFEta_MedpTcut_; }
00720       MonitorElement * getMEhisto_DenominatorPFPhi_MedpTcut() { return DenominatorPFPhi_MedpTcut_; }
00721       MonitorElement * getMEhisto_DenominatorPFEtaPhi_MedpTcut() { return DenominatorPFEtaPhi_MedpTcut_; }
00722       MonitorElement * getMEhisto_DenominatorPFEta_HighpTcut() { return DenominatorPFEta_HighpTcut_; }
00723       MonitorElement * getMEhisto_DenominatorPFPhi_HighpTcut() { return DenominatorPFPhi_HighpTcut_; }
00724       MonitorElement * getMEhisto_DenominatorPFEtaPhi_HighpTcut() { return DenominatorPFEtaPhi_HighpTcut_; }
00725       
00726       MonitorElement * getMEhisto_DeltaR() { return DeltaR_; }
00727       MonitorElement * getMEhisto_DeltaPhi() { return DeltaPhi_; }
00728       MonitorElement * getMEhisto_PFDeltaR() { return PFDeltaR_; }
00729       MonitorElement * getMEhisto_PFDeltaPhi() { return PFDeltaPhi_; }
00730       
00731       MonitorElement * getMEhisto_TriggerSummary() {return TriggerSummary_;}
00732       MonitorElement * getMEhisto_JetSize() {return JetSize_;}
00733       MonitorElement * getMEhisto_JetPt() {return JetPt_;}
00734       MonitorElement * getMEhisto_EtavsPt(){return EtavsPt_;}
00735       MonitorElement * getMEhisto_PhivsPt(){return PhivsPt_;}
00736       MonitorElement * getMEhisto_Pt12() {return Pt12_;}
00737       MonitorElement * getMEhisto_Eta12() {return Eta12_;}
00738       MonitorElement * getMEhisto_Phi12() {return Phi12_;}   
00739       MonitorElement * getMEhisto_Pt3() {return Pt3_;}
00740       MonitorElement * getMEhisto_Pt12Pt3() {return Pt12Pt3_;}
00741       MonitorElement * getMEhisto_Pt12Phi12() {return Pt12Phi12_;}
00742       
00743       const std::string getLabel(void ) const {
00744         return filterName_;
00745       }
00746       const std::string getDenomLabel(void ) const {
00747         return DenomfilterName_;
00748       }
00749       
00750       void setLabel(std::string labelName){
00751         filterName_ = labelName;
00752         return;
00753       }
00754       void setDenomLabel(std::string labelName){
00755         DenomfilterName_ = labelName;
00756         return;
00757       }
00758       const std::string getPath(void ) const {
00759         return pathName_;
00760       }
00761       const std::string getl1Path(void ) const {
00762         return l1pathName_;
00763       }
00764       const std::string getDenomPath(void ) const {
00765         return denomPathName_;
00766       }
00767       const int getprescaleUsed(void) const {
00768         return prescaleUsed_;
00769       }
00770       const std::string getProcess(void ) const {
00771         return processName_;
00772       }
00773       const int getObjectType(void ) const {
00774         return objectType_;
00775       }
00776       const std::string getTriggerType(void ) const {
00777         return triggerType_;
00778       }
00779       const edm::InputTag getTag(void) const{
00780         edm::InputTag tagName(filterName_,"",processName_);
00781         return tagName;
00782       }
00783       const edm::InputTag getDenomTag(void) const{
00784         edm::InputTag tagName(DenomfilterName_,"",processName_);
00785         return tagName;
00786       }
00787       bool operator==(const std::string v)
00788       {
00789         return v==pathName_;
00790       }
00791       
00792   private:
00793       int pathIndex_;
00794       int prescaleUsed_;
00795       std::string denomPathName_;
00796       std::string pathName_;
00797       std::string l1pathName_;
00798       std::string filterName_;
00799       std::string DenomfilterName_;
00800       std::string processName_;
00801       int objectType_;
00802       std::string triggerType_;
00803       
00804       MonitorElement*  N_;
00805       MonitorElement*  Pt_;
00806       MonitorElement*  PtBarrel_;
00807       MonitorElement*  PtEndcap_;
00808       MonitorElement*  PtForward_;
00809       MonitorElement*  Eta_;
00810       MonitorElement*  Phi_;
00811       MonitorElement*  EtaPhi_;
00812       MonitorElement*  N_L1_;
00813       MonitorElement*  Pt_L1_;
00814       MonitorElement*  PtBarrel_L1_;
00815       MonitorElement*  PtEndcap_L1_;
00816       MonitorElement*  PtForward_L1_;
00817       MonitorElement*  Eta_L1_;
00818       MonitorElement*  Phi_L1_;
00819       MonitorElement*  EtaPhi_L1_;
00820       MonitorElement*  N_HLT_;
00821       MonitorElement*  Pt_HLT_;
00822       MonitorElement*  PtBarrel_HLT_;
00823       MonitorElement*  PtEndcap_HLT_;
00824       MonitorElement*  PtForward_HLT_;
00825       MonitorElement*  Eta_HLT_;
00826       MonitorElement*  Phi_HLT_;
00827       MonitorElement*  EtaPhi_HLT_;
00828       MonitorElement*  DeltaR_HLT_; 
00829       MonitorElement*  DeltaPhi_HLT_;
00830       
00831       MonitorElement*  PtResolution_L1HLT_;
00832       MonitorElement*  EtaResolution_L1HLT_;
00833       MonitorElement*  PhiResolution_L1HLT_;
00834       MonitorElement*  PtResolution_HLTRecObj_;
00835       MonitorElement*  EtaResolution_HLTRecObj_;
00836       MonitorElement*  PhiResolution_HLTRecObj_;
00837       MonitorElement*  PtCorrelation_L1HLT_;
00838       MonitorElement*  EtaCorrelation_L1HLT_;
00839       MonitorElement*  PhiCorrelation_L1HLT_;
00840       MonitorElement*  PtCorrelation_HLTRecObj_;
00841       MonitorElement*  EtaCorrelation_HLTRecObj_;
00842       MonitorElement*  PhiCorrelation_HLTRecObj_;
00843       
00844       MonitorElement*  JetAveragePt_;
00845       MonitorElement*  JetAverageEta_;
00846       MonitorElement*  JetPhiDifference_;
00847       MonitorElement*  HLTAveragePt_;
00848       MonitorElement*  HLTAverageEta_;
00849       MonitorElement*  HLTPhiDifference_;
00850       MonitorElement*  L1AveragePt_;
00851       MonitorElement*  L1AverageEta_;
00852       MonitorElement*  L1PhiDifference_;
00853       
00854       MonitorElement*  NumeratorPt_;
00855       MonitorElement*  NumeratorPtBarrel_;
00856       MonitorElement*  NumeratorPtEndcap_;
00857       MonitorElement*  NumeratorPtForward_;
00858       MonitorElement*  NumeratorEta_;
00859       MonitorElement*  NumeratorPhi_;
00860       MonitorElement*  NumeratorEtaPhi_;
00861       
00862       //ml
00863       MonitorElement*  PVZ_;
00864       MonitorElement*  NVertices_;
00865       
00866       MonitorElement*  NumeratorEtaBarrel_;
00867       MonitorElement*  NumeratorPhiBarrel_;
00868       MonitorElement*  NumeratorEtaEndcap_;
00869       MonitorElement*  NumeratorPhiEndcap_;
00870       MonitorElement*  NumeratorEtaForward_;
00871       MonitorElement*  NumeratorPhiForward_;
00872       
00873       MonitorElement*  NumeratorEta_LowpTcut_;
00874       MonitorElement*  NumeratorPhi_LowpTcut_;
00875       MonitorElement*  NumeratorEtaPhi_LowpTcut_;
00876       MonitorElement*  NumeratorEta_MedpTcut_;
00877       MonitorElement*  NumeratorPhi_MedpTcut_;
00878       MonitorElement*  NumeratorEtaPhi_MedpTcut_;
00879       MonitorElement*  NumeratorEta_HighpTcut_;
00880       MonitorElement*  NumeratorPhi_HighpTcut_;
00881       MonitorElement*  NumeratorEtaPhi_HighpTcut_;
00882       //ml
00883       
00884       MonitorElement*  DenominatorPt_;
00885       MonitorElement*  DenominatorPtBarrel_;
00886       MonitorElement*  DenominatorPtEndcap_;
00887       MonitorElement*  DenominatorPtForward_;
00888       MonitorElement*  DenominatorEta_;
00889       MonitorElement*  DenominatorPhi_;
00890       MonitorElement*  DenominatorEtaPhi_;
00891       //ml
00892       MonitorElement*  DenominatorEtaBarrel_;
00893       MonitorElement*  DenominatorPhiBarrel_;
00894       MonitorElement*  DenominatorEtaEndcap_;
00895       MonitorElement*  DenominatorPhiEndcap_;
00896       MonitorElement*  DenominatorEtaForward_;
00897       MonitorElement*  DenominatorPhiForward_;
00898       
00899       MonitorElement*  DenominatorEta_LowpTcut_;
00900       MonitorElement*  DenominatorPhi_LowpTcut_;
00901       MonitorElement*  DenominatorEtaPhi_LowpTcut_;
00902       MonitorElement*  DenominatorEta_MedpTcut_;
00903       MonitorElement*  DenominatorPhi_MedpTcut_;
00904       MonitorElement*  DenominatorEtaPhi_MedpTcut_;
00905       MonitorElement*  DenominatorEta_HighpTcut_;
00906       MonitorElement*  DenominatorPhi_HighpTcut_;
00907       MonitorElement*  DenominatorEtaPhi_HighpTcut_;
00908       
00909       MonitorElement*  DeltaR_; 
00910       MonitorElement*  DeltaPhi_; 
00911       
00912       //adding PF histos SJ:
00913       MonitorElement*  NumeratorPFPt_;
00914       MonitorElement*  NumeratorPFMHT_;
00915       MonitorElement*  NumeratorPFPtBarrel_;
00916       MonitorElement*  NumeratorPFPtEndcap_;
00917       MonitorElement*  NumeratorPFPtForward_;
00918       MonitorElement*  NumeratorPFEta_;
00919       MonitorElement*  NumeratorPFPhi_;
00920       MonitorElement*  NumeratorPFEtaPhi_;
00921       MonitorElement*  NumeratorPFEtaBarrel_;
00922       MonitorElement*  NumeratorPFPhiBarrel_;
00923       MonitorElement*  NumeratorPFEtaEndcap_;
00924       MonitorElement*  NumeratorPFPhiEndcap_;
00925       MonitorElement*  NumeratorPFEtaForward_;
00926       MonitorElement*  NumeratorPFPhiForward_;
00927       
00928       MonitorElement*  NumeratorPFEta_LowpTcut_;
00929       MonitorElement*  NumeratorPFPhi_LowpTcut_;
00930       MonitorElement*  NumeratorPFEtaPhi_LowpTcut_;
00931       MonitorElement*  NumeratorPFEta_MedpTcut_;
00932       MonitorElement*  NumeratorPFPhi_MedpTcut_;
00933       MonitorElement*  NumeratorPFEtaPhi_MedpTcut_;
00934       MonitorElement*  NumeratorPFEta_HighpTcut_;
00935       MonitorElement*  NumeratorPFPhi_HighpTcut_;
00936       MonitorElement*  NumeratorPFEtaPhi_HighpTcut_;
00937       
00938       MonitorElement*  DenominatorPFPt_;
00939       MonitorElement*  DenominatorPFMHT_;
00940       MonitorElement*  DenominatorPFPtBarrel_;
00941       MonitorElement*  DenominatorPFPtEndcap_;
00942       MonitorElement*  DenominatorPFPtForward_;
00943       MonitorElement*  DenominatorPFEta_;
00944       MonitorElement*  DenominatorPFPhi_;
00945       MonitorElement*  DenominatorPFEtaPhi_;
00946       
00947       MonitorElement*  DenominatorPFEtaBarrel_;
00948       MonitorElement*  DenominatorPFPhiBarrel_;
00949       MonitorElement*  DenominatorPFEtaEndcap_;
00950       MonitorElement*  DenominatorPFPhiEndcap_;
00951       MonitorElement*  DenominatorPFEtaForward_;
00952       MonitorElement*  DenominatorPFPhiForward_;
00953       
00954       MonitorElement*  DenominatorPFEta_LowpTcut_;
00955       MonitorElement*  DenominatorPFPhi_LowpTcut_;
00956       MonitorElement*  DenominatorPFEtaPhi_LowpTcut_;
00957       MonitorElement*  DenominatorPFEta_MedpTcut_;
00958       MonitorElement*  DenominatorPFPhi_MedpTcut_;
00959       MonitorElement*  DenominatorPFEtaPhi_MedpTcut_;
00960       MonitorElement*  DenominatorPFEta_HighpTcut_;
00961       MonitorElement*  DenominatorPFPhi_HighpTcut_;
00962       MonitorElement*  DenominatorPFEtaPhi_HighpTcut_;
00963       MonitorElement*  PFDeltaR_; 
00964       MonitorElement*  PFDeltaPhi_; 
00965       
00966       MonitorElement*  TriggerSummary_;
00967       MonitorElement*  JetSize_;
00968       MonitorElement*  JetPt_;
00969       MonitorElement*  EtavsPt_;
00970       MonitorElement*  PhivsPt_;
00971       MonitorElement*  Pt12_;
00972       MonitorElement*  Eta12_;
00973       MonitorElement*  Phi12_; 
00974       MonitorElement*  Pt3_;
00975       MonitorElement*  Pt12Pt3_;
00976       MonitorElement*  Pt12Phi12_;
00977   };
00978   
00979   // simple collection 
00980   class PathInfoCollection: public std::vector<PathInfo> {
00981   public:
00982     PathInfoCollection(): std::vector<PathInfo>()
00983       {};
00984       std::vector<PathInfo>::iterator find(std::string pathName) {
00985         return std::find(begin(), end(), pathName);
00986       }
00987   };
00988   PathInfoCollection hltPathsAllTriggerSummary_;
00989   PathInfoCollection hltPathsAll_;
00990   PathInfoCollection hltPathsAllWrtMu_;
00991   PathInfoCollection hltPathsEff_;
00992   PathInfoCollection hltPathsEffWrtMu_;
00993   PathInfoCollection hltPathsEffWrtMB_;
00994   
00995   MonitorElement* rate_All;
00996   MonitorElement* rate_AllWrtMu;
00997   MonitorElement* rate_AllWrtMB;
00998   
00999   MonitorElement* correlation_All;
01000   MonitorElement* correlation_AllWrtMu;
01001   MonitorElement* correlation_AllWrtMB;
01002   MonitorElement* PVZ;
01003   MonitorElement* NVertices;
01004 };
01005 #endif