CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
MaterialBudgetVolumeAnalysis Class Reference
Inheritance diagram for MaterialBudgetVolumeAnalysis:
edm::one::EDAnalyzer< edm::one::SharedResources > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 MaterialBudgetVolumeAnalysis (edm::ParameterSet const &)
 
- Public Member Functions inherited from edm::one::EDAnalyzer< edm::one::SharedResources >
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () 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
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex >
const & 
esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void analyze (edm::Event const &, edm::EventSetup const &) override
 
void bookHisto ()
 

Private Attributes

const int binEta_
 
const int binPhi_
 
const double etaHigh_
 
const double etaLow_
 
std::vector< TProfile * > meIntLEta_
 
std::vector< TProfile2D * > meIntLEtaPhi_
 
std::vector< TProfile * > meIntLPhi_
 
std::vector< TProfile * > meRadLEta_
 
std::vector< TProfile2D * > meRadLEtaPhi_
 
std::vector< TProfile * > meRadLPhi_
 
std::vector< TProfile * > meStepEta_
 
std::vector< TProfile2D * > meStepEtaPhi_
 
std::vector< TProfile * > meStepPhi_
 
const std::vector< std::string > names_
 
const double phiHigh_
 
const double phiLow_
 
const edm::InputTag tag_
 
edm::EDGetTokenT
< edm::MaterialInformationContainer
tok_info_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 27 of file MaterialBudgetVolumeAnalysis.cc.

Constructor & Destructor Documentation

MaterialBudgetVolumeAnalysis::MaterialBudgetVolumeAnalysis ( edm::ParameterSet const &  p)
explicit

Definition at line 48 of file MaterialBudgetVolumeAnalysis.cc.

References binEta_, binPhi_, bookHisto(), etaHigh_, etaLow_, isotrackApplyRegressor::k, TFileService::kSharedResource, names_, tag_, and tok_info_.

49  : names_(p.getParameter<std::vector<std::string> >("names")),
50  tag_(p.getParameter<edm::InputTag>("inputTag")),
51  binEta_(p.getParameter<int>("nBinEta")),
52  binPhi_(p.getParameter<int>("nBinPhi")),
53  etaLow_(p.getParameter<double>("etaLow")),
54  etaHigh_(p.getParameter<double>("etaHigh")),
55  phiLow_(-1._pi),
56  phiHigh_(1._pi) {
57  usesResource(TFileService::kSharedResource);
58  tok_info_ = consumes<edm::MaterialInformationContainer>(tag_);
59 
60  edm::LogVerbatim("MaterialBudget") << "MaterialBudgetVolumeAnalysis: Eta plot: NX " << binEta_ << " Range "
61  << -etaLow_ << ":" << etaHigh_ << " Phi plot: NX " << binPhi_ << " Range "
62  << -1._pi << ":" << 1._pi << " for " << names_.size() << " detectors from "
63  << tag_;
64  std::ostringstream st1;
65  for (unsigned int k = 0; k < names_.size(); ++k)
66  st1 << " [" << k << "] " << names_[k];
67  edm::LogVerbatim("MaterialBudget") << "MaterialBudgetVolume: " << st1.str();
68  bookHisto();
69 }
static const std::string kSharedResource
Definition: TFileService.h:76
Log< level::Info, true > LogVerbatim
const std::vector< std::string > names_
edm::EDGetTokenT< edm::MaterialInformationContainer > tok_info_

Member Function Documentation

void MaterialBudgetVolumeAnalysis::analyze ( edm::Event const &  iEvent,
edm::EventSetup const &   
)
overrideprivatevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 84 of file MaterialBudgetVolumeAnalysis.cc.

References spr::find(), edm::Event::getByToken(), edm::HandleBase::isValid(), isotrackApplyRegressor::k, meIntLEta_, meIntLEtaPhi_, meIntLPhi_, meRadLEta_, meRadLEtaPhi_, meRadLPhi_, meStepEta_, meStepEtaPhi_, meStepPhi_, names_, gpuPixelDoublets::ntot, edm::Handle< T >::product(), and tok_info_.

84  {
85  edm::Handle<edm::MaterialInformationContainer> materialInformationContainer;
86  iEvent.getByToken(tok_info_, materialInformationContainer);
87 #ifdef EDM_ML_DEBUG
88  unsigned int nsize(0), ntot(0), nused(0);
89 #endif
90  if (materialInformationContainer.isValid()) {
91 #ifdef EDM_ML_DEBUG
92  nsize = materialInformationContainer->size();
93 #endif
94  for (const auto& it : *(materialInformationContainer.product())) {
95 #ifdef EDM_ML_DEBUG
96  ntot++;
97 #endif
98  if (std::find(names_.begin(), names_.end(), it.vname()) != names_.end()) {
99 #ifdef EDM_ML_DEBUG
100  nused++;
101 #endif
102  unsigned int k =
103  static_cast<unsigned int>(std::find(names_.begin(), names_.end(), it.vname()) - names_.begin());
104  meStepEta_[k]->Fill(it.trackEta(), it.stepLength());
105  meRadLEta_[k]->Fill(it.trackEta(), it.radiationLength());
106  meIntLEta_[k]->Fill(it.trackEta(), it.interactionLength());
107  meStepPhi_[k]->Fill(it.trackPhi(), it.stepLength());
108  meRadLPhi_[k]->Fill(it.trackPhi(), it.radiationLength());
109  meIntLPhi_[k]->Fill(it.trackPhi(), it.interactionLength());
110  meStepEtaPhi_[k]->Fill(it.trackEta(), it.trackPhi(), it.stepLength());
111  meRadLEtaPhi_[k]->Fill(it.trackEta(), it.trackPhi(), it.radiationLength());
112  meIntLEtaPhi_[k]->Fill(it.trackEta(), it.trackPhi(), it.interactionLength());
113  }
114  }
115  }
116 #ifdef EDM_ML_DEBUG
117  edm::LogVerbatim("MaterialBudget") << "MaterialInformation with " << nsize << ":" << ntot << " elements of which "
118  << nused << " are used";
119 #endif
120 }
Log< level::Info, true > LogVerbatim
std::vector< TProfile2D * > meStepEtaPhi_
std::vector< TProfile2D * > meIntLEtaPhi_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
int iEvent
Definition: GenABIO.cc:224
bool isValid() const
Definition: HandleBase.h:70
T const * product() const
Definition: Handle.h:70
const std::vector< std::string > names_
std::vector< TProfile2D * > meRadLEtaPhi_
__shared__ uint32_t ntot
edm::EDGetTokenT< edm::MaterialInformationContainer > tok_info_
void MaterialBudgetVolumeAnalysis::bookHisto ( )
private

Definition at line 122 of file MaterialBudgetVolumeAnalysis.cc.

References binEta_, binPhi_, etaHigh_, etaLow_, isotrackApplyRegressor::k, TFileService::make(), meIntLEta_, meIntLEtaPhi_, meIntLPhi_, meRadLEta_, meRadLEtaPhi_, meRadLPhi_, meStepEta_, meStepEtaPhi_, meStepPhi_, mergeVDriftHistosByStation::name, names_, phiHigh_, phiLow_, and runGCPTkAlMap::title.

Referenced by MaterialBudgetVolumeAnalysis().

122  {
124  char name[40], title[100];
125  for (unsigned int k = 0; k < names_.size(); ++k) {
126  sprintf(name, "stepEta%s", names_[k].c_str());
127  sprintf(title, "MB(Step) vs #eta for %s", names_[k].c_str());
128  meStepEta_.emplace_back(fs->make<TProfile>(name, title, binEta_, etaLow_, etaHigh_));
129  sprintf(name, "radlEta%s", names_[k].c_str());
130  sprintf(title, "MB(X0) vs #eta for %s", names_[k].c_str());
131  meRadLEta_.emplace_back(fs->make<TProfile>(name, title, binEta_, etaLow_, etaHigh_));
132  sprintf(name, "intlEta%s", names_[k].c_str());
133  sprintf(title, "MB(L0) vs #eta for %s", names_[k].c_str());
134  meIntLEta_.emplace_back(fs->make<TProfile>(name, title, binEta_, etaLow_, etaHigh_));
135  sprintf(name, "stepPhi%s", names_[k].c_str());
136  sprintf(title, "MB(Step) vs #phi for %s", names_[k].c_str());
137  meStepPhi_.emplace_back(fs->make<TProfile>(name, title, binPhi_, phiLow_, phiHigh_));
138  sprintf(name, "radlPhi%s", names_[k].c_str());
139  sprintf(title, "MB(X0) vs #phi for %s", names_[k].c_str());
140  meRadLPhi_.emplace_back(fs->make<TProfile>(name, title, binPhi_, phiLow_, phiHigh_));
141  sprintf(name, "intlPhi%s", names_[k].c_str());
142  sprintf(title, "MB(L0) vs #phi for %s", names_[k].c_str());
143  meIntLPhi_.emplace_back(fs->make<TProfile>(name, title, binPhi_, phiLow_, phiHigh_));
144  sprintf(name, "stepEtaPhi%s", names_[k].c_str());
145  sprintf(title, "MB(Step) vs #eta and #phi for %s", names_[k].c_str());
146  meStepEtaPhi_.emplace_back(
147  fs->make<TProfile2D>(name, title, binEta_ / 2, etaLow_, etaHigh_, binPhi_ / 2, phiLow_, phiHigh_));
148  sprintf(name, "radlEtaPhi%s", names_[k].c_str());
149  sprintf(title, "MB(X0) vs #eta and #phi for %s", names_[k].c_str());
150  meRadLEtaPhi_.emplace_back(
151  fs->make<TProfile2D>(name, title, binEta_ / 2, etaLow_, etaHigh_, binPhi_ / 2, phiLow_, phiHigh_));
152  sprintf(name, "intlEtaPhi%s", names_[k].c_str());
153  sprintf(title, "MB(L0) vs #eta and #phi for %s", names_[k].c_str());
154  meIntLEtaPhi_.emplace_back(
155  fs->make<TProfile2D>(name, title, binEta_ / 2, etaLow_, etaHigh_, binPhi_ / 2, phiLow_, phiHigh_));
156  }
157 }
std::vector< TProfile2D * > meStepEtaPhi_
std::vector< TProfile2D * > meIntLEtaPhi_
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
const std::vector< std::string > names_
std::vector< TProfile2D * > meRadLEtaPhi_
void MaterialBudgetVolumeAnalysis::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 71 of file MaterialBudgetVolumeAnalysis.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), submitPVResolutionJobs::desc, HLT_FULL_cff::InputTag, and names.

71  {
73  std::vector<std::string> names = {
74  "BEAM", "BEAM1", "BEAM2", "BEAM3", "BEAM4", "Tracker", "ECAL", "HCal", "MUON", "VCAL", "MGNT", "OQUA", "CALOEC"};
75  desc.add<std::vector<std::string> >("names", names);
76  desc.add<edm::InputTag>("inputTag", edm::InputTag("g4SimHits", "MaterialInformation"));
77  desc.add<int>("nBinEta", 300);
78  desc.add<int>("nBinPhi", 180);
79  desc.add<double>("etaLow", -6.0);
80  desc.add<double>("etaHigh", 6.0);
81  descriptions.add("materialBudgetVolumeAnalysis", desc);
82 }
const std::string names[nVars_]
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

const int MaterialBudgetVolumeAnalysis::binEta_
private

Definition at line 39 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by bookHisto(), and MaterialBudgetVolumeAnalysis().

const int MaterialBudgetVolumeAnalysis::binPhi_
private

Definition at line 39 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by bookHisto(), and MaterialBudgetVolumeAnalysis().

const double MaterialBudgetVolumeAnalysis::etaHigh_
private

Definition at line 40 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by bookHisto(), and MaterialBudgetVolumeAnalysis().

const double MaterialBudgetVolumeAnalysis::etaLow_
private

Definition at line 40 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by bookHisto(), and MaterialBudgetVolumeAnalysis().

std::vector<TProfile*> MaterialBudgetVolumeAnalysis::meIntLEta_
private

Definition at line 44 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and bookHisto().

std::vector<TProfile2D*> MaterialBudgetVolumeAnalysis::meIntLEtaPhi_
private

Definition at line 45 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and bookHisto().

std::vector<TProfile*> MaterialBudgetVolumeAnalysis::meIntLPhi_
private

Definition at line 44 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and bookHisto().

std::vector<TProfile*> MaterialBudgetVolumeAnalysis::meRadLEta_
private

Definition at line 43 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and bookHisto().

std::vector<TProfile2D*> MaterialBudgetVolumeAnalysis::meRadLEtaPhi_
private

Definition at line 45 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and bookHisto().

std::vector<TProfile*> MaterialBudgetVolumeAnalysis::meRadLPhi_
private

Definition at line 43 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and bookHisto().

std::vector<TProfile*> MaterialBudgetVolumeAnalysis::meStepEta_
private

Definition at line 42 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and bookHisto().

std::vector<TProfile2D*> MaterialBudgetVolumeAnalysis::meStepEtaPhi_
private

Definition at line 45 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and bookHisto().

std::vector<TProfile*> MaterialBudgetVolumeAnalysis::meStepPhi_
private

Definition at line 42 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and bookHisto().

const std::vector<std::string> MaterialBudgetVolumeAnalysis::names_
private
const double MaterialBudgetVolumeAnalysis::phiHigh_
private

Definition at line 40 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by bookHisto().

const double MaterialBudgetVolumeAnalysis::phiLow_
private

Definition at line 40 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by bookHisto().

const edm::InputTag MaterialBudgetVolumeAnalysis::tag_
private

Definition at line 38 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by MaterialBudgetVolumeAnalysis().

edm::EDGetTokenT<edm::MaterialInformationContainer> MaterialBudgetVolumeAnalysis::tok_info_
private

Definition at line 41 of file MaterialBudgetVolumeAnalysis.cc.

Referenced by analyze(), and MaterialBudgetVolumeAnalysis().