CMS 3D CMS Logo

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

#include <AlcaBeamMonitor.h>

Inheritance diagram for AlcaBeamMonitor:
DQMOneEDAnalyzer< edm::LuminosityBlockCache< alcabeammonitor::BeamSpotInfo > > edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args... > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 AlcaBeamMonitor (const edm::ParameterSet &)
 
- Public Member Functions inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< alcabeammonitor::BeamSpotInfo > >
void accumulate (edm::Event const &event, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
 DQMOneEDAnalyzer ()
 
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::Accumulator, Args... >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () 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
 
std::vector< bool > const & recordProvenanceList () 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)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~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
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &)
 
- 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

void analyze (const edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmEndRun (edm::Run const &, edm::EventSetup const &) override
 
std::shared_ptr< alcabeammonitor::BeamSpotInfoglobalBeginLuminosityBlock (const edm::LuminosityBlock &iLumi, const edm::EventSetup &iSetup) const override
 
void globalEndLuminosityBlock (const edm::LuminosityBlock &iLumi, const edm::EventSetup &iSetup) override
 
- Protected Member Functions inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< alcabeammonitor::BeamSpotInfo > >
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- 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< Bconsumes (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 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 ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
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)
 

Private Types

typedef std::map< std::string, reco::BeamSpotBeamSpotContainer
 
typedef std::map< std::string, std::map< std::string, std::map< std::string, MonitorElement * > > > HistosContainer
 
typedef std::map< std::string, std::map< std::string, std::map< std::string, int > > > PositionContainer
 

Private Attributes

const edm::ESGetToken< BeamSpotObjects, BeamSpotObjectsRcdbeamSpotToken_
 
MonitorElementhD0Phi0_
 
MonitorElementhDxyBS_
 
std::multimap< std::string, std::string > histoByCategoryNames_
 
HistosContainer histosMap_
 
std::string monitorName_
 
int numberOfValuesToSave_
 
bool perLSsaving_
 
PositionContainer positionsMap_
 
const edm::EDGetTokenT< reco::VertexCollectionprimaryVertexLabel_
 
std::vector< int > processedLumis_
 
const edm::EDGetTokenT< reco::BeamSpotscalerLabel_
 
std::unique_ptr< BeamFittertheBeamFitter_
 
std::unique_ptr< PVFitterthePVFitter_
 
const edm::EDGetTokenT< reco::TrackCollectiontrackLabel_
 
std::vector< std::string > varNamesV_
 

Additional Inherited Members

- Public Types inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< alcabeammonitor::BeamSpotInfo > >
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
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
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
 
- Protected Attributes inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< alcabeammonitor::BeamSpotInfo > >
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 38 of file AlcaBeamMonitor.h.

Member Typedef Documentation

◆ BeamSpotContainer

typedef std::map<std::string, reco::BeamSpot> AlcaBeamMonitor::BeamSpotContainer
private

Definition at line 54 of file AlcaBeamMonitor.h.

◆ HistosContainer

typedef std::map<std::string, std::map<std::string, std::map<std::string, MonitorElement*> > > AlcaBeamMonitor::HistosContainer
private

Definition at line 56 of file AlcaBeamMonitor.h.

◆ PositionContainer

typedef std::map<std::string, std::map<std::string, std::map<std::string, int> > > AlcaBeamMonitor::PositionContainer
private

Definition at line 58 of file AlcaBeamMonitor.h.

Constructor & Destructor Documentation

◆ AlcaBeamMonitor()

AlcaBeamMonitor::AlcaBeamMonitor ( const edm::ParameterSet ps)

Definition at line 31 of file AlcaBeamMonitor.cc.

References edm::BeginLuminosityBlock, edm::EDConsumerBase::consumesCollector(), histoByCategoryNames_, histosMap_, monitorName_, perLSsaving_, processedLumis_, theBeamFitter_, thePVFitter_, and varNamesV_.

32  : monitorName_(ps.getUntrackedParameter<string>("MonitorName")),
33  primaryVertexLabel_(consumes<VertexCollection>(ps.getUntrackedParameter<InputTag>("PrimaryVertexLabel"))),
34  trackLabel_(consumes<reco::TrackCollection>(ps.getUntrackedParameter<InputTag>("TrackLabel"))),
35  scalerLabel_(consumes<BeamSpot>(ps.getUntrackedParameter<InputTag>("ScalerLabel"))),
36  beamSpotToken_(esConsumes<edm::Transition::BeginLuminosityBlock>()),
37  perLSsaving_(ps.getUntrackedParameter<bool>("perLSsaving", false)),
39  if (!monitorName_.empty())
40  monitorName_ = monitorName_ + "/";
41 
42  theBeamFitter_ = std::make_unique<BeamFitter>(ps, consumesCollector());
43  theBeamFitter_->resetTrkVector();
44  theBeamFitter_->resetLSRange();
45  theBeamFitter_->resetRefTime();
46  theBeamFitter_->resetPVFitter();
47 
48  thePVFitter_ = std::make_unique<PVFitter>(ps, consumesCollector());
49 
50  processedLumis_.clear();
51 
52  varNamesV_.push_back("x");
53  varNamesV_.push_back("y");
54  varNamesV_.push_back("z");
55  varNamesV_.push_back("sigmaX");
56  varNamesV_.push_back("sigmaY");
57  varNamesV_.push_back("sigmaZ");
58 
59  if (!perLSsaving_) {
60  histoByCategoryNames_.insert(pair<string, string>("run", "Coordinate"));
61  histoByCategoryNames_.insert(pair<string, string>("run", "PrimaryVertex fit-DataBase"));
62  histoByCategoryNames_.insert(pair<string, string>("run", "PrimaryVertex fit-BeamFit"));
63  histoByCategoryNames_.insert(pair<string, string>("run", "PrimaryVertex fit-Online"));
64  histoByCategoryNames_.insert(pair<string, string>("run", "PrimaryVertex-DataBase"));
65  histoByCategoryNames_.insert(pair<string, string>("run", "PrimaryVertex-BeamFit"));
66  histoByCategoryNames_.insert(pair<string, string>("run", "PrimaryVertex-Online"));
67 
68  histoByCategoryNames_.insert(pair<string, string>("lumi", "Lumibased BeamSpotFit"));
69  histoByCategoryNames_.insert(pair<string, string>("lumi", "Lumibased PrimaryVertex"));
70  histoByCategoryNames_.insert(pair<string, string>("lumi", "Lumibased DataBase"));
71  histoByCategoryNames_.insert(pair<string, string>("lumi", "Lumibased Online"));
72  histoByCategoryNames_.insert(pair<string, string>("lumi", "Lumibased PrimaryVertex-DataBase fit"));
73  histoByCategoryNames_.insert(pair<string, string>("lumi", "Lumibased PrimaryVertex-Online fit"));
74  histoByCategoryNames_.insert(pair<string, string>("validation", "Lumibased Online-DataBase fit"));
75  histoByCategoryNames_.insert(pair<string, string>("validation", "Lumibased PrimaryVertex-DataBase"));
76  histoByCategoryNames_.insert(pair<string, string>("validation", "Lumibased PrimaryVertex-Online"));
77  }
78 
79  for (vector<string>::iterator itV = varNamesV_.begin(); itV != varNamesV_.end(); itV++) {
80  for (multimap<string, string>::iterator itM = histoByCategoryNames_.begin(); itM != histoByCategoryNames_.end();
81  itM++) {
82  histosMap_[*itV][itM->first][itM->second] = nullptr;
83  }
84  }
85 }
std::multimap< std::string, std::string > histoByCategoryNames_
T getUntrackedParameter(std::string const &, T const &) const
std::vector< std::string > varNamesV_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
std::vector< int > processedLumis_
const edm::ESGetToken< BeamSpotObjects, BeamSpotObjectsRcd > beamSpotToken_
std::unique_ptr< PVFitter > thePVFitter_
std::unique_ptr< BeamFitter > theBeamFitter_
HistosContainer histosMap_
std::string monitorName_
const edm::EDGetTokenT< reco::BeamSpot > scalerLabel_
const edm::EDGetTokenT< reco::TrackCollection > trackLabel_
const edm::EDGetTokenT< reco::VertexCollection > primaryVertexLabel_

Member Function Documentation

◆ analyze()

void AlcaBeamMonitor::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprotectedvirtual

Reimplemented from DQMOneEDAnalyzer< edm::LuminosityBlockCache< alcabeammonitor::BeamSpotInfo > >.

Definition at line 278 of file AlcaBeamMonitor.cc.

References reco::BeamSpot::Fake, dqm::impl::MonitorElement::Fill(), hD0Phi0_, hDxyBS_, iEvent, primaryVertexLabel_, L1TEGammaOffline_cfi::PVCollection, scalerLabel_, theBeamFitter_, thePVFitter_, HLT_2023v12_cff::track, reco::BeamSpot::Tracker, trackLabel_, and pwdgSkimBPark_cfi::tracks.

278  {
279  //------ BeamFitter
280  theBeamFitter_->readEvent(iEvent);
281  //------ PVFitter
282  thePVFitter_->readEvent(iEvent);
283 
284  auto beamSpotInfo = luminosityBlockCache(iEvent.getLuminosityBlock().index());
285  if (beamSpotInfo->beamSpotMap_.find("DB") != beamSpotInfo->beamSpotMap_.end()) {
286  //------ Tracks
288  iEvent.getByToken(trackLabel_, TrackCollection);
289  const reco::TrackCollection* tracks = TrackCollection.product();
290  for (reco::TrackCollection::const_iterator track = tracks->begin(); track != tracks->end(); ++track) {
291  hD0Phi0_->Fill(track->phi(), -1 * track->dxy());
292  hDxyBS_->Fill(-1 * track->dxy(beamSpotInfo->beamSpotMap_["DB"].position()));
293  }
294  }
295 
296  //------ Primary Vertices
298  if (iEvent.getByToken(primaryVertexLabel_, PVCollection)) {
299  beamSpotInfo->vertices_.push_back(*PVCollection.product());
300  }
301 
302  if (beamSpotInfo->beamSpotMap_.find("SC") == beamSpotInfo->beamSpotMap_.end()) {
303  //BeamSpot from file for this stream is = to the scalar BeamSpot
304  if (Handle<BeamSpot> recoBeamSpotHandle = iEvent.getHandle(scalerLabel_)) {
305  beamSpotInfo->beamSpotMap_["SC"] = *recoBeamSpotHandle;
306  if (beamSpotInfo->beamSpotMap_["SC"].BeamWidthX() != 0) {
307  beamSpotInfo->beamSpotMap_["SC"].setType(reco::BeamSpot::Tracker);
308  } else {
309  beamSpotInfo->beamSpotMap_["SC"].setType(reco::BeamSpot::Fake);
310  }
311  } else {
312  LogWarning("AlcaBeamMonitor") << "No BeamSpot from scalers is available";
313  return;
314  }
315  }
316 }
MonitorElement * hD0Phi0_
MonitorElement * hDxyBS_
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
void Fill(long long x)
int iEvent
Definition: GenABIO.cc:224
std::unique_ptr< PVFitter > thePVFitter_
std::unique_ptr< BeamFitter > theBeamFitter_
const edm::EDGetTokenT< reco::BeamSpot > scalerLabel_
const edm::EDGetTokenT< reco::TrackCollection > trackLabel_
Log< level::Warning, false > LogWarning
const edm::EDGetTokenT< reco::VertexCollection > primaryVertexLabel_

◆ bookHistograms()

void AlcaBeamMonitor::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overrideprotectedvirtual

Implements DQMOneEDAnalyzer< edm::LuminosityBlockCache< alcabeammonitor::BeamSpotInfo > >.

Definition at line 103 of file AlcaBeamMonitor.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::bookProfile(), hD0Phi0_, hDxyBS_, histosMap_, beamSpotPI::lastLumi, genParticles_cff::map, monitorName_, Skims_PA_cff::name, dqm::impl::MonitorElement::setAxisTitle(), dqm::implementation::NavigatorBase::setCurrentFolder(), dqm::impl::MonitorElement::setEfficiencyFlag(), AlCaHLTBitMon_QueryRunRegistry::string, and runGCPTkAlMap::title.

103  {
104  string name;
105  string title;
106  int firstLumi = 1;
107  int lastLumi = 3000;
108  for (HistosContainer::iterator itM = histosMap_.begin(); itM != histosMap_.end(); itM++) {
109  ibooker.setCurrentFolder(monitorName_ + "Debug");
110  for (map<string, MonitorElement*>::iterator itMM = itM->second["run"].begin(); itMM != itM->second["run"].end();
111  itMM++) {
112  name = string("h") + itM->first + itMM->first;
113  title = itM->first + "_{0} " + itMM->first;
114  if (itM->first == "x" || itM->first == "y") {
115  if (itMM->first == "Coordinate") {
116  itMM->second = ibooker.book1D(name, title, 1001, -0.2525, 0.2525);
117  } else if (itMM->first == "PrimaryVertex fit-DataBase" || itMM->first == "PrimaryVertex fit-BeamFit" ||
118  itMM->first == "PrimaryVertex fit-Online" || itMM->first == "PrimaryVertex-DataBase" ||
119  itMM->first == "PrimaryVertex-BeamFit" || itMM->first == "PrimaryVertex-Online") {
120  itMM->second = ibooker.book1D(name, title, 1001, -0.02525, 0.02525);
121  } else {
122  //assert(0);
123  }
124  } else if (itM->first == "z") {
125  if (itMM->first == "Coordinate") {
126  itMM->second = ibooker.book1D(name, title, 101, -5.05, 5.05);
127  } else if (itMM->first == "PrimaryVertex fit-DataBase" || itMM->first == "PrimaryVertex fit-BeamFit" ||
128  itMM->first == "PrimaryVertex fit-Online") {
129  itMM->second = ibooker.book1D(name, title, 101, -0.505, 0.505);
130  } else if (itMM->first == "PrimaryVertex-DataBase" || itMM->first == "PrimaryVertex-BeamFit" ||
131  itMM->first == "PrimaryVertex-Online") {
132  itMM->second = ibooker.book1D(name, title, 1001, -5.005, 5.005);
133  } else {
134  //assert(0);
135  }
136  } else if (itM->first == "sigmaX" || itM->first == "sigmaY") {
137  if (itMM->first == "Coordinate") {
138  itMM->second = ibooker.book1D(name, title, 100, 0, 0.015);
139  } else if (itMM->first == "PrimaryVertex fit-DataBase" || itMM->first == "PrimaryVertex fit-BeamFit" ||
140  itMM->first == "PrimaryVertex fit-Online" || itMM->first == "PrimaryVertex-DataBase" ||
141  itMM->first == "PrimaryVertex-BeamFit" || itMM->first == "PrimaryVertex-Online") {
142  itMM->second = nullptr;
143  } else {
144  //assert(0);
145  }
146  } else if (itM->first == "sigmaZ") {
147  if (itMM->first == "Coordinate") {
148  itMM->second = ibooker.book1D(name, title, 110, 0, 11);
149  } else if (itMM->first == "PrimaryVertex fit-DataBase" || itMM->first == "PrimaryVertex fit-BeamFit" ||
150  itMM->first == "PrimaryVertex fit-Online" || itMM->first == "PrimaryVertex-DataBase" ||
151  itMM->first == "PrimaryVertex-BeamFit" || itMM->first == "PrimaryVertex-Online") {
152  itMM->second = ibooker.book1D(name, title, 101, -5.05, 5.05);
153  } else {
154  //assert(0);
155  }
156  } else {
157  //assert(0);
158  }
159  if (itMM->second != nullptr) {
160  if (itMM->first == "Coordinate") {
161  itMM->second->setAxisTitle(itM->first + "_{0} (cm)", 1);
162  } else if (itMM->first == "PrimaryVertex fit-DataBase" || itMM->first == "PrimaryVertex fit-BeamFit" ||
163  itMM->first == "PrimaryVertex fit-Online" || itMM->first == "PrimaryVertex-DataBase" ||
164  itMM->first == "PrimaryVertex-BeamFit" || itMM->first == "PrimaryVertex-Online") {
165  itMM->second->setAxisTitle(itMM->first + " " + itM->first + "_{0} (cm)", 1);
166  }
167  itMM->second->setAxisTitle("Entries", 2);
168  }
169  }
170 
171  //Making histos per Lumi
172  // x,y,z,sigmaX,sigmaY,sigmaZ
173  for (map<string, map<string, MonitorElement*> >::iterator itMM = itM->second.begin(); itMM != itM->second.end();
174  itMM++) {
175  if (itMM->first != "run") {
176  for (map<string, MonitorElement*>::iterator itMMM = itMM->second.begin(); itMMM != itMM->second.end();
177  itMMM++) {
178  name = string("h") + itM->first + itMMM->first;
179  title = itM->first + "_{0} " + itMMM->first;
180  if (itMM->first == "lumi") {
181  ibooker.setCurrentFolder(monitorName_ + "Debug");
182  itMMM->second = ibooker.book1D(name, title, lastLumi - firstLumi + 1, firstLumi - 0.5, lastLumi + 0.5);
183  itMMM->second->setEfficiencyFlag();
184  } else if (itMM->first == "validation" && itMMM->first == "Lumibased Online-DataBase fit") {
185  ibooker.setCurrentFolder(monitorName_ + "Validation");
186  itMMM->second = ibooker.book1D(name, title, lastLumi - firstLumi + 1, firstLumi - 0.5, lastLumi + 0.5);
187  itMMM->second->setEfficiencyFlag();
188  } else if (itMM->first == "validation" && itMMM->first != "Lumibased Online-DataBase fit" &&
189  (itM->first == "x" || itM->first == "y" || itM->first == "z")) {
190  ibooker.setCurrentFolder(monitorName_ + "Validation");
191  itMMM->second = ibooker.book1D(name, title, lastLumi - firstLumi + 1, firstLumi - 0.5, lastLumi + 0.5);
192  itMMM->second->setEfficiencyFlag();
193  } else if (itMM->first == "validation" &&
194  (itM->first == "sigmaX" || itM->first == "sigmaY" || itM->first == "sigmaZ")) {
195  ibooker.setCurrentFolder(monitorName_ + "Validation");
196  itMMM->second = nullptr;
197  } else {
198  LogInfo("AlcaBeamMonitorClient") << "Unrecognized category " << itMM->first;
199  // assert(0);
200  }
201  if (itMMM->second != nullptr) {
202  if (itMMM->first.find('-') != string::npos) {
203  itMMM->second->setAxisTitle(string("#Delta ") + itM->first + "_{0} (cm)", 2);
204  } else {
205  itMMM->second->setAxisTitle(itM->first + "_{0} (cm)", 2);
206  }
207  itMMM->second->setAxisTitle("Lumisection", 1);
208  }
209  }
210  }
211  }
212  }
213 
214  // create and cd into new folder
215  ibooker.setCurrentFolder(monitorName_ + "Validation");
216  //Book histograms
217  hD0Phi0_ = ibooker.bookProfile("hD0Phi0", "d_{0} vs. #phi_{0} (All Tracks)", 63, -3.15, 3.15, 100, -0.5, 0.5, "");
218  hD0Phi0_->setAxisTitle("#phi_{0} (rad)", 1);
219  hD0Phi0_->setAxisTitle("d_{0} (cm)", 2);
220 
221  ibooker.setCurrentFolder(monitorName_ + "Debug");
222  hDxyBS_ = ibooker.book1D("hDxyBS", "dxy_{0} w.r.t. Beam spot (All Tracks)", 100, -0.1, 0.1);
223  hDxyBS_->setAxisTitle("dxy_{0} w.r.t. Beam spot (cm)", 1);
224 }
MonitorElement * hD0Phi0_
MonitorElement * hDxyBS_
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:399
Log< level::Info, false > LogInfo
HistosContainer histosMap_
std::string monitorName_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)

◆ dqmEndRun()

void AlcaBeamMonitor::dqmEndRun ( edm::Run const &  ,
edm::EventSetup const &   
)
overrideprotectedvirtual

Reimplemented from DQMOneEDAnalyzer< edm::LuminosityBlockCache< alcabeammonitor::BeamSpotInfo > >.

Definition at line 500 of file AlcaBeamMonitor.cc.

References newFWLiteAna::bin, histosMap_, beamSpotPI::lastLumi, genParticles_cff::map, SiStripPI::max, allConversions_cfi::maxDelta, SiStripPI::min, processedLumis_, edm::second(), and jetUpdater_cfi::sort.

500  {
501  if (processedLumis_.empty()) {
502  return;
503  }
504 
505  const double bigNumber = 1000000.;
506  std::sort(processedLumis_.begin(), processedLumis_.end());
507  int firstLumi = *processedLumis_.begin();
508  int lastLumi = *(--processedLumis_.end());
509 
510  for (HistosContainer::iterator itH = histosMap_.begin(); itH != histosMap_.end(); itH++) {
511  for (map<string, map<string, MonitorElement*> >::iterator itHH = itH->second.begin(); itHH != itH->second.end();
512  itHH++) {
513  double min = bigNumber;
514  double max = -bigNumber;
515  double minDelta = bigNumber;
516  double maxDelta = -bigNumber;
517  // double minDeltaProf = bigNumber;
518  // double maxDeltaProf = -bigNumber;
519  if (itHH->first != "run") {
520  for (map<string, MonitorElement*>::iterator itHHH = itHH->second.begin(); itHHH != itHH->second.end();
521  itHHH++) {
522  if (itHHH->second != nullptr) {
523  for (int bin = 1; bin <= itHHH->second->getTH1()->GetNbinsX(); bin++) {
524  if (itHHH->second->getTH1()->GetBinError(bin) != 0 || itHHH->second->getTH1()->GetBinContent(bin) != 0) {
525  if (itHHH->first == "Lumibased BeamSpotFit" || itHHH->first == "Lumibased PrimaryVertex" ||
526  itHHH->first == "Lumibased DataBase" || itHHH->first == "Lumibased Online") {
527  if (min > itHHH->second->getTH1()->GetBinContent(bin)) {
528  min = itHHH->second->getTH1()->GetBinContent(bin);
529  }
530  if (max < itHHH->second->getTH1()->GetBinContent(bin)) {
531  max = itHHH->second->getTH1()->GetBinContent(bin);
532  }
533  } else if (itHHH->first == "Lumibased PrimaryVertex-DataBase fit" ||
534  itHHH->first == "Lumibased PrimaryVertex-Online fit" ||
535  itHHH->first == "Lumibased Online-DataBase fit" ||
536  itHHH->first == "Lumibased PrimaryVertex-DataBase" ||
537  itHHH->first == "Lumibased PrimaryVertex-Online") {
538  if (minDelta > itHHH->second->getTH1()->GetBinContent(bin)) {
539  minDelta = itHHH->second->getTH1()->GetBinContent(bin);
540  }
541  if (maxDelta < itHHH->second->getTH1()->GetBinContent(bin)) {
542  maxDelta = itHHH->second->getTH1()->GetBinContent(bin);
543  }
544  } else {
545  LogInfo("AlcaBeamMonitorClient") << "The histosMap_ have a histogram named " << itHHH->first
546  << " that I can't recognize in this loop!";
547  // assert(0);
548  }
549  }
550  }
551  }
552  }
553  for (map<string, MonitorElement*>::iterator itHHH = itHH->second.begin(); itHHH != itHH->second.end();
554  itHHH++) {
555  if (itHHH->second != nullptr) {
556  if (itHHH->first == "Lumibased BeamSpotFit" || itHHH->first == "Lumibased PrimaryVertex" ||
557  itHHH->first == "Lumibased DataBase" || itHHH->first == "Lumibased Online") {
558  if ((max == -bigNumber && min == bigNumber) || max - min == 0) {
559  itHHH->second->getTH1()->SetMinimum(itHHH->second->getTH1()->GetMinimum() - 0.01);
560  itHHH->second->getTH1()->SetMaximum(itHHH->second->getTH1()->GetMaximum() + 0.01);
561  } else {
562  itHHH->second->getTH1()->SetMinimum(min - 0.1 * (max - min));
563  itHHH->second->getTH1()->SetMaximum(max + 0.1 * (max - min));
564  }
565  } else if (itHHH->first == "Lumibased PrimaryVertex-DataBase fit" ||
566  itHHH->first == "Lumibased PrimaryVertex-Online fit" ||
567  itHHH->first == "Lumibased Online-DataBase fit" ||
568  itHHH->first == "Lumibased PrimaryVertex-DataBase" ||
569  itHHH->first == "Lumibased PrimaryVertex-Online") {
570  if ((maxDelta == -bigNumber && minDelta == bigNumber) || maxDelta - minDelta == 0) {
571  itHHH->second->getTH1()->SetMinimum(itHHH->second->getTH1()->GetMinimum() - 0.01);
572  itHHH->second->getTH1()->SetMaximum(itHHH->second->getTH1()->GetMaximum() + 0.01);
573  } else {
574  itHHH->second->getTH1()->SetMinimum(minDelta - 2 * (maxDelta - minDelta));
575  itHHH->second->getTH1()->SetMaximum(maxDelta + 2 * (maxDelta - minDelta));
576  }
577  } else {
578  LogInfo("AlcaBeamMonitorClient") << "The histosMap_ have a histogram named " << itHHH->first
579  << " that I can't recognize in this loop!";
580  }
581  itHHH->second->getTH1()->GetXaxis()->SetRangeUser(firstLumi - 0.5, lastLumi + 0.5);
582  }
583  }
584  }
585  }
586  }
587 }
U second(std::pair< T, U > const &p)
std::vector< int > processedLumis_
Log< level::Info, false > LogInfo
HistosContainer histosMap_

◆ fillDescriptions()

void AlcaBeamMonitor::fillDescriptions ( edm::ConfigurationDescriptions iDesc)
static

Definition at line 87 of file AlcaBeamMonitor.cc.

References edm::ConfigurationDescriptions::addDefault(), edm::ParameterSetDescription::addUntracked(), BeamFitter::fillDescription(), PVFitter::fillDescription(), and AlCaHLTBitMon_QueryRunRegistry::string.

87  {
89 
90  ps.addUntracked<std::string>("MonitorName", "YourSubsystemName");
91  ps.addUntracked<edm::InputTag>("PrimaryVertexLabel");
92  ps.addUntracked<edm::InputTag>("TrackLabel");
93  ps.addUntracked<edm::InputTag>("ScalerLabel");
94  ps.addUntracked<bool>("perLSsaving");
95 
98 
99  iDesc.addDefault(ps);
100 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void addDefault(ParameterSetDescription const &psetDescription)
static void fillDescription(edm::ParameterSetDescription &)
Definition: PVFitter.cc:97
static void fillDescription(edm::ParameterSetDescription &)
Definition: BeamFitter.cc:224

◆ globalBeginLuminosityBlock()

std::shared_ptr< alcabeammonitor::BeamSpotInfo > AlcaBeamMonitor::globalBeginLuminosityBlock ( const edm::LuminosityBlock iLumi,
const edm::EventSetup iSetup 
) const
overrideprotected

Definition at line 227 of file AlcaBeamMonitor.cc.

References align::BeamSpot, beamSpotToken_, BeamSpotObjects::beamType(), BeamSpotObjects::beamWidthX(), BeamSpotObjects::beamWidthY(), BeamSpotObjects::betaStar(), BeamSpotObjects::covariance(), BeamSpotObjects::dxdz(), BeamSpotObjects::dydz(), BeamSpotObjects::emittanceX(), BeamSpotObjects::emittanceY(), cppFunctionSkipper::exception, reco::BeamSpot::Fake, edm::EventSetup::getHandle(), mps_fire::i, edm::LuminosityBlockBase::id(), dqmiolumiharvest::j, edm::LuminosityBlockID::luminosityBlock(), makeMuonMisalignmentScenario::matrix, reco::BeamSpot::setBeamWidthY(), BeamSpotObjects::sigmaZ(), reco::BeamSpot::Tracker, BeamSpotObjects::x(), BeamSpotObjects::y(), and BeamSpotObjects::z().

228  {
229  // Always create a beamspot group for each lumi weather we have results or not! Each Beamspot will be of unknown type!
230 
231  auto beamSpotInfo = std::make_shared<alcabeammonitor::BeamSpotInfo>();
232 
233  //Read BeamSpot from DB
234  ESHandle<BeamSpotObjects> bsDBHandle;
235  try {
236  bsDBHandle = iSetup.getHandle(beamSpotToken_);
237  } catch (cms::Exception& exception) {
238  LogError("AlcaBeamMonitor") << exception.what();
239  return nullptr;
240  }
241  if (bsDBHandle.isValid()) { // check the product
242  const BeamSpotObjects* spotDB = bsDBHandle.product();
243 
244  // translate from BeamSpotObjects to reco::BeamSpot
245  BeamSpot::Point apoint(spotDB->x(), spotDB->y(), spotDB->z());
246 
248  for (int i = 0; i < 7; ++i) {
249  for (int j = 0; j < 7; ++j) {
250  matrix(i, j) = spotDB->covariance(i, j);
251  }
252  }
253 
254  beamSpotInfo->beamSpotMap_["DB"] =
255  BeamSpot(apoint, spotDB->sigmaZ(), spotDB->dxdz(), spotDB->dydz(), spotDB->beamWidthX(), matrix);
256 
257  BeamSpot* aSpot = &(beamSpotInfo->beamSpotMap_["DB"]);
258 
259  aSpot->setBeamWidthY(spotDB->beamWidthY());
260  aSpot->setEmittanceX(spotDB->emittanceX());
261  aSpot->setEmittanceY(spotDB->emittanceY());
262  aSpot->setbetaStar(spotDB->betaStar());
263 
264  if (spotDB->beamType() == 2) {
265  aSpot->setType(reco::BeamSpot::Tracker);
266  } else {
267  aSpot->setType(reco::BeamSpot::Fake);
268  }
269  //LogInfo("AlcaBeamMonitor")
270  // << *aSpot << std::endl;
271  } else {
272  LogInfo("AlcaBeamMonitor") << "Database BeamSpot is not valid at lumi: " << iLumi.id().luminosityBlock();
273  }
274  return beamSpotInfo;
275 }
double emittanceX() const
get emittance
math::Error< dimension >::type CovarianceMatrix
Definition: BeamSpot.h:29
LuminosityBlockNumber_t luminosityBlock() const
double z() const
get Z beam position
double dydz() const
get dydz slope, crossing angle in YZ
double covariance(int i, int j) const
get i,j element of the full covariance matrix 7x7
math::XYZPoint Point
point in the space
Definition: BeamSpot.h:27
double beamWidthX() const
get average transverse beam width
Log< level::Error, false > LogError
int beamType() const
get beam type
void setBeamWidthY(double v)
Definition: BeamSpot.h:105
double x() const
get X beam position
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:130
const edm::ESGetToken< BeamSpotObjects, BeamSpotObjectsRcd > beamSpotToken_
double beamWidthY() const
get average transverse beam width
Log< level::Info, false > LogInfo
double y() const
get Y beam position
LuminosityBlockID id() const
double sigmaZ() const
get sigma Z, RMS bunch length
double emittanceY() const
get emittance
double betaStar() const
get beta star
double dxdz() const
get dxdz slope, crossing angle in XZ

◆ globalEndLuminosityBlock()

void AlcaBeamMonitor::globalEndLuminosityBlock ( const edm::LuminosityBlock iLumi,
const edm::EventSetup iSetup 
)
overrideprotected

Definition at line 319 of file AlcaBeamMonitor.cc.

References dqmdumpme::first, timingPdfMaker::histo, histoByCategoryNames_, histosMap_, edm::LuminosityBlockBase::id(), edm::LuminosityBlock::index(), edm::LuminosityBlockID::luminosityBlock(), conifer::pow(), processedLumis_, edm::second(), mathSSE::sqrt(), theBeamFitter_, thePVFitter_, align::Tracker, varNamesV_, and trackerHitRTTI::vector.

319  {
320  processedLumis_.push_back(iLumi.id().luminosityBlock());
321 
322  auto beamSpotInfo = luminosityBlockCache(iLumi.index());
323  if (theBeamFitter_->runPVandTrkFitter()) {
324  beamSpotInfo->beamSpotMap_["BF"] = theBeamFitter_->getBeamSpot();
325  }
326  theBeamFitter_->resetTrkVector();
327  theBeamFitter_->resetLSRange();
328  theBeamFitter_->resetRefTime();
329  theBeamFitter_->resetPVFitter();
330 
331  if (thePVFitter_->runFitter()) {
332  beamSpotInfo->beamSpotMap_["PV"] = thePVFitter_->getBeamSpot();
333  }
334  thePVFitter_->resetAll();
335 
336  // "PV,BF..." Value,Error
337  map<std::string, pair<double, double> > resultsMap;
338  vector<pair<double, double> > vertexResults;
339  MonitorElement* histo = nullptr;
340  for (vector<string>::iterator itV = varNamesV_.begin(); itV != varNamesV_.end(); itV++) {
341  resultsMap.clear();
342  for (BeamSpotContainer::iterator itBS = beamSpotInfo->beamSpotMap_.begin();
343  itBS != beamSpotInfo->beamSpotMap_.end();
344  itBS++) {
345  if (itBS->second.type() == BeamSpot::Tracker) {
346  if (*itV == "x") {
347  resultsMap[itBS->first] = pair<double, double>(itBS->second.x0(), itBS->second.x0Error());
348  } else if (*itV == "y") {
349  resultsMap[itBS->first] = pair<double, double>(itBS->second.y0(), itBS->second.y0Error());
350  } else if (*itV == "z") {
351  resultsMap[itBS->first] = pair<double, double>(itBS->second.z0(), itBS->second.z0Error());
352  } else if (*itV == "sigmaX") {
353  resultsMap[itBS->first] = pair<double, double>(itBS->second.BeamWidthX(), itBS->second.BeamWidthXError());
354  } else if (*itV == "sigmaY") {
355  resultsMap[itBS->first] = pair<double, double>(itBS->second.BeamWidthY(), itBS->second.BeamWidthYError());
356  } else if (*itV == "sigmaZ") {
357  resultsMap[itBS->first] = pair<double, double>(itBS->second.sigmaZ(), itBS->second.sigmaZ0Error());
358  } else {
359  LogInfo("AlcaBeamMonitor") << "The histosMap_ has been built with the name " << *itV
360  << " that I can't recognize!";
361  //assert(0);
362  }
363  }
364  }
365  vertexResults.clear();
366  for (vector<VertexCollection>::iterator itPV = beamSpotInfo->vertices_.begin();
367  itPV != beamSpotInfo->vertices_.end();
368  itPV++) {
369  if (!itPV->empty()) {
370  for (VertexCollection::const_iterator pv = itPV->begin(); pv != itPV->end(); pv++) {
371  if (pv->isFake() || pv->tracksSize() < 10)
372  continue;
373  if (*itV == "x") {
374  vertexResults.push_back(pair<double, double>(pv->x(), pv->xError()));
375  } else if (*itV == "y") {
376  vertexResults.push_back(pair<double, double>(pv->y(), pv->yError()));
377  } else if (*itV == "z") {
378  vertexResults.push_back(pair<double, double>(pv->z(), pv->zError()));
379  } else if (*itV != "sigmaX" && *itV != "sigmaY" && *itV != "sigmaZ") {
380  LogInfo("AlcaBeamMonitor") << "The histosMap_ has been built with the name " << *itV
381  << " that I can't recognize!";
382  //assert(0);
383  }
384  }
385  }
386  }
387 
388  for (multimap<string, string>::iterator itM = histoByCategoryNames_.begin(); itM != histoByCategoryNames_.end();
389  itM++) {
390  if ((histo = histosMap_[*itV][itM->first][itM->second]) == nullptr)
391  continue;
392  if (itM->second == "Coordinate") {
393  if (beamSpotInfo->beamSpotMap_.find("DB") != beamSpotInfo->beamSpotMap_.end()) {
394  histo->Fill(resultsMap["DB"].first);
395  }
396  } else if (itM->second == "PrimaryVertex fit-DataBase") {
397  if (resultsMap.find("PV") != resultsMap.end() && resultsMap.find("DB") != resultsMap.end()) {
398  histo->Fill(resultsMap["PV"].first - resultsMap["DB"].first);
399  }
400  } else if (itM->second == "PrimaryVertex fit-BeamFit") {
401  if (resultsMap.find("PV") != resultsMap.end() && resultsMap.find("BF") != resultsMap.end()) {
402  histo->Fill(resultsMap["PV"].first - resultsMap["BF"].first);
403  }
404  } else if (itM->second == "PrimaryVertex fit-Online") {
405  if (resultsMap.find("PV") != resultsMap.end() && resultsMap.find("SC") != resultsMap.end()) {
406  histo->Fill(resultsMap["PV"].first - resultsMap["SC"].first);
407  }
408  } else if (itM->second == "PrimaryVertex-DataBase") {
409  if (resultsMap.find("PV") != resultsMap.end() && resultsMap.find("DB") != resultsMap.end()) {
410  for (vector<pair<double, double> >::iterator itPV = vertexResults.begin(); itPV != vertexResults.end();
411  itPV++) {
412  histo->Fill(itPV->first - resultsMap["DB"].first);
413  }
414  }
415  } else if (itM->second == "PrimaryVertex-BeamFit") {
416  if (resultsMap.find("PV") != resultsMap.end() && resultsMap.find("BF") != resultsMap.end()) {
417  for (vector<pair<double, double> >::iterator itPV = vertexResults.begin(); itPV != vertexResults.end();
418  itPV++) {
419  histo->Fill(itPV->first - resultsMap["BF"].first);
420  }
421  }
422  } else if (itM->second == "PrimaryVertex-Online") {
423  if (resultsMap.find("PV") != resultsMap.end() && resultsMap.find("SC") != resultsMap.end()) {
424  for (vector<pair<double, double> >::iterator itPV = vertexResults.begin(); itPV != vertexResults.end();
425  itPV++) {
426  histo->Fill(itPV->first - resultsMap["SC"].first);
427  }
428  }
429  } else if (itM->second == "Lumibased BeamSpotFit") {
430  if (resultsMap.find("BF") != resultsMap.end()) {
431  histo->setBinContent(iLumi.id().luminosityBlock(), resultsMap["BF"].first);
432  histo->setBinError(iLumi.id().luminosityBlock(), resultsMap["BF"].second);
433  }
434  } else if (itM->second == "Lumibased PrimaryVertex") {
435  if (resultsMap.find("PV") != resultsMap.end()) {
436  histo->setBinContent(iLumi.id().luminosityBlock(), resultsMap["PV"].first);
437  histo->setBinError(iLumi.id().luminosityBlock(), resultsMap["PV"].second);
438  }
439  } else if (itM->second == "Lumibased DataBase") {
440  if (resultsMap.find("DB") != resultsMap.end()) {
441  histo->setBinContent(iLumi.id().luminosityBlock(), resultsMap["DB"].first);
442  histo->setBinError(iLumi.id().luminosityBlock(), resultsMap["DB"].second);
443  }
444  } else if (itM->second == "Lumibased Online") {
445  if (resultsMap.find("SC") != resultsMap.end()) {
446  histo->setBinContent(iLumi.id().luminosityBlock(), resultsMap["SC"].first);
447  histo->setBinError(iLumi.id().luminosityBlock(), resultsMap["SC"].second);
448  }
449  } else if (itM->second == "Lumibased PrimaryVertex-DataBase fit") {
450  if (resultsMap.find("PV") != resultsMap.end() && resultsMap.find("DB") != resultsMap.end()) {
451  histo->setBinContent(iLumi.id().luminosityBlock(), resultsMap["PV"].first - resultsMap["DB"].first);
452  histo->setBinError(iLumi.id().luminosityBlock(),
453  std::sqrt(std::pow(resultsMap["PV"].second, 2) + std::pow(resultsMap["DB"].second, 2)));
454  }
455  } else if (itM->second == "Lumibased PrimaryVertex-Online fit") {
456  if (resultsMap.find("PV") != resultsMap.end() && resultsMap.find("SC") != resultsMap.end()) {
457  histo->setBinContent(iLumi.id().luminosityBlock(), resultsMap["PV"].first - resultsMap["SC"].first);
458  histo->setBinError(iLumi.id().luminosityBlock(),
459  std::sqrt(std::pow(resultsMap["PV"].second, 2) + std::pow(resultsMap["SC"].second, 2)));
460  }
461  } else if (itM->second == "Lumibased Online-DataBase fit") {
462  if (resultsMap.find("SC") != resultsMap.end() && resultsMap.find("DB") != resultsMap.end()) {
463  histo->setBinContent(iLumi.id().luminosityBlock(), resultsMap["SC"].first - resultsMap["DB"].first);
464  histo->setBinError(iLumi.id().luminosityBlock(),
465  std::sqrt(std::pow(resultsMap["SC"].second, 2) + std::pow(resultsMap["DB"].second, 2)));
466  }
467  } else if (itM->second == "Lumibased PrimaryVertex-DataBase") {
468  if (resultsMap.find("DB") != resultsMap.end() && !vertexResults.empty()) {
469  for (vector<pair<double, double> >::iterator itPV = vertexResults.begin(); itPV != vertexResults.end();
470  itPV++) {
471  histo->setBinContent(iLumi.id().luminosityBlock(), (*itPV).first - resultsMap["DB"].first);
472  histo->setBinError(iLumi.id().luminosityBlock(),
473  std::sqrt(std::pow((*itPV).second, 2) + std::pow(resultsMap["DB"].second, 2)));
474  }
475  }
476  } else if (itM->second == "Lumibased PrimaryVertex-Online") {
477  if (resultsMap.find("SC") != resultsMap.end() && !vertexResults.empty()) {
478  for (vector<pair<double, double> >::iterator itPV = vertexResults.begin(); itPV != vertexResults.end();
479  itPV++) {
480  histo->setBinContent(iLumi.id().luminosityBlock(), (*itPV).first - resultsMap["SC"].first);
481  histo->setBinError(iLumi.id().luminosityBlock(),
482  std::sqrt(std::pow((*itPV).second, 2) + std::pow(resultsMap["SC"].second, 2)));
483  }
484  }
485  }
486  // else if(itM->second == "Lumibased Online-DataBase"){
487  // if(resultsMap.find("SC") != resultsMap.end() && resultsMap.find("DB") != resultsMap.end()){
488  // itHHH->second->Fill(bin,resultsMap["SC"].first-resultsMap["DB"].first);
489  // }
490  // }
491  else {
492  LogInfo("AlcaBeamMonitor") << "The histosMap_ have a histogram named " << itM->second
493  << " that I can't recognize in this loop!";
494  //assert(0);
495  }
496  }
497  }
498 }
LuminosityBlockNumber_t luminosityBlock() const
std::multimap< std::string, std::string > histoByCategoryNames_
constexpr int pow(int x)
Definition: conifer.h:24
U second(std::pair< T, U > const &p)
std::vector< std::string > varNamesV_
T sqrt(T t)
Definition: SSEVec.h:19
std::vector< int > processedLumis_
Log< level::Info, false > LogInfo
std::unique_ptr< PVFitter > thePVFitter_
std::unique_ptr< BeamFitter > theBeamFitter_
LuminosityBlockID id() const
HistosContainer histosMap_
LuminosityBlockIndex index() const

Member Data Documentation

◆ beamSpotToken_

const edm::ESGetToken<BeamSpotObjects, BeamSpotObjectsRcd> AlcaBeamMonitor::beamSpotToken_
private

Definition at line 65 of file AlcaBeamMonitor.h.

Referenced by globalBeginLuminosityBlock().

◆ hD0Phi0_

MonitorElement* AlcaBeamMonitor::hD0Phi0_
private

Definition at line 75 of file AlcaBeamMonitor.h.

Referenced by analyze(), and bookHistograms().

◆ hDxyBS_

MonitorElement* AlcaBeamMonitor::hDxyBS_
private

Definition at line 76 of file AlcaBeamMonitor.h.

Referenced by analyze(), and bookHistograms().

◆ histoByCategoryNames_

std::multimap<std::string, std::string> AlcaBeamMonitor::histoByCategoryNames_
private

Definition at line 83 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor(), and globalEndLuminosityBlock().

◆ histosMap_

HistosContainer AlcaBeamMonitor::histosMap_
private

◆ monitorName_

std::string AlcaBeamMonitor::monitorName_
private

Definition at line 61 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor(), and bookHistograms().

◆ numberOfValuesToSave_

int AlcaBeamMonitor::numberOfValuesToSave_
private

Definition at line 69 of file AlcaBeamMonitor.h.

◆ perLSsaving_

bool AlcaBeamMonitor::perLSsaving_
private

Definition at line 66 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor().

◆ positionsMap_

PositionContainer AlcaBeamMonitor::positionsMap_
private

Definition at line 81 of file AlcaBeamMonitor.h.

◆ primaryVertexLabel_

const edm::EDGetTokenT<reco::VertexCollection> AlcaBeamMonitor::primaryVertexLabel_
private

Definition at line 62 of file AlcaBeamMonitor.h.

Referenced by analyze().

◆ processedLumis_

std::vector<int> AlcaBeamMonitor::processedLumis_
private

Definition at line 72 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor(), dqmEndRun(), and globalEndLuminosityBlock().

◆ scalerLabel_

const edm::EDGetTokenT<reco::BeamSpot> AlcaBeamMonitor::scalerLabel_
private

Definition at line 64 of file AlcaBeamMonitor.h.

Referenced by analyze().

◆ theBeamFitter_

std::unique_ptr<BeamFitter> AlcaBeamMonitor::theBeamFitter_
private

Definition at line 70 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor(), analyze(), and globalEndLuminosityBlock().

◆ thePVFitter_

std::unique_ptr<PVFitter> AlcaBeamMonitor::thePVFitter_
private

Definition at line 71 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor(), analyze(), and globalEndLuminosityBlock().

◆ trackLabel_

const edm::EDGetTokenT<reco::TrackCollection> AlcaBeamMonitor::trackLabel_
private

Definition at line 63 of file AlcaBeamMonitor.h.

Referenced by analyze().

◆ varNamesV_

std::vector<std::string> AlcaBeamMonitor::varNamesV_
private

Definition at line 82 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor(), and globalEndLuminosityBlock().