CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Attributes
ESTrendTask Class Reference

#include <ESTrendTask.h>

Inheritance diagram for ESTrendTask:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Member Functions

 ESTrendTask (const edm::ParameterSet &ps)
 
 ~ESTrendTask () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
void beginStream (edm::StreamID id) final
 
 DQMEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
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
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (const edm::Run &r, const edm::EventSetup &c) override
 
void shift2Left (TProfile *p, int bins=1)
 
void shift2Right (TProfile *p, int bins=1)
 
void updateTime (const edm::Event &)
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 

Private Attributes

long int current_time_
 
edm::EDGetTokenT< ESRawDataCollectiondccCollections_
 
MonitorElementhESFiberErrTrend_
 
MonitorElementhESFiberErrTrendHr_
 
MonitorElementhESRecHitTrend_ [2][2]
 
MonitorElementhESRecHitTrendHr_ [2][2]
 
MonitorElementhESSLinkErrTrend_
 
MonitorElementhESSLinkErrTrendHr_
 
int ievt_
 
long int last_time_
 
std::string prefixME_
 
edm::EDGetTokenT< ESRecHitCollectionrechittoken_
 
long int start_time_
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static void globalEndJob (DQMEDAnalyzerGlobalCache const *)
 
static void globalEndLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup, LuminosityBlockContext const *context)
 
static void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup, RunContext const *context)
 
static std::unique_ptr< DQMEDAnalyzerGlobalCacheinitializeGlobalCache (edm::ParameterSet const &)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Definition at line 15 of file ESTrendTask.h.

Constructor & Destructor Documentation

◆ ESTrendTask()

ESTrendTask::ESTrendTask ( const edm::ParameterSet ps)

Definition at line 22 of file ESTrendTask.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), mps_fire::i, and dqmiolumiharvest::j.

22  {
23  prefixME_ = ps.getUntrackedParameter<string>("prefixME", "EcalPreshower");
24  rechittoken_ = consumes<ESRecHitCollection>(ps.getParameter<InputTag>("RecHitLabel"));
25  dccCollections_ = consumes<ESRawDataCollection>(ps.getParameter<InputTag>("ESDCCCollections"));
26 
27  for (int i = 0; i < 2; ++i)
28  for (int j = 0; j < 2; ++j) {
29  hESRecHitTrend_[i][j] = nullptr;
30  hESRecHitTrendHr_[i][j] = nullptr;
31  }
32 
33  hESSLinkErrTrend_ = nullptr;
34  hESFiberErrTrend_ = nullptr;
35  hESSLinkErrTrendHr_ = nullptr;
36  hESFiberErrTrendHr_ = nullptr;
37 
38  start_time_ = 0;
39  current_time_ = 0;
40  last_time_ = 0;
41 
42  ievt_ = 0;
43 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
MonitorElement * hESRecHitTrendHr_[2][2]
Definition: ESTrendTask.h:53
edm::EDGetTokenT< ESRecHitCollection > rechittoken_
Definition: ESTrendTask.h:46
std::string prefixME_
Definition: ESTrendTask.h:44
MonitorElement * hESSLinkErrTrendHr_
Definition: ESTrendTask.h:54
long int current_time_
Definition: ESTrendTask.h:58
edm::EDGetTokenT< ESRawDataCollection > dccCollections_
Definition: ESTrendTask.h:47
T getUntrackedParameter(std::string const &, T const &) const
long int start_time_
Definition: ESTrendTask.h:57
MonitorElement * hESRecHitTrend_[2][2]
Definition: ESTrendTask.h:49
MonitorElement * hESFiberErrTrend_
Definition: ESTrendTask.h:51
long int last_time_
Definition: ESTrendTask.h:59
MonitorElement * hESFiberErrTrendHr_
Definition: ESTrendTask.h:55
MonitorElement * hESSLinkErrTrend_
Definition: ESTrendTask.h:50

◆ ~ESTrendTask()

ESTrendTask::~ESTrendTask ( )
inlineoverride

Definition at line 21 of file ESTrendTask.h.

21 {}

Member Function Documentation

◆ analyze()

void ESTrendTask::analyze ( const edm::Event e,
const edm::EventSetup c 
)
overrideprotectedvirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 91 of file ESTrendTask.cc.

References edm::SortedCollection< T, SORT >::begin(), MillePedeFileConverter_cfg::e, edm::SortedCollection< T, SORT >::end(), ESDCCHeaderBlock::getDCCErrors(), ESDCCHeaderBlock::getFEChannelStatus(), mps_fire::i, dqmiolumiharvest::j, and ecaldqm::zside().

91  {
92  ievt_++;
93 
94  // Collect time information
95  updateTime(e);
96 
97  long int diff_current_start = current_time_ - start_time_;
98  long int diff_last_start = last_time_ - start_time_;
99  //LogInfo("ESTrendTask") << "time difference is negative in " << ievt_ << " events\n"
100  //<< "\tcurrent - start time = " << diff_current_start
101  //<< ", \tlast - start time = " << diff_last_start << endl;
102 
103  // std::cout << "current_time : " << current_time_ << ", diff : " << diff_current_start << std::endl;
104 
105  // Calculate time interval and bin width
106  // int minuteBinWidth = int(nBasicClusterMinutely_->getTProfile()->GetXaxis()->GetBinWidth(1));
107  int minuteBinWidth = 5;
108  long int minuteBinDiff = diff_current_start / 60 / minuteBinWidth - diff_last_start / 60 / minuteBinWidth;
109  long int minuteDiff = (current_time_ - last_time_) / 60;
110 
111  // int hourBinWidth = int(nBasicClusterHourly_->getTProfile()->GetXaxis()->GetBinWidth(1));
112  int hourBinWidth = 1;
113  long int hourBinDiff = diff_current_start / 3600 / hourBinWidth - diff_last_start / 3600 / hourBinWidth;
114  long int hourDiff = (current_time_ - last_time_) / 3600;
115 
116  if (minuteDiff >= minuteBinWidth) {
117  while (minuteDiff >= minuteBinWidth)
118  minuteDiff -= minuteBinWidth;
119  }
120  if (hourDiff >= hourBinWidth) {
121  while (hourDiff >= hourBinWidth)
122  hourDiff -= hourBinWidth;
123  }
124 
125  // ES DCC
126  Int_t slinkCRCErr = 0;
127  Int_t fiberErr = 0;
128  vector<int> fiberStatus;
130  if (e.getByToken(dccCollections_, dccs)) {
131  for (ESRawDataCollection::const_iterator dccItr = dccs->begin(); dccItr != dccs->end(); ++dccItr) {
132  const ESDCCHeaderBlock& dcc = (*dccItr);
133 
134  if (dcc.getDCCErrors() == 101)
135  slinkCRCErr++;
136 
137  fiberStatus = dcc.getFEChannelStatus();
138  for (unsigned int i = 0; i < fiberStatus.size(); ++i) {
139  if (fiberStatus[i] == 4 || fiberStatus[i] == 8 || fiberStatus[i] == 10 || fiberStatus[i] == 11 ||
140  fiberStatus[i] == 12)
141  fiberErr++;
142  }
143  }
144  }
145 
146  shift2Right(hESSLinkErrTrend_->getTProfile(), minuteBinDiff);
147  hESSLinkErrTrend_->Fill(minuteDiff, slinkCRCErr);
148 
149  shift2Right(hESFiberErrTrend_->getTProfile(), minuteBinDiff);
150  hESFiberErrTrend_->Fill(minuteDiff, fiberErr);
151 
153  hESSLinkErrTrendHr_->Fill(hourDiff, slinkCRCErr);
154 
156  hESFiberErrTrendHr_->Fill(hourDiff, fiberErr);
157 
158  // ES RecHits
159  int zside, plane;
160  int nrh[2][2];
161  for (int i = 0; i < 2; i++)
162  for (int j = 0; j < 2; j++) {
163  nrh[i][j] = 0;
164  }
165 
167  if (e.getByToken(rechittoken_, ESRecHit)) {
168  for (ESRecHitCollection::const_iterator hitItr = ESRecHit->begin(); hitItr != ESRecHit->end(); ++hitItr) {
169  ESDetId id = ESDetId(hitItr->id());
170 
171  zside = id.zside();
172  plane = id.plane();
173 
174  int i = (zside == 1) ? 0 : 1;
175  int j = plane - 1;
176 
177  nrh[i][j]++;
178  }
179  } else {
180  LogWarning("ESTrendTask") << "RecHitCollection not available";
181  }
182 
183  for (int i = 0; i < 2; ++i)
184  for (int j = 0; j < 2; ++j) {
185  shift2Right(hESRecHitTrend_[i][j]->getTProfile(), minuteBinDiff);
186  hESRecHitTrend_[i][j]->Fill(minuteDiff, nrh[i][j] / (1072 * 32.));
187 
188  shift2Right(hESRecHitTrendHr_[i][j]->getTProfile(), hourBinDiff);
189  hESRecHitTrendHr_[i][j]->Fill(hourDiff, nrh[i][j] / (1072 * 32.));
190  }
191 }
MonitorElement * hESRecHitTrendHr_[2][2]
Definition: ESTrendTask.h:53
edm::EDGetTokenT< ESRecHitCollection > rechittoken_
Definition: ESTrendTask.h:46
std::vector< T >::const_iterator const_iterator
void shift2Right(TProfile *p, int bins=1)
Definition: ESTrendTask.cc:198
MonitorElement * hESSLinkErrTrendHr_
Definition: ESTrendTask.h:54
int zside(DetId const &)
long int current_time_
Definition: ESTrendTask.h:58
edm::EDGetTokenT< ESRawDataCollection > dccCollections_
Definition: ESTrendTask.h:47
void Fill(long long x)
long int start_time_
Definition: ESTrendTask.h:57
MonitorElement * hESRecHitTrend_[2][2]
Definition: ESTrendTask.h:49
int getDCCErrors() const
MonitorElement * hESFiberErrTrend_
Definition: ESTrendTask.h:51
const_iterator begin() const
long int last_time_
Definition: ESTrendTask.h:59
virtual TProfile * getTProfile()
const_iterator end() const
MonitorElement * hESFiberErrTrendHr_
Definition: ESTrendTask.h:55
const std::vector< int > & getFEChannelStatus() const
Log< level::Warning, false > LogWarning
void updateTime(const edm::Event &)
Definition: ESTrendTask.cc:193
MonitorElement * hESSLinkErrTrend_
Definition: ESTrendTask.h:50

◆ bookHistograms()

void ESTrendTask::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overrideprotectedvirtual

Implements DQMEDAnalyzer.

Definition at line 51 of file ESTrendTask.cc.

References dqm::implementation::IBooker::bookProfile(), timingPdfMaker::histo, mps_fire::i, dqmiolumiharvest::j, dqm::impl::MonitorElement::setAxisTitle(), and dqm::implementation::NavigatorBase::setCurrentFolder().

51  {
52  char histo[200];
53 
54  iBooker.setCurrentFolder(prefixME_ + "/ESTrendTask");
55 
56  for (int i = 0; i < 2; ++i)
57  for (int j = 0; j < 2; ++j) {
58  int iz = (i == 0) ? 1 : -1;
59  sprintf(histo, "ES Trending RH Occ per 5 mins Z %d P %d", iz, j + 1);
60  hESRecHitTrend_[i][j] = iBooker.bookProfile(histo, histo, 36, 0.0, 180.0, 100, 0.0, 1.0e6, "s");
61  hESRecHitTrend_[i][j]->setAxisTitle("Elapse time (Minutes)", 1);
62  hESRecHitTrend_[i][j]->setAxisTitle("ES RecHit Occupancy / 5 minutes", 2);
63 
64  sprintf(histo, "ES Trending RH Occ per hour Z %d P %d", iz, j + 1);
65  hESRecHitTrendHr_[i][j] = iBooker.bookProfile(histo, histo, 24, 0.0, 24.0, 100, 0.0, 1.0e6, "s");
66  hESRecHitTrendHr_[i][j]->setAxisTitle("Elapse time (Hours)", 1);
67  hESRecHitTrendHr_[i][j]->setAxisTitle("ES RecHit Occupancy / hour", 2);
68  }
69 
70  sprintf(histo, "ES Trending SLink CRC Error per 5 mins");
71  hESSLinkErrTrend_ = iBooker.bookProfile(histo, histo, 36, 0.0, 180.0, 100, 0.0, 1.0e6, "s");
72  hESSLinkErrTrend_->setAxisTitle("Elapse time (Minutes)", 1);
73  hESSLinkErrTrend_->setAxisTitle("ES SLink CRC Err / 5 minutes", 2);
74 
75  sprintf(histo, "ES Trending Fiber Error per 5 mins");
76  hESFiberErrTrend_ = iBooker.bookProfile(histo, histo, 36, 0.0, 180.0, 100, 0.0, 1.0e6, "s");
77  hESFiberErrTrend_->setAxisTitle("Elapse time (Minutes)", 1);
78  hESFiberErrTrend_->setAxisTitle("ES Fiber Err / 5 minutes", 2);
79 
80  sprintf(histo, "ES Trending SLink CRC Error per hour");
81  hESSLinkErrTrendHr_ = iBooker.bookProfile(histo, histo, 24, 0.0, 24.0, 100, 0.0, 1.0e6, "s");
82  hESSLinkErrTrendHr_->setAxisTitle("Elapse time (Hours)", 1);
83  hESSLinkErrTrendHr_->setAxisTitle("ES SLink CRC Err / hour", 2);
84 
85  sprintf(histo, "ES Trending Fiber Error per hour");
86  hESFiberErrTrendHr_ = iBooker.bookProfile(histo, histo, 24, 0.0, 24.0, 100, 0.0, 1.0e6, "s");
87  hESFiberErrTrendHr_->setAxisTitle("Elapse time (Hours)", 1);
88  hESFiberErrTrendHr_->setAxisTitle("ES Fiber Err / hour", 2);
89 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * hESRecHitTrendHr_[2][2]
Definition: ESTrendTask.h:53
std::string prefixME_
Definition: ESTrendTask.h:44
MonitorElement * hESSLinkErrTrendHr_
Definition: ESTrendTask.h:54
MonitorElement * hESRecHitTrend_[2][2]
Definition: ESTrendTask.h:49
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
MonitorElement * hESFiberErrTrend_
Definition: ESTrendTask.h:51
MonitorElement * hESFiberErrTrendHr_
Definition: ESTrendTask.h:55
MonitorElement * hESSLinkErrTrend_
Definition: ESTrendTask.h:50
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)

◆ dqmBeginRun()

void ESTrendTask::dqmBeginRun ( const edm::Run r,
const edm::EventSetup c 
)
overrideprotectedvirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 45 of file ESTrendTask.cc.

45  {
46  start_time_ = (r.beginTime()).unixTime();
47 
48  //std::cout << "start time : " << start_time_ << std::endl;
49 }
long int start_time_
Definition: ESTrendTask.h:57

◆ shift2Left()

void ESTrendTask::shift2Left ( TProfile *  p,
int  bins = 1 
)
protected

Definition at line 226 of file ESTrendTask.cc.

References trigObjTnPSource_cfi::bins, mps_fire::i, seedmultiplicitymonitor_newtracking_cfi::nBins, and AlCaHLTBitMon_ParallelJobs::p.

226  {
227  if (bins <= 0)
228  return;
229 
230  if (!p->GetSumw2())
231  p->Sumw2();
232  int nBins = p->GetXaxis()->GetNbins();
233 
234  // by shifting n bin to the left, the number of entries are
235  // reduced by the number in n bins including the underflow bin.
236  double nentries = p->GetEntries();
237  for (int i = 0; i < bins; i++)
238  nentries -= p->GetBinEntries(i);
239  p->SetEntries(nentries);
240 
241  // the first bin goes to underflow
242  // each bin moves to the right
243 
244  TArrayD* sumw2 = p->GetSumw2();
245 
246  for (int i = 0; i <= nBins + 1 - bins; i++) {
247  // GetBinContent return binContent/binEntries
248  p->SetBinContent(i, p->GetBinContent(i + bins) * p->GetBinEntries(i + bins));
249  p->SetBinEntries(i, p->GetBinEntries(i + bins));
250  sumw2->SetAt(sumw2->GetAt(i + bins), i);
251  }
252 }

◆ shift2Right()

void ESTrendTask::shift2Right ( TProfile *  p,
int  bins = 1 
)
protected

Definition at line 198 of file ESTrendTask.cc.

References trigObjTnPSource_cfi::bins, mps_fire::i, seedmultiplicitymonitor_newtracking_cfi::nBins, and AlCaHLTBitMon_ParallelJobs::p.

198  {
199  if (bins <= 0)
200  return;
201 
202  if (!p->GetSumw2())
203  p->Sumw2();
204  int nBins = p->GetXaxis()->GetNbins();
205 
206  // by shifting n bin to the right, the number of entries are
207  // reduced by the number in n bins including the overflow bin.
208  double nentries = p->GetEntries();
209  for (int i = 0; i < bins; i++)
210  nentries -= p->GetBinEntries(nBins + 1 - bins);
211  p->SetEntries(nentries);
212 
213  // the last bin goes to overflow
214  // each bin moves to the right
215 
216  TArrayD* sumw2 = p->GetSumw2();
217 
218  for (int i = nBins + 1; i > bins; i--) {
219  // GetBinContent return binContent/binEntries
220  p->SetBinContent(i, p->GetBinContent(i - bins) * p->GetBinEntries(i - bins));
221  p->SetBinEntries(i, p->GetBinEntries(i - bins));
222  sumw2->SetAt(sumw2->GetAt(i - bins), i);
223  }
224 }

◆ updateTime()

void ESTrendTask::updateTime ( const edm::Event e)
protected

Definition at line 193 of file ESTrendTask.cc.

References MillePedeFileConverter_cfg::e.

193  {
195  current_time_ = e.time().unixTime();
196 }
long int current_time_
Definition: ESTrendTask.h:58
long int last_time_
Definition: ESTrendTask.h:59

Member Data Documentation

◆ current_time_

long int ESTrendTask::current_time_
private

Definition at line 58 of file ESTrendTask.h.

◆ dccCollections_

edm::EDGetTokenT<ESRawDataCollection> ESTrendTask::dccCollections_
private

Definition at line 47 of file ESTrendTask.h.

◆ hESFiberErrTrend_

MonitorElement* ESTrendTask::hESFiberErrTrend_
private

Definition at line 51 of file ESTrendTask.h.

◆ hESFiberErrTrendHr_

MonitorElement* ESTrendTask::hESFiberErrTrendHr_
private

Definition at line 55 of file ESTrendTask.h.

◆ hESRecHitTrend_

MonitorElement* ESTrendTask::hESRecHitTrend_[2][2]
private

Definition at line 49 of file ESTrendTask.h.

◆ hESRecHitTrendHr_

MonitorElement* ESTrendTask::hESRecHitTrendHr_[2][2]
private

Definition at line 53 of file ESTrendTask.h.

◆ hESSLinkErrTrend_

MonitorElement* ESTrendTask::hESSLinkErrTrend_
private

Definition at line 50 of file ESTrendTask.h.

◆ hESSLinkErrTrendHr_

MonitorElement* ESTrendTask::hESSLinkErrTrendHr_
private

Definition at line 54 of file ESTrendTask.h.

◆ ievt_

int ESTrendTask::ievt_
private

Definition at line 42 of file ESTrendTask.h.

◆ last_time_

long int ESTrendTask::last_time_
private

Definition at line 59 of file ESTrendTask.h.

◆ prefixME_

std::string ESTrendTask::prefixME_
private

Definition at line 44 of file ESTrendTask.h.

◆ rechittoken_

edm::EDGetTokenT<ESRecHitCollection> ESTrendTask::rechittoken_
private

Definition at line 46 of file ESTrendTask.h.

◆ start_time_

long int ESTrendTask::start_time_
private

Definition at line 57 of file ESTrendTask.h.