CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DTLocalTriggerBaseTask.cc
Go to the documentation of this file.
1 /*
2  * \file DTLocalTriggerBaseTask.cc
3  *
4  * \author C. Battilana - CIEMAT
5  *
6 */
7 
9 
10 // Framework
12 
13 // DT DQM
15 
16 // DT trigger
18 
19 // Geometry
25 
26 //Root
27 #include"TH1.h"
28 #include"TAxis.h"
29 
30 #include <sstream>
31 #include <iostream>
32 #include <fstream>
33 
34 using namespace edm;
35 using namespace std;
36 
38 
39 public:
40 
41  DTTPGCompareUnit() { theQual[0]=-1 ; theQual[1]=-1; }
43 
44  void setDDU(int qual, int bx) { theQual[0] = qual; theBX[0] = bx; }
45  void setDCC(int qual, int bx) { theQual[1] = qual; theBX[1] = bx; }
46 
47  bool hasOne() const { return theQual[0]!=-1 || theQual[1]!=-1; };
48  bool hasBoth() const { return theQual[0]!=-1 && theQual[1]!=-1; };
49  bool hasSameQual() const { return hasBoth() && theQual[0]==theQual[1]; };
50  int deltaBX() const { return theBX[0] - theBX[1]; }
51  int qualDDU() const { return theQual[0]; }
52  int qualDCC() const { return theQual[1]; }
53 
54 private:
55 
56  int theQual[2]; // 0=DDU 1=DCC
57  int theBX[2]; // 0=DDU 1=DCC
58 
59 };
60 
61 
62 
64  nEvents(0), nLumis(0), theTrigGeomUtils(0) {
65 
66  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
67  << "[DTLocalTriggerBaseTask]: Constructor"<<endl;
68 
69  tpMode = ps.getUntrackedParameter<bool>("testPulseMode");
70  detailedAnalysis = ps.getUntrackedParameter<bool>("detailedAnalysis");
71 
72  targetBXDCC = ps.getUntrackedParameter<int>("targetBXDCC");
73  targetBXDDU = ps.getUntrackedParameter<int>("targetBXDDU");
74  bestAccRange = ps.getUntrackedParameter<int>("bestTrigAccRange");
75 
76  processDCC = ps.getUntrackedParameter<bool>("processDCC");
77  processDDU = ps.getUntrackedParameter<bool>("processDDU");
78 
79  dcc_phi_Token_ = consumes<L1MuDTChambPhContainer>(
80  ps.getUntrackedParameter<InputTag>("inputTagDCC"));
81  dcc_theta_Token_ = consumes<L1MuDTChambThContainer>(
82  ps.getUntrackedParameter<InputTag>("inputTagDCC"));
83  trig_Token_ = consumes<DTLocalTriggerCollection>(
84  ps.getUntrackedParameter<InputTag>("inputTagDDU"));
85 
86  if (processDCC) theTypes.push_back("DCC");
87  if (processDDU) theTypes.push_back("DDU");
88 
89  if (tpMode) {
90  topFolder("DCC") = "DT/11-LocalTriggerTP-DCC/";
91  topFolder("DDU") = "DT/12-LocalTriggerTP-DDU/";
92  } else {
93  topFolder("DCC") = "DT/03-LocalTrigger-DCC/";
94  topFolder("DDU") = "DT/04-LocalTrigger-DDU/";
95  }
96 
97  theParams = ps;
99 
100 }
101 
102 
104 
105  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
106  << "[DTLocalTriggerBaseTask]: analyzed " << nEvents << " events" << endl;
107  if (theTrigGeomUtils) { delete theTrigGeomUtils; }
108 
109 }
110 
111 
113 
114  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
115  << "[DTLocalTriggerBaseTask]: BeginJob" << endl;
116 
117 }
118 
119 
121 
122  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
123  << "[DTLocalTriggerBaseTask]: BeginRun" << endl;
124 
125  ESHandle<DTGeometry> theGeom;
126  context.get<MuonGeometryRecord>().get(theGeom);
127  theTrigGeomUtils = new DTTrigGeomUtils(theGeom);
128 
129  theDQMStore->setCurrentFolder("DT/EventInfo/Counters");
130  nEventMonitor = theDQMStore->bookFloat("nProcessedEventsTrigger");
131  for (int wh=-2;wh<3;++wh){
132  for (int stat=1;stat<5;++stat){
133  for (int sect=1;sect<13;++sect){
134  bookHistos(DTChamberId(wh,stat,sect));
135  }
136  }
137  bookHistos(wh);
138  }
139 
140 }
141 
142 
144 
145  nEventsInLS=0;
146  nLumis++;
147  int resetCycle = theParams.getUntrackedParameter<int>("ResetCycle");
148 
149  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
150  << "[DTLocalTriggerBaseTask]: Begin of LS transition" << endl;
151 
152  if( nLumis%resetCycle == 0 ) {
153  map<uint32_t,map<string,MonitorElement*> >::const_iterator chambIt = chamberHistos.begin();
154  map<uint32_t,map<string,MonitorElement*> >::const_iterator chambEnd = chamberHistos.end();
155  for(;chambIt!=chambEnd;++chambIt) {
156  map<string,MonitorElement*>::const_iterator histoIt = chambIt->second.begin();
157  map<string,MonitorElement*>::const_iterator histoEnd = chambIt->second.end();
158  for(;histoIt!=histoEnd;++histoIt) {
159  histoIt->second->Reset();
160  }
161  }
162  }
163 
164 }
165 
167 
168  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
169  << "[DTLocalTriggerBaseTask]: End of LS transition" << endl;
170 
171  map<uint32_t,DTTimeEvolutionHisto* >::const_iterator chambIt = trendHistos.begin();
172  map<uint32_t,DTTimeEvolutionHisto* >::const_iterator chambEnd = trendHistos.end();
173  for(;chambIt!=chambEnd;++chambIt) {
174  chambIt->second->updateTimeSlot(lumiSeg.luminosityBlock(), nEventsInLS);
175  }
176 
177 }
178 
179 
181 
182  LogVerbatim("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
183  << "[DTLocalTriggerBaseTask]: analyzed " << nEvents << " events" << endl;
184 
185  if (processDCC) theDQMStore->rmdir(topFolder("DCC"));
186  if (processDDU) theDQMStore->rmdir(topFolder("DDU"));
187 
188 }
189 
190 
192 
193  nEvents++;
194  nEventsInLS++;
196 
197  theCompMap.clear();
198 
199  Handle<L1MuDTChambPhContainer> phiTrigsDCC;
200  Handle<L1MuDTChambThContainer> thetaTrigsDCC;
202 
203  if (processDCC) {
204  InputTag inputTagDCC = theParams.getUntrackedParameter<InputTag>("inputTagDCC");
205 
206  e.getByToken(dcc_phi_Token_, phiTrigsDCC);
207  e.getByToken(dcc_theta_Token_, thetaTrigsDCC);
208 
209  if (phiTrigsDCC.isValid() && thetaTrigsDCC.isValid()) {
210  runDCCAnalysis(phiTrigsDCC->getContainer(),thetaTrigsDCC->getContainer());
211  } else {
212  LogVerbatim("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
213  << "[DTLocalTriggerBaseTask]: one or more DCC handles for Input Tag "
214  << inputTagDCC <<" not found!" << endl;
215  return;
216  }
217  }
218 
219  if (processDDU) {
220  InputTag inputTagDDU = theParams.getUntrackedParameter<InputTag>("inputTagDDU");
221  e.getByToken(trig_Token_, trigsDDU);
222 
223  if (trigsDDU.isValid()) {
224  runDDUAnalysis(trigsDDU);
225  } else {
226  LogVerbatim("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
227  << "[DTLocalTriggerBaseTask]: one or more DDU handles for Input Tag "
228  << inputTagDDU <<" not found!" << endl;
229  return;
230  }
231  }
232 
233  if (processDCC && processDDU)
235 
236 }
237 
238 
240 
241  uint32_t rawId = dtCh.rawId();
242 
243  stringstream wheel; wheel << dtCh.wheel();
244  stringstream station; station << dtCh.station();
245  stringstream sector; sector << dtCh.sector();
246 
247  map<string,int> minBX;
248  map<string,int> maxBX;
249 
250  minBX["DCC"] = theParams.getUntrackedParameter<int>("minBXDCC");
251  maxBX["DCC"] = theParams.getUntrackedParameter<int>("maxBXDCC");
252  minBX["DDU"] = theParams.getUntrackedParameter<int>("minBXDDU");
253  maxBX["DDU"] = theParams.getUntrackedParameter<int>("maxBXDDU");
254 
255  int nTimeBins = theParams.getUntrackedParameter<int>("nTimeBins");
256  int nLSTimeBin = theParams.getUntrackedParameter<int>("nLSTimeBin");
257 
258  string chTag = "_W" + wheel.str() + "_Sec" + sector.str() + "_St" + station.str();
259 
260  vector<string>::const_iterator typeIt = theTypes.begin();
261  vector<string>::const_iterator typeEnd = theTypes.end();
262 
263  for (; typeIt!=typeEnd; ++typeIt) {
264 
265  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
266  << "[DTLocalTriggerBaseTask]: booking histos for " << topFolder((*typeIt)) << "Wheel"
267  << wheel.str() << "/Sector" << sector.str() << "/Station"<< station.str() << endl;
268 
269  // Book Phi View Related Plots
270  theDQMStore->setCurrentFolder(topFolder(*typeIt) + "Wheel" + wheel.str() + "/Sector"
271  + sector.str() + "/Station" + station.str() + "/LocalTriggerPhi");
272 
273  string histoTag = (*typeIt) + "_BXvsQual";
274  chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,"BX vs trigger quality",
275  7,-0.5,6.5,(int)(maxBX[(*typeIt)]-minBX[*typeIt]+1),minBX[*typeIt]-.5,maxBX[*typeIt]+.5);
276  setQLabels((chamberHistos[rawId])[histoTag],1);
277 
278  if (!tpMode) {
279  histoTag = (*typeIt) + "_BestQual";
280  chamberHistos[rawId][histoTag] = theDQMStore->book1D(histoTag+chTag,
281  "Trigger quality of best primitives",7,-0.5,6.5);
282  setQLabels(chamberHistos[rawId][histoTag],1);
283 
284  histoTag = (*typeIt) + "_Flag1stvsQual";
285  chamberHistos[dtCh.rawId()][histoTag] = theDQMStore->book2D(histoTag+chTag,
286  "1st/2nd trig flag vs quality",7,-0.5,6.5,2,-0.5,1.5);
287  setQLabels(chamberHistos[rawId][histoTag],1);
288  }
289 
290  if (*typeIt=="DCC") {
291  float minPh, maxPh; int nBinsPh;
292  theTrigGeomUtils->phiRange(dtCh,minPh,maxPh,nBinsPh);
293 
294  histoTag = (*typeIt) + "_QualvsPhirad";
295  chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,
296  "Trigger quality vs local position",nBinsPh,minPh,maxPh,7,-0.5,6.5);
297  setQLabels(chamberHistos[rawId][histoTag],2);
298 
299  if (detailedAnalysis && !tpMode) {
300  histoTag = (*typeIt) + "_QualvsPhibend";
301  chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,
302  "Trigger quality vs local direction",200,-40.,40.,7,-0.5,6.5);
303  setQLabels((chamberHistos[dtCh.rawId()])[histoTag],2);
304  }
305  }
306 
307  // Book Theta View Related Plots
308  theDQMStore->setCurrentFolder(topFolder(*typeIt) + "Wheel" + wheel.str() + "/Sector"
309  + sector.str() + "/Station" + station.str() + "/LocalTriggerTheta");
310 
311  if((*typeIt)=="DCC") {
312  histoTag = (*typeIt) + "_PositionvsBX";
313  chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,"Theta trigger position vs BX",
314  (int)(maxBX[(*typeIt)]-minBX[*typeIt]+1),minBX[*typeIt]-.5,maxBX[*typeIt]+.5,7,-0.5,6.5);
315  } else {
316  histoTag = (*typeIt) + "_ThetaBXvsQual";
317  chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,"BX vs trigger quality",7,-0.5,6.5,
318  (int)(maxBX[(*typeIt)]-minBX[*typeIt]+1),minBX[*typeIt]-.5,maxBX[*typeIt]+.5);
319  setQLabels((chamberHistos[dtCh.rawId()])[histoTag],1);
320 
321  histoTag = (*typeIt) + "_ThetaBestQual";
322  chamberHistos[rawId][histoTag] = theDQMStore->book1D(histoTag+chTag,
323  "Trigger quality of best primitives (theta)",7,-0.5,6.5);
324  setQLabels((chamberHistos[dtCh.rawId()])[histoTag],1);
325  }
326 
327  }
328 
329  if (processDCC && processDDU) {
330  // Book DCC/DDU Comparison Plots
331  theDQMStore->setCurrentFolder(topFolder("DDU") + "Wheel" + wheel.str() + "/Sector"
332  + sector.str() + "/Station" + station.str() + "/LocalTriggerPhi");
333 
334  string histoTag = "COM_QualDDUvsQualDCC";
335  chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,
336  "DDU quality vs DCC quality",8,-1.5,6.5,8,-1.5,6.5);
337  setQLabels((chamberHistos[rawId])[histoTag],1);
338  setQLabels((chamberHistos[rawId])[histoTag],2);
339 
340  histoTag = "COM_MatchingTrend";
341  trendHistos[rawId] = new DTTimeEvolutionHisto(&(*theDQMStore),histoTag+chTag,
342  "Fraction of DDU-DCC matches w.r.t. proc evts",
343  nTimeBins,nLSTimeBin,true,0);
344  }
345 
346 }
347 
349 
350  stringstream wheel; wheel << wh;
351  theDQMStore->setCurrentFolder(topFolder("DDU") + "Wheel" + wheel.str() + "/");
352  string whTag = "_W" + wheel.str();
353 
354  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask")
355  << "[DTLocalTriggerBaseTask]: booking wheel histos for "
356  << topFolder("DDU") << "Wheel" << wh << endl;
357 
358  string histoTag = "COM_BXDiff";
359  MonitorElement *me = theDQMStore->bookProfile2D(histoTag+whTag,
360  "DDU-DCC BX Difference",12,1,13,4,1,5,0.,20.);
361  me->setAxisTitle("Sector",1);
362  me->setAxisTitle("station",2);
363  wheelHistos[wh][histoTag] = me;
364 
365 }
366 
367 
368 void DTLocalTriggerBaseTask::runDCCAnalysis( std::vector<L1MuDTChambPhDigi> const* phTrigs,
369  std::vector<L1MuDTChambThDigi> const* thTrigs )
370 {
371  vector<L1MuDTChambPhDigi>::const_iterator iph = phTrigs->begin();
372  vector<L1MuDTChambPhDigi>::const_iterator iphe = phTrigs->end();
373 
374  for(; iph !=iphe ; ++iph) {
375 
376  int wh = iph->whNum();
377  int sec = iph->scNum() + 1; // DTTF->DT Convention
378  int st = iph->stNum();
379  int qual = iph->code();
380  int is1st = iph->Ts2Tag() ? 1 : 0;
381  int bx = iph->bxNum() - is1st;
382 
383  if (qual <0 || qual>6) continue; // Check that quality is in a valid range
384 
385  DTChamberId dtChId(wh,st,sec);
386  uint32_t rawId = dtChId.rawId();
387 
388  float pos = theTrigGeomUtils->trigPos(&(*iph));
389  float dir = theTrigGeomUtils->trigDir(&(*iph));
390 
391  if (abs(bx-targetBXDCC)<= bestAccRange &&
392  theCompMap[rawId].qualDCC() <= qual)
393  theCompMap[rawId].setDCC(qual,bx);
394 
395  map<string, MonitorElement*> &innerME = chamberHistos[rawId];
396  if (tpMode) {
397  innerME["DCC_BXvsQual"]->Fill(qual,bx); // SM BX vs Qual Phi view (1st tracks)
398  innerME["DCC_QualvsPhirad"]->Fill(pos,qual); // SM Qual vs radial angle Phi view
399  } else {
400  innerME["DCC_BXvsQual"]->Fill(qual,bx); // SM BX vs Qual Phi view (1st tracks)
401  innerME["DCC_Flag1stvsQual"]->Fill(qual,is1st); // SM Qual 1st/2nd track flag Phi view
402  if (!is1st) innerME["DCC_QualvsPhirad"]->Fill(pos,qual); // SM Qual vs radial angle Phi view ONLY for 1st tracks
403  if (detailedAnalysis) {
404  innerME["DCC_QualvsPhibend"]->Fill(dir,qual); // SM Qual vs bending Phi view
405  }
406  }
407 
408  }
409 
410  vector<L1MuDTChambThDigi>::const_iterator ith = thTrigs->begin();
411  vector<L1MuDTChambThDigi>::const_iterator ithe = thTrigs->end();
412 
413  for(; ith != ithe; ++ith) {
414  int wh = ith->whNum();
415  int sec = ith->scNum() + 1; // DTTF -> DT Convention
416  int st = ith->stNum();
417  int bx = ith->bxNum();
418 
419  int thcode[7];
420 
421  for (int pos=0; pos<7; pos++)
422  thcode[pos] = ith->code(pos);
423 
424  DTChamberId dtChId(wh,st,sec);
425  uint32_t rawId = dtChId.rawId();
426 
427  map<string, MonitorElement*> &innerME = chamberHistos[rawId];
428 
429  for (int pos=0; pos<7; pos++)
430  if (thcode[pos])
431  innerME["DCC_PositionvsBX"]->Fill(bx,pos); // SM BX vs Position Theta view
432 
433  }
434 
435  // Fill Quality plots with best DCC triggers (phi view)
436  if (!tpMode) {
437  map<uint32_t,DTTPGCompareUnit>::const_iterator compIt = theCompMap.begin();
438  map<uint32_t,DTTPGCompareUnit>::const_iterator compEnd = theCompMap.end();
439  for (; compIt!=compEnd; ++compIt) {
440  int bestQual = compIt->second.qualDCC();
441  if (bestQual > -1)
442  chamberHistos[compIt->first]["DCC_BestQual"]->Fill(bestQual); // SM Best Qual Trigger Phi view
443  }
444  }
445 
446 }
447 
448 
450 
451  DTLocalTriggerCollection::DigiRangeIterator detUnitIt = trigsDDU->begin();
452  DTLocalTriggerCollection::DigiRangeIterator detUnitEnd = trigsDDU->end();
453 
454  for (; detUnitIt!=detUnitEnd; ++detUnitIt){
455 
456  const DTChamberId& chId = (*detUnitIt).first;
457  uint32_t rawId = chId.rawId();
458 
459  const DTLocalTriggerCollection::Range& range = (*detUnitIt).second;
460  DTLocalTriggerCollection::const_iterator trigIt = range.first;
461  map<string, MonitorElement*> &innerME = chamberHistos[rawId];
462 
463  int bestQualTheta = -1;
464 
465  for (; trigIt!=range.second; ++trigIt){
466 
467  int qualPhi = trigIt->quality();
468  int qualTheta = trigIt->trTheta();
469  int flag1st = trigIt->secondTrack() ? 1 : 0;
470  int bx = trigIt->bx();
471  int bxPhi = bx - flag1st; // phi BX assign is different for 1st & 2nd tracks
472 
473  if( qualPhi>-1 && qualPhi<7 ) { // it is a phi trigger
474  if (abs(bx-targetBXDDU) <= bestAccRange &&
475  theCompMap[rawId].qualDDU()<= qualPhi)
476  theCompMap[rawId].setDDU(qualPhi,bxPhi);
477  if(tpMode) {
478  innerME["DDU_BXvsQual"]->Fill(qualPhi,bxPhi); // SM BX vs Qual Phi view
479  } else {
480  innerME["DDU_BXvsQual"]->Fill(qualPhi,bxPhi); // SM BX vs Qual Phi view
481  innerME["DDU_Flag1stvsQual"]->Fill(qualPhi,flag1st); // SM Quality vs 1st/2nd track flag Phi view
482  }
483  }
484 
485  if( qualTheta>0 && !tpMode ){// it is a theta trigger & is not TP
486  if (qualTheta > bestQualTheta){
487  bestQualTheta = qualTheta;
488  }
489  innerME["DDU_ThetaBXvsQual"]->Fill(qualTheta,bx); // SM BX vs Qual Theta view
490  }
491  }
492 
493  // Fill Quality plots with best ddu triggers
494  if (!tpMode && theCompMap.find(rawId)!= theCompMap.end()) {
495  int bestQualPhi = theCompMap[rawId].qualDDU();
496  if (bestQualPhi>-1)
497  innerME["DDU_BestQual"]->Fill(bestQualPhi); // SM Best Qual Trigger Phi view
498  if(bestQualTheta>0) {
499  innerME["DDU_ThetaBestQual"]->Fill(bestQualTheta); // SM Best Qual Trigger Theta view
500  }
501  }
502  }
503 
504 }
505 
506 
508 
509  map<uint32_t,DTTPGCompareUnit>::const_iterator compIt = theCompMap.begin();
510  map<uint32_t,DTTPGCompareUnit>::const_iterator compEnd = theCompMap.end();
511 
512  for (; compIt!=compEnd; ++compIt) {
513 
514  uint32_t rawId = compIt->first;
515  DTChamberId chId(rawId);
516  map<string, MonitorElement*> &innerME = chamberHistos[rawId];
517 
518  const DTTPGCompareUnit & compUnit = compIt->second;
519  if ( compUnit.hasOne() ){
520  innerME["COM_QualDDUvsQualDCC"]->Fill(compUnit.qualDCC(),compUnit.qualDDU());
521  }
522  if ( compUnit.hasBoth() ){
523  wheelHistos[chId.wheel()]["COM_BXDiff"]->Fill(chId.sector(),chId.station(),compUnit.deltaBX());
524  if ( compUnit.hasSameQual() ) {
525  trendHistos[rawId]->accumulateValueTimeSlot(1);
526  }
527  }
528  }
529 
530 }
531 
532 
534 
535  TH1* histo = me->getTH1();
536  if (!histo) return;
537 
538  TAxis* axis=0;
539  if (iaxis==1) {
540  axis=histo->GetXaxis();
541  }
542  else if(iaxis==2) {
543  axis=histo->GetYaxis();
544  }
545  if (!axis) return;
546 
547  string labels[7] = {"LI","LO","HI","HO","LL","HL","HH"};
548  int istart = axis->GetXmin()<-1 ? 2 : 1;
549  for (int i=0;i<7;i++) {
550  axis->SetBinLabel(i+istart,labels[i].c_str());
551  }
552 
553 }
554 
555 // Local Variables:
556 // show-trailing-whitespace: t
557 // truncate-lines: t
558 // End:
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
void runDCCAnalysis(std::vector< L1MuDTChambPhDigi > const *phTrigs, std::vector< L1MuDTChambThDigi > const *thTrigs)
Run analysis on DCC data.
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:954
void rmdir(const std::string &fullpath)
Definition: DQMStore.cc:3101
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
float trigDir(const L1MuDTChambPhDigi *trig)
Return local direction (trigger RF) for a given trigger primitive.
void setDDU(int qual, int bx)
std::map< int, std::map< std::string, MonitorElement * > > wheelHistos
virtual ~DTLocalTriggerBaseTask()
Destructor.
MonitorElement * bookFloat(const char *name)
Book float.
Definition: DQMStore.cc:891
std::vector< std::string > theTypes
void Fill(long long x)
LuminosityBlockNumber_t luminosityBlock() const
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
DTTrigGeomUtils * theTrigGeomUtils
void runDDUvsDCCAnalysis()
Run analysis on ROS data.
void bookHistos(const DTChamberId &chamb)
Book the histograms.
void setDCC(int qual, int bx)
void beginRun(const edm::Run &, const edm::EventSetup &)
Beginrun.
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::EDGetTokenT< L1MuDTChambThContainer > dcc_theta_Token_
TH1 * getTH1(void) const
edm::EDGetTokenT< DTLocalTriggerCollection > trig_Token_
bool isValid() const
Definition: HandleBase.h:76
#define LogTrace(id)
void phiRange(const DTChamberId &id, float &min, float &max, int &nbins, float step=15)
Compute phi range in local chamber coordinates.
std::string & topFolder(std::string const &type)
Get the Top folder (different between Physics and TP and DCC/DDU)
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &context)
Perform trend plot operations.
std::map< uint32_t, std::map< std::string, MonitorElement * > > chamberHistos
const T & get() const
Definition: EventSetup.h:55
std::vector< DTLocalTrigger >::const_iterator const_iterator
int sector() const
Definition: DTChamberId.h:61
void setQLabels(MonitorElement *me, short int iaxis)
Set Quality labels.
std::map< uint32_t, DTTPGCompareUnit > theCompMap
std::map< uint32_t, DTTimeEvolutionHisto * > trendHistos
std::pair< const_iterator, const_iterator > Range
dbl *** dir
Definition: mlp_gen.cc:35
void runDDUAnalysis(edm::Handle< DTLocalTriggerCollection > &trigsDDU)
Run analysis on ROS data.
float trigPos(const L1MuDTChambPhDigi *trig)
Return local position (trigger RF) for a given trigger primitive.
int station() const
Return the station number.
Definition: DTChamberId.h:51
UInt_t nEvents
Definition: hcalCalib.cc:42
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:1082
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
DTLocalTriggerBaseTask(const edm::ParameterSet &ps)
Constructor.
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:45
edm::EDGetTokenT< L1MuDTChambPhContainer > dcc_phi_Token_
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:667
Definition: Run.h:41
void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &context)
To reset the MEs.
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")
Definition: DQMStore.cc:1412