CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
MuonIsolationDQM Class Reference

#include <MuonIsolationDQM.h>

Inheritance diagram for MuonIsolationDQM:
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

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 MuonIsolationDQM (const edm::ParameterSet &)
 
 ~MuonIsolationDQM () 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 FillHistos (int)
 
void FillNVtxHistos (int)
 
int GetNVtxBin (int)
 
TH1 * GetTH1FromMonitorElement (MonitorElement *me)
 
void InitHistos ()
 
void InitStatics ()
 
void NormalizeHistos ()
 
void RecordData (const reco::Muon &muon)
 

Private Attributes

std::vector< std::string > axis_titles
 
std::vector< std::string > axis_titles_NVtxs
 
std::string dirName
 
std::vector< MonitorElement * > h_1D
 
std::vector< MonitorElement * > h_1D_NVTX
 
std::vector< MonitorElement * > h_2D
 
MonitorElementh_nMuons
 
std::vector< int > isContinuous
 
double L_BIN_WIDTH
 
int LOG_BINNING_ENABLED
 
double LOG_BINNING_RATIO
 
std::vector< std::string > main_titles
 
std::vector< std::string > main_titles_NVtxs
 
std::vector< std::string > names
 
std::vector< std::string > names_2D
 
std::vector< std::string > names_NVtxs
 
int nEvents
 
int nGLBMuons
 
int nSTAMuons
 
int nTRKMuons
 
int NUM_LOG_BINS
 
std::vector< std::vector< double > > param
 
bool requireGLBMuon
 
bool requireSTAMuon
 
bool requireTRKMuon
 
std::string rootfilename
 
double S_BIN_WIDTH
 
double theData [NUM_VARS]
 
double theData2D [NUM_VARS_2D]
 
double theDataNVtx [NUM_VARS_NVTX]
 
edm::EDGetTokenT< edm::View< reco::Muon > > theMuonCollectionLabel_
 
edm::EDGetTokenT< reco::VertexCollectiontheVertexCollectionLabel_
 
std::string title_cone
 
std::string title_sam
 
std::vector< std::string > titles_2D
 

Static Private Attributes

static const int NUM_VARS = 48
 
static const int NUM_VARS_2D = 10
 
static const int NUM_VARS_NVTX = 6
 

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 MuonIsolationDQM.h.

Member Typedef Documentation

Definition at line 63 of file MuonIsolationDQM.h.

Definition at line 64 of file MuonIsolationDQM.h.

Definition at line 62 of file MuonIsolationDQM.h.

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

Definition at line 61 of file MuonIsolationDQM.h.

Member Enumeration Documentation

anonymous enum
private

Constructor & Destructor Documentation

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

Definition at line 55 of file MuonIsolationDQM.cc.

References gather_cfg::cout, TrackerOfflineValidation_Dqm_cff::dirName, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), nEvents, muonIsolationDQM_cff::requireGLBMuon, muonIsolationDQM_cff::requireSTAMuon, muonIsolationDQM_cff::requireTRKMuon, and AlCaHLTBitMon_QueryRunRegistry::string.

55  {
56 #ifdef DEBUG
57  cout << " Initialise Constructor " << endl;
58 #endif
59  requireSTAMuon = iConfig.getUntrackedParameter<bool>("requireSTAMuon");
60  requireTRKMuon = iConfig.getUntrackedParameter<bool>("requireTRKMuon");
61  requireGLBMuon = iConfig.getUntrackedParameter<bool>("requireGLBMuon");
62  dirName = iConfig.getParameter<std::string>("directory");
63 
64  //--------Initialize tags-------
66  consumes<edm::View<reco::Muon> >(iConfig.getUntrackedParameter<edm::InputTag>("Global_Muon_Label"));
68  consumes<reco::VertexCollection>(iConfig.getUntrackedParameter<edm::InputTag>("vertexLabel"));
69 
70  //-------Initialize Counterse----------------
71  nEvents = 0;
72  nSTAMuons = 0;
73  nTRKMuons = 0;
74  nGLBMuons = 0;
75 
76  InitStatics();
77 
78  //------"allocate" space for the data vectors-------
79  h_1D.resize(NUM_VARS);
80  h_2D.resize(NUM_VARS_2D);
81  h_1D_NVTX.resize(NUM_VARS_NVTX);
82 }
std::vector< MonitorElement * > h_2D
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
static const int NUM_VARS_NVTX
std::string dirName
std::vector< MonitorElement * > h_1D
std::vector< MonitorElement * > h_1D_NVTX
static const int NUM_VARS_2D
static const int NUM_VARS
edm::EDGetTokenT< reco::VertexCollection > theVertexCollectionLabel_
edm::EDGetTokenT< edm::View< reco::Muon > > theMuonCollectionLabel_
MuonIsolationDQM::~MuonIsolationDQM ( )
override

Definition at line 87 of file MuonIsolationDQM.cc.

References gather_cfg::cout.

87  {
88 #ifdef DEBUG
89  cout << "Calling destructor" << endl;
90 #endif
91  //Deallocate memory
92 }

Member Function Documentation

void MuonIsolationDQM::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 595 of file MuonIsolationDQM.cc.

References gather_cfg::cout, edm::Event::getByToken(), edm::HandleBase::isValid(), HLT_2018_cff::muon, PDWG_BPHSkim_cff::muons, nEvents, edm::Handle< T >::product(), muonIsolationDQM_cff::requireGLBMuon, muonIsolationDQM_cff::requireSTAMuon, muonIsolationDQM_cff::requireTRKMuon, findQualityFiles::v, and bphysicsOniaDQM_cfi::vertex.

595  {
596  ++nEvents;
597  edm::LogInfo("Tutorial") << "\nInvestigating event #" << nEvents << "\n";
598 #ifdef DEBUG
599  cout << "[MuonIsolationDQM]: analyze()" << endl;
600 #endif
601 
602  // Get Muon Collection
604  iEvent.getByToken(theMuonCollectionLabel_, muons);
605 
606 #ifdef DEBUG
607  cout << "[MuonIsolationDQM]: Number of muons -> " << muons->size() << endl;
608 #endif
609 
610  int theMuonData = muons->size();
611  h_nMuons->Fill(theMuonData);
612 #ifdef DEBUG
613  cout << "[MuonIsolationDQM]: Vertex is Valid" << endl;
614 #endif
615 
616  //Get Vertex Information
617  int _numPV = 0;
619  iEvent.getByToken(theVertexCollectionLabel_, vertexHandle);
620 
621  if (vertexHandle.isValid()) {
622  reco::VertexCollection vertex = *(vertexHandle.product());
623  for (reco::VertexCollection::const_iterator v = vertex.begin(); v != vertex.end(); ++v) {
624  if (v->isFake())
625  continue;
626  if (v->ndof() < 4)
627  continue;
628  if (fabs(v->z()) > 24.0)
629  continue;
630  ++_numPV;
631  }
632  }
633 
634 #ifdef DEBUG
635  cout << "[MuonIsolationDQM]: Vertex is Valid" << endl;
636 #endif
637  // Get Muon Collection
638 
639  //Fill historgams concerning muon isolation
640  for (edm::View<reco::Muon>::const_iterator muon = muons->begin(); muon != muons->end(); ++muon) {
641  if (requireSTAMuon && muon->isStandAloneMuon()) {
642  ++nSTAMuons;
643  RecordData(*muon);
644  FillHistos(_numPV);
645  } else if (requireTRKMuon && muon->isTrackerMuon()) {
646  ++nTRKMuons;
647  RecordData(*muon);
648  FillHistos(_numPV);
649  } else if (requireGLBMuon && muon->isGlobalMuon()) {
650  ++nGLBMuons;
651  RecordData(*muon);
652  FillHistos(_numPV);
653  FillNVtxHistos(_numPV);
654  }
655  }
656 }
MonitorElement * h_nMuons
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
void Fill(long long x)
void RecordData(const reco::Muon &muon)
bool isValid() const
Definition: HandleBase.h:70
T const * product() const
Definition: Handle.h:69
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
edm::EDGetTokenT< reco::VertexCollection > theVertexCollectionLabel_
edm::EDGetTokenT< edm::View< reco::Muon > > theMuonCollectionLabel_
void MuonIsolationDQM::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

GetTH1FromMonitorElement(h_1D_NVTX[var])->Sumw2();

Implements DQMEDAnalyzer.

Definition at line 758 of file MuonIsolationDQM.cc.

References dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::DQMStore::IBooker::bookProfile(), dqm::dqmstoreimpl::DQMStore::IBooker::cd(), TrackerOfflineValidation_Dqm_cff::dirName, names, dqm::impl::MonitorElement::setAxisTitle(), dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), and trigObjTnPSource_cfi::var.

760  {
761  ibooker.cd();
762  ibooker.setCurrentFolder(dirName);
763 
764  ibooker.cd();
765  ibooker.setCurrentFolder(dirName);
766 
767  //---initialize number of muons histogram---
768  h_nMuons = ibooker.book1D("nMuons", title_sam + "Number of Muons", 20, 0., 20.);
769  h_nMuons->setAxisTitle("Number of Muons", XAXIS);
770  h_nMuons->setAxisTitle("Fraction of Events", YAXIS);
771 
772  //---Initialize 1D Histograms---
773  for (int var = 0; var < NUM_VARS; var++) {
774  h_1D[var] = ibooker.book1D(
775  names[var], title_sam + main_titles[var] + title_cone, (int)param[var][0], param[var][1], param[var][2]);
776  h_1D[var]->setAxisTitle(axis_titles[var], XAXIS);
777  // GetTH1FromMonitorElement(h_1D[var])->Sumw2();
778  } //Finish 1D
779 
780  //----Initialize 2D Histograms
781  for (int var = 0; var < NUM_VARS_2D; var++) {
782  h_2D[var] = ibooker.bookProfile(names_2D[var] + "_VsPV", titles_2D[var] + " Vs PV", 50, 0.5, 50.5, 20, 0.0, 20.0);
783 
784  h_2D[var]->setAxisTitle("Number of PV", XAXIS);
785  h_2D[var]->setAxisTitle(titles_2D[var] + " (GeV)", YAXIS);
786  // h_2D[var]->getTH1()->Sumw2();
787  }
788 
789  //-----Initialise PU-Binned histograms
790  for (int var = 0; var < NUM_VARS_NVTX; var++) {
791  h_1D_NVTX[var] = ibooker.book1D(names_NVtxs[var], main_titles_NVtxs[var], 50, 0.0, 10.0);
792  h_1D_NVTX[var]->setAxisTitle(axis_titles_NVtxs[var], XAXIS);
794  }
795 }
std::vector< MonitorElement * > h_2D
static const int NUM_VARS_NVTX
std::string dirName
MonitorElement * h_nMuons
std::vector< MonitorElement * > h_1D
std::vector< std::string > main_titles
std::vector< std::string > names
std::vector< std::string > names_2D
std::vector< MonitorElement * > h_1D_NVTX
static const int NUM_VARS_2D
std::string title_sam
std::vector< std::string > names_NVtxs
std::string title_cone
std::vector< std::string > titles_2D
std::vector< std::string > axis_titles
std::vector< std::string > axis_titles_NVtxs
std::vector< std::vector< double > > param
static const int NUM_VARS
std::vector< std::string > main_titles_NVtxs
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void MuonIsolationDQM::FillHistos ( int  numPV)
private

Definition at line 804 of file MuonIsolationDQM.cc.

References gather_cfg::cout, and trigObjTnPSource_cfi::var.

804  {
805 #ifdef DEBUG
806  cout << "FillHistos( " << numPV << " )" << endl;
807 #endif
808 
809  //----------Fill 1D histograms---------------
810  for (int var = 0; var < NUM_VARS; var++) {
811  h_1D[var]->Fill(theData[var]);
812  // cd_plots[var]->Fill(theData[var]);//right now, this is a regular PDF (just like h_1D)
813  //OFBin if (theData[var] > param[var][2]) {
814  //OFBin // fill the overflow bin
815  //OFBin overFlowBin = (int) param[var][0] + 1;
816  //OFBin overFlow = GetTH1FromMonitorElement(h_1D[var])->GetBinContent(overFlowBin);
817  //OFBin GetTH1FromMonitorElement(h_1D[var])->SetBinContent(overFlowBin, overFlow + 1);
818  //OFBin }
819  } //Finish 1D
820 
821  for (int var = 0; var < NUM_VARS_2D; var++) {
822  h_2D[var]->Fill(numPV, theData2D[var]);
823  }
824 
825 #ifdef DEBUG
826  cout << "FillHistos( " << numPV << " ): DONE" << endl;
827 #endif
828 }
std::vector< MonitorElement * > h_2D
std::vector< MonitorElement * > h_1D
static const int NUM_VARS_2D
static const int NUM_VARS
double theData[NUM_VARS]
double theData2D[NUM_VARS_2D]
void MuonIsolationDQM::FillNVtxHistos ( int  PV)
private

Definition at line 829 of file MuonIsolationDQM.cc.

829  {
830  if (PV < 15) {
831  h_1D_NVTX[0]->Fill(theDataNVtx[0]);
832  h_1D_NVTX[3]->Fill(theDataNVtx[3]);
833  }
834  if (PV >= 15 && PV < 30) {
835  h_1D_NVTX[1]->Fill(theDataNVtx[1]);
836  h_1D_NVTX[4]->Fill(theDataNVtx[4]);
837  }
838  if (PV >= 30) {
839  h_1D_NVTX[2]->Fill(theDataNVtx[2]);
840  h_1D_NVTX[5]->Fill(theDataNVtx[5]);
841  }
842 }
std::vector< MonitorElement * > h_1D_NVTX
double theDataNVtx[NUM_VARS_NVTX]
int MuonIsolationDQM::GetNVtxBin ( int  )
private
TH1 * MuonIsolationDQM::GetTH1FromMonitorElement ( MonitorElement me)
private

Definition at line 844 of file MuonIsolationDQM.cc.

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

844 { return me->getTH1(); }
virtual TH1 * getTH1() const
void MuonIsolationDQM::InitHistos ( )
private
void MuonIsolationDQM::InitStatics ( )
private

Definition at line 97 of file MuonIsolationDQM.cc.

References gather_cfg::cout, createfilelist::int, and names.

97  {
98 #ifdef DEBUG
99  cout << " InitStatistics() " << endl;
100 #endif
101  //-----------Initialize primitives-----------
102  S_BIN_WIDTH = 1.0; //in GeV
103  L_BIN_WIDTH = 2.0; //in GeV
105  NUM_LOG_BINS = 15;
106  LOG_BINNING_RATIO = 1.1;
107  //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 
124  titles_2D.resize(NUM_VARS_2D);
125  names_2D.resize(NUM_VARS_2D);
126 
129  names_NVtxs.resize(NUM_VARS_NVTX);
130 
131 #ifdef DEBUG
132  cout << "InitStatistics(): vectors resized " << endl;
133 #endif
134  //-----Titles of the plots-----------
135  main_titles[0] = "Total Tracker Momentum, #Delta R = 0.3";
136  main_titles[1] = "Total EM Cal Energy, #Delta R = 0.3";
137  main_titles[2] = "Total Had Cal Energy, #Delta R = 0.3";
138  main_titles[3] = "Total HO Cal Energy, #Delta R = 0.3";
139  main_titles[4] = "Number of Tracker Tracks, #Delta R = 0.3";
140  main_titles[5] = "Number of Jets around Muon, #Delta R = 0.3";
141  main_titles[6] = "Tracker p_{T} within veto cone, #Delta R = 0.3";
142  main_titles[7] = "EM E_{T} within veto cone, #Delta R = 0.3";
143  main_titles[8] = "Had E_{T} within veto cone, #Delta R = 0.3";
144  main_titles[9] = "HO E_{T} within veto cone, #Delta R = 0.3";
145  main_titles[10] = "Average Momentum per Track, #Delta R = 0.3";
146  main_titles[11] = "Weighted Energy, #Delta R = 0.3";
147 
148  main_titles[12] = "Total Tracker Momentum, #Delta R = 0.5";
149  main_titles[13] = "Total EM Cal Energy, #Delta R = 0.5";
150  main_titles[14] = "Total Had Cal Energy, #Delta R = 0.5";
151  main_titles[15] = "Total HO Cal Energy, #Delta R = 0.5";
152  main_titles[16] = "Number of Tracker Tracks, #Delta R = 0.5";
153  main_titles[17] = "Number of Jets around Muon, #Delta R = 0.5";
154  main_titles[18] = "Tracker p_{T} within veto cone, #Delta R = 0.5";
155  main_titles[19] = "EM E_{T} within veto cone, #Delta R = 0.5";
156  main_titles[20] = "Had E_{T} within veto cone, #Delta R = 0.5";
157  main_titles[21] = "HO E_{T} within veto cone, #Delta R = 0.5";
158  main_titles[22] = "Average Momentum per Track, #Delta R = 0.5";
159  main_titles[23] = "Weighted Energy, #Delta R = 0.5";
160 
161  main_titles[24] = "Relative Detector-Based Isolation, #Delta R = 0.3";
162  main_titles[25] = "Relative Detector-Based Isolation, #Delta R = 0.5";
163 
164  //-----Titles of the plots-----------
165  main_titles[26] = "Sum PF Charged Hadron Pt, #Delta R = 0.3";
166  main_titles[27] = "Sum PF Neutral Hadron Pt, #Delta R = 0.3";
167  main_titles[28] = "Sum PF Photon Et, #Delta R = 0.3";
168  main_titles[29] = "Sum PF Neutral Hadron Pt (Higher Pt threshold), #Delta R = 0.3";
169  main_titles[30] = "Sum PF Photon Et (Higher Pt threshold), #Delta R = 0.3";
170  main_titles[31] = "Sum PF Charged Particles Pt not from PV (for Pu corrections), #Delta R = 0.3";
171 
172  //-----Titles of the plots-----------
173  main_titles[32] = "Sum PF Charged Hadron Pt, #Delta R = 0.4";
174  main_titles[33] = "Sum PF Neutral Hadron Pt, #Delta R = 0.4";
175  main_titles[34] = "Sum PF Photon Et, #Delta R = 0.4";
176  main_titles[35] = "Sum PF Neutral Hadron Pt (Higher Pt threshold), #Delta R = 0.4";
177  main_titles[36] = "Sum PF Photon Et (Higher Pt threshold), #Delta R = 0.4";
178  main_titles[37] = "Sum PF Charged Particles Pt not from PV (for Pu corrections), #Delta R = 0.4";
179 
180  main_titles[38] = "Relative PF Isolation, #Delta R = 0.3";
181  main_titles[39] = "Relative PF Isolation, #Delta R = 0.4";
182 
183  main_titles[40] = "Relative PF Isolation (Higher Pt threshold), #Delta R = 0.3";
184  main_titles[41] = "Relative PF Isolation (Higher Pt threshold), #Delta R = 0.4";
185 
186  main_titles[42] = "Sum DR Isolation Profile for Charged Hadron, #Delta R = 0.4";
187 
188  main_titles[43] = "Sum DR Isolation Profile for Neutral Hadron, #Delta R = 0.4";
189 
190  main_titles[44] = "Sum DR Isolation Profile for Photon, #Delta R = 0.4";
191 
192  main_titles[45] = "Mean DR Isolation Profile for Charged Hadron, #Delta R = 0.4";
193 
194  main_titles[46] = "Mean DR Isolation Profile for Neutral Hadron, #Delta R = 0.4";
195 
196  main_titles[47] = "Mean DR Isolation Profile for Photon, #Delta R = 0.4";
197 
198 #ifdef DEBUG
199  cout << "InitStatistics(): main titles 1D DONE " << endl;
200 #endif
201  titles_2D[0] = "Total Tracker Momentum, #Delta R = 0.3";
202  titles_2D[1] = "Total EM Cal Energy, #Delta R = 0.3";
203  titles_2D[2] = "Total Had Cal Energy, #Delta R = 0.3";
204  titles_2D[3] = "Total HO Cal Energy, #Delta R = 0.3";
205  titles_2D[4] = "Sum PF Charged Hadron Pt, #Delta R = 0.4";
206  titles_2D[5] = "Sum PF Neutral Hadron Pt, #Delta R = 0.4";
207  titles_2D[6] = "Sum PF Photon Et, #Delta R = 0.4";
208  titles_2D[7] = "Sum PF Charged Pt Not from PV, #Delta R = 0.4";
209  titles_2D[8] = "Relative Detector-Based Isolation, #Delta R = 0.4";
210  titles_2D[9] = "Relative PF Isolation, #Delta R = 0.4";
211 
212  main_titles_NVtxs[0] = "Sum PF Neutral Hadron Pt, #DeltaR = 0.4 ( 0 < N_{Vtx} < 15)";
213  main_titles_NVtxs[1] = "Sum PF Neutral Hadron Pt, #DeltaR = 0.4 (15 < N_{Vtx} < 30)";
214  main_titles_NVtxs[2] = "Sum PF Neutral Hadron Pt, #DeltaR = 0.4 (30 < N_{Vtx})";
215  main_titles_NVtxs[3] = "Sum PF Photon Et, #DeltaR = 0.4 ( 0 < N_{Vtx} < 15)";
216  main_titles_NVtxs[4] = "Sum PF Photon Et, #DeltaR = 0.4 (15 < N_{Vtx} < 30)";
217  main_titles_NVtxs[5] = "Sum PF Photon Et, #DeltaR = 0.4 (30 < N_{Vtx})";
218 
219 #ifdef DEBUG
220  cout << "InitStatistics(): main titles 2D DONE " << endl;
221 #endif
222 
223  //------Titles on the X or Y axis------------
224  axis_titles[0] = "#Sigma p_{T} (GeV)";
225  axis_titles[1] = "#Sigma E_{T}^{EM} (GeV)";
226  axis_titles[2] = "#Sigma E_{T}^{Had} (GeV)";
227  axis_titles[3] = "#Sigma E_{T}^{HO} (GeV)";
228  axis_titles[4] = "N_{Tracks}";
229  axis_titles[5] = "N_{Jets}";
230  axis_titles[6] = "#Sigma p_{T,veto} (GeV)";
231  axis_titles[7] = "#Sigma E_{T,veto}^{EM} (GeV)";
232  axis_titles[8] = "#Sigma E_{T,veto}^{Had} (GeV)";
233  axis_titles[9] = "#Sigma E_{T,veto}^{HO} (GeV)";
234  axis_titles[10] = "#Sigma p_{T} / N_{Tracks} (GeV)";
235  axis_titles[11] = "(1.5) X #Sigma E_{T}^{EM} + #Sigma E_{T}^{Had}";
236 
237  axis_titles[12] = "#Sigma p_{T} (GeV)";
238  axis_titles[13] = "#Sigma E_{T}^{EM} (GeV)";
239  axis_titles[14] = "#Sigma E_{T}^{Had} (GeV)";
240  axis_titles[15] = "#Sigma E_{T}^{HO} (GeV)";
241  axis_titles[16] = "N_{Tracks}";
242  axis_titles[17] = "N_{Jets}";
243  axis_titles[18] = "#Sigma p_{T,veto} (GeV)";
244  axis_titles[19] = "#Sigma E_{T,veto}^{EM} (GeV)";
245  axis_titles[20] = "#Sigma E_{T,veto}^{Had} (GeV)";
246  axis_titles[21] = "#Sigma E_{T,veto}^{HO} (GeV)";
247  axis_titles[22] = "#Sigma p_{T} / N_{Tracks} (GeV)";
248  axis_titles[23] = "(1.5) X #Sigma E_{T}^{EM} + #Sigma E_{T}^{Had}";
249 
250  axis_titles[24] = "(#Sigma Tk p_{T} + #Sigma ECAL p_{T} + #Sigma HCAL p_{T})/ Mu p_{T} (GeV)";
251  axis_titles[25] = "(#Sigma Tk p_{T} + #Sigma ECAL p_{T} + #Sigma HCAL p_{T})/ Mu p_{T} (GeV)";
252 
253  axis_titles[26] = "#Sigma PFCharged p_{T}";
254  axis_titles[27] = "#Sigma PFNeutral p_{T}";
255  axis_titles[28] = "#Sigma PFPhoton p_{T}";
256  axis_titles[29] = "#Sigma PFNeutral p_{T}";
257  axis_titles[30] = "#Sigma PFPhoton p_{T}";
258  axis_titles[31] = "#Sigma PFCharged p_{T}";
259 
260  axis_titles[32] = "#Sigma PFCharged p_{T}";
261  axis_titles[33] = "#Sigma PFNeutral p_{T}";
262  axis_titles[34] = "#Sigma PFPhoton p_{T}";
263  axis_titles[35] = "#Sigma PFNeutral p_{T}";
264  axis_titles[36] = "#Sigma PFPhoton p_{T}";
265  axis_titles[37] = "#Sigma PFCharged p_{T}";
266 
267  axis_titles[38] = "(#Sigma PFCharged p_{T} + #Sigma PFNeutral p_{T} + #Sigma PFPhoton p_{T}) Mu p_{T} (GeV)";
268  axis_titles[39] = "(#Sigma PFCharged p_{T} + #Sigma PFNeutral p_{T} + #Sigma PFPhoton p_{T}) Mu p_{T} (GeV)";
269  axis_titles[40] = "(#Sigma PFCharged p_{T} + #Sigma PFNeutral p_{T} + #Sigma PFPhoton p_{T}) Mu p_{T} (GeV)";
270  axis_titles[41] = "(#Sigma PFCharged p_{T} + #Sigma PFNeutral p_{T} + #Sigma PFPhoton p_{T}) Mu p_{T} (GeV)";
271 
272  axis_titles[42] = "#Sigma DR PFCharged";
273  axis_titles[43] = "#Sigma DR PFNeutral";
274  axis_titles[44] = "#Sigma DR PFPhoton";
275 
276  axis_titles[45] = "Mean DR PFCharged";
277  axis_titles[46] = "Mean DR PFNeutral";
278  axis_titles[47] = "Mean DR PFPhoton";
279 
280  axis_titles_NVtxs[0] = "#Sigma PFNeutral p_{T}";
281  axis_titles_NVtxs[1] = "#Sigma PFNeutral p_{T}";
282  axis_titles_NVtxs[2] = "#Sigma PFNeutral p_{T}";
283  axis_titles_NVtxs[3] = "#Sigma PFPhoton p_{T}";
284  axis_titles_NVtxs[4] = "#Sigma PFPhoton p_{T}";
285  axis_titles_NVtxs[5] = "#Sigma PFPhoton p_{T}";
286 
287 #ifdef DEBUG
288  cout << "InitStatistics(): main titles 1D DONE " << endl;
289 #endif
290 
291  //-----------Names given for the root file----------
292  names[0] = "sumPt_R03";
293  names[1] = "emEt_R03";
294  names[2] = "hadEt_R03";
295  names[3] = "hoEt_R03";
296  names[4] = "nTracks_R03";
297  names[5] = "nJets_R03";
298  names[6] = "trackerVetoPt_R03";
299  names[7] = "emVetoEt_R03";
300  names[8] = "hadVetoEt_R03";
301  names[9] = "hoVetoEt_R03";
302  names[10] = "avgPt_R03";
303  names[11] = "weightedEt_R03";
304 
305  names[12] = "sumPt_R05";
306  names[13] = "emEt_R05";
307  names[14] = "hadEt_R05";
308  names[15] = "hoEt_R05";
309  names[16] = "nTracks_R05";
310  names[17] = "nJets_R05";
311  names[18] = "trackerVetoPt_R05";
312  names[19] = "emVetoEt_R05";
313  names[20] = "hadVetoEt_R05";
314  names[21] = "hoVetoEt_R05";
315  names[22] = "avgPt_R05";
316  names[23] = "weightedEt_R05";
317 
318  names[24] = "relDetIso_R03";
319  names[25] = "relDetIso_R05";
320 
321  names[26] = "pfChargedPt_R03";
322  names[27] = "pfNeutralPt_R03";
323  names[28] = "pfPhotonPt_R03";
324  names[29] = "pfNeutralPt_HT_R03";
325  names[30] = "pfPhotonPt_HT_R03";
326  names[31] = "pfChargedPt_PU_R03";
327 
328  names[32] = "pfChargedPt_R04";
329  names[33] = "pfNeutralPt_R04";
330  names[34] = "pfPhotonPt_R04";
331  names[35] = "pfNeutralPt_HT_R04";
332  names[36] = "pfPhotonPt_HT_R04";
333  names[37] = "pfChargedPt_PU_R04";
334 
335  names[38] = "relPFIso_R03";
336  names[39] = "relPFIso_R04";
337 
338  names[40] = "relPFIso_HT_R03";
339  names[41] = "relPFIso_HT_R04";
340 
341  names[42] = "SumDR_PFCharged_R04";
342  names[43] = "SumDR_PFNeutral_R04";
343  names[44] = "SumDR_PFPhoton_R04";
344 
345  names[45] = "MeanDR_PFCharged_R04";
346  names[46] = "MeanDR_PFNeutral_R04";
347  names[47] = "MeanDR_PFPhoton_R04";
348 
349 #ifdef DEBUG
350  cout << "InitStatistics(): names 1D DONE " << endl;
351 #endif
352 
353  names_2D[0] = "SumPt_R03";
354  names_2D[1] = "emEt_R03";
355  names_2D[2] = "hadEt_R03";
356  names_2D[3] = "hoEt_R03";
357  names_2D[4] = "pfChargedPt_R04";
358  names_2D[5] = "pfNeutralPt_R04";
359  names_2D[6] = "pfPhotonPt_R04";
360  names_2D[7] = "pfChargedPUPt_R04";
361  names_2D[8] = "relDetIso_R03";
362  names_2D[9] = "relPFIso_R04";
363 
364 #ifdef DEBUG
365  cout << "InitStatistics(): names 2D DONE " << endl;
366 #endif
367 
368  names_NVtxs[0] = "pfNeutralPt_R04_PV0to15";
369  names_NVtxs[1] = "pfNeutralPt_R04_PV15to30";
370  names_NVtxs[2] = "pfNeutralPt_R04_PV30toInf";
371  names_NVtxs[3] = "pfPhotonPt_R04_PV0to15";
372  names_NVtxs[4] = "pfPhotonPt_R04_PV15to30";
373  names_NVtxs[5] = "pfPhotonPt_R04_PV30toInf";
374 
375  //----------Parameters for binning of histograms---------
376  //param[var][0] is the number of bins
377  //param[var][1] is the low edge of the low bin
378  //param[var][2] is the high edge of the high bin
379  //
380  // maximum value------,
381  // |
382  // V
383  param[0][0] = (int)(20.0 / S_BIN_WIDTH);
384  param[0][1] = 0.0;
385  param[0][2] = param[0][0] * S_BIN_WIDTH;
386  param[1][0] = (int)(20.0 / S_BIN_WIDTH);
387  param[1][1] = 0.0;
388  param[1][2] = param[1][0] * S_BIN_WIDTH;
389  param[2][0] = (int)(20.0 / S_BIN_WIDTH);
390  param[2][1] = 0.0;
391  param[2][2] = param[2][0] * S_BIN_WIDTH;
392  param[3][0] = 20;
393  param[3][1] = 0.0;
394  param[3][2] = 2.0;
395  param[4][0] = 16;
396  param[4][1] = -0.5;
397  param[4][2] = param[4][0] - 0.5;
398  param[5][0] = 4;
399  param[5][1] = -0.5;
400  param[5][2] = param[5][0] - 0.5;
401  param[6][0] = (int)(40.0 / S_BIN_WIDTH);
402  param[6][1] = 0.0;
403  param[6][2] = param[6][0] * S_BIN_WIDTH;
404  param[7][0] = 20;
405  param[7][1] = 0.0;
406  param[7][2] = 10.0;
407  param[8][0] = (int)(20.0 / S_BIN_WIDTH);
408  param[8][1] = 0.0;
409  param[8][2] = param[8][0] * S_BIN_WIDTH;
410  param[9][0] = 20;
411  param[9][1] = 0.0;
412  param[9][2] = 5.0;
413  param[10][0] = (int)(15.0 / S_BIN_WIDTH);
414  param[10][1] = 0.0;
415  param[10][2] = param[10][0] * S_BIN_WIDTH;
416  param[11][0] = (int)(20.0 / S_BIN_WIDTH);
417  param[11][1] = 0.0;
418  param[11][2] = param[11][0] * S_BIN_WIDTH;
419 
420  param[12][0] = (int)(20.0 / S_BIN_WIDTH);
421  param[12][1] = 0.0;
422  param[12][2] = param[12][0] * S_BIN_WIDTH;
423  param[13][0] = (int)(20.0 / S_BIN_WIDTH);
424  param[13][1] = 0.0;
425  param[13][2] = param[13][0] * S_BIN_WIDTH;
426  param[14][0] = (int)(20.0 / S_BIN_WIDTH);
427  param[14][1] = 0.0;
428  param[14][2] = param[14][0] * S_BIN_WIDTH;
429  param[15][0] = 20;
430  param[15][1] = 0.0;
431  param[15][2] = 2.0;
432  param[16][0] = 16;
433  param[16][1] = -0.5;
434  param[16][2] = param[16][0] - 0.5;
435  param[17][0] = 4;
436  param[17][1] = -0.5;
437  param[17][2] = param[17][0] - 0.5;
438  param[18][0] = (int)(40.0 / S_BIN_WIDTH);
439  param[18][1] = 0.0;
440  param[18][2] = param[18][0] * S_BIN_WIDTH;
441  param[19][0] = 20;
442  param[19][1] = 0.0;
443  param[19][2] = 10.0;
444  param[20][0] = (int)(20.0 / S_BIN_WIDTH);
445  param[20][1] = 0.0;
446  param[20][2] = param[20][0] * S_BIN_WIDTH;
447  param[21][0] = 20;
448  param[21][1] = 0.0;
449  param[21][2] = 5.0;
450  param[22][0] = (int)(15.0 / S_BIN_WIDTH);
451  param[22][1] = 0.0;
452  param[22][2] = param[22][0] * S_BIN_WIDTH;
453  param[23][0] = (int)(20.0 / S_BIN_WIDTH);
454  param[23][1] = 0.0;
455  param[23][2] = param[23][0] * S_BIN_WIDTH;
456 
457  param[24][0] = 50;
458  param[24][1] = 0.0;
459  param[24][2] = 1.0;
460  param[25][0] = 50;
461  param[25][1] = 0.0;
462  param[25][2] = 1.0;
463 
464  param[26][0] = (int)(20.0 / S_BIN_WIDTH);
465  param[26][1] = 0.0;
466  param[26][2] = param[26][0] * S_BIN_WIDTH;
467  param[27][0] = (int)(20.0 / S_BIN_WIDTH);
468  param[27][1] = 0.0;
469  param[27][2] = param[27][0] * S_BIN_WIDTH;
470  param[28][0] = (int)(20.0 / S_BIN_WIDTH);
471  param[28][1] = 0.0;
472  param[28][2] = param[28][0] * S_BIN_WIDTH;
473  param[29][0] = (int)(20.0 / S_BIN_WIDTH);
474  param[29][1] = 0.0;
475  param[29][2] = param[29][0] * S_BIN_WIDTH;
476  param[30][0] = (int)(20.0 / S_BIN_WIDTH);
477  param[30][1] = 0.0;
478  param[30][2] = param[30][0] * S_BIN_WIDTH;
479  param[31][0] = (int)(20.0 / S_BIN_WIDTH);
480  param[31][1] = 0.0;
481  param[31][2] = param[31][0] * S_BIN_WIDTH;
482 
483  param[32][0] = (int)(20.0 / S_BIN_WIDTH);
484  param[32][1] = 0.0;
485  param[32][2] = param[32][0] * S_BIN_WIDTH;
486  param[33][0] = (int)(20.0 / S_BIN_WIDTH);
487  param[33][1] = 0.0;
488  param[33][2] = param[33][0] * S_BIN_WIDTH;
489  param[34][0] = (int)(20.0 / S_BIN_WIDTH);
490  param[34][1] = 0.0;
491  param[34][2] = param[34][0] * S_BIN_WIDTH;
492  param[35][0] = (int)(20.0 / S_BIN_WIDTH);
493  param[35][1] = 0.0;
494  param[35][2] = param[35][0] * S_BIN_WIDTH;
495  param[36][0] = (int)(20.0 / S_BIN_WIDTH);
496  param[36][1] = 0.0;
497  param[36][2] = param[36][0] * S_BIN_WIDTH;
498  param[37][0] = (int)(20.0 / S_BIN_WIDTH);
499  param[37][1] = 0.0;
500  param[37][2] = param[37][0] * S_BIN_WIDTH;
501 
502  param[38][0] = 50;
503  param[38][1] = 0.0;
504  param[38][2] = 1.0;
505  param[39][0] = 50;
506  param[39][1] = 0.0;
507  param[39][2] = 1.0;
508 
509  param[40][0] = 50;
510  param[40][1] = 0.0;
511  param[40][2] = 1.0;
512  param[41][0] = 50;
513  param[41][1] = 0.0;
514  param[41][2] = 1.0;
515 
516  param[42][0] = 50;
517  param[42][1] = 0.0;
518  param[42][2] = 5;
519  param[43][0] = 50;
520  param[43][1] = 0.0;
521  param[43][2] = 5;
522  param[44][0] = 50;
523  param[44][1] = 0.0;
524  param[44][2] = 5;
525 
526  param[45][0] = 50;
527  param[45][1] = 0.0;
528  param[45][2] = 0.4;
529  param[46][0] = 50;
530  param[46][1] = 0.0;
531  param[46][2] = 0.4;
532  param[47][0] = 50;
533  param[47][1] = 0.0;
534  param[47][2] = 0.4;
535 
536  //--------------Is the variable continuous (i.e. non-integer)?-------------
537  //---------(Log binning will only be used for continuous variables)--------
538  isContinuous[0] = 1;
539  isContinuous[1] = 1;
540  isContinuous[2] = 1;
541  isContinuous[3] = 1;
542  isContinuous[4] = 0;
543  isContinuous[5] = 0;
544  isContinuous[6] = 1;
545  isContinuous[7] = 1;
546  isContinuous[8] = 1;
547  isContinuous[9] = 1;
548  isContinuous[10] = 1;
549  isContinuous[11] = 1;
550 
551  isContinuous[12] = 1;
552  isContinuous[13] = 1;
553  isContinuous[14] = 1;
554  isContinuous[15] = 1;
555  isContinuous[16] = 0;
556  isContinuous[17] = 0;
557  isContinuous[18] = 1;
558  isContinuous[19] = 1;
559  isContinuous[20] = 1;
560  isContinuous[21] = 1;
561  isContinuous[22] = 1;
562  isContinuous[23] = 1;
563 
564  isContinuous[24] = 1;
565  isContinuous[25] = 1;
566  isContinuous[26] = 1;
567  isContinuous[27] = 1;
568  isContinuous[28] = 1;
569  isContinuous[29] = 1;
570  isContinuous[30] = 1;
571  isContinuous[31] = 1;
572  isContinuous[32] = 1;
573  isContinuous[33] = 1;
574  isContinuous[34] = 1;
575  isContinuous[35] = 1;
576  isContinuous[36] = 1;
577  isContinuous[37] = 1;
578  isContinuous[38] = 1;
579  isContinuous[39] = 1;
580  isContinuous[40] = 1;
581  isContinuous[41] = 1;
582  isContinuous[42] = 1;
583  isContinuous[43] = 1;
584  isContinuous[44] = 1;
585  isContinuous[45] = 1;
586  isContinuous[46] = 1;
587  isContinuous[47] = 1;
588 
589 #ifdef DEBUG
590  cout << "InitStatistics(): DONE " << endl;
591 #endif
592 }
static const int NUM_VARS_NVTX
std::vector< std::string > main_titles
std::vector< std::string > names
std::vector< std::string > names_2D
static const int NUM_VARS_2D
std::string title_sam
std::vector< std::string > names_NVtxs
std::string title_cone
std::vector< int > isContinuous
std::vector< std::string > titles_2D
std::vector< std::string > axis_titles
std::vector< std::string > axis_titles_NVtxs
std::vector< std::vector< double > > param
static const int NUM_VARS
std::vector< std::string > main_titles_NVtxs
void MuonIsolationDQM::NormalizeHistos ( )
private

Definition at line 797 of file MuonIsolationDQM.cc.

References trigObjTnPSource_cfi::var.

797  {
798  for (int var = 0; var < NUM_VARS; var++) {
799  double entries = GetTH1FromMonitorElement(h_1D[var])->GetEntries();
800  GetTH1FromMonitorElement(h_1D[var])->Scale(1. / entries);
801  }
802 }
std::vector< MonitorElement * > h_1D
static const int NUM_VARS
TH1 * GetTH1FromMonitorElement(MonitorElement *me)
void MuonIsolationDQM::RecordData ( const reco::Muon muon)
private

Definition at line 659 of file MuonIsolationDQM.cc.

References gather_cfg::cout, reco::MuonIsolation::emEt, reco::MuonIsolation::emVetoEt, reco::MuonIsolation::hadEt, reco::MuonIsolation::hadVetoEt, reco::MuonIsolation::hoEt, reco::MuonIsolation::hoVetoEt, reco::Muon::isolationR03(), reco::Muon::isolationR05(), reco::MuonIsolation::nJets, reco::MuonIsolation::nTracks, reco::Muon::pfIsolationR03(), reco::Muon::pfIsolationR04(), reco::Muon::pfMeanDRIsoProfileR04(), reco::Muon::pfSumDRIsoProfileR04(), reco::LeafCandidate::pt(), reco::MuonPFIsolation::sumChargedHadronPt, reco::MuonPFIsolation::sumNeutralHadronEt, reco::MuonPFIsolation::sumNeutralHadronEtHighThreshold, reco::MuonPFIsolation::sumPhotonEt, reco::MuonPFIsolation::sumPhotonEtHighThreshold, reco::MuonIsolation::sumPt, reco::MuonPFIsolation::sumPUPt, and reco::MuonIsolation::trackerVetoPt.

659  {
660 #ifdef DEBUG
661  std::cout << "RecordData()" << endl;
662 #endif
663  float MuPt = muon.pt();
664 
665  theData[0] = muon.isolationR03().sumPt;
666  theData[1] = muon.isolationR03().emEt;
667  theData[2] = muon.isolationR03().hadEt;
668  theData[3] = muon.isolationR03().hoEt;
669 
670  theData[4] = muon.isolationR03().nTracks;
671  theData[5] = muon.isolationR03().nJets;
672  theData[6] = muon.isolationR03().trackerVetoPt;
673  theData[7] = muon.isolationR03().emVetoEt;
674  theData[8] = muon.isolationR03().hadVetoEt;
675  theData[9] = muon.isolationR03().hoVetoEt;
676 
677  // make sure nTracks != 0 before filling this one
678  if (theData[4] != 0)
679  theData[10] = (double)theData[0] / (double)theData[4];
680  else
681  theData[10] = -99;
682 
683  theData[11] = 1.5 * theData[1] + theData[2];
684 
685  theData[12] = muon.isolationR05().sumPt;
686  theData[13] = muon.isolationR05().emEt;
687  theData[14] = muon.isolationR05().hadEt;
688  theData[15] = muon.isolationR05().hoEt;
689 
690  theData[16] = muon.isolationR05().nTracks;
691  theData[17] = muon.isolationR05().nJets;
692  theData[18] = muon.isolationR05().trackerVetoPt;
693  theData[19] = muon.isolationR05().emVetoEt;
694  theData[20] = muon.isolationR05().hadVetoEt;
695  theData[21] = muon.isolationR05().hoVetoEt;
696 
697  // make sure nTracks != 0 before filling this one
698  if (theData[16] != 0)
699  theData[22] = (double)theData[12] / (double)theData[16];
700  else
701  theData[22] = -99;
702 
703  theData[23] = 1.5 * theData[13] + theData[14];
704 
705  theData[24] = (theData[0] + theData[1] + theData[2]) / MuPt;
706  theData[25] = (theData[12] + theData[13] + theData[14]) / MuPt;
707 
708  theData[26] = muon.pfIsolationR03().sumChargedHadronPt;
709  theData[27] = muon.pfIsolationR03().sumNeutralHadronEt;
710  theData[28] = muon.pfIsolationR03().sumPhotonEt;
711  theData[29] = muon.pfIsolationR03().sumNeutralHadronEtHighThreshold;
712  theData[30] = muon.pfIsolationR03().sumPhotonEtHighThreshold;
713  theData[31] = muon.pfIsolationR03().sumPUPt;
714 
715  theData[32] = muon.pfIsolationR04().sumChargedHadronPt;
716  theData[33] = muon.pfIsolationR04().sumNeutralHadronEt;
717  theData[34] = muon.pfIsolationR04().sumPhotonEt;
718  theData[35] = muon.pfIsolationR04().sumNeutralHadronEtHighThreshold;
719  theData[36] = muon.pfIsolationR04().sumPhotonEtHighThreshold;
720  theData[37] = muon.pfIsolationR04().sumPUPt;
721 
722  theData[38] = (theData[26] + theData[27] + theData[28]) / MuPt;
723  theData[39] = (theData[32] + theData[33] + theData[34]) / MuPt;
724 
725  theData[40] = (theData[26] + theData[29] + theData[30]) / MuPt;
726  theData[41] = (theData[32] + theData[35] + theData[36]) / MuPt;
727 
728  theData[42] = muon.pfSumDRIsoProfileR04().sumChargedHadronPt;
729  theData[43] = muon.pfSumDRIsoProfileR04().sumNeutralHadronEt;
730  theData[44] = muon.pfSumDRIsoProfileR04().sumPhotonEt;
731  theData[45] = muon.pfMeanDRIsoProfileR04().sumChargedHadronPt;
732  theData[46] = muon.pfMeanDRIsoProfileR04().sumNeutralHadronEt;
733  theData[47] = muon.pfMeanDRIsoProfileR04().sumPhotonEt;
734 
735  //--------------Filling the 2D Histos Data -------- //
736  theData2D[0] = muon.isolationR03().sumPt;
737  theData2D[1] = muon.isolationR03().emEt;
738  theData2D[2] = muon.isolationR03().hadEt;
739  theData2D[3] = muon.isolationR03().hoEt;
740 
744  theData2D[7] = muon.pfIsolationR04().sumPUPt;
745 
746  theData2D[8] = theData2D[0] + theData2D[1] + theData2D[2] + theData2D[3] / MuPt; //Det RelIso;
747  theData2D[9] = theData2D[4] + theData2D[5] + theData2D[6] / MuPt; //PF RelIso;
748 
749  //-----------Filling the NVTX 1D HISTOS DATA ------------- //
751  theDataNVtx[1] = theDataNVtx[0];
752  theDataNVtx[2] = theDataNVtx[0];
753 
755  theDataNVtx[4] = theDataNVtx[3];
756  theDataNVtx[5] = theDataNVtx[3];
757 }
float hadEt
hcal sum-Et
Definition: MuonIsolation.h:8
float sumPt
sum-pt of tracks
Definition: MuonIsolation.h:6
float sumNeutralHadronEtHighThreshold
sum pt of neutral hadrons with a higher threshold
const MuonPFIsolation & pfSumDRIsoProfileR04() const
Definition: Muon.h:174
const MuonPFIsolation & pfMeanDRIsoProfileR04() const
Definition: Muon.h:173
float hadVetoEt
hcal sum-et in the veto region in r-phi
Definition: MuonIsolation.h:14
double pt() const final
transverse momentum
float sumPhotonEt
sum pt of PF photons
const MuonIsolation & isolationR05() const
Definition: Muon.h:167
float sumNeutralHadronEt
sum pt of neutral hadrons
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
const MuonPFIsolation & pfIsolationR03() const
Definition: Muon.h:169
float emEt
ecal sum-Et
Definition: MuonIsolation.h:7
int nJets
number of jets in the cone
Definition: MuonIsolation.h:11
float hoEt
ho sum-Et
Definition: MuonIsolation.h:9
float hoVetoEt
ho sum-et in the veto region in r-phi
Definition: MuonIsolation.h:15
int nTracks
number of tracks in the cone (excluding veto region)
Definition: MuonIsolation.h:10
float emVetoEt
ecal sum-et in the veto region in r-phi
Definition: MuonIsolation.h:13
const MuonPFIsolation & pfIsolationR04() const
Definition: Muon.h:172
double theDataNVtx[NUM_VARS_NVTX]
float sumPhotonEtHighThreshold
sum pt of PF photons with a higher threshold
double theData[NUM_VARS]
double theData2D[NUM_VARS_2D]
float trackerVetoPt
(sum-)pt inside the veto region in r-phi
Definition: MuonIsolation.h:12
const MuonIsolation & isolationR03() const
Definition: Muon.h:166
float sumChargedHadronPt
sum-pt of charged Hadron

Member Data Documentation

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

Definition at line 118 of file MuonIsolationDQM.h.

std::vector<std::string> MuonIsolationDQM::axis_titles_NVtxs
private

Definition at line 128 of file MuonIsolationDQM.h.

std::string MuonIsolationDQM::dirName
private
std::vector<MonitorElement*> MuonIsolationDQM::h_1D
private

Definition at line 138 of file MuonIsolationDQM.h.

std::vector<MonitorElement*> MuonIsolationDQM::h_1D_NVTX
private

Definition at line 140 of file MuonIsolationDQM.h.

std::vector<MonitorElement*> MuonIsolationDQM::h_2D
private

Definition at line 139 of file MuonIsolationDQM.h.

MonitorElement* MuonIsolationDQM::h_nMuons
private

Definition at line 137 of file MuonIsolationDQM.h.

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

Definition at line 121 of file MuonIsolationDQM.h.

double MuonIsolationDQM::L_BIN_WIDTH
private

Definition at line 104 of file MuonIsolationDQM.h.

int MuonIsolationDQM::LOG_BINNING_ENABLED
private

Definition at line 106 of file MuonIsolationDQM.h.

double MuonIsolationDQM::LOG_BINNING_RATIO
private

Definition at line 108 of file MuonIsolationDQM.h.

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

Definition at line 117 of file MuonIsolationDQM.h.

std::vector<std::string> MuonIsolationDQM::main_titles_NVtxs
private

Definition at line 126 of file MuonIsolationDQM.h.

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

Definition at line 119 of file MuonIsolationDQM.h.

std::vector<std::string> MuonIsolationDQM::names_2D
private

Definition at line 124 of file MuonIsolationDQM.h.

std::vector<std::string> MuonIsolationDQM::names_NVtxs
private

Definition at line 127 of file MuonIsolationDQM.h.

int MuonIsolationDQM::nEvents
private

Definition at line 145 of file MuonIsolationDQM.h.

Referenced by looper.Looper::loop().

int MuonIsolationDQM::nGLBMuons
private

Definition at line 147 of file MuonIsolationDQM.h.

int MuonIsolationDQM::nSTAMuons
private

Definition at line 146 of file MuonIsolationDQM.h.

int MuonIsolationDQM::nTRKMuons
private

Definition at line 148 of file MuonIsolationDQM.h.

int MuonIsolationDQM::NUM_LOG_BINS
private

Definition at line 107 of file MuonIsolationDQM.h.

const int MuonIsolationDQM::NUM_VARS = 48
staticprivate

Definition at line 100 of file MuonIsolationDQM.h.

const int MuonIsolationDQM::NUM_VARS_2D = 10
staticprivate

Definition at line 101 of file MuonIsolationDQM.h.

const int MuonIsolationDQM::NUM_VARS_NVTX = 6
staticprivate

Definition at line 102 of file MuonIsolationDQM.h.

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

Definition at line 120 of file MuonIsolationDQM.h.

bool MuonIsolationDQM::requireGLBMuon
private

Definition at line 109 of file MuonIsolationDQM.h.

bool MuonIsolationDQM::requireSTAMuon
private

Definition at line 110 of file MuonIsolationDQM.h.

bool MuonIsolationDQM::requireTRKMuon
private

Definition at line 111 of file MuonIsolationDQM.h.

std::string MuonIsolationDQM::rootfilename
private

Definition at line 95 of file MuonIsolationDQM.h.

double MuonIsolationDQM::S_BIN_WIDTH
private

Definition at line 105 of file MuonIsolationDQM.h.

double MuonIsolationDQM::theData[NUM_VARS]
private

Definition at line 132 of file MuonIsolationDQM.h.

double MuonIsolationDQM::theData2D[NUM_VARS_2D]
private

Definition at line 133 of file MuonIsolationDQM.h.

double MuonIsolationDQM::theDataNVtx[NUM_VARS_NVTX]
private

Definition at line 134 of file MuonIsolationDQM.h.

edm::EDGetTokenT<edm::View<reco::Muon> > MuonIsolationDQM::theMuonCollectionLabel_
private

Definition at line 92 of file MuonIsolationDQM.h.

edm::EDGetTokenT<reco::VertexCollection> MuonIsolationDQM::theVertexCollectionLabel_
private

Definition at line 91 of file MuonIsolationDQM.h.

std::string MuonIsolationDQM::title_cone
private

Definition at line 114 of file MuonIsolationDQM.h.

std::string MuonIsolationDQM::title_sam
private

Definition at line 113 of file MuonIsolationDQM.h.

std::vector<std::string> MuonIsolationDQM::titles_2D
private

Definition at line 123 of file MuonIsolationDQM.h.