CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
DTBlockedROChannelsTest Class Reference

#include <DTBlockedROChannelsTest.h>

Inheritance diagram for DTBlockedROChannelsTest:
edm::EDAnalyzer

Classes

class  DTRobBinsMap
 

Public Member Functions

 DTBlockedROChannelsTest (const edm::ParameterSet &ps)
 Constructor. More...
 
 ~DTBlockedROChannelsTest ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze. More...
 
void beginJob ()
 BeginJob. More...
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
 
void beginRun (const edm::Run &run, const edm::EventSetup &c)
 BeginRun. More...
 
void endJob ()
 Endjob. More...
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
 DQM Client Diagnostic in online mode. More...
 
void endRun (edm::Run const &run, edm::EventSetup const &eSetup)
 DQM Client Diagnostic in offline mode. More...
 
void performClientDiagnostic ()
 DQM Client operations. More...
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Private Member Functions

int readOutToGeometry (int dduId, int rosNumber, int &wheel, int &sector)
 

Private Attributes

std::map< DTChamberId,
DTRobBinsMap
chamberMap
 
DQMStoredbe
 
DTTimeEvolutionHistohSystFractionVsLS
 
edm::ESHandle< DTReadOutMappingmapping
 
int nevents
 
int neventsPrev
 
unsigned int nLumiSegs
 
int nupdates
 
bool offlineMode
 
int prescaleFactor
 
unsigned int prevNLumiSegs
 
double prevTotalPerc
 
std::map< int, double > resultsPerLumi
 
int run
 
MonitorElementsummaryHisto
 
std::map< int, MonitorElement * > wheelHitos
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 

Detailed Description

Definition at line 26 of file DTBlockedROChannelsTest.h.

Constructor & Destructor Documentation

DTBlockedROChannelsTest::DTBlockedROChannelsTest ( const edm::ParameterSet ps)

Constructor.

Definition at line 30 of file DTBlockedROChannelsTest.cc.

References edm::ParameterSet::getUntrackedParameter(), LogTrace, offlineMode, and prescaleFactor.

30  : nevents(0),
31  neventsPrev(0),
32  prevNLumiSegs(0),
33  prevTotalPerc(0),
35  LogTrace("DTDQM|DTRawToDigi|DTMonitorClient|DTBlockedROChannelsTest")
36  << "[DTBlockedROChannelsTest]: Constructor";
37 
38  // prescale on the # of LS to update the test
39  prescaleFactor = ps.getUntrackedParameter<int>("diagnosticPrescale", 1);
40 
41  offlineMode = ps.getUntrackedParameter<bool>("offlineMode", true);
42 }
T getUntrackedParameter(std::string const &, T const &) const
DTTimeEvolutionHisto * hSystFractionVsLS
#define LogTrace(id)
DTBlockedROChannelsTest::~DTBlockedROChannelsTest ( )

Destructor.

Definition at line 46 of file DTBlockedROChannelsTest.cc.

References LogTrace, and nupdates.

46  {
47  LogTrace("DTDQM|DTRawToDigi|DTMonitorClient|DTBlockedROChannelsTest")
48  << "DataIntegrityTest: analyzed " << nupdates << " updates";
49 }
#define LogTrace(id)

Member Function Documentation

void DTBlockedROChannelsTest::analyze ( const edm::Event e,
const edm::EventSetup c 
)
protectedvirtual

Analyze.

Implements edm::EDAnalyzer.

Definition at line 141 of file DTBlockedROChannelsTest.cc.

References LogTrace, and nevents.

141  {
142  // count the analyzed events
143  nevents++;
144  if(nevents%1000 == 0)
145  LogTrace("DTDQM|DTRawToDigi|DTMonitorClient|DTBlockedROChannelsTest")
146  << "[DTBlockedROChannelsTest]: "<<nevents<<" events";
147 }
#define LogTrace(id)
void DTBlockedROChannelsTest::beginJob ( void  )
protectedvirtual

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 54 of file DTBlockedROChannelsTest.cc.

References DQMStore::book2D(), dbe, hSystFractionVsLS, LogTrace, nupdates, offlineMode, cmsCodeRules.cppFunctionSkipper::operator, run, MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), summaryHisto, and wheelHitos.

54  {
55  LogTrace("DTDQM|DTRawToDigi|DTMonitorClient|DTBlockedROChannelsTest")
56  << "[DTBlockedROChannelsTest]: BeginJob";
57 
58  nupdates = 0;
59  run=0;
60 
62 
63  // book the summary histogram
64  dbe->setCurrentFolder("DT/00-ROChannels");
65  summaryHisto = dbe->book2D("ROChannelSummary","Summary Blocked RO Channels",12,1,13,5,-2,3);
66  summaryHisto->setAxisTitle("Sector",1);
67  summaryHisto->setAxisTitle("Wheel",2);
68 
69  for(int wheel = -2; wheel != 3; ++wheel) {
70  stringstream namestream; namestream << "ROChannelSummary_W" << wheel;
71  stringstream titlestream; titlestream << "Blocked RO Channels (Wh " << wheel << ")";
72  wheelHitos[wheel] = dbe->book2D(namestream.str().c_str(),titlestream.str().c_str(),12,1,13,4,1,5);
73  wheelHitos[wheel]->setAxisTitle("Sector",1);
74  wheelHitos[wheel]->setBinLabel(1,"MB1",2);
75  wheelHitos[wheel]->setBinLabel(2,"MB2",2);
76  wheelHitos[wheel]->setBinLabel(3,"MB3",2);
77  wheelHitos[wheel]->setBinLabel(4,"MB4",2);
78  }
79 
80  if(!offlineMode) {
81  hSystFractionVsLS = new DTTimeEvolutionHisto(dbe, "EnabledROChannelsVsLS", "% RO channels",
82  500, 5, true, 3);
83  }
84 
85 }
DTTimeEvolutionHisto * hSystFractionVsLS
std::map< int, MonitorElement * > wheelHitos
#define LogTrace(id)
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:647
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
void DTBlockedROChannelsTest::beginLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  context 
)
protectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 122 of file DTBlockedROChannelsTest.cc.

References LogTrace, nevents, edm::LuminosityBlockBase::run(), and run.

123  {
124  LogTrace("DTDQM|DTRawToDigi|DTMonitorClient|DTBlockedROChannelsTest")
125  <<"[DTBlockedROChannelsTest]: Begin of LS transition";
126 
127  // Get the run number
128  run = lumiSeg.run();
129  nevents = 0;
130 
131 // // loop over all chambers and read the values at the beginning of the LS
132 // for(map<DTChamberId, DTRobBinsMap>::iterator chAndRobs = chamberMap.begin();
133 // chAndRobs != chamberMap.end(); ++chAndRobs) {
134 // (*chAndRobs).second.readNewValues();
135 // }
136 
137 }
#define LogTrace(id)
void DTBlockedROChannelsTest::beginRun ( const edm::Run run,
const edm::EventSetup c 
)
protectedvirtual

BeginRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 90 of file DTBlockedROChannelsTest.cc.

References chamberMap, dbe, edm::EventSetup::get(), LogTrace, mapping, FEDNumbering::MAXDTFEDID, FEDNumbering::MINDTFEDID, and relativeConstraints::station.

90  {
91  // get the RO mapping
92  context.get<DTReadOutMappingRcd>().get(mapping);
93 
94  // fill the map of the robs per chamber
95  for(int dduId = FEDNumbering::MINDTFEDID; dduId<=FEDNumbering::MAXDTFEDID; ++dduId) { //loop over DDUs
96  for(int ros = 1; ros != 13; ++ros) { // loop over ROSs
97  for(int rob = 1; rob != 26; ++rob) { // loop over ROBs
98  int wheel = 0;
99  int station = 0;
100  int sector = 0;
101  int dummy = 0;
102  if(!mapping->readOutToGeometry(dduId,ros,rob-1,0,2,wheel,station,sector,dummy,dummy,dummy) ||
103  !mapping->readOutToGeometry(dduId,ros,rob-1,0,16,wheel,station,sector,dummy,dummy,dummy)) {
104  DTChamberId chId(wheel, station, sector);
105  if(chamberMap.find(chId) == chamberMap.end()) {
106  chamberMap[chId] = DTRobBinsMap(dduId, ros, dbe);
107  chamberMap[chId].addRobBin(rob);
108  }
109  chamberMap[chId].addRobBin(rob);
110  } else {
111  LogTrace("DTDQM|DTRawToDigi|DTMonitorClient|DTBlockedROChannelsTest")
112  << "[DTRobBinsMap] FED: " << dduId << " ROS " << ros << " ROB: " << rob-1
113  << " not in the mapping!" << endl;
114  }
115  }
116  }
117  }
118 }
std::map< DTChamberId, DTRobBinsMap > chamberMap
edm::ESHandle< DTReadOutMapping > mapping
#define LogTrace(id)
void DTBlockedROChannelsTest::endJob ( void  )
protectedvirtual

Endjob.

Reimplemented from edm::EDAnalyzer.

Definition at line 251 of file DTBlockedROChannelsTest.cc.

References LogTrace.

251  {
252  LogTrace("DTDQM|DTRawToDigi|DTMonitorClient|DTBlockedROChannelsTest")
253  <<"[DTBlockedROChannelsTest] endjob called!";
254 }
#define LogTrace(id)
void DTBlockedROChannelsTest::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
)
protectedvirtual

DQM Client Diagnostic in online mode.

Reimplemented from edm::EDAnalyzer.

Definition at line 151 of file DTBlockedROChannelsTest.cc.

References edm::LuminosityBlockBase::id(), LogTrace, edm::LuminosityBlockID::luminosityBlock(), nLumiSegs, nupdates, offlineMode, performClientDiagnostic(), and prescaleFactor.

151  {
152 
153  // counts number of lumiSegs
154  nLumiSegs = lumiSeg.id().luminosityBlock();
155 
156  // prescale factor
157  if (nLumiSegs%prescaleFactor != 0 || offlineMode) return;
158 
159  LogTrace("DTDQM|DTRawToDigi|DTMonitorClient|DTBlockedROChannelsTest")
160  <<"[DTBlockedROChannelsTest]: End of LS " << nLumiSegs << ". Client called in online mode, performing client operations";
162 
163  // counts number of updats
164  nupdates++;
165 
166 }
#define LogTrace(id)
void performClientDiagnostic()
DQM Client operations.
void DTBlockedROChannelsTest::endRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
)
protectedvirtual

DQM Client Diagnostic in offline mode.

Reimplemented from edm::EDAnalyzer.

Definition at line 259 of file DTBlockedROChannelsTest.cc.

References LogTrace, offlineMode, and performClientDiagnostic().

259  {
260 
261  if (offlineMode) {
262  LogTrace("DTDQM|DTRawToDigi|DTMonitorClient|DTBlockedROChannelsTest")
263  <<"[DTBlockedROChannelsTest] endRun called. Client called in offline mode, performing operations.";
265  }
266 // commented out since trend plots need to be updated in by lumi certification
267 // if(offlineMode) {
268 // // fill a trend plot based on the results stored in the map
269 // float fBin = resultsPerLumi.begin()->first;
270 // float lBin = resultsPerLumi.rbegin()->first;
271 // dbe->setCurrentFolder("DT/00-ROChannels");
272 
273 // // MonitorElement* hSystFractionVsLS = dbe->book1D("EnabledROChannelsVsLS", "% RO channels vs LS", nBins,fBin,lBin);
274 // hSystFractionVsLS = new DTTimeEvolutionHisto(dbe, "EnabledROChannelsVsLS", "% RO channels",
275 // (int)lBin-(int)fBin, fBin, 1, false, 2);
276 
277 // for(map<int, double>::const_iterator bin = resultsPerLumi.begin();
278 // bin != resultsPerLumi.end(); ++bin) {
279 // hSystFractionVsLS->setTimeSlotValue((*bin).second, (*bin).first);
280 // }
281 // }
282 }
#define LogTrace(id)
void performClientDiagnostic()
DQM Client operations.
void DTBlockedROChannelsTest::performClientDiagnostic ( )
protected

DQM Client operations.

Definition at line 169 of file DTBlockedROChannelsTest.cc.

References DTTimeEvolutionHisto::accumulateValueTimeSlot(), chamberMap, dbe, MonitorElement::Fill(), DQMStore::get(), MonitorElement::getIntValue(), hSystFractionVsLS, nevents, neventsPrev, nLumiSegs, offlineMode, prevTotalPerc, MonitorElement::Reset(), DTChamberId::sector(), DTChamberId::station(), summaryHisto, DTTimeEvolutionHisto::updateTimeSlot(), DTChamberId::wheel(), and wheelHitos.

Referenced by endLuminosityBlock(), and endRun().

169  {
170 
171  // skip empty LSs
172 
173  if(nevents == 0) { // hack to work also in offline DQM
174  MonitorElement *procEvt = dbe->get("DT/EventInfo/processedEvents");
175  if(procEvt != 0) {
176  int procEvents = procEvt->getIntValue();
177  nevents = procEvents - neventsPrev;
178  neventsPrev = procEvents;
179  }
180  }
181 
182  double totalPerc = prevTotalPerc;
183  // check again!
184  if(nevents != 0) { // skip the computation if no events in the last LS
185 
186  // reset the histos
187  summaryHisto->Reset();
188  for(int wheel = -2; wheel != 3; ++wheel) {
189  wheelHitos[wheel]->Reset();
190  }
191 
192  totalPerc = 0.;
193 
194  // loop over all chambers and fill the wheel plots
195  for(map<DTChamberId, DTRobBinsMap>::iterator chAndRobs = chamberMap.begin();
196  chAndRobs != chamberMap.end(); ++chAndRobs) {
197  DTChamberId chId = (*chAndRobs).first;
198  double scale = 1.;
199  int sectorForPlot = chId.sector();
200  if(sectorForPlot == 13 || (sectorForPlot == 4 && chId.station() ==4)) {
201  sectorForPlot = 4;
202  scale = 0.5;
203  } else if(sectorForPlot == 14 || (sectorForPlot == 10 && chId.station() ==4)) {
204  sectorForPlot = 10;
205  scale = 0.5;
206  }
207 
208  // NOTE: can be called only ONCE per event per each chamber
209  double chPercent = (*chAndRobs).second.getChamberPercentage();
210  wheelHitos[chId.wheel()]->Fill(sectorForPlot, chId.station(),
211  scale*chPercent);
212  totalPerc += chPercent*scale*1./250.;
213 // if(chPercent != 1.) {
214 // cout << "Ch: " << (*chAndRobs).first << endl;
215 // cout << " perc: " << chPercent << endl;
216 // }
217  // Fill the summary
218  summaryHisto->Fill(sectorForPlot, chId.wheel(), 0.25*scale*chPercent);
219  }
220  }
221 
222 // commented out since trend plots need to be updated in by lumi certification
223 // // this part is executed even if no events were processed in order to include the last LS
224 // if(offlineMode) { // save the results in a map and draw them in the end-run
225 // if(resultsPerLumi.size() == 0) { // the first 2 LS are analyzed together
226 // // cout << "LS: " << nLumiSegs << " total %: " << totalPerc << endl;
227 // resultsPerLumi[nLumiSegs] = totalPerc;
228 // } else {
229 // // cout << "LS: " << nLumiSegs << " total %: " << prevTotalPerc << endl;
230 // resultsPerLumi[nLumiSegs] = prevTotalPerc;
231 // }
232 // prevTotalPerc = totalPerc;
233 // prevNLumiSegs = nLumiSegs;
234 
235 // } else { // directly fill the histo
236 // hSystFractionVsLS->accumulateValueTimeSlot(totalPerc);
237 // hSystFractionVsLS->updateTimeSlot(nLumiSegs, nevents);
238 // prevTotalPerc = totalPerc;
239 // }
240 
241  if(!offlineMode) { // fill trend histo only in online
244  prevTotalPerc = totalPerc;
245  }
246 
247 }
DTTimeEvolutionHisto * hSystFractionVsLS
void accumulateValueTimeSlot(float value)
std::map< DTChamberId, DTRobBinsMap > chamberMap
void Fill(long long x)
std::map< int, MonitorElement * > wheelHitos
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1270
int64_t getIntValue(void) const
void updateTimeSlot(int ls, int nEventsInLS)
int sector() const
Definition: DTChamberId.h:63
int station() const
Return the station number.
Definition: DTChamberId.h:53
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:47
void Reset(void)
reset ME (ie. contents, errors, etc)
int DTBlockedROChannelsTest::readOutToGeometry ( int  dduId,
int  rosNumber,
int &  wheel,
int &  sector 
)
private

Definition at line 286 of file DTBlockedROChannelsTest.cc.

References mapping.

286  {
287 
288  int dummy;
289  return mapping->readOutToGeometry(dduId,ros,2,2,2,wheel,dummy,sector,dummy,dummy,dummy);
290 
291 }
edm::ESHandle< DTReadOutMapping > mapping

Member Data Documentation

std::map<DTChamberId, DTRobBinsMap> DTBlockedROChannelsTest::chamberMap
private

Definition at line 131 of file DTBlockedROChannelsTest.h.

Referenced by beginRun(), and performClientDiagnostic().

DQMStore* DTBlockedROChannelsTest::dbe
private
DTTimeEvolutionHisto* DTBlockedROChannelsTest::hSystFractionVsLS
private

Definition at line 92 of file DTBlockedROChannelsTest.h.

Referenced by beginJob(), and performClientDiagnostic().

edm::ESHandle<DTReadOutMapping> DTBlockedROChannelsTest::mapping
private

Definition at line 82 of file DTBlockedROChannelsTest.h.

Referenced by beginRun(), and readOutToGeometry().

int DTBlockedROChannelsTest::nevents
private
int DTBlockedROChannelsTest::neventsPrev
private

Definition at line 73 of file DTBlockedROChannelsTest.h.

Referenced by performClientDiagnostic().

unsigned int DTBlockedROChannelsTest::nLumiSegs
private

Definition at line 74 of file DTBlockedROChannelsTest.h.

Referenced by endLuminosityBlock(), and performClientDiagnostic().

int DTBlockedROChannelsTest::nupdates
private
bool DTBlockedROChannelsTest::offlineMode
private
int DTBlockedROChannelsTest::prescaleFactor
private

Definition at line 70 of file DTBlockedROChannelsTest.h.

Referenced by DTBlockedROChannelsTest(), and endLuminosityBlock().

unsigned int DTBlockedROChannelsTest::prevNLumiSegs
private

Definition at line 75 of file DTBlockedROChannelsTest.h.

double DTBlockedROChannelsTest::prevTotalPerc
private

Definition at line 76 of file DTBlockedROChannelsTest.h.

Referenced by performClientDiagnostic().

std::map<int, double> DTBlockedROChannelsTest::resultsPerLumi
private

Definition at line 91 of file DTBlockedROChannelsTest.h.

int DTBlockedROChannelsTest::run
private
MonitorElement* DTBlockedROChannelsTest::summaryHisto
private

Definition at line 87 of file DTBlockedROChannelsTest.h.

Referenced by beginJob(), and performClientDiagnostic().

std::map<int, MonitorElement*> DTBlockedROChannelsTest::wheelHitos
private

Definition at line 86 of file DTBlockedROChannelsTest.h.

Referenced by beginJob(), and performClientDiagnostic().