Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "FWCore/Framework/interface/Event.h"
00011 #include "FWCore/Framework/interface/EDAnalyzer.h"
00012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00013 #include "DataFormats/Math/interface/LorentzVector.h"
00014 #include "FWCore/ServiceRegistry/interface/Service.h"
00015 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
00016 #include "DataFormats/HLTReco/interface/TriggerRefsCollections.h"
00017 #include "DataFormats/L1Trigger/interface/L1JetParticle.h"
00018 #include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
00019 #include "DataFormats/L1Trigger/interface/L1EmParticle.h"
00020 #include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h"
00021 #include "DataFormats/L1Trigger/interface/L1MuonParticle.h"
00022 #include "DataFormats/L1Trigger/interface/L1MuonParticleFwd.h"
00023 #include "DataFormats/EgammaCandidates/interface/Electron.h"
00024 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"
00025
00026 #include "DQMServices/Core/interface/DQMStore.h"
00027 #include "DQMServices/Core/interface/MonitorElement.h"
00028
00029
00030 typedef math::XYZTLorentzVectorD LV;
00031 typedef std::vector<LV> LVColl;
00032
00033 class HLTTauDQMLitePathPlotter {
00034 public:
00035
00036 HLTTauDQMLitePathPlotter(const edm::ParameterSet&,int,int,int,double,bool,double);
00037 ~HLTTauDQMLitePathPlotter();
00038 void analyze(const edm::Event&, const edm::EventSetup&, const std::vector<LVColl>&);
00039
00040 private:
00041 void endJob() ;
00042 LVColl getFilterCollection(size_t,int,const trigger::TriggerEvent&);
00043 LVColl getObjectCollection(int,const trigger::TriggerEvent&);
00044
00045
00046
00047 std::pair<bool,LV> match(const LV&,const LVColl&,double);
00048
00050 edm::InputTag triggerEvent_;
00051
00052
00053 std::string triggerTag_;
00054
00055
00056 std::vector<edm::InputTag> filter_;
00057 std::vector<std::string> name_;
00058 std::vector<int> TauType_;
00059 std::vector<int> LeptonType_;
00060
00061
00062 std::vector<unsigned> nTriggeredTaus_;
00063 std::vector<unsigned> nTriggeredLeptons_;
00064
00065 bool doRefAnalysis_;
00066 double matchDeltaR_;
00067
00068
00069 MonitorElement *accepted_events;
00070 MonitorElement *accepted_events_matched;
00071 MonitorElement *ref_events;
00072
00073 std::vector<MonitorElement*> mass_distribution;
00074
00075
00076 MonitorElement *tauEt;
00077 MonitorElement *tauEta;
00078 MonitorElement *tauPhi;
00079
00080 MonitorElement *tauEtEffNum;
00081 MonitorElement *tauEtaEffNum;
00082 MonitorElement *tauPhiEffNum;
00083
00084 MonitorElement *tauEtEffDenom;
00085 MonitorElement *tauEtaEffDenom;
00086 MonitorElement *tauPhiEffDenom;
00087
00088 double minEt_;
00089 double maxEt_;
00090 int binsEt_;
00091 int binsEta_;
00092 int binsPhi_;
00093
00094 double refTauPt_;
00095 double refLeptonPt_;
00096
00097 class LVSorter {
00098 public:
00099 LVSorter() {}
00100 ~LVSorter() {}
00101
00102 bool operator()(LV p1, LV p2)
00103 {
00104 return p1.Et() < p2.Et();
00105 }
00106
00107
00108 };
00109
00110
00111 };
00112