Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include <memory>
00007
00008
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
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
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
00049 std::vector<edm::InputTag> l2preJets_;
00050 edm::InputTag l2TauInfoAssoc_;
00051 edm::InputTag met_;
00052 bool doRef_;
00053
00054 double matchDeltaRMC_;
00055 std::string triggerTag_;
00056 edm::InputTag l2Isolated_;
00057
00058
00059
00060 double EtMax_;
00061 int NPtBins_;
00062 int NEtaBins_;
00063 int NPhiBins_;
00064
00065
00066 DQMStore* store;
00067
00068
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&);
00117 std::pair<bool,LV> match(const reco::Jet&,const LVColl&);
00118 std::pair<bool,reco::CaloJet> inverseMatch(const LV&,const reco::CaloJetCollection&);
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