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::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator > 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 &event, edm::EventSetup const &setup) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
virtual void dqmEndLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &)
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () 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 () noexcept(false) 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
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
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)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
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
 
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 DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- 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::ProducerBase
ProducesCollector producesCollector ()
 
- 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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
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 61 of file MuIsoValidation.cc.

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

61  {
62  iConfig = ps;
63 
64  // rootfilename = iConfig.getUntrackedParameter<string>("rootfilename"); // comment out for inclusion
65  requireCombinedMuon = iConfig.getUntrackedParameter<bool>("requireCombinedMuon");
67  //subDirName = iConfig.getParameter<std::string>("@module_label");
68 
69  //dirName += subDirName;
70 
71  //--------Initialize tags-------
72  Muon_Tag = iConfig.getUntrackedParameter<edm::InputTag>("Global_Muon_Label");
73  Muon_Token = consumes<edm::View<reco::Muon> >(Muon_Tag);
74 
75  //-------Initialize counters----------------
76  nEvents = 0;
77  nIncMuons = 0;
78  // nCombinedMuons = 0;
79 
80  InitStatics();
81 
82  //Set up DAQ
83  subsystemname_ = iConfig.getUntrackedParameter<std::string>("subSystemFolder", "YourSubsystem");
84 
85  //------"allocate" space for the data vectors-------
86  h_1D.resize(NUM_VARS);
87  cd_plots.resize(NUM_VARS);
88  p_2D.resize(NUM_VARS, vector<MonitorElement*>(NUM_VARS));
89 }
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 94 of file MuIsoValidation.cc.

94  {
95  //Deallocate memory
96 }

Member Function Documentation

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

Definition at line 315 of file MuIsoValidation.cc.

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

315  {
316  ++nEvents;
317  edm::LogInfo("Tutorial") << "\nInvestigating event #" << nEvents << "\n";
318 
319  // Get Muon Collection
320  edm::Handle<edm::View<reco::Muon> > muonsHandle; //
321  iEvent.getByToken(Muon_Token, muonsHandle);
322 
323  //Fill event entry in histogram of number of muons
324  edm::LogInfo("Tutorial") << "Number of Muons: " << muonsHandle->size();
325  theMuonData = muonsHandle->size();
327 
328  //Fill historgams concerning muon isolation
329  uint iMuon = 0;
330  for (MuonIterator muon = muonsHandle->begin(); muon != muonsHandle->end(); ++muon, ++iMuon) {
331  ++nIncMuons;
332  if (requireCombinedMuon) {
333  if (muon->combinedMuon().isNull())
334  continue;
335  }
336  RecordData(muon);
337  FillHistos();
338  }
339 }
void RecordData(MuonIterator muon)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
edm::View< reco::Muon >::const_iterator MuonIterator
edm::EDGetTokenT< edm::View< reco::Muon > > Muon_Token
MonitorElement * h_nMuons
void Fill(long long x)
void MuIsoValidation::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &   
)
overrideprivatevirtual

Implements DQMEDAnalyzer.

Definition at line 384 of file MuIsoValidation.cc.

References axis_titles, dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::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, dqm::impl::MonitorElement::setAxisTitle(), dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), title_cd, title_cone, title_sam, trigObjTnPSource_cfi::var, XAXIS, and YAXIS.

384  {
385  ibooker.setCurrentFolder(dirName);
386  //---initialize number of muons histogram---
387  h_nMuons = ibooker.book1D("nMuons", title_sam + "Number of Muons", 20, 0., 20.);
388  h_nMuons->setAxisTitle("Number of Muons", XAXIS);
389  h_nMuons->setAxisTitle("Fraction of Events", YAXIS);
390 
391  //---Initialize 1D Histograms---
392  for (int var = 0; var < NUM_VARS; var++) {
393  h_1D[var] = ibooker.book1D(
394  names[var], title_sam + main_titles[var] + title_cone, (int)param[var][0], param[var][1], param[var][2]);
395  h_1D[var]->setAxisTitle(axis_titles[var], XAXIS);
396  h_1D[var]->setAxisTitle("Fraction of Muons", YAXIS);
397  GetTH1FromMonitorElement(h_1D[var])->Sumw2();
398 
399  if (cdCompNeeded[var]) {
400  cd_plots[var] = ibooker.book1D(names[var] + "_cd",
402  (int)param[var][0],
403  param[var][1],
404  param[var][2]);
405  cd_plots[var]->setAxisTitle(axis_titles[var], XAXIS);
406  cd_plots[var]->setAxisTitle("Fraction of Muons", YAXIS);
407  GetTH1FromMonitorElement(cd_plots[var])->Sumw2();
408  }
409  } //Finish 1D
410 
411  //---Initialize 2D Histograms---
412  for (int var1 = 0; var1 < NUM_VARS; var1++) {
413  for (int var2 = 0; var2 < NUM_VARS; var2++) {
414  if (var1 == var2)
415  continue;
416 
417  /* h_2D[var1][var2] = ibooker.book2D(
418  names[var1] + "_" + names[var2] + "_s",
419  //title is in "y-var vs. x-var" format
420  title_sam + main_titles[var2] + " <vs> " + main_titles[var1] + title_cone,
421  (int)param[var1][0],
422  param[var1][1],
423  param[var1][2],
424  (int)param[var2][0],
425  param[var2][1],
426  param[var2][2]
427  );
428  */
429  //Monitor elements is weird and takes y axis parameters as well
430  //as x axis parameters for a 1D profile plot
431  p_2D[var1][var2] = ibooker.bookProfile(names[var1] + "_" + names[var2],
432  title_sam + main_titles[var2] + " <vs> " + main_titles[var1] + title_cone,
433  (int)param[var1][0],
434  param[var1][1],
435  param[var1][2],
436  (int)param[var2][0], //documentation says this is disregarded
437  param[var2][1], //does this do anything?
438  param[var2][2], //does this do anything?
439  " " //profile errors = spread/sqrt(num_datums)
440  );
441 
442  if (LOG_BINNING_ENABLED && isContinuous[var1]) {
443  Double_t* bin_edges = new Double_t[NUM_LOG_BINS + 1];
444  // nbins+1 because there is one more edge than there are bins
445  MakeLogBinsForProfile(bin_edges, param[var1][1], param[var1][2]);
446  GetTProfileFromMonitorElement(p_2D[var1][var2])->SetBins(NUM_LOG_BINS, bin_edges);
447  delete[] bin_edges;
448  }
449  /* h_2D[var1][var2]->setAxisTitle(axis_titles[var1],XAXIS);
450  h_2D[var1][var2]->setAxisTitle(axis_titles[var2],YAXIS);
451  GetTH2FromMonitorElement(h_2D[var1][var2])->Sumw2();
452  */
453 
454  p_2D[var1][var2]->setAxisTitle(axis_titles[var1], XAXIS);
455  p_2D[var1][var2]->setAxisTitle(axis_titles[var2], YAXIS);
456  // GetTProfileFromMonitorElement(p_2D[var1][var2])->Sumw2();
457  }
458  } //Finish 2D
459 
460  //avg pT not defined for zero tracks.
461  //MonitorElement is inflxible and won't let me change the
462  //number of bins! I guess all I'm doing here is changing
463  //range of the x axis when it is printed, not the actual
464  //bins that are filled
465  p_2D[4][9]->setAxisRange(0.5, 15.5, XAXIS);
466 }
std::vector< int > isContinuous
TH1 * GetTH1FromMonitorElement(MonitorElement *me)
std::vector< std::string > names
std::string title_cd
std::vector< std::string > main_titles
std::vector< std::vector< MonitorElement * > > p_2D
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
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
std::vector< int > cdCompNeeded
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void MuIsoValidation::FillHistos ( )
private

Definition at line 508 of file MuIsoValidation.cc.

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

Referenced by analyze().

508  {
509  //----------Fill 1D histograms---------------
510  for (int var = 0; var < NUM_VARS; var++) {
511  h_1D[var]->Fill(theData[var]);
512  if (cdCompNeeded[var])
513  cd_plots[var]->Fill(theData[var]); //right now, this is a regular PDF (just like h_1D)
514  } //Finish 1D
515 
516  //----------Fill 2D histograms---------------
517  for (int var1 = 0; var1 < NUM_VARS; ++var1) {
518  for (int var2 = 0; var2 < NUM_VARS; ++var2) {
519  if (var1 == var2)
520  continue;
521  //change below to regular int interating!
522  // h_2D[var1][var2]->Fill(theData[var1], theData[var2]);
523  p_2D[var1][var2]->Fill(theData[var1], theData[var2]);
524  }
525  } //Finish 2D
526 }
double theData[NUM_VARS]
std::vector< std::vector< MonitorElement * > > p_2D
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 528 of file MuIsoValidation.cc.

References dqm::impl::MonitorElement::getTH1().

Referenced by bookHistograms(), and NormalizeHistos().

528 { return me->getTH1(); }
virtual TH1 * getTH1() const
TH2 * MuIsoValidation::GetTH2FromMonitorElement ( MonitorElement me)
private

Definition at line 530 of file MuIsoValidation.cc.

References dqm::impl::MonitorElement::getTH2F().

530 { return me->getTH2F(); }
virtual TH2F * getTH2F() const
TProfile * MuIsoValidation::GetTProfileFromMonitorElement ( MonitorElement me)
private

Definition at line 532 of file MuIsoValidation.cc.

References DEFINE_FWK_MODULE, and dqm::impl::MonitorElement::getTProfile().

Referenced by bookHistograms().

532 { return me->getTProfile(); }
virtual TProfile * getTProfile() const
void MuIsoValidation::InitStatics ( )
private

Definition at line 101 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().

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

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

Referenced by bookHistograms().

468  {
469  const double& r = LOG_BINNING_RATIO;
470  const int& nbins = NUM_LOG_BINS;
471 
472  const double first_bin_width = (r > 1.0) ? //so we don't divide by zero
473  (max - min) * (1 - r) / (1 - pow(r, nbins))
474  : (max - min) / nbins;
475 
476  bin_edges[0] = min;
477  bin_edges[1] = min + first_bin_width;
478  for (int n = 2; n < nbins; ++n) {
479  bin_edges[n] = bin_edges[n - 1] + (bin_edges[n - 1] - bin_edges[n - 2]) * r;
480  }
481  bin_edges[nbins] = max;
482 }
T min(T a, T b)
Definition: MathUtil.h:58
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
void MuIsoValidation::NormalizeHistos ( )
private

Definition at line 484 of file MuIsoValidation.cc.

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

484  {
485  for (int var = 0; var < NUM_VARS; var++) {
486  //turn cd_plots into CDF's
487  //underflow -> bin #0. overflow -> bin #(nbins+1)
488  //0th bin doesn't need changed
489 
490  //----normalize------
491  double entries = GetTH1FromMonitorElement(h_1D[var])->GetEntries();
492  if (entries == 0)
493  continue;
494  GetTH1FromMonitorElement(h_1D[var])->Scale(1. / entries);
495 
496  if (cdCompNeeded[var]) {
497  int n_max = int(param[var][0]) + 1;
498  for (int n = 1; n <= n_max; ++n) {
499  cd_plots[var]->setBinContent(
500  n, cd_plots[var]->getBinContent(n) + cd_plots[var]->getBinContent(n - 1)); //Integrate.
501  }
502  //----normalize------
503  GetTH1FromMonitorElement(cd_plots[var])->Scale(1. / entries);
504  }
505  }
506 }
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 342 of file MuIsoValidation.cc.

References theData.

Referenced by analyze().

342  {
343  theData[0] = muon->isolationR03().sumPt;
344  theData[1] = muon->isolationR03().emEt;
345  theData[2] = muon->isolationR03().hadEt;
346  theData[3] = muon->isolationR03().hoEt;
347 
348  theData[4] = muon->isolationR03().nTracks;
349  theData[5] = muon->isolationR03().nJets;
350  theData[6] = muon->isolationR03().trackerVetoPt;
351  theData[7] = muon->isolationR03().emVetoEt;
352  theData[8] = muon->isolationR03().hadVetoEt;
353  theData[9] = muon->isolationR03().hoVetoEt;
354 
355  theData[10] = muon->pt();
356  theData[11] = muon->eta();
357  theData[12] = muon->phi();
358 
359  // make sure nTracks != 0 before filling this one
360  if (theData[4] != 0)
361  theData[13] = (double)theData[0] / (double)theData[4];
362  else
363  theData[13] = -99;
364 
365  theData[14] = 1.5 * theData[1] + theData[2];
366 
367  // Now PF isolation
368  theData[15] = -99.;
369  theData[16] = -99.;
370  theData[17] = -99.;
371  theData[18] = -99.;
372  theData[19] = -99.;
373  theData[20] = -99.;
374  if (muon->isPFMuon() && muon->isPFIsolationValid()) {
375  theData[15] = muon->pfIsolationR03().sumChargedHadronPt;
376  theData[16] = muon->pfIsolationR03().sumChargedParticlePt;
377  theData[17] = muon->pfIsolationR03().sumChargedParticlePt - muon->pfIsolationR03().sumChargedHadronPt;
378  theData[18] = muon->pfIsolationR03().sumNeutralHadronEt;
379  theData[19] = muon->pfIsolationR03().sumPhotonEt;
380  theData[20] = muon->pfIsolationR03().sumPUPt;
381  }
382 }
double theData[NUM_VARS]

Member Data Documentation

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

Definition at line 117 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

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

Definition at line 135 of file MuIsoValidation.h.

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

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

Definition at line 121 of file MuIsoValidation.h.

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

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

Definition at line 92 of file MuIsoValidation.h.

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

Definition at line 134 of file MuIsoValidation.h.

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

MonitorElement* MuIsoValidation::h_nMuons
private

Definition at line 133 of file MuIsoValidation.h.

Referenced by analyze(), and bookHistograms().

edm::InputTag MuIsoValidation::hcalIsoDeposit_Tag
private

Definition at line 91 of file MuIsoValidation.h.

edm::InputTag MuIsoValidation::hoIsoDeposit_Tag
private

Definition at line 93 of file MuIsoValidation.h.

edm::ParameterSet MuIsoValidation::iConfig
private

Definition at line 127 of file MuIsoValidation.h.

Referenced by MuIsoValidation().

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

Definition at line 120 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

double MuIsoValidation::L_BIN_WIDTH
private

Definition at line 105 of file MuIsoValidation.h.

Referenced by InitStatics().

int MuIsoValidation::LOG_BINNING_ENABLED
private

Definition at line 107 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

double MuIsoValidation::LOG_BINNING_RATIO
private

Definition at line 109 of file MuIsoValidation.h.

Referenced by InitStatics(), and MakeLogBinsForProfile().

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

Definition at line 116 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

edm::InputTag MuIsoValidation::Muon_Tag
private

Definition at line 88 of file MuIsoValidation.h.

Referenced by MuIsoValidation().

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

Definition at line 89 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

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

Definition at line 118 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

int MuIsoValidation::nEvents
private

Definition at line 140 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

int MuIsoValidation::nIncMuons
private

Definition at line 141 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

int MuIsoValidation::NUM_LOG_BINS
private

Definition at line 108 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 137 of file MuIsoValidation.h.

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

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

Definition at line 119 of file MuIsoValidation.h.

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

bool MuIsoValidation::requireCombinedMuon
private

Definition at line 110 of file MuIsoValidation.h.

Referenced by analyze(), and MuIsoValidation().

std::string MuIsoValidation::rootfilename
private

Definition at line 96 of file MuIsoValidation.h.

double MuIsoValidation::S_BIN_WIDTH
private

Definition at line 106 of file MuIsoValidation.h.

Referenced by InitStatics().

std::string MuIsoValidation::subDirName
private

Definition at line 99 of file MuIsoValidation.h.

std::string MuIsoValidation::subsystemname_
private

Definition at line 101 of file MuIsoValidation.h.

Referenced by MuIsoValidation().

double MuIsoValidation::theData[NUM_VARS]
private

Definition at line 130 of file MuIsoValidation.h.

Referenced by FillHistos(), and RecordData().

int MuIsoValidation::theMuonData
private

Definition at line 129 of file MuIsoValidation.h.

Referenced by analyze().

std::string MuIsoValidation::title_cd
private

Definition at line 114 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

std::string MuIsoValidation::title_cone
private

Definition at line 113 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

std::string MuIsoValidation::title_sam
private

Definition at line 112 of file MuIsoValidation.h.

Referenced by bookHistograms(), and InitStatics().

edm::InputTag MuIsoValidation::tkIsoDeposit_Tag
private

Definition at line 90 of file MuIsoValidation.h.