CMS 3D CMS Logo

MuonIsolationDQM.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 // MuonIsolationDQM.h
3 // Package: Muon Isolation DQM
4 // Class: MuonIsolationDQM
5 //
6 /*
7 
8 Description: Muon Isolation DQM class
9 
10 NOTE: The static member variable declarations *should* include the key word "static", but
11 I haven't found an elegant way to initalize the vectors. Static primatives (e.g. int,
12 float, ...) and simple static objects are easy to initialze. Outside of the class
13 decleration, you would write
14 
15 int MuonIsolationDQM::CONST_INT = 5;
16 FooType MuonIsolationDQM::CONST_FOOT = Foo(constructor_argument);
17 
18 but you can't do this if you want to, say, initalize a std::vector with a bunch of
19 different values. So, you can't make them static and you have to initialize them using
20 a member method. To keep it consistent, I've just initialized them all in the same
21 method, even the simple types.
22 */
23 
24 //
25 // Original Author: "C. Jess Riedel", UC Santa Barbara
26 // Created: Tue Jul 17 15:58:24 CDT 2007
27 //
28 
29 //Base class
31 
32 //Member types
37 
38 //Other include files
44 
47 
48 //----------------------------------------
49 
50 //Forward declarations
51 class TH1;
52 class TH1I;
53 class TH1D;
54 class TH2;
55 class TProfile;
56 
57 //------------------------------------------
58 // Class Declaration: MuonIsolationDQM
59 //--------------------------------------
61  //---------namespace and typedefs--------------
66 
67 public:
68  //---------methods----------------------------
69  explicit MuonIsolationDQM(const edm::ParameterSet&);
70  ~MuonIsolationDQM() override;
71 
72  void analyze(const edm::Event&, const edm::EventSetup&) override;
73  void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
74 
75 private:
76  //---------methods----------------------------
77  void InitStatics();
78  void RecordData(const reco::Muon& muon);//Fills Histograms with info from single muo
79  // void doPFIsoPlots(MuonIterator muon); //Fills Histograms with PF info from single muo (only for GLB)
80  void InitHistos();//adds title, bin information to member histograms
81  void FillHistos(int);//Fills histograms with data
82  void FillNVtxHistos(int);
83  void NormalizeHistos(); //Normalize to number of muons
84 
85  //----- helper methods
86  int GetNVtxBin(int);
88 
89  //----------Static Variables---------------
90 
91  //Collection labels
94 
95 
96  //root file name
98  // Directories within the rootfile
100 
101  //Histogram parameters
102  static const int NUM_VARS = 48; // looking at R03 and R05. Total of 54 histos.
103  static const int NUM_VARS_2D = 10; // looking only at R03. Total of 8 TH2F.
104  static const int NUM_VARS_NVTX = 6 ;
105 
106  double L_BIN_WIDTH;//large bins
107  double S_BIN_WIDTH;//small bins
108  int LOG_BINNING_ENABLED;//pseudo log binning for profile plots
114 
117  // std::string title_cd;
118 
119  std::vector<std::string> main_titles;//[NUM_VARS]
120  std::vector<std::string> axis_titles;//[NUM_VARS]
121  std::vector<std::string> names;//[NUM_VARS]
122  std::vector< std::vector<double> > param;//[NUM_VARS][3]
123  std::vector<int> isContinuous;//[NUM_VARS]
124 
125  std::vector<std::string> titles_2D; //[NUM_VARS]
126  std::vector<std::string> names_2D; //[NUM_VARS]
127 
128  std::vector<std::string> main_titles_NVtxs;
129  std::vector<std::string> names_NVtxs;
130  std::vector<std::string> axis_titles_NVtxs;
131  //---------------Dynamic Variables---------------------
132 
133  //The Data
134  double theData[NUM_VARS];
137 
138  //Histograms
140  std::vector<MonitorElement*> h_1D; //[NUM_VARS]
141  std::vector<MonitorElement*> h_2D; //[NUM_VARS_2D]
142  std::vector<MonitorElement*> h_1D_NVTX;//[NUM_VARS_NVTX]
143 
144  // std::vector<MonitorElement*> cd_plots;//[NUM_VARS]
145 
146  //Counters
147  int nEvents;
151 
152 
153  //enums for monitorElement
155 };
156 
std::vector< MonitorElement * > h_2D
static const int NUM_VARS_NVTX
std::string dirName
const reco::IsoDeposit MuIsoDepRef
MonitorElement * h_nMuons
MuonIsolationDQM(const edm::ParameterSet &)
std::vector< MonitorElement * > h_1D
std::vector< std::string > main_titles
edm::View< reco::Muon >::const_iterator MuonIterator
std::vector< std::string > names
std::vector< std::string > names_2D
std::vector< std::vector< double > > param
std::vector< MonitorElement * > h_1D_NVTX
void RecordData(const reco::Muon &muon)
static const int NUM_VARS_2D
std::string title_sam
std::vector< std::string > names_NVtxs
std::string title_cone
std::vector< int > isContinuous
int GetNVtxBin(int)
~MuonIsolationDQM() override
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::string rootfilename
std::vector< std::string > titles_2D
std::vector< std::string > axis_titles
std::vector< std::string > axis_titles_NVtxs
edm::Handle< reco::IsoDepositMap > MuIsoDepHandle
double theDataNVtx[NUM_VARS_NVTX]
static const int NUM_VARS
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
edm::RefToBase< reco::Muon > MuonBaseRef
double theData[NUM_VARS]
double theData2D[NUM_VARS_2D]
edm::EDGetTokenT< reco::VertexCollection > theVertexCollectionLabel_
Definition: Run.h:44
std::vector< std::string > main_titles_NVtxs
edm::EDGetTokenT< edm::View< reco::Muon > > theMuonCollectionLabel_
TH1 * GetTH1FromMonitorElement(MonitorElement *me)
void analyze(const edm::Event &, const edm::EventSetup &) override