CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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&);
71 
72 
73 private:
74  //---------methods----------------------------
75  virtual void beginJob(void) ;
76  virtual void beginRun(void) ;
77  virtual void analyze(const edm::Event&, const edm::EventSetup&);
78  virtual void endJob() ;
79  void InitStatics();
80  void RecordData(const reco::Muon& muon);//Fills Histograms with info from single muo
81  // void doPFIsoPlots(MuonIterator muon); //Fills Histograms with PF info from single muo (only for GLB)
82  void InitHistos();//adds title, bin information to member histograms
83  void FillHistos(int);//Fills histograms with data
84  void FillNVtxHistos(int);
85  void NormalizeHistos(); //Normalize to number of muons
86 
87  //----- helper methods
88  int GetNVtxBin(int);
90 
91  //----------Static Variables---------------
92 
93  //Collection labels
96 
97  //root file name
99  // Directories within the rootfile
101 
102  //Histogram parameters
103  static const int NUM_VARS = 48; // looking at R03 and R05. Total of 54 histos.
104  static const int NUM_VARS_2D = 10; // looking only at R03. Total of 8 TH2F.
105  static const int NUM_VARS_NVTX = 6 ;
106 
107  double L_BIN_WIDTH;//large bins
108  double S_BIN_WIDTH;//small bins
109  int LOG_BINNING_ENABLED;//pseudo log binning for profile plots
115 
118  // std::string title_cd;
119 
120  std::vector<std::string> main_titles;//[NUM_VARS]
121  std::vector<std::string> axis_titles;//[NUM_VARS]
122  std::vector<std::string> names;//[NUM_VARS]
123  std::vector< std::vector<double> > param;//[NUM_VARS][3]
124  std::vector<int> isContinuous;//[NUM_VARS]
125 
126  std::vector<std::string> titles_2D; //[NUM_VARS]
127  std::vector<std::string> names_2D; //[NUM_VARS]
128 
129  std::vector<std::string> main_titles_NVtxs;
130  std::vector<std::string> names_NVtxs;
131  std::vector<std::string> axis_titles_NVtxs;
132  //---------------Dynamic Variables---------------------
133 
134  //MonitorElement
136 
137  //The Data
138  double theData[NUM_VARS];
141 
142  //Histograms
144  std::vector<MonitorElement*> h_1D; //[NUM_VARS]
145  std::vector<MonitorElement*> h_2D; //[NUM_VARS_2D]
146  std::vector<MonitorElement*> h_1D_NVTX;//[NUM_VARS_NVTX]
147 
148  // std::vector<MonitorElement*> cd_plots;//[NUM_VARS]
149 
150  //Counters
151  int nEvents;
155 
156  //enums for monitorElement
158 };
159 
std::vector< MonitorElement * > h_2D
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
static const int NUM_VARS_NVTX
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
virtual void beginJob(void)
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)
virtual void analyze(const edm::Event &, const edm::EventSetup &)
std::string rootfilename
std::vector< std::string > titles_2D
virtual void beginRun(void)
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
edm::RefToBase< reco::Muon > MuonBaseRef
virtual void endJob()
edm::EDGetTokenT< reco::MuonCollection > theMuonCollectionLabel_
double theData[NUM_VARS]
double theData2D[NUM_VARS_2D]
edm::EDGetTokenT< reco::VertexCollection > theVertexCollectionLabel_
std::vector< std::string > main_titles_NVtxs
TH1 * GetTH1FromMonitorElement(MonitorElement *me)