CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
MuIsoValidation Class Reference

#include <MuIsoValidation.h>

Inheritance diagram for MuIsoValidation:
edm::EDAnalyzer

Public Member Functions

 MuIsoValidation (const edm::ParameterSet &)
 
 ~MuIsoValidation ()
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Private Types

enum  { NOAXIS, XAXIS, YAXIS, ZAXIS }
 
typedef edm::Handle
< reco::IsoDepositMap
MuIsoDepHandle
 
typedef const reco::IsoDeposit MuIsoDepRef
 
typedef edm::RefToBase
< reco::Muon
MuonBaseRef
 
typedef edm::View< reco::Muon >
::const_iterator 
MuonIterator
 

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 
virtual void beginJob ()
 
virtual void endJob ()
 
void FillHistos ()
 
TH1 * GetTH1FromMonitorElement (MonitorElement *me)
 
TH2 * GetTH2FromMonitorElement (MonitorElement *me)
 
TProfile * GetTProfileFromMonitorElement (MonitorElement *me)
 
void InitHistos ()
 
void InitStatics ()
 
void MakeLogBinsForProfile (Double_t *bin_edges, const double min, const double max)
 
void NormalizeHistos ()
 
void RecordData (MuonIterator muon)
 

Private Attributes

std::vector< std::string > axis_titles
 
std::vector< MonitorElement * > cd_plots
 
std::vector< int > cdCompNeeded
 
DQMStoredbe
 
std::string dirName
 
edm::InputTag ecalIsoDeposit_Tag
 
std::vector< MonitorElement * > h_1D
 
MonitorElementh_nMuons
 
edm::InputTag hcalIsoDeposit_Tag
 
edm::InputTag hoIsoDeposit_Tag
 
std::vector< int > isContinuous
 
double L_BIN_WIDTH
 
int LOG_BINNING_ENABLED
 
double LOG_BINNING_RATIO
 
std::vector< std::string > main_titles
 
edm::InputTag Muon_Tag
 
std::vector< std::string > names
 
int nEvents
 
int nIncMuons
 
int NUM_LOG_BINS
 
std::vector< std::vector
< MonitorElement * > > 
p_2D
 
std::vector< std::vector
< double > > 
param
 
bool requireCombinedMuon
 
std::string rootfilename
 
double S_BIN_WIDTH
 
std::string subDirName
 
double theData [NUM_VARS]
 
int theMuonData
 
std::string title_cd
 
std::string title_cone
 
std::string title_sam
 
edm::InputTag tkIsoDeposit_Tag
 

Static Private Attributes

static const int NUM_VARS = 21
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Detailed Description

Definition at line 56 of file MuIsoValidation.h.

Member Typedef Documentation

Definition at line 60 of file MuIsoValidation.h.

Definition at line 61 of file MuIsoValidation.h.

Definition at line 59 of file MuIsoValidation.h.

typedef edm::View<reco::Muon>::const_iterator MuIsoValidation::MuonIterator
private

Definition at line 58 of file MuIsoValidation.h.

Member Enumeration Documentation

anonymous enum
private

Constructor & Destructor Documentation

MuIsoValidation::MuIsoValidation ( const edm::ParameterSet iConfig)
explicit

Definition at line 63 of file MuIsoValidation.cc.

References DQMStore::cd(), cd_plots, dbe, dirName, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), h_1D, InitStatics(), Muon_Tag, nEvents, nIncMuons, NUM_VARS, cppFunctionSkipper::operator, p_2D, and requireCombinedMuon.

64 {
65 
66  // rootfilename = iConfig.getUntrackedParameter<string>("rootfilename"); // comment out for inclusion
67  requireCombinedMuon = iConfig.getUntrackedParameter<bool>("requireCombinedMuon");
68  dirName = iConfig.getParameter<std::string>("directory");
69  // subDirName = iConfig.getParameter<std::string>("@module_label");
70 
71  // dirName += subDirName;
72 
73  //--------Initialize tags-------
74  Muon_Tag = iConfig.getUntrackedParameter<edm::InputTag>("Global_Muon_Label");
75 
76  //-------Initialize counters----------------
77  nEvents = 0;
78  nIncMuons = 0;
79  // nCombinedMuons = 0;
80 
81  InitStatics();
82 
83  //Set up DAQ
84  dbe = 0;
86 
87  //------"allocate" space for the data vectors-------
88 
89  /*
90  h_1D is a 2D vector with indices [var][muon#]
91  cd_plots is a 2D vector with indices [var][muon#]
92  h_2D is a 3D vector with indices [var][var][muon#]
93  p_2D is a 3D vector with indices [var][var][muon#]
94  */
95  //NOTE:the total number of muons and events is initially unknown,
96  // so that dimension is not initialized. Hence, theMuonData
97  // needs no resizing.
98 
99  h_1D.resize (NUM_VARS);
100  cd_plots.resize(NUM_VARS);
101  // h_2D.resize(NUM_VARS, vector<MonitorElement*> (NUM_VARS));
102  p_2D.resize(NUM_VARS, vector<MonitorElement*>(NUM_VARS));
103 
104  dbe->cd();
105 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::vector< std::vector< MonitorElement * > > p_2D
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:406
std::vector< MonitorElement * > h_1D
std::vector< MonitorElement * > cd_plots
std::string dirName
static const int NUM_VARS
edm::InputTag Muon_Tag
MuIsoValidation::~MuIsoValidation ( )

Definition at line 110 of file MuIsoValidation.cc.

110  {
111 
112  //Deallocate memory
113 
114 }

Member Function Documentation

void MuIsoValidation::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

Implements edm::EDAnalyzer.

Definition at line 294 of file MuIsoValidation.cc.

References DQMStore::cd(), dbe, dirName, MonitorElement::Fill(), FillHistos(), edm::Event::getByLabel(), h_nMuons, metsig::muon, Muon_Tag, nEvents, nIncMuons, RecordData(), requireCombinedMuon, DQMStore::setCurrentFolder(), and theMuonData.

294  {
295 
296  ++nEvents;
297  edm::LogInfo("Tutorial") << "\nInvestigating event #" << nEvents<<"\n";
298 
299  // Get Muon Collection
300  edm::Handle<edm::View<reco::Muon> > muonsHandle; //
301  iEvent.getByLabel(Muon_Tag, muonsHandle);
302 
303  //Fill event entry in histogram of number of muons
304  edm::LogInfo("Tutorial") << "Number of Muons: " << muonsHandle->size();
305  theMuonData = muonsHandle->size();
307 
308  //Fill historgams concerning muon isolation
309  uint iMuon=0;
310  dbe->setCurrentFolder(dirName.c_str());
311  for (MuonIterator muon = muonsHandle->begin(); muon != muonsHandle->end(); ++muon, ++iMuon ) {
312  ++nIncMuons;
313  if (requireCombinedMuon) {
314  if (muon->combinedMuon().isNull()) continue;
315  }
316  // ++nCombinedMuons;
317  RecordData(muon);
318  FillHistos();
319  }
320  dbe->cd();
321 
322 }
void RecordData(MuonIterator muon)
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:406
edm::View< reco::Muon >::const_iterator MuonIterator
void Fill(long long x)
MonitorElement * h_nMuons
std::string dirName
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
edm::InputTag Muon_Tag
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
void MuIsoValidation::beginJob ( void  )
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 370 of file MuIsoValidation.cc.

References DQMStore::cd(), dbe, dirName, InitHistos(), and DQMStore::setCurrentFolder().

371 {
372 
373  edm::LogInfo("Tutorial") << "\n#########################################\n\n"
374  << "Lets get started! "
375  << "\n\n#########################################\n";
376  dbe->setCurrentFolder(dirName.c_str());
377  InitHistos();
378  dbe->cd();
379 
380 }
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:406
std::string dirName
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
void MuIsoValidation::endJob ( void  )
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 384 of file MuIsoValidation.cc.

References dbe, dirName, DQMStore::get(), nEvents, nIncMuons, and NormalizeHistos().

384  {
385 
386  // check if ME still there (and not killed by MEtoEDM for memory saving)
387  if( dbe )
388  {
389  // check existence of first histo in the list
390  if (! dbe->get(dirName+"/nMuons")) return;
391  }
392  else
393  return;
394 
395  edm::LogInfo("Tutorial") << "\n#########################################\n\n"
396  << "Total Number of Events: " << nEvents
397  << "\nTotal Number of Muons: " << nIncMuons
398  << "\n\n#########################################\n"
399  << "\nInitializing Histograms...\n";
400 
401  edm::LogInfo("Tutorial") << "\nIntializing Finished. Filling...\n";
402  NormalizeHistos();
403  edm::LogInfo("Tutorial") << "\nFilled. Saving...\n";
404  // dbe->save(rootfilename); // comment out for incorporation
405  edm::LogInfo("Tutorial") << "\nSaved. Peace, homie, I'm out.\n";
406 
407 }
std::string dirName
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1468
void MuIsoValidation::FillHistos ( )
private

Definition at line 544 of file MuIsoValidation.cc.

References cd_plots, cdCompNeeded, GetTH1FromMonitorElement(), h_1D, NUM_VARS, p_2D, param, and theData.

Referenced by analyze().

544  {
545 
546  int overFlowBin;
547  double overFlow = 0;
548 
549  //----------Fill 1D histograms---------------
550  for(int var=0; var<NUM_VARS; var++){
551  h_1D[var]->Fill(theData[var]);
552  if (cdCompNeeded[var]) cd_plots[var]->Fill(theData[var]);//right now, this is a regular PDF (just like h_1D)
553  if (theData[var] > param[var][2]) {
554  // fill the overflow bin
555  overFlowBin = (int) param[var][0] + 1;
556  overFlow = GetTH1FromMonitorElement(h_1D[var])->GetBinContent(overFlowBin);
557  GetTH1FromMonitorElement(h_1D[var])->SetBinContent(overFlowBin, overFlow + 1);
558  }
559  }//Finish 1D
560 
561  //----------Fill 2D histograms---------------
562  for(int var1=0; var1<NUM_VARS; ++var1){
563  for(int var2=0; var2<NUM_VARS; ++var2){
564  if(var1 == var2) continue;
565  //change below to regular int interating!
566  // h_2D[var1][var2]->Fill(theData[var1], theData[var2]);
567  p_2D[var1][var2]->Fill(theData[var1], theData[var2]);
568  }
569  }//Finish 2D
570 }
TH1 * GetTH1FromMonitorElement(MonitorElement *me)
std::vector< std::vector< MonitorElement * > > p_2D
double theData[NUM_VARS]
std::vector< MonitorElement * > h_1D
std::vector< MonitorElement * > cd_plots
static const int NUM_VARS
std::vector< std::vector< double > > param
std::vector< int > cdCompNeeded
TH1 * MuIsoValidation::GetTH1FromMonitorElement ( MonitorElement me)
private

Definition at line 572 of file MuIsoValidation.cc.

References MonitorElement::getTH1().

Referenced by FillHistos(), InitHistos(), and NormalizeHistos().

572  {
573  return me->getTH1();
574 }
TH1 * getTH1(void) const
TH2 * MuIsoValidation::GetTH2FromMonitorElement ( MonitorElement me)
private

Definition at line 576 of file MuIsoValidation.cc.

References MonitorElement::getTH2F().

576  {
577  return me->getTH2F();
578 }
TH2F * getTH2F(void) const
TProfile * MuIsoValidation::GetTProfileFromMonitorElement ( MonitorElement me)
private

Definition at line 580 of file MuIsoValidation.cc.

References MonitorElement::getTProfile().

Referenced by InitHistos().

580  {
581  return me->getTProfile();
582 }
TProfile * getTProfile(void) const
void MuIsoValidation::InitHistos ( )
private

Definition at line 409 of file MuIsoValidation.cc.

References axis_titles, create_public_lumi_plots::bin_edges, DQMStore::book1D(), DQMStore::bookProfile(), cd_plots, cdCompNeeded, dbe, GetTH1FromMonitorElement(), GetTProfileFromMonitorElement(), h_1D, h_nMuons, isContinuous, LOG_BINNING_ENABLED, main_titles, MakeLogBinsForProfile(), names, NUM_LOG_BINS, NUM_VARS, p_2D, param, MonitorElement::setAxisTitle(), title_cd, title_cone, title_sam, XAXIS, and YAXIS.

Referenced by beginJob().

409  {
410 
411  //---initialize number of muons histogram---
412  h_nMuons = dbe->book1D("nMuons", title_sam + "Number of Muons", 20, 0., 20.);
413  h_nMuons->setAxisTitle("Number of Muons",XAXIS);
414  h_nMuons->setAxisTitle("Fraction of Events",YAXIS);
415 
416 
417  //---Initialize 1D Histograms---
418  for(int var = 0; var < NUM_VARS; var++){
419  h_1D[var] = dbe->book1D(
420  names[var],
421  title_sam + main_titles[var] + title_cone,
422  (int)param[var][0],
423  param[var][1],
424  param[var][2]
425  );
426  h_1D[var]->setAxisTitle(axis_titles[var],XAXIS);
427  h_1D[var]->setAxisTitle("Fraction of Muons",YAXIS);
428  GetTH1FromMonitorElement(h_1D[var])->Sumw2();
429 
430  if (cdCompNeeded[var]) {
431  cd_plots[var] = dbe->book1D(
432  names[var] + "_cd",
434  (int)param[var][0],
435  param[var][1],
436  param[var][2]
437  );
438  cd_plots[var]->setAxisTitle(axis_titles[var],XAXIS);
439  cd_plots[var]->setAxisTitle("Fraction of Muons",YAXIS);
440  GetTH1FromMonitorElement(cd_plots[var])->Sumw2();
441  }
442  }//Finish 1D
443 
444  //---Initialize 2D Histograms---
445  for(int var1 = 0; var1 < NUM_VARS; var1++){
446  for(int var2 = 0; var2 < NUM_VARS; var2++){
447  if(var1 == var2) continue;
448 
449  /* h_2D[var1][var2] = dbe->book2D(
450  names[var1] + "_" + names[var2] + "_s",
451  //title is in "y-var vs. x-var" format
452  title_sam + main_titles[var2] + " <vs> " + main_titles[var1] + title_cone,
453  (int)param[var1][0],
454  param[var1][1],
455  param[var1][2],
456  (int)param[var2][0],
457  param[var2][1],
458  param[var2][2]
459  );
460  */
461  //Monitor elements is weird and takes y axis parameters as well
462  //as x axis parameters for a 1D profile plot
463  p_2D[var1][var2] = dbe->bookProfile(
464  names[var1] + "_" + names[var2],
465  title_sam + main_titles[var2] + " <vs> " + main_titles[var1] + title_cone,
466  (int)param[var1][0],
467  param[var1][1],
468  param[var1][2],
469  (int)param[var2][0], //documentation says this is disregarded
470  param[var2][1], //does this do anything?
471  param[var2][2], //does this do anything?
472  " " //profile errors = spread/sqrt(num_datums)
473  );
474 
475  if(LOG_BINNING_ENABLED && isContinuous[var1]){
476  Double_t * bin_edges = new Double_t[NUM_LOG_BINS+1];
477  // nbins+1 because there is one more edge than there are bins
478  MakeLogBinsForProfile(bin_edges, param[var1][1], param[var1][2]);
479  GetTProfileFromMonitorElement(p_2D[var1][var2])->SetBins(NUM_LOG_BINS, bin_edges);
480  delete[] bin_edges;
481  }
482  /* h_2D[var1][var2]->setAxisTitle(axis_titles[var1],XAXIS);
483  h_2D[var1][var2]->setAxisTitle(axis_titles[var2],YAXIS);
484  GetTH2FromMonitorElement(h_2D[var1][var2])->Sumw2();
485  */
486 
487  p_2D[var1][var2]->setAxisTitle(axis_titles[var1],XAXIS);
488  p_2D[var1][var2]->setAxisTitle(axis_titles[var2],YAXIS);
489  // GetTProfileFromMonitorElement(p_2D[var1][var2])->Sumw2();
490  }
491  }//Finish 2D
492 
493 
494 
495  //avg pT not defined for zero tracks.
496  //MonitorElement is inflxible and won't let me change the
497  //number of bins! I guess all I'm doing here is changing
498  //range of the x axis when it is printed, not the actual
499  //bins that are filled
500  p_2D[4][9]->setAxisRange(0.5,15.5,XAXIS);
501 
502 }
std::vector< int > isContinuous
TH1 * GetTH1FromMonitorElement(MonitorElement *me)
std::vector< std::vector< MonitorElement * > > p_2D
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:717
std::vector< std::string > names
std::string title_cd
std::vector< std::string > main_titles
std::vector< MonitorElement * > h_1D
TProfile * GetTProfileFromMonitorElement(MonitorElement *me)
MonitorElement * h_nMuons
std::string title_sam
std::vector< MonitorElement * > cd_plots
std::string title_cone
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:1031
static const int NUM_VARS
std::vector< std::vector< double > > param
void MakeLogBinsForProfile(Double_t *bin_edges, const double min, const double max)
std::vector< std::string > axis_titles
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
std::vector< int > cdCompNeeded
void MuIsoValidation::InitStatics ( )
private

Definition at line 119 of file MuIsoValidation.cc.

References axis_titles, cdCompNeeded, isContinuous, L_BIN_WIDTH, LOG_BINNING_ENABLED, LOG_BINNING_RATIO, main_titles, names, NUM_LOG_BINS, NUM_VARS, param, S_BIN_WIDTH, title_cd, title_cone, and title_sam.

Referenced by MuIsoValidation().

119  {
120 
121  //-----------Initialize primatives-----------
122  S_BIN_WIDTH = 1.0;//in GeV
123  L_BIN_WIDTH = 2.0;//in GeV
125  NUM_LOG_BINS = 15;
126  LOG_BINNING_RATIO = 1.1;//ratio by which each bin is wider than the last for log binning
127  //i.e. bin widths are (x), (r*x), (r^2*x), ..., (r^(nbins)*x)
128 
129 
130  //-------Initialize Titles---------
131  title_sam = "";//"[Sample b-jet events] ";
132  title_cone = "";//" [in R=0.3 IsoDeposit Cone]";
133  //The above two pieces of info will be printed on the title of the whole page,
134  //not for each individual histogram
135  title_cd = "C.D. of ";
136 
137  //-------"Allocate" memory for vectors
138  main_titles.resize(NUM_VARS);
139  axis_titles.resize(NUM_VARS);
140  names.resize(NUM_VARS);
141  param.resize(NUM_VARS, vector<double>(3) );
142  isContinuous.resize(NUM_VARS);
143  cdCompNeeded.resize(NUM_VARS);
144 
145  //-----Titles of the plots-----------
146  main_titles[0 ] = "Total Tracker Momentum";
147  main_titles[1 ] = "Total EM Cal Energy";
148  main_titles[2 ] = "Total Had Cal Energy";
149  main_titles[3 ] = "Total HO Cal Energy";
150  main_titles[4 ] = "Number of Tracker Tracks";
151  main_titles[5 ] = "Number of Jets around Muon";
152  main_titles[6 ] = "Tracker p_{T} within veto cone";
153  main_titles[7 ] = "EM E_{T} within veto cone";
154  main_titles[8 ] = "Had E_{T} within veto cone";
155  main_titles[9 ] = "HO E_{T} within veto cone";
156  main_titles[10] = "Muon p_{T}";
157  main_titles[11] = "Muon #eta";
158  main_titles[12] = "Muon #phi";
159  main_titles[13] = "Average Momentum per Track ";
160  main_titles[14] = "Weighted Energy";
161  main_titles[15] = "PF Sum of Charged Hadron Pt";
162  main_titles[16] = "PF Sum of Total Hadron Pt";
163  main_titles[17] = "PF Sum of E,Mu Pt";
164  main_titles[18] = "PF Sum of Neutral Hadron Et";
165  main_titles[19] = "PF Sum of Photon Et";
166  main_titles[20] = "PF Sum of Pt from non-PV";
167 
168  //------Titles on the X or Y axis------------
169  axis_titles[0 ] = "#Sigma p_{T} (GeV)";
170  axis_titles[1 ] = "#Sigma E_{T}^{EM} (GeV)";
171  axis_titles[2 ] = "#Sigma E_{T}^{Had} (GeV)";
172  axis_titles[3 ] = "#Sigma E_{T}^{HO} (GeV)";
173  axis_titles[4 ] = "N_{Tracks}";
174  axis_titles[5 ] = "N_{Jets}";
175  axis_titles[6 ] = "#Sigma p_{T,veto} (GeV)";
176  axis_titles[7 ] = "#Sigma E_{T,veto}^{EM} (GeV)";
177  axis_titles[8 ] = "#Sigma E_{T,veto}^{Had} (GeV)";
178  axis_titles[9 ] = "#Sigma E_{T,veto}^{HO} (GeV)";
179  axis_titles[10] = "p_{T,#mu} (GeV)";
180  axis_titles[11] = "#eta_{#mu}";
181  axis_titles[12] = "#phi_{#mu}";
182  axis_titles[13] = "#Sigma p_{T} / N_{Tracks} (GeV)";
183  axis_titles[14] = "(1.5) X #Sigma E_{T}^{EM} + #Sigma E_{T}^{Had}";
184  axis_titles[15] = "#Sigma p_{T}^{PFHadCha} (GeV)";
185  axis_titles[16] = "#Sigma p_{T}^{PFTotCha} (GeV)";
186  axis_titles[17] = "#Sigma p_{T}^{PFEMu} (GeV)";
187  axis_titles[18] = "#Sigma E_{T}^{PFHadNeu} (GeV)";
188  axis_titles[19] = "#Sigma E_{T}^{PFPhot} (GeV)";
189  axis_titles[20] = "#Sigma p_{T}^{PFPU} (GeV)";
190 
191  //-----------Names given for the root file----------
192  names[0 ] = "sumPt";
193  names[1 ] = "emEt";
194  names[2 ] = "hadEt";
195  names[3 ] = "hoEt";
196  names[4 ] = "nTracks";
197  names[5 ] = "nJets";
198  names[6 ] = "trackerVetoPt";
199  names[7 ] = "emVetoEt";
200  names[8 ] = "hadVetoEt";
201  names[9 ] = "hoVetoEt";
202  names[10] = "muonPt";
203  names[11] = "muonEta";
204  names[12] = "muonPhi";
205  names[13] = "avgPt";
206  names[14] = "weightedEt";
207  names[15] = "PFsumChargedHadronPt";
208  names[16] = "PFsumChargedTotalPt";
209  names[17] = "PFsumEMuPt";
210  names[18] = "PFsumNeutralHadronEt";
211  names[19] = "PFsumPhotonEt";
212  names[20] = "PFsumPUPt";
213 
214  //----------Parameters for binning of histograms---------
215  //param[var][0] is the number of bins
216  //param[var][1] is the low edge of the low bin
217  //param[var][2] is the high edge of the high bin
218  //
219  // maximum value------,
220  // |
221  // V
222  param[0 ][0]= (int)( 20.0/S_BIN_WIDTH); param[0 ][1]= 0.0; param[0 ][2]= param[0 ][0]*S_BIN_WIDTH;
223  param[1 ][0]= (int)( 20.0/S_BIN_WIDTH); param[1 ][1]= 0.0; param[1 ][2]= param[1 ][0]*S_BIN_WIDTH;
224  param[2 ][0]= (int)( 20.0/S_BIN_WIDTH); param[2 ][1]= 0.0; param[2 ][2]= param[2 ][0]*S_BIN_WIDTH;
225  param[3 ][0]= 20; param[3 ][1]= 0.0; param[3 ][2]= 2.0;
226  param[4 ][0]= 16; param[4 ][1]= -0.5; param[4 ][2]= param[4 ][0]-0.5;
227  param[5 ][0]= 4; param[5 ][1]= -0.5; param[5 ][2]= param[5 ][0]-0.5;
228  param[6 ][0]= (int)( 40.0/S_BIN_WIDTH); param[6 ][1]= 0.0; param[6 ][2]= param[6 ][0]*S_BIN_WIDTH;
229  param[7 ][0]= 20; param[7 ][1]= 0.0; param[7 ][2]= 10.0;
230  param[8 ][0]= (int)( 20.0/S_BIN_WIDTH); param[8 ][1]= 0.0; param[8 ][2]= param[8 ][0]*S_BIN_WIDTH;
231  param[9 ][0]= 20; param[9 ][1]= 0.0; param[9 ][2]= 5.0;
232  param[10][0]= (int)( 40.0/S_BIN_WIDTH); param[10][1]= 0.0; param[10][2]= param[10][0]*S_BIN_WIDTH;
233  param[11][0]= 24; param[11][1]= -2.4; param[11][2]= 2.4;
234  param[12][0]= 32; param[12][1]= -3.2; param[12][2]= 3.2;
235  param[13][0]= (int)( 15.0/S_BIN_WIDTH); param[13][1]= 0.0; param[13][2]= param[13][0]*S_BIN_WIDTH;
236  param[14][0]= (int)( 20.0/S_BIN_WIDTH); param[14][1]= 0.0; param[14][2]= param[14][0]*S_BIN_WIDTH;
237  param[15][0]= (int)( 20.0/S_BIN_WIDTH); param[15][1]= 0.0; param[15][2]= param[15][0]*S_BIN_WIDTH;
238  param[16][0]= (int)( 20.0/S_BIN_WIDTH); param[15][1]= 0.0; param[16][2]= param[16][0]*S_BIN_WIDTH;
239  param[17][0]= (int)( 20.0/S_BIN_WIDTH)+1; param[17][1]= -S_BIN_WIDTH; param[17][2]= param[17][0]*S_BIN_WIDTH;
240  param[18][0]= (int)( 20.0/S_BIN_WIDTH); param[18][1]= 0.0; param[18][2]= param[18][0]*S_BIN_WIDTH;
241  param[19][0]= (int)( 20.0/S_BIN_WIDTH); param[19][1]= 0.0; param[19][2]= param[19][0]*S_BIN_WIDTH;
242  param[20][0]= (int)( 20.0/S_BIN_WIDTH); param[20][1]= 0.0; param[20][2]= param[20][0]*S_BIN_WIDTH;
243 
244  //--------------Is the variable continuous (i.e. non-integer)?-------------
245  //---------(Log binning will only be used for continuous variables)--------
246  isContinuous[0 ] = 1;
247  isContinuous[1 ] = 1;
248  isContinuous[2 ] = 1;
249  isContinuous[3 ] = 1;
250  isContinuous[4 ] = 0;
251  isContinuous[5 ] = 0;
252  isContinuous[6 ] = 1;
253  isContinuous[7 ] = 1;
254  isContinuous[8 ] = 1;
255  isContinuous[9 ] = 1;
256  isContinuous[10] = 1;
257  isContinuous[11] = 1;
258  isContinuous[12] = 1;
259  isContinuous[13] = 1;
260  isContinuous[14] = 1;
261  isContinuous[15] = 1;
262  isContinuous[16] = 1;
263  isContinuous[17] = 1;
264  isContinuous[18] = 1;
265  isContinuous[19] = 1;
266  isContinuous[20] = 1;
267 
268  //----Should the cumulative distribution be calculated for this variable?-----
269  cdCompNeeded[0 ] = 1;
270  cdCompNeeded[1 ] = 1;
271  cdCompNeeded[2 ] = 1;
272  cdCompNeeded[3 ] = 1;
273  cdCompNeeded[4 ] = 1;
274  cdCompNeeded[5 ] = 1;
275  cdCompNeeded[6 ] = 1;
276  cdCompNeeded[7 ] = 1;
277  cdCompNeeded[8 ] = 1;
278  cdCompNeeded[9 ] = 1;
279  cdCompNeeded[10] = 0;
280  cdCompNeeded[11] = 0;
281  cdCompNeeded[12] = 0;
282  cdCompNeeded[13] = 1;
283  cdCompNeeded[14] = 1;
284  cdCompNeeded[15] = 1;
285  cdCompNeeded[16] = 1;
286  cdCompNeeded[17] = 1;
287  cdCompNeeded[18] = 1;
288  cdCompNeeded[19] = 1;
289  cdCompNeeded[20] = 1;
290 }
std::vector< int > isContinuous
std::vector< std::string > names
std::string title_cd
std::vector< std::string > main_titles
std::string title_sam
std::string title_cone
static const int NUM_VARS
std::vector< std::vector< double > > param
std::vector< std::string > axis_titles
std::vector< int > cdCompNeeded
void MuIsoValidation::MakeLogBinsForProfile ( Double_t *  bin_edges,
const double  min,
const double  max 
)
private

Definition at line 504 of file MuIsoValidation.cc.

References LOG_BINNING_RATIO, max(), min, n, pileupCalc::nbins, NUM_LOG_BINS, funct::pow(), and alignCSCRings::r.

Referenced by InitHistos().

505  {
506 
507  const double &r = LOG_BINNING_RATIO;
508  const int &nbins = NUM_LOG_BINS;
509 
510  const double first_bin_width = (r > 1.0) ? //so we don't divide by zero
511  (max - min)*(1-r)/(1-pow(r,nbins)) :
512  (max - min)/nbins;
513 
514  bin_edges[0] = min;
515  bin_edges[1] = min + first_bin_width;
516  for(int n = 2; n<nbins; ++n){
517  bin_edges[n] = bin_edges[n-1] + (bin_edges[n-1] - bin_edges[n-2])*r;
518  }
519  bin_edges[nbins] = max;
520 }
#define min(a, b)
Definition: mlp_lapack.h:161
const T & max(const T &a, const T &b)
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
void MuIsoValidation::NormalizeHistos ( )
private

Definition at line 522 of file MuIsoValidation.cc.

References cd_plots, cdCompNeeded, python.tagInventory::entries, GetTH1FromMonitorElement(), h_1D, n, NUM_VARS, and param.

Referenced by endJob().

522  {
523  for(int var=0; var<NUM_VARS; var++){
524  //turn cd_plots into CDF's
525  //underflow -> bin #0. overflow -> bin #(nbins+1)
526  //0th bin doesn't need changed
527 
528  //----normalize------
529  double entries = GetTH1FromMonitorElement(h_1D[var])->GetEntries();
530  if (entries==0)continue;
531  GetTH1FromMonitorElement(h_1D[var])->Scale(1./entries);
532 
533  if (cdCompNeeded[var]) {
534  int n_max = int(param[var][0])+1;
535  for(int n=1; n<=n_max; ++n){
536  cd_plots[var]->setBinContent(n, cd_plots[var]->getBinContent(n) + cd_plots[var]->getBinContent(n-1)); //Integrate.
537  }
538  //----normalize------
539  GetTH1FromMonitorElement(cd_plots[var])->Scale(1./entries);
540  }
541  }
542 }
TH1 * GetTH1FromMonitorElement(MonitorElement *me)
std::vector< MonitorElement * > h_1D
std::vector< MonitorElement * > cd_plots
static const int NUM_VARS
std::vector< std::vector< double > > param
std::vector< int > cdCompNeeded
void MuIsoValidation::RecordData ( MuonIterator  muon)
private

Definition at line 325 of file MuIsoValidation.cc.

References theData.

Referenced by analyze().

325  {
326 
327 
328  theData[0] = muon->isolationR03().sumPt;
329  theData[1] = muon->isolationR03().emEt;
330  theData[2] = muon->isolationR03().hadEt;
331  theData[3] = muon->isolationR03().hoEt;
332 
333  theData[4] = muon->isolationR03().nTracks;
334  theData[5] = muon->isolationR03().nJets;
335  theData[6] = muon->isolationR03().trackerVetoPt;
336  theData[7] = muon->isolationR03().emVetoEt;
337  theData[8] = muon->isolationR03().hadVetoEt;
338  theData[9] = muon->isolationR03().hoVetoEt;
339 
340  theData[10] = muon->pt();
341  theData[11] = muon->eta();
342  theData[12] = muon->phi();
343 
344  // make sure nTracks != 0 before filling this one
345  if (theData[4] != 0) theData[13] = (double)theData[0] / (double)theData[4];
346  else theData[13] = -99;
347 
348  theData[14] = 1.5 * theData[1] + theData[2];
349 
350  // Now PF isolation
351  theData[15] = -99.;
352  theData[16] = -99.;
353  theData[17] = -99.;
354  theData[18] = -99.;
355  theData[19] = -99.;
356  theData[20] = -99.;
357  if ( muon->isPFMuon() && muon->isPFIsolationValid() ) {
358  theData[15] = muon->pfIsolationR03().sumChargedHadronPt;
359  theData[16] = muon->pfIsolationR03().sumChargedParticlePt;
360  theData[17] = muon->pfIsolationR03().sumChargedParticlePt-muon->pfIsolationR03().sumChargedHadronPt;
361  theData[18] = muon->pfIsolationR03().sumNeutralHadronEt;
362  theData[19] = muon->pfIsolationR03().sumPhotonEt;
363  theData[20] = muon->pfIsolationR03().sumPUPt;
364  }
365 
366 }
double theData[NUM_VARS]

Member Data Documentation

std::vector<std::string> MuIsoValidation::axis_titles
private

Definition at line 114 of file MuIsoValidation.h.

Referenced by InitHistos(), and InitStatics().

std::vector<MonitorElement*> MuIsoValidation::cd_plots
private

Definition at line 132 of file MuIsoValidation.h.

Referenced by FillHistos(), InitHistos(), MuIsoValidation(), and NormalizeHistos().

std::vector<int> MuIsoValidation::cdCompNeeded
private

Definition at line 118 of file MuIsoValidation.h.

Referenced by FillHistos(), InitHistos(), InitStatics(), and NormalizeHistos().

DQMStore* MuIsoValidation::dbe
private

Definition at line 123 of file MuIsoValidation.h.

Referenced by analyze(), beginJob(), endJob(), InitHistos(), and MuIsoValidation().

std::string MuIsoValidation::dirName
private

Definition at line 97 of file MuIsoValidation.h.

Referenced by analyze(), beginJob(), endJob(), and MuIsoValidation().

edm::InputTag MuIsoValidation::ecalIsoDeposit_Tag
private

Definition at line 91 of file MuIsoValidation.h.

std::vector<MonitorElement*> MuIsoValidation::h_1D
private

Definition at line 131 of file MuIsoValidation.h.

Referenced by FillHistos(), InitHistos(), MuIsoValidation(), and NormalizeHistos().

MonitorElement* MuIsoValidation::h_nMuons
private

Definition at line 130 of file MuIsoValidation.h.

Referenced by analyze(), and InitHistos().

edm::InputTag MuIsoValidation::hcalIsoDeposit_Tag
private

Definition at line 90 of file MuIsoValidation.h.

edm::InputTag MuIsoValidation::hoIsoDeposit_Tag
private

Definition at line 92 of file MuIsoValidation.h.

std::vector<int> MuIsoValidation::isContinuous
private

Definition at line 117 of file MuIsoValidation.h.

Referenced by InitHistos(), and InitStatics().

double MuIsoValidation::L_BIN_WIDTH
private

Definition at line 102 of file MuIsoValidation.h.

Referenced by InitStatics().

int MuIsoValidation::LOG_BINNING_ENABLED
private

Definition at line 104 of file MuIsoValidation.h.

Referenced by InitHistos(), and InitStatics().

double MuIsoValidation::LOG_BINNING_RATIO
private

Definition at line 106 of file MuIsoValidation.h.

Referenced by InitStatics(), and MakeLogBinsForProfile().

std::vector<std::string> MuIsoValidation::main_titles
private

Definition at line 113 of file MuIsoValidation.h.

Referenced by InitHistos(), and InitStatics().

edm::InputTag MuIsoValidation::Muon_Tag
private

Definition at line 88 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

std::vector<std::string> MuIsoValidation::names
private

Definition at line 115 of file MuIsoValidation.h.

Referenced by InitHistos(), and InitStatics().

int MuIsoValidation::nEvents
private

Definition at line 137 of file MuIsoValidation.h.

Referenced by analyze(), endJob(), and MuIsoValidation().

int MuIsoValidation::nIncMuons
private

Definition at line 138 of file MuIsoValidation.h.

Referenced by analyze(), endJob(), and MuIsoValidation().

int MuIsoValidation::NUM_LOG_BINS
private

Definition at line 105 of file MuIsoValidation.h.

Referenced by InitHistos(), InitStatics(), and MakeLogBinsForProfile().

const int MuIsoValidation::NUM_VARS = 21
staticprivate
std::vector< std::vector<MonitorElement*> > MuIsoValidation::p_2D
private

Definition at line 134 of file MuIsoValidation.h.

Referenced by FillHistos(), InitHistos(), and MuIsoValidation().

std::vector< std::vector<double> > MuIsoValidation::param
private

Definition at line 116 of file MuIsoValidation.h.

Referenced by FillHistos(), InitHistos(), InitStatics(), and NormalizeHistos().

bool MuIsoValidation::requireCombinedMuon
private

Definition at line 107 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

std::string MuIsoValidation::rootfilename
private

Definition at line 95 of file MuIsoValidation.h.

double MuIsoValidation::S_BIN_WIDTH
private

Definition at line 103 of file MuIsoValidation.h.

Referenced by InitStatics().

std::string MuIsoValidation::subDirName
private

Definition at line 98 of file MuIsoValidation.h.

double MuIsoValidation::theData[NUM_VARS]
private

Definition at line 127 of file MuIsoValidation.h.

Referenced by FillHistos(), and RecordData().

int MuIsoValidation::theMuonData
private

Definition at line 126 of file MuIsoValidation.h.

Referenced by analyze().

std::string MuIsoValidation::title_cd
private

Definition at line 111 of file MuIsoValidation.h.

Referenced by InitHistos(), and InitStatics().

std::string MuIsoValidation::title_cone
private

Definition at line 110 of file MuIsoValidation.h.

Referenced by InitHistos(), and InitStatics().

std::string MuIsoValidation::title_sam
private

Definition at line 109 of file MuIsoValidation.h.

Referenced by InitHistos(), and InitStatics().

edm::InputTag MuIsoValidation::tkIsoDeposit_Tag
private

Definition at line 89 of file MuIsoValidation.h.