00001 #ifndef HLTriggerOffline_Muon_HLTMuonRate_H
00002 #define HLTriggerOffline_Muon_HLTMuonRate_H
00003
00010
00011
00012 #include "FWCore/Framework/interface/EDAnalyzer.h"
00013 #include "FWCore/Framework/interface/Frameworkfwd.h"
00014 #include "FWCore/Framework/interface/Event.h"
00015 #include "FWCore/Framework/interface/MakerMacros.h"
00016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00017 #include "FWCore/ParameterSet/interface/InputTag.h"
00018 #include "DataFormats/Common/interface/RefToBase.h"
00019 #include "DataFormats/TrackReco/interface/Track.h"
00020 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"
00021 #include "DataFormats/Candidate/interface/Candidate.h"
00022 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
00023 #include <vector>
00024 #include "DQMServices/Core/interface/DQMStore.h"
00025 #include "DQMServices/Core/interface/MonitorElement.h"
00026
00027 using namespace edm;
00028 using namespace std;
00029 using namespace math;
00030 class HLTMuonRate {
00031 public:
00032 HLTMuonRate(const edm::ParameterSet& pset, int Index);
00033 virtual ~HLTMuonRate();
00034 void analyze(const edm::Event & event);
00035 void BookHistograms() ;
00036 void WriteHistograms() ;
00037 MonitorElement* BookIt(char name[], char title[], int bins, float min, float max) ;
00038 private:
00039 edm::InputTag theL1CollectionLabel, InputLabel;
00040 std::vector<edm::InputTag> theHLTCollectionLabels;
00041 double theL1ReferenceThreshold,theHLTReferenceThreshold;
00042 std::vector<double> theNSigmas;
00043 unsigned int theNumberOfObjects;
00044 double theCrossSection;
00045 double theLuminosity;
00046 double thePtMin;
00047 double thePtMax;
00048 unsigned int theNbins;
00049 int this_event_weight;
00050 DQMStore* dbe_;
00051 MonitorElement* hL1DR, *hL2DR, *hL3DR;
00052 MonitorElement* hL1eff;
00053 MonitorElement* hPtNor;
00054 MonitorElement* hPhiNor;
00055 MonitorElement* hEtaNor;
00056 MonitorElement* hL1rate;
00057 MonitorElement* hL1pt;
00058 MonitorElement* hL1Eta;
00059 MonitorElement* hL1Phi;
00060 MonitorElement* hSteps;
00061 std::vector <MonitorElement*> hHLTeff;
00062 std::vector <MonitorElement*> hHLTrate;
00063 std::vector <MonitorElement*> hHLTpt;
00064 std::vector <MonitorElement*> hHLTeta;
00065 std::vector <MonitorElement*> hHLTphi;
00066 std::pair<double,double> getAngle(double eta, double phi, Handle< vector<XYZTLorentzVectorD> >& refVector );
00067 MonitorElement *NumberOfEvents,*NumberOfL1Events;
00068 int theNumberOfEvents,theNumberOfL1Events;
00069 std::string theRootFileName;
00070 };
00071 #endif