CMS 3D CMS Logo

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

#include <L1TCSCTF.h>

Inheritance diagram for L1TCSCTF:
edm::EDAnalyzer

Public Member Functions

 L1TCSCTF (const edm::ParameterSet &ps)
 
virtual ~L1TCSCTF ()
 
- 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)
 
void beginJob (void)
 
void endJob (void)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Private Attributes

int BxInEvent_
 
MonitorElementcsctfAFerror
 
MonitorElementcsctfbx
 
MonitorElementcsctfbx_H
 
MonitorElementcsctfChamberOccupancies
 
MonitorElementcsctferrors
 
MonitorElementcsctfntrack
 
MonitorElementcsctfoccupancies
 
MonitorElementcsctfoccupancies_H
 
MonitorElementcsctfTrackEta
 
MonitorElementcsctfTrackEta_H
 
MonitorElementcsctfTrackEtaHighQ
 
MonitorElementcsctfTrackEtaLowQ
 
MonitorElementcsctfTrackM
 
MonitorElementcsctfTrackPhi
 
MonitorElementcsctfTrackPhi_H
 
MonitorElementcscTrackStubNumbers
 
DQMStoredbe
 
MonitorElementDTstubsTimeTrackMenTimeArrival [12]
 
edm::InputTag gmtProducer
 
bool isCSCcand_
 
int L1ABXN
 
edm::InputTag lctProducer
 
ofstream logFile_
 
unsigned long long m_ptScaleCacheID
 
unsigned long long m_scalesCacheID
 
edm::InputTag mbProducer
 
bool monitorDaemon_
 
int nev_
 
std::string outputFile_
 
CSCSectorReceiverLUTsrLUTs_ [5]
 
edm::InputTag statusProducer
 
const L1MuTriggerPtScaletpts
 
MonitorElementtrackModeVsQ
 
edm::InputTag trackProducer
 
const L1MuTriggerScalests
 
bool verbose_
 

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)
 
static void prevalidate (ConfigurationDescriptions &)
 

Detailed Description

Definition at line 52 of file L1TCSCTF.h.

Constructor & Destructor Documentation

L1TCSCTF::L1TCSCTF ( const edm::ParameterSet ps)

Definition at line 27 of file L1TCSCTF.cc.

References edm::ParameterSet::addUntrackedParameter(), dbe, Reference_intrackfit_cff::endcap, edm::ParameterSet::getUntrackedParameter(), NULL, cppFunctionSkipper::operator, outputFile_, DQMStore::setCurrentFolder(), DQMStore::setVerbose(), srLUTs_, relativeConstraints::station, and verbose_.

30  : gmtProducer( ps.getParameter< InputTag >("gmtProducer") ),
31  lctProducer( ps.getParameter< InputTag >("lctProducer") ),
32  trackProducer( ps.getParameter< InputTag >("trackProducer") ),
33  statusProducer( ps.getParameter< InputTag >("statusProducer") ),
34  mbProducer( ps.getParameter< InputTag >("mbProducer") )
35 {
36 
37  // verbosity switch
38  verbose_ = ps.getUntrackedParameter<bool>("verbose", false);
39 
40  if(verbose_) edm::LogInfo("DataNotFound") << "L1TCSCTF: constructor...." << endl;
41 
42 
43  dbe = NULL;
44  if ( ps.getUntrackedParameter<bool>("DQMStore", false) )
45  {
47  dbe->setVerbose(0);
48  }
49 
50  outputFile_ = ps.getUntrackedParameter<string>("outputFile", "");
51  if ( outputFile_.size() != 0 )
52  {
53  edm::LogInfo("DataNotFound") << "L1T Monitoring histograms will be saved to " << outputFile_.c_str() << endl;
54  }
55 
56  bool disable = ps.getUntrackedParameter<bool>("disableROOToutput", false);
57  if(disable){
58  outputFile_="";
59  }
60 
61 
62  if ( dbe !=NULL )
63  {
64  dbe->setCurrentFolder("L1T/L1TCSCTF");
65  }
66 
67  // instantiate standard on-fly SR LUTs from CSC TF emulator package
68  bzero(srLUTs_,sizeof(srLUTs_));
69  int endcap=1, sector=1; // assume SR LUTs are all same for every sector in either of endcaps
70  bool TMB07=true; // specific TMB firmware
71  // Create a dummy pset for SR LUTs
72  edm::ParameterSet srLUTset;
73  srLUTset.addUntrackedParameter<bool>("ReadLUTs", false);
74  srLUTset.addUntrackedParameter<bool>("Binary", false);
75  srLUTset.addUntrackedParameter<std::string>("LUTPath", "./");
76  for(int station=1,fpga=0; station<=4 && fpga<5; station++)
77  {
78  if(station==1)
79  for(int subSector=0; subSector<2 && fpga<5; subSector++)
80  srLUTs_[fpga++] = new CSCSectorReceiverLUT(endcap, sector, subSector+1, station, srLUTset, TMB07);
81  else
82  srLUTs_[fpga++] = new CSCSectorReceiverLUT(endcap, sector, 0, station, srLUTset, TMB07);
83  }
84 
85 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
DQMStore * dbe
Definition: L1TCSCTF.h:74
bool verbose_
Definition: L1TCSCTF.h:111
#define NULL
Definition: scimark2.h:8
edm::InputTag mbProducer
Definition: L1TCSCTF.h:114
std::string outputFile_
Definition: L1TCSCTF.h:110
edm::InputTag statusProducer
Definition: L1TCSCTF.h:114
void setVerbose(unsigned level)
Definition: DQMStore.cc:393
edm::InputTag lctProducer
Definition: L1TCSCTF.h:114
CSCSectorReceiverLUT * srLUTs_[5]
Definition: L1TCSCTF.h:116
void addUntrackedParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:209
edm::InputTag trackProducer
Definition: L1TCSCTF.h:114
edm::InputTag gmtProducer
Definition: L1TCSCTF.h:114
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
L1TCSCTF::~L1TCSCTF ( )
virtual

Definition at line 87 of file L1TCSCTF.cc.

References i, and srLUTs_.

88 {
89 
90  for(int i=0; i<5; i++)
91  delete srLUTs_[i]; //free the array of pointers
92 }
int i
Definition: DBlmapReader.cc:9
CSCSectorReceiverLUT * srLUTs_[5]
Definition: L1TCSCTF.h:116

Member Function Documentation

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

CAL as Janos adviced

Implements edm::EDAnalyzer.

Definition at line 415 of file L1TCSCTF.cc.

References abs, BxInEvent_, edm::eventsetup::EventSetupRecord::cacheIdentifier(), csctfbx, csctfbx_H, csctfChamberOccupancies, csctferrors, csctfntrack, csctfoccupancies, csctfoccupancies_H, csctfTrackEta, csctfTrackEta_H, csctfTrackEtaHighQ, csctfTrackEtaLowQ, csctfTrackM, csctfTrackPhi, csctfTrackPhi_H, cscTrackStubNumbers, DTstubsTimeTrackMenTimeArrival, Reference_intrackfit_cff::endcap, MonitorElement::Fill(), HcalObjRepresent::Fill(), edm::EventSetup::get(), edm::Event::getByLabel(), L1MuScale::getLowEdge(), L1MuTriggerScales::getPhiScale(), L1MuGMTReadoutCollection::getRecords(), CSCSectorReceiverLUT::globalEtaME(), CSCSectorReceiverLUT::globalPhiME(), gmtProducer, edm::InputTag::instance(), isCSCcand_, edm::HandleBase::isValid(), L1ABXN, edm::InputTag::label(), lctProducer, CSCSectorReceiverLUT::localPhi(), M_PI, m_ptScaleCacheID, m_scalesCacheID, mbProducer, nev_, edm::Handle< T >::product(), edm::ESHandle< class >::product(), CSCTriggerGeometry::setGeometry(), edm::shift, srLUTs_, relativeConstraints::station, ntuplemaker::status, statusProducer, tpts, trackModeVsQ, trackProducer, testEve_cfg::tracks, CSCTriggerNumbering::triggerSubSectorFromLabels(), ts, and verbose_.

416 {
417 
419  c.get< L1MuTriggerPtScaleRcd >().cacheIdentifier() != m_ptScaleCacheID ){
420 
422  c.get< L1MuTriggerScalesRcd >().get(scales);
423  ts = scales.product();
425  c.get< L1MuTriggerPtScaleRcd >().get(ptscales);
426  tpts = ptscales.product();
427  m_scalesCacheID = c.get< L1MuTriggerScalesRcd >().cacheIdentifier();
428  m_ptScaleCacheID = c.get< L1MuTriggerPtScaleRcd >().cacheIdentifier();
429 
430  edm::LogInfo("L1TCSCTF") << "Changing triggerscales and triggerptscales...";
431  }
432 
433  int NumCSCTfTracksRep = 0;
434  nev_++;
435  if(verbose_) edm::LogInfo("DataNotFound") << "L1TCSCTF: analyze...." << endl;
436 
438  if( gmtProducer.label() != "null" )
439  { // GMT block
440  e.getByLabel(gmtProducer,pCollection);
441  if (!pCollection.isValid())
442  {
443  edm::LogInfo("DataNotFound") << "can't find L1MuGMTReadoutCollection with label "; // << csctfSource_.label() ;
444  return;
445  }
446 
447  L1MuGMTReadoutCollection const* gmtrc = pCollection.product();
448  vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->getRecords();
449  vector<L1MuGMTReadoutRecord>::const_iterator RRItr;
450 
451  // Look if the readout window contains one (and only one CSC cands)
452  // to make it simpler I reject events with more than a CSC cand in the
453  // same readout window
454 
455  // count non-empty candidates in this bx
456  int bxWindow = 0;
457  int nCands = 0;
458 
459  for( RRItr = gmt_records.begin(); RRItr != gmt_records.end(); RRItr++ ) {
460  bxWindow++;
461 
462  // get the csc candidates
463  vector<L1MuRegionalCand> INPCands = RRItr->getCSCCands();
464  vector<L1MuRegionalCand>::const_iterator INPItr;
465 
466  BxInEvent_ = 0;
467  isCSCcand_ = false;
468  int nCandsBx = 0;
469 
470  for( INPItr = INPCands.begin(); INPItr != INPCands.end(); ++INPItr ) {
471  if(!INPItr->empty())
472  {
473  nCandsBx++;
474  nCands++;
475  BxInEvent_ = RRItr->getBxInEvent();
476  if (verbose_) edm::LogInfo("DataNotFound") << "cand " << nCandsBx << " -> assigned CSCTF bx: " << INPItr->bx() << endl;
477  }
478  }
479  if (verbose_)
480  if(nCandsBx) edm::LogInfo("DataNotFound") << nCandsBx << " cands in bx: " << BxInEvent_ << endl;
481  }
482 
483  if (nCands != 1) return;
484  else isCSCcand_ = true;
485  if (verbose_) edm::LogInfo("DataNotFound") << "bxWindow: " << bxWindow << endl;
486 
487  int ncsctftrack = 0;
488  if (verbose_)
489  {
490  edm::LogInfo("DataNotFound") << "\tCSCTFCand ntrack " << ncsctftrack << endl;
491  }
492  } // end of GMT block
493 
494  L1ABXN = -999;
495  if( statusProducer.label() != "null" )
496  {
499  bool integrity=status->first, se=false, sm=false, bx=false, af=false, fmm=false;
500  int nStat = 0;
501 
502  for(std::vector<L1CSCSPStatusDigi>::const_iterator stat=status->second.begin(); stat!=status->second.end(); stat++)
503  {
504  se |= stat->SEs()&0xFFF;
505  sm |= stat->SMs()&0xFFF;
506  bx |= stat->BXs()&0xFFF;
507  af |= stat->AFs()&0xFFF;
508  fmm|= stat->FMM()!=8;
509 
510  if(stat->VPs() != 0)
511  {
512  L1ABXN += stat->BXN();
513  nStat++;
514  }
515  }
516  // compute the average
517  if(nStat!=0) L1ABXN /= nStat;
518  if(integrity) csctferrors->Fill(0.5);
519  if(se) csctferrors->Fill(1.5);
520  if(sm) csctferrors->Fill(2.5);
521  if(bx) csctferrors->Fill(3.5);
522  if(af) csctferrors->Fill(4.5);
523  if(fmm) csctferrors->Fill(5.5);
524  }
525 
526  if( lctProducer.label() != "null" )
527  {
529  c.get<MuonGeometryRecord>().get( pDD );
531 
534 
535  for(CSCCorrelatedLCTDigiCollection::DigiRangeIterator csc=corrlcts.product()->begin(); csc!=corrlcts.product()->end(); csc++)
536  {
537  CSCCorrelatedLCTDigiCollection::Range range1 = corrlcts.product()->get((*csc).first);
538  for(CSCCorrelatedLCTDigiCollection::const_iterator lct=range1.first; lct!=range1.second; lct++)
539  {
540  int endcap = (*csc).first.endcap()-1;
541  int station = (*csc).first.station()-1;
542  int sector = (*csc).first.triggerSector()-1;
543  int subSector = CSCTriggerNumbering::triggerSubSectorFromLabels((*csc).first);
544  int cscId = (*csc).first.triggerCscId()-1;
545  int fpga = ( subSector ? subSector-1 : station+1 );
546 
547  int endcapAssignment = 1;
548  int shift = 1;
549  float sectorArg = sector;
550  //float sectorArg = j;
551 
552  if( endcap == 1 ){
553  endcapAssignment = -1;
554  shift = 2;
555  //sectorArg = sector - 6;
556  }
557 
558  int signedStation = (station + shift)* endcapAssignment;
559  if( (station == 0) && (endcap == 0)) signedStation = subSector - 1;
560  if( (station == 0) && (endcap == 1)) signedStation = (-1)*subSector;
561 
562  float chamberArg1 = cscId * 0.1 + sectorArg;
563  //float chamberArg1 = i*0.1 + sectorArg;
564  //std::cout << "First" << i << " " << sectorArg << " " << chamberArg1 << std::endl;
565 
566  float chamberArg11 = chamberArg1;
567  if(sectorArg == 1) chamberArg1 = chamberArg11 - 0.1;
568  if(sectorArg == 2) chamberArg1 = chamberArg11 - 0.2;
569  if(sectorArg == 3) chamberArg1 = chamberArg11 - 0.3;
570  if(sectorArg == 4) chamberArg1 = chamberArg11 - 0.4;
571  if(sectorArg == 5) chamberArg1 = chamberArg11 - 0.5;
572 
573  //std::cout << "cscId, station, sector, endcap, sectorArg, chamber Arg: " << cscId << ", " << station << ", " <<sector << ", " << endcap << ", " << chamberArg1 << ", " << signedStation << std::endl;
574 
575  csctfChamberOccupancies->Fill(chamberArg1, signedStation);
576  //int bunchX = ( (lct->getBX()) - 6 );
577 
578  //int timingSectorArg = 3*(sector) + (lct->getMPCLink());
579  //if( endcap == 1) timingSectorArg = 3*(sector + 6) + (lct->getMPCLink());
580  //std::cout << "Sector, MPCLink, TSA, endcap: " << sector << ", " << lct->getMPCLink() << ", " << timingSectorArg << ", " << endcap << std::endl;
581 
582  //csctfbx->Fill(timingSectorArg, bunchX );
583  //std::cout << "LCT'S, encap: " << endcap << ", station: " << station << ", sector: " << sector << ", subSector: " << subSector << ", cscId: " << cscId << std:: endl;
584  //End JAG
585 
586  // Check if Det Id is within pysical range:
587  if( endcap<0||endcap>1 || sector<0||sector>6 || station<0||station>3 || cscId<0||cscId>8 || fpga<0||fpga>4)
588  {
589  edm::LogError("L1CSCTF: CSC TP are out of range: ")<<" endcap: "<<(endcap+1)<<" station: "<<(station+1) <<" sector: "<<(sector+1)<<" subSector: "<<subSector<<" fpga: "<<fpga<<" cscId: "<<(cscId+1);
590  continue;
591  }
592  lclphidat lclPhi;
593  try {
594  lclPhi = srLUTs_[fpga]->localPhi(lct->getStrip(), lct->getPattern(), lct->getQuality(), lct->getBend());
595  } catch(...) {
596  bzero(&lclPhi,sizeof(lclPhi));
597  }
598 
599  gblphidat gblPhi;
600  try {
601  gblPhi = srLUTs_[fpga]->globalPhiME(lclPhi.phi_local, lct->getKeyWG(), cscId+1);
602  } catch(...) {
603  bzero(&gblPhi,sizeof(gblPhi));
604  }
605 
606  gbletadat gblEta;
607  try {
608  gblEta = srLUTs_[fpga]->globalEtaME(lclPhi.phi_bend_local, lclPhi.phi_local, lct->getKeyWG(), cscId+1);
609  } catch(...) {
610  bzero(&gblEta,sizeof(gblEta));
611  }
612 
613  // SR LUT gives packed eta and phi values -> normilize them to 1 by scale them to 'max' and shift by 'min'
614  //float etaP = gblEta.global_eta/127*1.5 + 0.9;
615  //float phiP = (gblPhi.global_phi);// + ( sector )*4096 + station*4096*12) * 1./(4*4096*12);
616  //std::cout << "LCT Eta & Phi Coordinates: " << etaP << ", " << phiP << "." << std::endl;
617  //csctfoccupancies->Fill( gblEta.global_eta/127. * 1.5 + 0.9, (gblPhi.global_phi + ( sector + (endcap?0:6) )*4096 + station*4096*12) * 1./(4*4096*12) );
618  }//lct != range1.scond
619  }//csc!=corrlcts.product()->end()
620  }// lctProducer.label() != "null"
621 
622 
623 
624  if( trackProducer.label() != "null" )
625  {
628  for(L1CSCTrackCollection::const_iterator trk=tracks->begin(); trk<tracks->end(); trk++)
629  {
630 
631  NumCSCTfTracksRep++;
632  long LUTAdd = trk->first.ptLUTAddress();
633  int trigMode = ( (LUTAdd)&0xf0000 ) >> 16;
634  int trEta = (trk->first.eta_packed() );
635 
636 
637  // trk->first.endcap() = 2 for - endcap
638  // = 1 for + endcap
639  //int trEndcap = (trk->first.endcap()==2 ? trk->first.endcap()-3 : trk->first.endcap());
640  if( trk->first.endcap() != 1)
641  {
642  int holder = trEta;
643  trEta = -1*holder;
644  trEta -= 1;
645  }
646 
647  int trSector = 6*(trk->first.endcap()-1)+trk->first.sector();
648  int trBX = trk->first.BX();
649 
650  //Here is what is done with output phi value:
651  //output_phi = (phi / 32) * 3 /16
652  //where:
653  //phi is 12-bit phi, 4096 bins covering 62 degrees
654  //output_phi is 5-bit value
655 
656  //Easy to see that output_phi can have values from 0 to 23, or 24 total combinations.
657  //This gives per-bin phi value of 62/24 = 2.583333 degrees.
658 
659  // Sector 1 nominally starts at 15 degrees but there 1 degree overlap between sectors so 14 degrees effectively
660  //double trPhi = trk->first.localPhi() * 62. / 24.;
661  double trPhi = ts->getPhiScale()->getLowEdge(trk->first.localPhi());
662  double trPhi02PI = fmod(trPhi +
663  ((trSector-1)*M_PI/3) +
664  (M_PI*14/180.), 2*M_PI);
665 
666  if (trigMode == 15) {
667  csctfTrackPhi_H -> Fill( trPhi02PI );
668  csctfTrackEta_H -> Fill( trEta );
669  csctfoccupancies_H -> Fill( trEta, trPhi02PI );
670  csctfbx_H -> Fill( trSector, trBX );
671  }
672  else{
673  csctfTrackPhi -> Fill( trPhi02PI );
674  csctfTrackEta -> Fill( trEta );
675  csctfoccupancies -> Fill( trEta, trPhi02PI );
676  csctfbx -> Fill( trSector, trBX );
677 
678  // Low Quality / High Quality Eta Distributions
679  //|eta| < 2.1
680  if (abs(trEta) < 24) {
681  if (trigMode == 2 ||
682  trigMode == 3 ||
683  trigMode == 4 ||
684  trigMode == 5 ||
685  trigMode == 6 ||
686  trigMode == 7 ||
687  trigMode == 11 ||
688  trigMode == 12 ||
689  trigMode == 13 ||
690  trigMode == 14 ) csctfTrackEtaHighQ -> Fill (trEta);
691 
692  if (trigMode == 8 ||
693  trigMode == 9 ||
694  trigMode == 10 ) csctfTrackEtaLowQ -> Fill (trEta);
695  }
696  else {//|eta| > 2.1
697  if (trigMode == 2 ||
698  trigMode == 3 ||
699  trigMode == 4 ||
700  trigMode == 5 ) csctfTrackEtaHighQ -> Fill (trEta);
701  else
702  csctfTrackEtaLowQ -> Fill (trEta);
703  }
704  }
705 
706  csctfTrackM->Fill( trk->first.modeExtended() );
707 
708  // we monitor the track quality only on the first link
709  // so let's make sure to fill the plot if there is something that
710  // is read from the hardware
711  int trRank = trk->first.rank();
712  if (trRank) {
713  int trQuality = ((trRank>>5)&0x3);
714  trackModeVsQ->Fill( trk->first.modeExtended(), trQuality );
715  }
716 
717  /*
718  OLD METHOD FOR FILLING HALO PLOTS, IMPROVED METHOD USING ASSOCIATED TRACK STUBS
719  BELOW ~LINE 605
720  if( trigMode == 15 )
721  {
722 
723  double haloVals[4][4];
724  for( int i = 0; i < 4; i++)
725  {
726  haloVals[i][0] = 0;
727  }
728 
729  edm::Handle<CSCCorrelatedLCTDigiCollection> corrlcts;
730  e.getByLabel(lctProducer.label(),lctProducer.instance(),corrlcts);
731  for(CSCCorrelatedLCTDigiCollection::DigiRangeIterator csc=corrlcts.product()->begin(); csc!=corrlcts.product()->end(); csc++)
732  {
733  CSCCorrelatedLCTDigiCollection::Range range1 = corrlcts.product()->get((*csc).first);
734  for(CSCCorrelatedLCTDigiCollection::const_iterator lct=range1.first; lct!=range1.second; lct++)
735  {
736  int endcap = (*csc).first.endcap()-1;
737  int station = (*csc).first.station()-1;
738  int sector = (*csc).first.triggerSector()-1;
739  int cscId = (*csc).first.triggerCscId()-1;
740  int subSector = CSCTriggerNumbering::triggerSubSectorFromLabels((*csc).first);
741  int fpga = ( subSector ? subSector-1 : station+1 );
742 
743  if(station != 4)
744  {
745  int modEnd = 1;
746  if( endcap == 0 ) modEnd = -1;
747  int indexHalo = modEnd + station;
748  if(haloVals[indexHalo][0] == 1.0) haloVals[indexHalo][3] = 1.0;
749  if(haloVals[indexHalo][0] == 0) haloVals[indexHalo][0] = 1.0;
750  haloVals[indexHalo][1] = sector*1.0;
751 
752  lclphidat lclPhi;
753  lclPhi = srLUTs_[fpga]->localPhi(lct->getStrip(), lct->getPattern(), lct->getQuality(), lct->getBend());
754  gblphidat gblPhi;
755  gblPhi = srLUTs_[fpga]->globalPhiME(lclPhi.phi_local, lct->getKeyWG(), cscId+1);
756  gbletadat gblEta;
757  gblEta = srLUTs_[fpga]->globalEtaME(lclPhi.phi_bend_local, lclPhi.phi_local, lct->getKeyWG(), cscId+1);
758 
759  haloVals[indexHalo][2] = gblEta.global_eta/127. * 1.5 + 0.9;
760  } //station1 or 2
761  } //lct first to second
762  } //corrlcts
763 
764  if( (haloVals[0][0] == 1.) && (haloVals[1][0] == 1.) && (haloVals[0][3] != 1.) && (haloVals[1][3] != 1.) )
765  {
766  if( haloVals[0][1] == haloVals[1][1] ){
767  double delEta23 = haloVals[1][2] - haloVals[0][2];
768  haloDelEta23->Fill( delEta23 );
769  }
770  }
771 
772  if( (haloVals[2][0] == 1.) && (haloVals[3][0] == 1.) && (haloVals[2][3] != 1.) && (haloVals[3][3] != 1.) )
773  {
774  if( haloVals[2][1] == haloVals[3][1] ){
775  double delEta23 = haloVals[3][2] - haloVals[2][2];
776  haloDelEta23->Fill( delEta23 );
777  }
778  }
779  } //halo trigger
780  */
781 
782  int cscTrackStub = 0;
783  //float haloEta[3];
784  //for(int i=0; i<3; i++) haloEta[i]=-1.0;
785  //bool haloME11 = false;
786  CSCCorrelatedLCTDigiCollection lctsOfTracks=trk->second;
787  for(CSCCorrelatedLCTDigiCollection::DigiRangeIterator trackStub=lctsOfTracks.begin(); trackStub!=lctsOfTracks.end(); trackStub++)
788  {
789  CSCCorrelatedLCTDigiCollection::Range range2 = lctsOfTracks.get((*trackStub).first);
790  for(CSCCorrelatedLCTDigiCollection::const_iterator lct=range2.first; lct!=range2.second; lct++)
791  {
792 // int station = (*trackStub).first.station()-1;
793 // if(station != 4)
794 // {
795 // // int endcap = (*trackStub).first.endcap()-1;
796 // // int sector = (*trackStub).first.triggerSector()-1;
797 // int cscId = (*trackStub).first.triggerCscId()-1;
798 // int subSector = CSCTriggerNumbering::triggerSubSectorFromLabels((*trackStub).first);
799 // int fpga = ( subSector ? subSector-1 : station+1 );
800 
801 // lclphidat lclPhi;
802 // lclPhi = srLUTs_[fpga]->localPhi(lct->getStrip(), lct->getPattern(), lct->getQuality(), lct->getBend());
803 // gblphidat gblPhi;
804 // gblPhi = srLUTs_[fpga]->globalPhiME(lclPhi.phi_local, lct->getKeyWG(), cscId+1);
805 // gbletadat gblEta;
806 // gblEta = srLUTs_[fpga]->globalEtaME(lclPhi.phi_bend_local, lclPhi.phi_local, lct->getKeyWG(), cscId+1);
807 // haloEta[station-1] = gblEta.global_eta/127. * 1.5 + 0.9;
808 // if(station==1 && cscId<2) haloME11 = true;
809 // }
810  cscTrackStub++;
811  }
812  }
813  cscTrackStubNumbers->Fill(cscTrackStub);
814 
815 // if(trigMode == 15)
816 // {
817 // float dEta13 = haloEta[2]-haloEta[0];
818 // float dEta12 = haloEta[1]-haloEta[0];
819 // if(haloME11)
820 // {
821 // if(haloEta[1]!=-1.0) haloDelEta112->Fill(dEta12);
822 // if(haloEta[2]!=-1.0) haloDelEta113->Fill(dEta13);
823 // } else {
824 // if(haloEta[1]!=-1.0) haloDelEta12->Fill(dEta12);
825 // if(haloEta[2]!=-1.0) haloDelEta13->Fill(dEta13);
826 // }
827 // }
828  //
829 
830 
831 
832  }
833  }
834  csctfntrack->Fill(NumCSCTfTracksRep);
835 
836 
837  if( mbProducer.label() != "null" )
838  {
839  // handle to needed collections
841  e.getByLabel(mbProducer.label(), mbProducer.instance(), dtStubs);
844 
845  // loop on the DT stubs
846  std::vector<csctf::TrackStub> vstubs = dtStubs->get();
847  for(std::vector<csctf::TrackStub>::const_iterator stub=vstubs.begin();
848  stub!=vstubs.end(); stub++)
849  {
850  if (verbose_)
851  {
852  edm::LogInfo("DataNotFound") << "\n mbEndcap: " << stub->endcap();
853  edm::LogInfo("DataNotFound") << "\n stub->getStrip()[FLAG]: " << stub->getStrip();
854  edm::LogInfo("DataNotFound") << "\n stub->getKeyWG()[CAL]: " << stub->getKeyWG();
855  edm::LogInfo("DataNotFound") << "\n stub->BX(): " << stub->BX();
856  edm::LogInfo("DataNotFound") << "\n stub->sector(): " << stub->sector();
857  edm::LogInfo("DataNotFound") << "\n stub->subsector(): " << stub->subsector();
858  edm::LogInfo("DataNotFound") << "\n stub->station(): " << stub->station();
859  edm::LogInfo("DataNotFound") << "\n stub->phiPacked(): " << stub->phiPacked();
860  edm::LogInfo("DataNotFound") << "\n stub->getBend(): " << stub->getBend();
861  edm::LogInfo("DataNotFound") << "\n stub->getQuality(): " << stub->getQuality();
862  edm::LogInfo("DataNotFound") << "\n stub->cscid(): " << stub->cscid() << endl;
863  }
864  // define the sector ID
865  int mbId = (stub->endcap()==2) ? 6 : 0;
866  mbId += stub->sector();
867  // *** do not fill if CalMB variable is set ***
868  // horrible! They used the same class to write up the LCT and MB info,
869  // but given the MB does not have strip and WG they replaced this two
870  // with the flag and cal bits... :S
871  if (stub->getKeyWG() == 0)
872  {
873  // if FLAG =1, muon belong to previous BX
874  int bxDT = stub->BX()-stub->getStrip(); // correct by the FLAG
875  int subDT = stub->subsector();
876 
877  // Fill the event only if CSC had or would have triggered
878  if (isCSCcand_)
879  {
880  //look for tracks in the event and compare the matching DT stubs
881  int trkBX = 0;
882  for(L1CSCTrackCollection::const_iterator trk=tracks->begin(); trk<tracks->end(); trk++)
883  {
884  trkBX = trk->first.BX();
885  int trkId = (trk->first.endcap()==2) ? 6 : 0;
886  trkId += trk->first.sector();
887  if (verbose_){
888  edm::LogInfo("DataNotFound") << "\n trk BX: " << trkBX
889  << " Sector: " << trkId
890  << " SubSector: " << trk->first.subsector()
891  << " Endcap: " << trk->first.endcap();
892 
893  edm::LogInfo("DataNotFound") << "\n DT BX: " << stub->BX()
894  << " Sector: " << mbId
895  << " SubSector: " << stub->subsector()
896  << " Endcap: " << stub->endcap() << endl;
897  }
898 
899  if (mbId == trkId)
900  {
901  if (verbose_) {
902  edm::LogInfo("DataNotFound") << " --> MATCH" << endl;
903  edm::LogInfo("DataNotFound") << "Fill :" << trkBX+6-bxDT << " -- " << subDT << " -- cands" << endl;
904  }
905  // DT bx ranges from 3 to 9
906  // trk bx ranges from -3 to 3
907  DTstubsTimeTrackMenTimeArrival[mbId-1]->Fill(bxDT-trkBX-6,subDT);//subsec
908  }
909  }// loop on the tracks
910  }//if (isCSCcand_){
911  }//if (stub->getKeyWG() == 0) {
912  }
913  }
914 }
MonitorElement * DTstubsTimeTrackMenTimeArrival[12]
Definition: L1TCSCTF.h:103
MonitorElement * csctfoccupancies
Definition: L1TCSCTF.h:81
unsigned long long cacheIdentifier() const
MonitorElement * csctfTrackEtaHighQ
Definition: L1TCSCTF.h:93
MonitorElement * csctfTrackPhi
Definition: L1TCSCTF.h:90
bool verbose_
Definition: L1TCSCTF.h:111
unsigned long long m_scalesCacheID
Definition: L1TCSCTF.h:120
MonitorElement * csctfTrackPhi_H
Definition: L1TCSCTF.h:94
virtual float getLowEdge(unsigned packed) const =0
get the low edge of bin represented by packed
#define abs(x)
Definition: mlp_lapack.h:159
MonitorElement * csctfbx
Definition: L1TCSCTF.h:77
MonitorElement * csctfTrackEtaLowQ
Definition: L1TCSCTF.h:92
edm::InputTag mbProducer
Definition: L1TCSCTF.h:114
gbletadat globalEtaME(int phi_bend, int phi_local, int wire_group, int cscid) const
static void setGeometry(const edm::ESHandle< CSCGeometry > &thegeom)
MonitorElement * csctfTrackEta
Definition: L1TCSCTF.h:91
void Fill(long long x)
edm::InputTag statusProducer
Definition: L1TCSCTF.h:114
MonitorElement * csctfTrackEta_H
Definition: L1TCSCTF.h:95
const L1MuTriggerScales * ts
Definition: L1TCSCTF.h:118
MonitorElement * cscTrackStubNumbers
Definition: L1TCSCTF.h:96
lclphidat localPhi(int strip, int pattern, int quality, int lr) const
Geometry Lookup Tables.
int L1ABXN
Definition: L1TCSCTF.h:107
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
int BxInEvent_
Definition: L1TCSCTF.h:104
const L1MuScale * getPhiScale() const
get the phi scale
int nev_
Definition: L1TCSCTF.h:109
MonitorElement * csctfChamberOccupancies
Definition: L1TCSCTF.h:89
bool isValid() const
Definition: HandleBase.h:76
edm::InputTag lctProducer
Definition: L1TCSCTF.h:114
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
CSCSectorReceiverLUT * srLUTs_[5]
Definition: L1TCSCTF.h:116
#define M_PI
Definition: BFit3D.cc:3
MonitorElement * csctferrors
Definition: L1TCSCTF.h:80
tuple tracks
Definition: testEve_cfg.py:39
bool isCSCcand_
Definition: L1TCSCTF.h:105
class global_phi_data gblphidat
const T & get() const
Definition: EventSetup.h:55
MonitorElement * csctfTrackM
Definition: L1TCSCTF.h:97
T const * product() const
Definition: ESHandle.h:62
MonitorElement * csctfbx_H
Definition: L1TCSCTF.h:78
std::vector< DigiType >::const_iterator const_iterator
class local_phi_data lclphidat
Data Types.
static int triggerSubSectorFromLabels(int station, int chamber)
T const * product() const
Definition: Handle.h:74
MonitorElement * csctfntrack
Definition: L1TCSCTF.h:76
edm::InputTag trackProducer
Definition: L1TCSCTF.h:114
std::string const & label() const
Definition: InputTag.h:25
MonitorElement * trackModeVsQ
Definition: L1TCSCTF.h:98
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
MonitorElement * csctfoccupancies_H
Definition: L1TCSCTF.h:82
static unsigned int const shift
std::pair< const_iterator, const_iterator > Range
const L1MuTriggerPtScale * tpts
Definition: L1TCSCTF.h:119
unsigned long long m_ptScaleCacheID
Definition: L1TCSCTF.h:121
tuple status
Definition: ntuplemaker.py:245
class global_eta_data gbletadat
std::string const & instance() const
Definition: InputTag.h:26
edm::InputTag gmtProducer
Definition: L1TCSCTF.h:114
gblphidat globalPhiME(int phi_local, int wire_group, int cscid) const
void L1TCSCTF::beginJob ( void  )
protectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 94 of file L1TCSCTF.cc.

References DQMStore::book1D(), DQMStore::book2D(), csctfbx, csctfbx_H, csctfChamberOccupancies, csctferrors, csctfntrack, csctfoccupancies, csctfoccupancies_H, csctfTrackEta, csctfTrackEta_H, csctfTrackEtaHighQ, csctfTrackEtaLowQ, csctfTrackM, csctfTrackPhi, csctfTrackPhi_H, cscTrackStubNumbers, dbe, DTstubsTimeTrackMenTimeArrival, MonitorElement::getTH2F(), i, M_PI, m_ptScaleCacheID, m_scalesCacheID, nev_, cppFunctionSkipper::operator, DQMStore::rmdir(), MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), and trackModeVsQ.

95 {
96  m_scalesCacheID = -999;
97  m_ptScaleCacheID = -999;
98 
99  nev_ = 0;
100 
101  // get hold of back-end interface
102  DQMStore* dbe = 0;
103  dbe = Service<DQMStore>().operator->();
104 
105  if( dbe )
106  {
107  dbe->setCurrentFolder("L1T/L1TCSCTF");
108  dbe->rmdir("L1T/L1TCSCTF");
109  }
110 
111 
112  if( dbe )
113  {
114  dbe->setCurrentFolder("L1T/L1TCSCTF");
115 
116  // Error counting histogram:
117  // 1) checks TF data integrity (error rate - first bin),
118  // 2) monitors sychronization on input links (4 errors types: SE/SM/BX/AF; ORed for all time bins, links, and SPs),
119  // 3) reports FMM status (if in any SP FMM status != "Ready" - fill the last bin)
120  csctferrors = dbe->book1D("CSCTF_errors","CSCTF Errors",6,0,6);
121  csctferrors->setAxisTitle("Error type",1);
122  csctferrors->setAxisTitle("Number of Errors",2);
123  csctferrors->setBinLabel(1,"Corruptions",1);
124  csctferrors->setBinLabel(2,"Synch. Err.",1);
125  csctferrors->setBinLabel(3,"Synch. Mod.",1);
126  csctferrors->setBinLabel(4,"BX mismatch",1);
127  csctferrors->setBinLabel(5,"Time misalign.",1);
128  csctferrors->setBinLabel(6,"FMM != Ready",1);
129 
130  // Occupancy histogram Eta x Y, where Y:
131  // 1) Phi_packed of input LCTs from 1st, 2nd, 3rd, and 4th stations
132  // 2) Phi_packed of output tracks
133  // (all 12 SPs - 360 degree coveradge)
134  csctfoccupancies = dbe->book2D("CSCTF_occupancies", "CSCTF Occupancies", 64,-32,31,32,0,6.2);
135  csctfoccupancies->setAxisTitle("#eta",1);
136  csctfoccupancies->setAxisTitle("#phi",2);
137  csctfoccupancies->setBinLabel( 1,"-2.5", 1);
138  csctfoccupancies->setBinLabel( 8,"-2.1", 1);
139  csctfoccupancies->setBinLabel(18,"-1.6", 1);
140  csctfoccupancies->setBinLabel(26,"-1.2", 1);
141  csctfoccupancies->setBinLabel(32,"-0.9", 1);
142  csctfoccupancies->setBinLabel(33, "0.9", 1);
143  csctfoccupancies->setBinLabel(39, "1.2", 1);
144  csctfoccupancies->setBinLabel(47, "1.6", 1);
145  csctfoccupancies->setBinLabel(57, "2.1", 1);
146  csctfoccupancies->setBinLabel(64, "2.5", 1);
147 
148  // ... and for halo muons only
149  csctfoccupancies_H = dbe->book2D("CSCTF_occupancies_H", "CSCTF Halo Occupancies", 64,-32,31,32,0,6.2);
150  csctfoccupancies_H->setAxisTitle("#eta",1);
151  csctfoccupancies_H->setAxisTitle("#phi",2);
152  csctfoccupancies_H->setBinLabel( 1,"-2.5", 1);
153  csctfoccupancies_H->setBinLabel( 8,"-2.1", 1);
154  csctfoccupancies_H->setBinLabel(18,"-1.6", 1);
155  csctfoccupancies_H->setBinLabel(26,"-1.2", 1);
156  csctfoccupancies_H->setBinLabel(32,"-0.9", 1);
157  csctfoccupancies_H->setBinLabel(33, "0.9", 1);
158  csctfoccupancies_H->setBinLabel(39, "1.2", 1);
159  csctfoccupancies_H->setBinLabel(47, "1.6", 1);
160  csctfoccupancies_H->setBinLabel(57, "2.1", 1);
161  csctfoccupancies_H->setBinLabel(64, "2.5", 1);
162 
163  //haloDelEta12 = dbe->book1D("CSCTF_Halo_Eta12", "#Delta #eta_{12} for Halo Muons", 40, -0.20,0.30);
164  //haloDelEta112 = dbe->book1D("CSCTF_Halo_Eta112","#Delta #eta_{112} for Halo Muons", 40, -0.20,0.30);
165  //haloDelEta13 = dbe->book1D("CSCTF_Halo_Eta13", "#Delta #eta_{13} for Halo Muons", 40, -0.20,0.30);
166  //haloDelEta113 = dbe->book1D("CSCTF_Halo_Eta113","#Delta #eta_{113} for Halo Muons", 40, -0.20,0.30);
167 
168  // Quality VS Mode
169  trackModeVsQ = dbe->book2D("CSCTF_Track_ModeVsQual","CSC Track Mode Vs Quality", 19, -0.5, 18.5, 4, 0, 4);
170  trackModeVsQ->setAxisTitle("Track Type", 1);
171  trackModeVsQ->setBinLabel(1,"No Track",1);
172  trackModeVsQ->setBinLabel(2,"Bad Phi/Single",1);
173  trackModeVsQ->setBinLabel(3,"ME1-2-3",1);
174  trackModeVsQ->setBinLabel(4,"ME1-2-4",1);
175  trackModeVsQ->setBinLabel(5,"ME1-3-4",1);
176  trackModeVsQ->setBinLabel(6,"ME2-3-4",1);
177  trackModeVsQ->setBinLabel(7,"ME1-2",1);
178  trackModeVsQ->setBinLabel(8,"ME1-3",1);
179  trackModeVsQ->setBinLabel(9,"ME2-3",1);
180  trackModeVsQ->setBinLabel(10,"ME2-4",1);
181  trackModeVsQ->setBinLabel(11,"ME3-4",1);
182  trackModeVsQ->setBinLabel(12,"MB1-ME3",1);
183  trackModeVsQ->setBinLabel(13,"MB1-ME2",1);
184  trackModeVsQ->setBinLabel(14,"ME1-4",1);
185  trackModeVsQ->setBinLabel(15,"MB1-ME1",1);
186  trackModeVsQ->setBinLabel(16,"Halo Trigger",1);
187  trackModeVsQ->setBinLabel(17,"MB1-ME1-2",1);
188  trackModeVsQ->setBinLabel(18,"MB1-ME1-3",1);
189  trackModeVsQ->setBinLabel(19,"MB1-ME2-3",1);
190 
191  trackModeVsQ->setAxisTitle("Quality",2);
192  trackModeVsQ->setBinLabel(1,"0",2);
193  trackModeVsQ->setBinLabel(2,"1",2);
194  trackModeVsQ->setBinLabel(3,"2",2);
195  trackModeVsQ->setBinLabel(4,"3",2);
196 
197  // Mode
198  csctfTrackM = dbe->book1D("CSCTF_Track_Mode","CSC Track Mode", 19, -0.5, 18.5);
199  csctfTrackM->setAxisTitle("Track Type", 1);
200  csctfTrackM->setBinLabel(1,"No Track",1);
201  csctfTrackM->setBinLabel(2,"Bad Phi/Single",1);
202  csctfTrackM->setBinLabel(3,"ME1-2-3",1);
203  csctfTrackM->setBinLabel(4,"ME1-2-4",1);
204  csctfTrackM->setBinLabel(5,"ME1-3-4",1);
205  csctfTrackM->setBinLabel(6,"ME2-3-4",1);
206  csctfTrackM->setBinLabel(7,"ME1-2",1);
207  csctfTrackM->setBinLabel(8,"ME1-3",1);
208  csctfTrackM->setBinLabel(9,"ME2-3",1);
209  csctfTrackM->setBinLabel(10,"ME2-4",1);
210  csctfTrackM->setBinLabel(11,"ME3-4",1);
211  csctfTrackM->setBinLabel(12,"MB1-ME3",1);
212  csctfTrackM->setBinLabel(13,"MB1-ME2",1);
213  csctfTrackM->setBinLabel(14,"ME1-4",1);
214  csctfTrackM->setBinLabel(15,"MB1-ME1",1);
215  csctfTrackM->setBinLabel(16,"Halo Trigger",1);
216  csctfTrackM->setBinLabel(17,"MB1-ME1-2",1);
217  csctfTrackM->setBinLabel(18,"MB1-ME1-3",1);
218  csctfTrackM->setBinLabel(19,"MB1-ME2-3",1);
219 
220  // Chamber Occupancy
221  csctfChamberOccupancies = dbe->book2D("CSCTF_Chamber_Occupancies","CSCTF Chamber Occupancies", 54, -0.05, 5.35, 10, -5.5, 4.5);
222  csctfChamberOccupancies->setAxisTitle("Sector, (chambers 1-9 not labeled)",1);
226  csctfChamberOccupancies->setBinLabel(4,"ME-1b",2);
227  csctfChamberOccupancies->setBinLabel(5,"ME-1a",2);
228  csctfChamberOccupancies->setBinLabel(6,"ME+1a",2);
229  csctfChamberOccupancies->setBinLabel(7,"ME+1b",2);
232  csctfChamberOccupancies->setBinLabel(10,"ME+4",2);
239 
240  // Track Phi
241  csctfTrackPhi = dbe->book1D("CSCTF_Track_Phi", "CSCTF Track #phi",144,0,2*M_PI);
242  csctfTrackPhi->setAxisTitle("Track #phi", 1);
243 
244  // Track Eta
245  csctfTrackEta = dbe->book1D("CSCTF_Track_Eta", "CSCTF Track #eta",64,-32,32);
246  csctfTrackEta->setAxisTitle("Track #eta", 1);
247  csctfTrackEta->setBinLabel( 1,"-2.5", 1);
248  csctfTrackEta->setBinLabel( 8,"-2.1", 1);
249  csctfTrackEta->setBinLabel(18,"-1.6", 1);
250  csctfTrackEta->setBinLabel(26,"-1.2", 1);
251  csctfTrackEta->setBinLabel(32,"-0.9", 1);
252  csctfTrackEta->setBinLabel(33, "0.9", 1);
253  csctfTrackEta->setBinLabel(39, "1.2", 1);
254  csctfTrackEta->setBinLabel(47, "1.6", 1);
255  csctfTrackEta->setBinLabel(57, "2.1", 1);
256  csctfTrackEta->setBinLabel(64, "2.5", 1);
257 
258  // Track Eta Low Quality
259  csctfTrackEtaLowQ = dbe->book1D("CSCTF_Track_Eta_LowQ", "CSCTF Track #eta LQ",64,-32,32);
260  csctfTrackEtaLowQ->setAxisTitle("Track #eta", 1);
261  csctfTrackEtaLowQ->setBinLabel( 1,"-2.5", 1);
262  csctfTrackEtaLowQ->setBinLabel( 8,"-2.1", 1);
263  csctfTrackEtaLowQ->setBinLabel(18,"-1.6", 1);
264  csctfTrackEtaLowQ->setBinLabel(26,"-1.2", 1);
265  csctfTrackEtaLowQ->setBinLabel(32,"-0.9", 1);
266  csctfTrackEtaLowQ->setBinLabel(33, "0.9", 1);
267  csctfTrackEtaLowQ->setBinLabel(39, "1.2", 1);
268  csctfTrackEtaLowQ->setBinLabel(47, "1.6", 1);
269  csctfTrackEtaLowQ->setBinLabel(57, "2.1", 1);
270  csctfTrackEtaLowQ->setBinLabel(64, "2.5", 1);
271 
272 
273  // Track Eta High Quality
274  csctfTrackEtaHighQ = dbe->book1D("CSCTF_Track_Eta_HighQ", "CSCTF Track #eta HQ",64,-32,32);
275  csctfTrackEtaHighQ->setAxisTitle("Track #eta", 1);
276  csctfTrackEtaHighQ->setBinLabel( 1,"-2.5", 1);
277  csctfTrackEtaHighQ->setBinLabel( 8,"-2.1", 1);
278  csctfTrackEtaHighQ->setBinLabel(18,"-1.6", 1);
279  csctfTrackEtaHighQ->setBinLabel(26,"-1.2", 1);
280  csctfTrackEtaHighQ->setBinLabel(32,"-0.9", 1);
281  csctfTrackEtaHighQ->setBinLabel(33, "0.9", 1);
282  csctfTrackEtaHighQ->setBinLabel(39, "1.2", 1);
283  csctfTrackEtaHighQ->setBinLabel(47, "1.6", 1);
284  csctfTrackEtaHighQ->setBinLabel(57, "2.1", 1);
285  csctfTrackEtaHighQ->setBinLabel(64, "2.5", 1);
286 
287 
288  // Halo Phi
289  csctfTrackPhi_H = dbe->book1D("CSCTF_Track_Phi_H", "CSCTF Halo #phi",144,0,2*M_PI);
290  csctfTrackPhi_H->setAxisTitle("Track #phi", 1);
291 
292  // Halo Eta
293  csctfTrackEta_H = dbe->book1D("CSCTF_Track_Eta_H", "CSCTF Halo #eta",64,-32,32);
294  csctfTrackEta_H->setAxisTitle("Track #eta", 1);
295  csctfTrackEta_H->setBinLabel( 1,"-2.5", 1);
296  csctfTrackEta_H->setBinLabel( 8,"-2.1", 1);
297  csctfTrackEta_H->setBinLabel(18,"-1.6", 1);
298  csctfTrackEta_H->setBinLabel(26,"-1.2", 1);
299  csctfTrackEta_H->setBinLabel(32,"-0.9", 1);
300  csctfTrackEta_H->setBinLabel(33, "0.9", 1);
301  csctfTrackEta_H->setBinLabel(39, "1.2", 1);
302  csctfTrackEta_H->setBinLabel(47, "1.6", 1);
303  csctfTrackEta_H->setBinLabel(57, "2.1", 1);
304  csctfTrackEta_H->setBinLabel(64, "2.5", 1);
305 
306  // Track Timing
307  csctfbx = dbe->book2D("CSCTF_bx","CSCTF BX", 12,1,13, 7,-3,3) ;
308  csctfbx->setAxisTitle("Sector (Endcap)", 1);
309  csctfbx->setBinLabel( 1," 1 (+)",1);
310  csctfbx->setBinLabel( 2," 2 (+)",1);
311  csctfbx->setBinLabel( 3," 3 (+)",1);
312  csctfbx->setBinLabel( 4," 4 (+)",1);
313  csctfbx->setBinLabel( 5," 5 (+)",1);
314  csctfbx->setBinLabel( 6," 6 (+)",1);
315  csctfbx->setBinLabel( 7," 7 (-)",1);
316  csctfbx->setBinLabel( 8," 8 (-)",1);
317  csctfbx->setBinLabel( 9," 9 (-)",1);
318  csctfbx->setBinLabel(10,"10 (-)",1);
319  csctfbx->setBinLabel(11,"11 (-)",1);
320  csctfbx->setBinLabel(12,"12 (-)",1);
321 
322  csctfbx->setAxisTitle("CSCTF BX", 2);
323  csctfbx->setBinLabel( 1, "-3", 2);
324  csctfbx->setBinLabel( 2, "-2", 2);
325  csctfbx->setBinLabel( 3, "-1", 2);
326  csctfbx->setBinLabel( 4, "-0", 2);
327  csctfbx->setBinLabel( 5, " 1", 2);
328  csctfbx->setBinLabel( 6, " 2", 2);
329  csctfbx->setBinLabel( 7, " 3", 2);
330 
331  // Halo Timing
332  csctfbx_H = dbe->book2D("CSCTF_bx_H","CSCTF HALO BX", 12,1,13, 7,-3,3) ;
333  csctfbx_H->setAxisTitle("Sector (Endcap)", 1);
334  csctfbx_H->setBinLabel( 1," 1 (+)",1);
335  csctfbx_H->setBinLabel( 2," 2 (+)",1);
336  csctfbx_H->setBinLabel( 3," 3 (+)",1);
337  csctfbx_H->setBinLabel( 4," 4 (+)",1);
338  csctfbx_H->setBinLabel( 5," 5 (+)",1);
339  csctfbx_H->setBinLabel( 6," 6 (+)",1);
340  csctfbx_H->setBinLabel( 7," 7 (-)",1);
341  csctfbx_H->setBinLabel( 8," 8 (-)",1);
342  csctfbx_H->setBinLabel( 9," 9 (-)",1);
343  csctfbx_H->setBinLabel(10,"10 (-)",1);
344  csctfbx_H->setBinLabel(11,"11 (-)",1);
345  csctfbx_H->setBinLabel(12,"12 (-)",1);
346 
347  csctfbx_H->setAxisTitle("CSCTF BX", 2);
348  csctfbx_H->setBinLabel( 1, "-3", 2);
349  csctfbx_H->setBinLabel( 2, "-2", 2);
350  csctfbx_H->setBinLabel( 3, "-1", 2);
351  csctfbx_H->setBinLabel( 4, "-0", 2);
352  csctfbx_H->setBinLabel( 5, " 1", 2);
353  csctfbx_H->setBinLabel( 6, " 2", 2);
354  csctfbx_H->setBinLabel( 7, " 3", 2);
355 
356  // Number of Tracks Stubs
357  cscTrackStubNumbers = dbe->book1D("CSCTF_TrackStubs", "Number of Stubs in CSCTF Tracks", 5, 0, 5);
358  cscTrackStubNumbers->setBinLabel( 1, "0", 1);
359  cscTrackStubNumbers->setBinLabel( 2, "1", 1);
360  cscTrackStubNumbers->setBinLabel( 3, "2", 1);
361  cscTrackStubNumbers->setBinLabel( 4, "3", 1);
362  cscTrackStubNumbers->setBinLabel( 5, "4", 1);
363 
364  // Number of Tracks
365  csctfntrack = dbe->book1D("CSCTF_ntrack","Number of CSCTracks found per event", 5, 0, 5 ) ;
366  csctfntrack->setBinLabel( 1, "0", 1);
367  csctfntrack->setBinLabel( 2, "1", 1);
368  csctfntrack->setBinLabel( 3, "2", 1);
369  csctfntrack->setBinLabel( 4, "3", 1);
370  csctfntrack->setBinLabel( 5, "4", 1);
371  }
372 
373  char hname [200];
374  char htitle[200];
375 
376  for(int i=0; i<12; i++) {
377 
378  sprintf(hname ,"DTstubsTimeTrackMenTimeArrival_%d",i+1);
379  sprintf(htitle,"T_{track} - T_{DT stub} sector %d",i+1);
380 
381  DTstubsTimeTrackMenTimeArrival[i] = dbe->book2D(hname,htitle, 7,-3,3, 2,1,3);
382  DTstubsTimeTrackMenTimeArrival[i]->getTH2F()->SetMinimum(0);
383 
384  // axis makeup
385  DTstubsTimeTrackMenTimeArrival[i]->setAxisTitle("bx_{CSC track} - bx_{DT stub}",1);
387 
395 
398 
399  }
400 
401 }
MonitorElement * DTstubsTimeTrackMenTimeArrival[12]
Definition: L1TCSCTF.h:103
MonitorElement * csctfoccupancies
Definition: L1TCSCTF.h:81
MonitorElement * csctfTrackEtaHighQ
Definition: L1TCSCTF.h:93
int i
Definition: DBlmapReader.cc:9
DQMStore * dbe
Definition: L1TCSCTF.h:74
MonitorElement * csctfTrackPhi
Definition: L1TCSCTF.h:90
unsigned long long m_scalesCacheID
Definition: L1TCSCTF.h:120
MonitorElement * csctfTrackPhi_H
Definition: L1TCSCTF.h:94
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:717
void rmdir(const std::string &fullpath)
Definition: DQMStore.cc:2530
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * csctfbx
Definition: L1TCSCTF.h:77
MonitorElement * csctfTrackEtaLowQ
Definition: L1TCSCTF.h:92
MonitorElement * csctfTrackEta
Definition: L1TCSCTF.h:91
MonitorElement * csctfTrackEta_H
Definition: L1TCSCTF.h:95
MonitorElement * cscTrackStubNumbers
Definition: L1TCSCTF.h:96
int nev_
Definition: L1TCSCTF.h:109
MonitorElement * csctfChamberOccupancies
Definition: L1TCSCTF.h:89
#define M_PI
Definition: BFit3D.cc:3
MonitorElement * csctferrors
Definition: L1TCSCTF.h:80
MonitorElement * csctfTrackM
Definition: L1TCSCTF.h:97
MonitorElement * csctfbx_H
Definition: L1TCSCTF.h:78
MonitorElement * csctfntrack
Definition: L1TCSCTF.h:76
MonitorElement * trackModeVsQ
Definition: L1TCSCTF.h:98
MonitorElement * csctfoccupancies_H
Definition: L1TCSCTF.h:82
unsigned long long m_ptScaleCacheID
Definition: L1TCSCTF.h:121
TH2F * getTH2F(void) const
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:845
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:429
void L1TCSCTF::endJob ( void  )
protectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 404 of file L1TCSCTF.cc.

References dbe, nev_, outputFile_, DQMStore::save(), and verbose_.

405 {
406 
407  if(verbose_) edm::LogInfo("DataNotFound") << "L1TCSCTF: end job...." << endl;
408  LogInfo("EndJob") << "analyzed " << nev_ << " events";
409 
410  if ( outputFile_.size() != 0 && dbe ) dbe->save(outputFile_);
411 
412  return;
413 }
DQMStore * dbe
Definition: L1TCSCTF.h:74
bool verbose_
Definition: L1TCSCTF.h:111
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:2113
std::string outputFile_
Definition: L1TCSCTF.h:110
int nev_
Definition: L1TCSCTF.h:109

Member Data Documentation

int L1TCSCTF::BxInEvent_
private

Definition at line 104 of file L1TCSCTF.h.

Referenced by analyze().

MonitorElement* L1TCSCTF::csctfAFerror
private

Definition at line 99 of file L1TCSCTF.h.

MonitorElement* L1TCSCTF::csctfbx
private

Definition at line 77 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfbx_H
private

Definition at line 78 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfChamberOccupancies
private

Definition at line 89 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctferrors
private

Definition at line 80 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfntrack
private

Definition at line 76 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfoccupancies
private

Definition at line 81 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfoccupancies_H
private

Definition at line 82 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfTrackEta
private

Definition at line 91 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfTrackEta_H
private

Definition at line 95 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfTrackEtaHighQ
private

Definition at line 93 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfTrackEtaLowQ
private

Definition at line 92 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfTrackM
private

Definition at line 97 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfTrackPhi
private

Definition at line 90 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::csctfTrackPhi_H
private

Definition at line 94 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TCSCTF::cscTrackStubNumbers
private

Definition at line 96 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

DQMStore* L1TCSCTF::dbe
private

Definition at line 74 of file L1TCSCTF.h.

Referenced by beginJob(), endJob(), and L1TCSCTF().

MonitorElement* L1TCSCTF::DTstubsTimeTrackMenTimeArrival[12]
private

Definition at line 103 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

edm::InputTag L1TCSCTF::gmtProducer
private

Definition at line 114 of file L1TCSCTF.h.

Referenced by analyze().

bool L1TCSCTF::isCSCcand_
private

Definition at line 105 of file L1TCSCTF.h.

Referenced by analyze().

int L1TCSCTF::L1ABXN
private

Definition at line 107 of file L1TCSCTF.h.

Referenced by analyze().

edm::InputTag L1TCSCTF::lctProducer
private

Definition at line 114 of file L1TCSCTF.h.

Referenced by analyze().

ofstream L1TCSCTF::logFile_
private

Definition at line 113 of file L1TCSCTF.h.

unsigned long long L1TCSCTF::m_ptScaleCacheID
private

Definition at line 121 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

unsigned long long L1TCSCTF::m_scalesCacheID
private

Definition at line 120 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

edm::InputTag L1TCSCTF::mbProducer
private

Definition at line 114 of file L1TCSCTF.h.

Referenced by analyze().

bool L1TCSCTF::monitorDaemon_
private

Definition at line 112 of file L1TCSCTF.h.

int L1TCSCTF::nev_
private

Definition at line 109 of file L1TCSCTF.h.

Referenced by analyze(), beginJob(), and endJob().

std::string L1TCSCTF::outputFile_
private

Definition at line 110 of file L1TCSCTF.h.

Referenced by endJob(), and L1TCSCTF().

CSCSectorReceiverLUT* L1TCSCTF::srLUTs_[5]
private

Definition at line 116 of file L1TCSCTF.h.

Referenced by analyze(), L1TCSCTF(), and ~L1TCSCTF().

edm::InputTag L1TCSCTF::statusProducer
private

Definition at line 114 of file L1TCSCTF.h.

Referenced by analyze().

const L1MuTriggerPtScale* L1TCSCTF::tpts
private

Definition at line 119 of file L1TCSCTF.h.

Referenced by analyze().

MonitorElement* L1TCSCTF::trackModeVsQ
private

Definition at line 98 of file L1TCSCTF.h.

Referenced by analyze(), and beginJob().

edm::InputTag L1TCSCTF::trackProducer
private

Definition at line 114 of file L1TCSCTF.h.

Referenced by analyze().

const L1MuTriggerScales* L1TCSCTF::ts
private

Definition at line 118 of file L1TCSCTF.h.

Referenced by analyze().

bool L1TCSCTF::verbose_
private

Definition at line 111 of file L1TCSCTF.h.

Referenced by analyze(), endJob(), and L1TCSCTF().