00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "FWCore/Framework/interface/EDAnalyzer.h"
00031
00032
00033 #include "FWCore/ParameterSet/interface/InputTag.h"
00034 #include "DQMServices/Core/interface/DQMStore.h"
00035 #include "DQMServices/Core/interface/MonitorElement.h"
00036 #include "FWCore/ServiceRegistry/interface/Service.h"
00037
00038
00039 #include "DataFormats/MuonReco/interface/Muon.h"
00040 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00041 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
00042 #include "DataFormats/RecoCandidate/interface/IsoDepositFwd.h"
00043
00044
00045
00046
00047 class TH1;
00048 class TH1I;
00049 class TH1D;
00050 class TH2;
00051 class TProfile;
00052
00053
00054
00055
00056 class MuIsoValidation : public edm::EDAnalyzer {
00057
00058 typedef reco::MuonCollection::const_iterator MuonIterator;
00059 typedef edm::Handle<reco::IsoDepositMap> MuIsoDepHandle;
00060 typedef const reco::IsoDeposit MuIsoDepRef;
00061
00062 public:
00063
00064 explicit MuIsoValidation(const edm::ParameterSet&);
00065 ~MuIsoValidation();
00066
00067
00068 private:
00069
00070 virtual void beginJob(const edm::EventSetup&) ;
00071 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00072 virtual void endJob() ;
00073 void InitStatics();
00074 void RecordData(MuonIterator muon, MuIsoDepRef& tkDep,
00075 MuIsoDepRef& ecalDep, MuIsoDepRef& hcalDep,
00076 MuIsoDepRef& hoDep);
00077 void InitHistos();
00078 void MakeLogBinsForProfile(Double_t* bin_edges, const double min, const double max);
00079 void FillHistos();
00080 void NormalizeHistos();
00081 TH1* GetTH1FromMonitorElement(MonitorElement* me);
00082 TH2* GetTH2FromMonitorElement(MonitorElement* me);
00083 TProfile* GetTProfileFromMonitorElement(MonitorElement* me);
00084
00085
00086
00087
00088
00089 edm::InputTag Muon_Tag;
00090 edm::InputTag tkIsoDeposit_Tag;
00091 edm::InputTag hcalIsoDeposit_Tag;
00092 edm::InputTag ecalIsoDeposit_Tag;
00093 edm::InputTag hoIsoDeposit_Tag;
00094
00095
00096 std::string rootfilename;
00097
00098 std::string dirName;
00099
00100
00101 static const int NUM_VARS = 11;
00102 double L_BIN_WIDTH;
00103 double S_BIN_WIDTH;
00104 int LOG_BINNING_ENABLED;
00105 int NUM_LOG_BINS;
00106 double LOG_BINNING_RATIO;
00107 bool requireCombinedMuon;
00108
00109 std::string title_sam;
00110 std::string title_cone;
00111 std::string title_cd;
00112
00113 std::vector<std::string> main_titles;
00114 std::vector<std::string> axis_titles;
00115 std::vector<std::string> names;
00116 std::vector< std::vector<double> > param;
00117 std::vector<int> isContinuous;
00118
00119
00120
00121
00122 DQMStore* dbe;
00123
00124
00125 int theMuonData;
00126 double theData[NUM_VARS];
00127
00128
00129 MonitorElement* h_nMuons;
00130 std::vector<MonitorElement*> h_1D;
00131 std::vector<MonitorElement*> cd_plots;
00132 std::vector< std::vector<MonitorElement*> > h_2D;
00133 std::vector< std::vector<MonitorElement*> > p_2D;
00134
00135
00136 int nEvents;
00137 int nIncMuons;
00138 int nCombinedMuons;
00139
00140
00141 enum {NOAXIS,XAXIS,YAXIS,ZAXIS};
00142 };
00143