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 noexcept final
 
bool wantsGlobalRuns () const noexcept final
 
bool wantsInputProcessBlocks () const noexcept final
 
bool wantsProcessBlocks () const noexcept final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const noexcept
 
bool wantsStreamRuns () const noexcept
 
 ~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 56 of file AlcaBeamMonitor.h.

Member Typedef Documentation

◆ BeamSpotContainer

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

Definition at line 72 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 74 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 76 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, eostools::move(), primaryVertexLabel_, L1TEGammaOffline_cfi::PVCollection, scalerLabel_, theBeamFitter_, thePVFitter_, HLT_2024v14_cff::track, reco::BeamSpot::Tracker, trackLabel_, DiMuonV_cfg::tracks, and AlignmentTracksFromVertexSelector_cfi::vertices.

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  std::vector<alcabeammonitor::pvPosAndErr> vertices;
300  vertices.reserve(PVCollection->size());
301  for (const auto& pv : *PVCollection.product()) {
302  if (pv.isFake() || pv.tracksSize() < 10)
303  continue;
304  vertices.emplace_back(pv);
305  }
306  vertices.shrink_to_fit();
307  beamSpotInfo->vertices_.emplace_back(std::move(vertices));
308  }
309 
310  if (beamSpotInfo->beamSpotMap_.find("SC") == beamSpotInfo->beamSpotMap_.end()) {
311  //BeamSpot from file for this stream is = to the scalar BeamSpot
312  if (Handle<BeamSpot> recoBeamSpotHandle = iEvent.getHandle(scalerLabel_)) {
313  beamSpotInfo->beamSpotMap_["SC"] = *recoBeamSpotHandle;
314  if (beamSpotInfo->beamSpotMap_["SC"].BeamWidthX() != 0) {
315  beamSpotInfo->beamSpotMap_["SC"].setType(reco::BeamSpot::Tracker);
316  } else {
317  beamSpotInfo->beamSpotMap_["SC"].setType(reco::BeamSpot::Fake);
318  }
319  } else {
320  LogWarning("AlcaBeamMonitor") << "No BeamSpot from scalers is available";
321  return;
322  }
323  }
324 }
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_
def move(src, dest)
Definition: eostools.py:511

◆ 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_, mergeVDriftHistosByStation::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:408
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 503 of file AlcaBeamMonitor.cc.

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

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

References dqmdumpme::first, timingPdfMaker::histo, histoByCategoryNames_, histosMap_, Hcal_Conditions_forGlobalTag_cff::iLumi, funct::pow(), processedLumis_, edm::second(), mathSSE::sqrt(), theBeamFitter_, thePVFitter_, align::Tracker, varNamesV_, and trackerHitRTTI::vector.

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

Member Data Documentation

◆ beamSpotToken_

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

Definition at line 83 of file AlcaBeamMonitor.h.

Referenced by globalBeginLuminosityBlock().

◆ hD0Phi0_

MonitorElement* AlcaBeamMonitor::hD0Phi0_
private

Definition at line 93 of file AlcaBeamMonitor.h.

Referenced by analyze(), and bookHistograms().

◆ hDxyBS_

MonitorElement* AlcaBeamMonitor::hDxyBS_
private

Definition at line 94 of file AlcaBeamMonitor.h.

Referenced by analyze(), and bookHistograms().

◆ histoByCategoryNames_

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

Definition at line 101 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor(), and globalEndLuminosityBlock().

◆ histosMap_

HistosContainer AlcaBeamMonitor::histosMap_
private

◆ monitorName_

std::string AlcaBeamMonitor::monitorName_
private

Definition at line 79 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor(), and bookHistograms().

◆ numberOfValuesToSave_

int AlcaBeamMonitor::numberOfValuesToSave_
private

Definition at line 87 of file AlcaBeamMonitor.h.

◆ perLSsaving_

bool AlcaBeamMonitor::perLSsaving_
private

Definition at line 84 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor().

◆ positionsMap_

PositionContainer AlcaBeamMonitor::positionsMap_
private

Definition at line 99 of file AlcaBeamMonitor.h.

◆ primaryVertexLabel_

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

Definition at line 80 of file AlcaBeamMonitor.h.

Referenced by analyze().

◆ processedLumis_

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

Definition at line 90 of file AlcaBeamMonitor.h.

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

◆ scalerLabel_

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

Definition at line 82 of file AlcaBeamMonitor.h.

Referenced by analyze().

◆ theBeamFitter_

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

Definition at line 88 of file AlcaBeamMonitor.h.

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

◆ thePVFitter_

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

Definition at line 89 of file AlcaBeamMonitor.h.

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

◆ trackLabel_

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

Definition at line 81 of file AlcaBeamMonitor.h.

Referenced by analyze().

◆ varNamesV_

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

Definition at line 100 of file AlcaBeamMonitor.h.

Referenced by AlcaBeamMonitor(), and globalEndLuminosityBlock().