CMS 3D CMS Logo

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:
DQMEDAnalyzer edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 MuIsoValidation (const edm::ParameterSet &)
 
 ~MuIsoValidation () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
 DQMEDAnalyzer (DQMEDAnalyzer const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer &&)=delete
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDAnalyzer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Types

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

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void FillHistos ()
 
TH1 * GetTH1FromMonitorElement (MonitorElement *me)
 
TH2 * GetTH2FromMonitorElement (MonitorElement *me)
 
TProfile * GetTProfileFromMonitorElement (MonitorElement *me)
 
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
 
edm::ParameterSet iConfig
 
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
 
edm::EDGetTokenT< edm::View< reco::Muon > > Muon_Token
 
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
 
std::string subsystemname_
 
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::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 59 of file MuIsoValidation.h.

Member Typedef Documentation

Definition at line 63 of file MuIsoValidation.h.

Definition at line 64 of file MuIsoValidation.h.

Definition at line 62 of file MuIsoValidation.h.

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

Definition at line 61 of file MuIsoValidation.h.

Member Enumeration Documentation

anonymous enum
private

Constructor & Destructor Documentation

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

Definition at line 63 of file MuIsoValidation.cc.

References cd_plots, dbe, dirName, edm::ParameterSet::getUntrackedParameter(), h_1D, iConfig, InitStatics(), Muon_Tag, Muon_Token, nEvents, nIncMuons, NUM_VARS, Utilities::operator, p_2D, requireCombinedMuon, AlCaHLTBitMon_QueryRunRegistry::string, and subsystemname_.

64 {
65  iConfig=ps;
66 
67  // rootfilename = iConfig.getUntrackedParameter<string>("rootfilename"); // comment out for inclusion
68  requireCombinedMuon = iConfig.getUntrackedParameter<bool>("requireCombinedMuon");
70  //subDirName = iConfig.getParameter<std::string>("@module_label");
71 
72  //dirName += subDirName;
73 
74  //--------Initialize tags-------
75  Muon_Tag = iConfig.getUntrackedParameter<edm::InputTag>("Global_Muon_Label");
76  Muon_Token = consumes<edm::View<reco::Muon> >(Muon_Tag);
77 
78  //-------Initialize counters----------------
79  nEvents = 0;
80  nIncMuons = 0;
81  // nCombinedMuons = 0;
82 
83  InitStatics();
84 
85  //Set up DAQ
86  dbe = nullptr;
88  subsystemname_ = iConfig.getUntrackedParameter<std::string>("subSystemFolder", "YourSubsystem") ;
89 
90  //------"allocate" space for the data vectors-------
91  h_1D.resize (NUM_VARS);
92  cd_plots.resize(NUM_VARS);
93  p_2D.resize(NUM_VARS, vector<MonitorElement*>(NUM_VARS));
94 
95 }
T getUntrackedParameter(std::string const &, T const &) const
std::vector< std::vector< MonitorElement * > > p_2D
std::vector< MonitorElement * > h_1D
edm::EDGetTokenT< edm::View< reco::Muon > > Muon_Token
edm::ParameterSet iConfig
std::vector< MonitorElement * > cd_plots
std::string dirName
static const int NUM_VARS
edm::InputTag Muon_Tag
std::string subsystemname_
MuIsoValidation::~MuIsoValidation ( )
override

Definition at line 100 of file MuIsoValidation.cc.

100  {
101 
102  //Deallocate memory
103 
104 }

Member Function Documentation

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

Definition at line 284 of file MuIsoValidation.cc.

References MonitorElement::Fill(), FillHistos(), edm::Event::getByToken(), h_nMuons, metsig::muon, Muon_Token, nEvents, nIncMuons, RecordData(), requireCombinedMuon, theMuonData, and parallelization::uint().

284  {
285 
286  ++nEvents;
287  edm::LogInfo("Tutorial") << "\nInvestigating event #" << nEvents<<"\n";
288 
289  // Get Muon Collection
290  edm::Handle<edm::View<reco::Muon> > muonsHandle; //
291  iEvent.getByToken(Muon_Token, muonsHandle);
292 
293  //Fill event entry in histogram of number of muons
294  edm::LogInfo("Tutorial") << "Number of Muons: " << muonsHandle->size();
295  theMuonData = muonsHandle->size();
297 
298  //Fill historgams concerning muon isolation
299  uint iMuon=0;
300  for (MuonIterator muon = muonsHandle->begin(); muon != muonsHandle->end(); ++muon, ++iMuon ) {
301  ++nIncMuons;
302  if (requireCombinedMuon) {
303  if (muon->combinedMuon().isNull()) continue;
304  }
305  RecordData(muon);
306  FillHistos();
307  }
308 }
void RecordData(MuonIterator muon)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
edm::View< reco::Muon >::const_iterator MuonIterator
edm::EDGetTokenT< edm::View< reco::Muon > > Muon_Token
void Fill(long long x)
MonitorElement * h_nMuons
def uint(string)
void MuIsoValidation::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &   
)
overrideprivatevirtual

Implements DQMEDAnalyzer.

Definition at line 355 of file MuIsoValidation.cc.

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

355  {
356 
357  ibooker.setCurrentFolder(dirName);
358  //---initialize number of muons histogram---
359  h_nMuons = ibooker.book1D("nMuons", title_sam + "Number of Muons", 20, 0., 20.);
360  h_nMuons->setAxisTitle("Number of Muons",XAXIS);
361  h_nMuons->setAxisTitle("Fraction of Events",YAXIS);
362 
363 
364  //---Initialize 1D Histograms---
365  for(int var = 0; var < NUM_VARS; var++){
366  h_1D[var] = ibooker.book1D(
367  names[var],
368  title_sam + main_titles[var] + title_cone,
369  (int)param[var][0],
370  param[var][1],
371  param[var][2]
372  );
373  h_1D[var]->setAxisTitle(axis_titles[var],XAXIS);
374  h_1D[var]->setAxisTitle("Fraction of Muons",YAXIS);
375  GetTH1FromMonitorElement(h_1D[var])->Sumw2();
376 
377  if (cdCompNeeded[var]) {
378  cd_plots[var] = ibooker.book1D(
379  names[var] + "_cd",
381  (int)param[var][0],
382  param[var][1],
383  param[var][2]
384  );
385  cd_plots[var]->setAxisTitle(axis_titles[var],XAXIS);
386  cd_plots[var]->setAxisTitle("Fraction of Muons",YAXIS);
387  GetTH1FromMonitorElement(cd_plots[var])->Sumw2();
388  }
389  }//Finish 1D
390 
391  //---Initialize 2D Histograms---
392  for(int var1 = 0; var1 < NUM_VARS; var1++){
393  for(int var2 = 0; var2 < NUM_VARS; var2++){
394  if(var1 == var2) continue;
395 
396  /* h_2D[var1][var2] = ibooker.book2D(
397  names[var1] + "_" + names[var2] + "_s",
398  //title is in "y-var vs. x-var" format
399  title_sam + main_titles[var2] + " <vs> " + main_titles[var1] + title_cone,
400  (int)param[var1][0],
401  param[var1][1],
402  param[var1][2],
403  (int)param[var2][0],
404  param[var2][1],
405  param[var2][2]
406  );
407  */
408  //Monitor elements is weird and takes y axis parameters as well
409  //as x axis parameters for a 1D profile plot
410  p_2D[var1][var2] = ibooker.bookProfile(
411  names[var1] + "_" + names[var2],
412  title_sam + main_titles[var2] + " <vs> " + main_titles[var1] + title_cone,
413  (int)param[var1][0],
414  param[var1][1],
415  param[var1][2],
416  (int)param[var2][0], //documentation says this is disregarded
417  param[var2][1], //does this do anything?
418  param[var2][2], //does this do anything?
419  " " //profile errors = spread/sqrt(num_datums)
420  );
421 
422  if(LOG_BINNING_ENABLED && isContinuous[var1]){
423  Double_t * bin_edges = new Double_t[NUM_LOG_BINS+1];
424  // nbins+1 because there is one more edge than there are bins
425  MakeLogBinsForProfile(bin_edges, param[var1][1], param[var1][2]);
426  GetTProfileFromMonitorElement(p_2D[var1][var2])->SetBins(NUM_LOG_BINS, bin_edges);
427  delete[] bin_edges;
428  }
429  /* h_2D[var1][var2]->setAxisTitle(axis_titles[var1],XAXIS);
430  h_2D[var1][var2]->setAxisTitle(axis_titles[var2],YAXIS);
431  GetTH2FromMonitorElement(h_2D[var1][var2])->Sumw2();
432  */
433 
434  p_2D[var1][var2]->setAxisTitle(axis_titles[var1],XAXIS);
435  p_2D[var1][var2]->setAxisTitle(axis_titles[var2],YAXIS);
436  // GetTProfileFromMonitorElement(p_2D[var1][var2])->Sumw2();
437  }
438  }//Finish 2D
439 
440 
441 
442  //avg pT not defined for zero tracks.
443  //MonitorElement is inflxible and won't let me change the
444  //number of bins! I guess all I'm doing here is changing
445  //range of the x axis when it is printed, not the actual
446  //bins that are filled
447  p_2D[4][9]->setAxisRange(0.5,15.5,XAXIS);
448 
449 }
std::vector< int > isContinuous
TH1 * GetTH1FromMonitorElement(MonitorElement *me)
std::vector< std::vector< MonitorElement * > > p_2D
std::vector< std::string > names
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:160
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 dirName
std::string title_cone
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
static const int NUM_VARS
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
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::FillHistos ( )
private

Definition at line 491 of file MuIsoValidation.cc.

References cd_plots, cdCompNeeded, h_1D, NUM_VARS, p_2D, theData, and JetChargeProducer_cfi::var.

Referenced by analyze().

491  {
492 
493 
494  //----------Fill 1D histograms---------------
495  for(int var=0; var<NUM_VARS; var++){
496  h_1D[var]->Fill(theData[var]);
497  if (cdCompNeeded[var]) cd_plots[var]->Fill(theData[var]);//right now, this is a regular PDF (just like h_1D)
498  }//Finish 1D
499 
500  //----------Fill 2D histograms---------------
501  for(int var1=0; var1<NUM_VARS; ++var1){
502  for(int var2=0; var2<NUM_VARS; ++var2){
503  if(var1 == var2) continue;
504  //change below to regular int interating!
505  // h_2D[var1][var2]->Fill(theData[var1], theData[var2]);
506  p_2D[var1][var2]->Fill(theData[var1], theData[var2]);
507  }
508  }//Finish 2D
509 }
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< int > cdCompNeeded
TH1 * MuIsoValidation::GetTH1FromMonitorElement ( MonitorElement me)
private

Definition at line 511 of file MuIsoValidation.cc.

References MonitorElement::getTH1().

Referenced by bookHistograms(), and NormalizeHistos().

511  {
512  return me->getTH1();
513 }
TH1 * getTH1() const
TH2 * MuIsoValidation::GetTH2FromMonitorElement ( MonitorElement me)
private

Definition at line 515 of file MuIsoValidation.cc.

References MonitorElement::getTH2F().

515  {
516  return me->getTH2F();
517 }
TH2F * getTH2F() const
TProfile * MuIsoValidation::GetTProfileFromMonitorElement ( MonitorElement me)
private

Definition at line 519 of file MuIsoValidation.cc.

References DEFINE_FWK_MODULE, and MonitorElement::getTProfile().

Referenced by bookHistograms().

519  {
520  return me->getTProfile();
521 }
TProfile * getTProfile() const
void MuIsoValidation::InitStatics ( )
private

Definition at line 109 of file MuIsoValidation.cc.

References axis_titles, cdCompNeeded, createfilelist::int, 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().

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

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

Referenced by bookHistograms().

452  {
453 
454  const double &r = LOG_BINNING_RATIO;
455  const int &nbins = NUM_LOG_BINS;
456 
457  const double first_bin_width = (r > 1.0) ? //so we don't divide by zero
458  (max - min)*(1-r)/(1-pow(r,nbins)) :
459  (max - min)/nbins;
460 
461  bin_edges[0] = min;
462  bin_edges[1] = min + first_bin_width;
463  for(int n = 2; n<nbins; ++n){
464  bin_edges[n] = bin_edges[n-1] + (bin_edges[n-1] - bin_edges[n-2])*r;
465  }
466  bin_edges[nbins] = max;
467 }
T min(T a, T b)
Definition: MathUtil.h:58
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
void MuIsoValidation::NormalizeHistos ( )
private

Definition at line 469 of file MuIsoValidation.cc.

References cd_plots, cdCompNeeded, GetTH1FromMonitorElement(), h_1D, createfilelist::int, gen::n, NUM_VARS, param, and JetChargeProducer_cfi::var.

469  {
470  for(int var=0; var<NUM_VARS; var++){
471  //turn cd_plots into CDF's
472  //underflow -> bin #0. overflow -> bin #(nbins+1)
473  //0th bin doesn't need changed
474 
475  //----normalize------
476  double entries = GetTH1FromMonitorElement(h_1D[var])->GetEntries();
477  if (entries==0)continue;
478  GetTH1FromMonitorElement(h_1D[var])->Scale(1./entries);
479 
480  if (cdCompNeeded[var]) {
481  int n_max = int(param[var][0])+1;
482  for(int n=1; n<=n_max; ++n){
483  cd_plots[var]->setBinContent(n, cd_plots[var]->getBinContent(n) + cd_plots[var]->getBinContent(n-1)); //Integrate.
484  }
485  //----normalize------
486  GetTH1FromMonitorElement(cd_plots[var])->Scale(1./entries);
487  }
488  }
489 }
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 311 of file MuIsoValidation.cc.

References theData.

Referenced by analyze().

311  {
312 
313 
314  theData[0] = muon->isolationR03().sumPt;
315  theData[1] = muon->isolationR03().emEt;
316  theData[2] = muon->isolationR03().hadEt;
317  theData[3] = muon->isolationR03().hoEt;
318 
319  theData[4] = muon->isolationR03().nTracks;
320  theData[5] = muon->isolationR03().nJets;
321  theData[6] = muon->isolationR03().trackerVetoPt;
322  theData[7] = muon->isolationR03().emVetoEt;
323  theData[8] = muon->isolationR03().hadVetoEt;
324  theData[9] = muon->isolationR03().hoVetoEt;
325 
326  theData[10] = muon->pt();
327  theData[11] = muon->eta();
328  theData[12] = muon->phi();
329 
330  // make sure nTracks != 0 before filling this one
331  if (theData[4] != 0) theData[13] = (double)theData[0] / (double)theData[4];
332  else theData[13] = -99;
333 
334  theData[14] = 1.5 * theData[1] + theData[2];
335 
336  // Now PF isolation
337  theData[15] = -99.;
338  theData[16] = -99.;
339  theData[17] = -99.;
340  theData[18] = -99.;
341  theData[19] = -99.;
342  theData[20] = -99.;
343  if ( muon->isPFMuon() && muon->isPFIsolationValid() ) {
344  theData[15] = muon->pfIsolationR03().sumChargedHadronPt;
345  theData[16] = muon->pfIsolationR03().sumChargedParticlePt;
346  theData[17] = muon->pfIsolationR03().sumChargedParticlePt-muon->pfIsolationR03().sumChargedHadronPt;
347  theData[18] = muon->pfIsolationR03().sumNeutralHadronEt;
348  theData[19] = muon->pfIsolationR03().sumPhotonEt;
349  theData[20] = muon->pfIsolationR03().sumPUPt;
350  }
351 
352 }
double theData[NUM_VARS]

Member Data Documentation

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

Definition at line 119 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

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

Definition at line 138 of file MuIsoValidation.h.

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

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

Definition at line 123 of file MuIsoValidation.h.

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

DQMStore* MuIsoValidation::dbe
private

Definition at line 128 of file MuIsoValidation.h.

Referenced by MuIsoValidation().

std::string MuIsoValidation::dirName
private
edm::InputTag MuIsoValidation::ecalIsoDeposit_Tag
private

Definition at line 94 of file MuIsoValidation.h.

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

Definition at line 137 of file MuIsoValidation.h.

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

MonitorElement* MuIsoValidation::h_nMuons
private

Definition at line 136 of file MuIsoValidation.h.

Referenced by analyze(), and bookHistograms().

edm::InputTag MuIsoValidation::hcalIsoDeposit_Tag
private

Definition at line 93 of file MuIsoValidation.h.

edm::InputTag MuIsoValidation::hoIsoDeposit_Tag
private

Definition at line 95 of file MuIsoValidation.h.

edm::ParameterSet MuIsoValidation::iConfig
private

Definition at line 130 of file MuIsoValidation.h.

Referenced by MuIsoValidation().

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

Definition at line 122 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

double MuIsoValidation::L_BIN_WIDTH
private

Definition at line 107 of file MuIsoValidation.h.

Referenced by InitStatics().

int MuIsoValidation::LOG_BINNING_ENABLED
private

Definition at line 109 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

double MuIsoValidation::LOG_BINNING_RATIO
private

Definition at line 111 of file MuIsoValidation.h.

Referenced by InitStatics(), and MakeLogBinsForProfile().

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

Definition at line 118 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

edm::InputTag MuIsoValidation::Muon_Tag
private

Definition at line 90 of file MuIsoValidation.h.

Referenced by MuIsoValidation().

edm::EDGetTokenT<edm::View<reco::Muon> > MuIsoValidation::Muon_Token
private

Definition at line 91 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

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

Definition at line 120 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

int MuIsoValidation::nEvents
private

Definition at line 143 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

int MuIsoValidation::nIncMuons
private

Definition at line 144 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

int MuIsoValidation::NUM_LOG_BINS
private

Definition at line 110 of file MuIsoValidation.h.

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

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

Definition at line 140 of file MuIsoValidation.h.

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

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

Definition at line 121 of file MuIsoValidation.h.

Referenced by bookHistograms(), InitStatics(), and NormalizeHistos().

bool MuIsoValidation::requireCombinedMuon
private

Definition at line 112 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

std::string MuIsoValidation::rootfilename
private

Definition at line 98 of file MuIsoValidation.h.

double MuIsoValidation::S_BIN_WIDTH
private

Definition at line 108 of file MuIsoValidation.h.

Referenced by InitStatics().

std::string MuIsoValidation::subDirName
private

Definition at line 101 of file MuIsoValidation.h.

std::string MuIsoValidation::subsystemname_
private

Definition at line 103 of file MuIsoValidation.h.

Referenced by MuIsoValidation().

double MuIsoValidation::theData[NUM_VARS]
private

Definition at line 133 of file MuIsoValidation.h.

Referenced by FillHistos(), and RecordData().

int MuIsoValidation::theMuonData
private

Definition at line 132 of file MuIsoValidation.h.

Referenced by analyze().

std::string MuIsoValidation::title_cd
private

Definition at line 116 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

std::string MuIsoValidation::title_cone
private

Definition at line 115 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

std::string MuIsoValidation::title_sam
private

Definition at line 114 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

edm::InputTag MuIsoValidation::tkIsoDeposit_Tag
private

Definition at line 92 of file MuIsoValidation.h.