CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/DQM/HLTEvF/interface/HLTTauDQMCaloPlotter.h

Go to the documentation of this file.
00001 // Original Author:  Michail Bachtis
00002 // Created:  Sun Jan 20 20:10:02 CST 2008
00003 // University of Wisconsin-Madison
00004 
00005 // system include files
00006 #include <memory>
00007 
00008 // user include files
00009 #include "FWCore/Framework/interface/Frameworkfwd.h"
00010 #include "FWCore/Framework/interface/EDAnalyzer.h"
00011 #include "FWCore/Framework/interface/Event.h"
00012 #include "FWCore/Framework/interface/MakerMacros.h"
00013 #include "FWCore/ServiceRegistry/interface/Service.h"
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015 #include "FWCore/Utilities/interface/InputTag.h"
00016 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
00017 #include "DataFormats/JetReco/interface/GenJet.h"
00018 #include "DataFormats/JetReco/interface/CaloJet.h"
00019 #include "DataFormats/TauReco/interface/L2TauInfoAssociation.h"
00020 #include "DataFormats/Math/interface/LorentzVector.h"
00021 #include "DataFormats/L1Trigger/interface/L1JetParticle.h"
00022 #include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
00023 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
00024 #include "DataFormats/METReco/interface/CaloMET.h"
00025 #include "DataFormats/METReco/interface/CaloMETFwd.h"
00026 #include <string>
00027 
00028 //Include DQM core
00029 #include "DQMServices/Core/interface/DQMStore.h"
00030 #include "DQMServices/Core/interface/MonitorElement.h"
00031 
00032 typedef math::XYZTLorentzVectorD   LV;
00033 typedef std::vector<LV>            LVColl;
00034 
00035 //
00036 // class decleration
00037 //
00038 
00039 
00040 class HLTTauDQMCaloPlotter {
00041    public:
00042        HLTTauDQMCaloPlotter(const edm::ParameterSet&,int,int,int,double,bool,double);
00043       ~HLTTauDQMCaloPlotter();
00044       void analyze(const edm::Event&, const edm::EventSetup&,const LVColl&);
00045 
00046    private:
00047 
00048       //Parameters to read
00049       std::vector<edm::InputTag> l2preJets_;
00050       edm::InputTag     l2TauInfoAssoc_; //Path to analyze
00051       edm::InputTag     met_;             //Handle to missing Et 
00052       bool              doRef_;           //DoReference Analysis
00053       //Select if you want match or not
00054       double matchDeltaRMC_;
00055       std::string triggerTag_;//tag for dqm flder
00056       edm::InputTag     l2Isolated_; //Path to analyze
00057       
00058       //Histogram Limits
00059 
00060       double EtMax_;
00061       int NPtBins_;
00062       int NEtaBins_;
00063       int NPhiBins_;
00064 
00065 
00066       DQMStore* store;
00067 
00068       //Monitor elements main
00069       MonitorElement* preJetEt;
00070       MonitorElement* preJetEta;
00071       MonitorElement* preJetPhi;
00072 
00073       MonitorElement* jetEt;
00074       MonitorElement* jetEta;
00075       MonitorElement* jetPhi;
00076 
00077       MonitorElement* isoJetEt;
00078       MonitorElement* isoJetEta;
00079       MonitorElement* isoJetPhi;
00080 
00081       MonitorElement* jetEtRes;
00082 
00083 
00084       MonitorElement* ecalIsolEt;
00085       MonitorElement* hcalIsolEt;
00086 
00087       MonitorElement* seedEcalEt;
00088       MonitorElement* seedHcalEt;
00089 
00090       MonitorElement* ecalClusterEtaRMS;
00091       MonitorElement* ecalClusterPhiRMS;
00092       MonitorElement* ecalClusterDeltaRRMS;
00093       MonitorElement* nEcalClusters;
00094 
00095       MonitorElement* hcalClusterEtaRMS;
00096       MonitorElement* hcalClusterPhiRMS;
00097       MonitorElement* hcalClusterDeltaRRMS;
00098       MonitorElement* nHcalClusters;
00099 
00100 
00101 
00102       MonitorElement* recoEtEffNum;
00103       MonitorElement* recoEtEffDenom;
00104       MonitorElement* recoEtaEffNum;
00105       MonitorElement* recoEtaEffDenom;
00106       MonitorElement* recoPhiEffNum;
00107       MonitorElement* recoPhiEffDenom;
00108 
00109       MonitorElement* isoEtEffNum;
00110       MonitorElement* isoEtEffDenom;
00111       MonitorElement* isoEtaEffNum;
00112       MonitorElement* isoEtaEffDenom;
00113       MonitorElement* isoPhiEffNum;
00114       MonitorElement* isoPhiEffDenom;
00115 
00116       bool matchJet(const reco::Jet&,const reco::CaloJetCollection&);//See if this Jet Is Matched
00117       std::pair<bool,LV> match(const reco::Jet&,const LVColl&);//See if this Jet Is Matched
00118       std::pair<bool,reco::CaloJet> inverseMatch(const LV&,const reco::CaloJetCollection&);//See if this Jet Is Matched
00119 
00120 
00121       class SorterByPt {
00122       public:
00123         SorterByPt() {}
00124         ~SorterByPt() {}
00125         bool operator()(reco::CaloJet jet1 , reco::CaloJet jet2)
00126         {
00127           return jet1.pt()>jet2.pt();
00128         }
00129       };
00130 
00131 
00132 
00133 };
00134 
00135