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 Member Functions | Private Attributes
L1TDTTF Class Reference

#include <L1TDTTF.h>

Inheritance diagram for L1TDTTF:
edm::EDAnalyzer

Public Member Functions

 L1TDTTF (const edm::ParameterSet &ps)
 base services More...
 
virtual ~L1TDTTF ()
 
- 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 beginLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
 
void endJob (void)
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Private Member Functions

void bookEta (int wh, int &nbins, float &start, float &stop)
 
void fillMEs (std::vector< L1MuDTTrackCand > *trackContainer, std::vector< L1MuRegionalCand > &gmtDttfCands)
 
void setQualLabel (MonitorElement *me, int axis)
 
void setWheelLabel (MonitorElement *me)
 

Private Attributes

DQMStoredbe_
 
MonitorElementdttf_bx [6][12]
 
MonitorElementdttf_bx_2ndTrack [6][12]
 
MonitorElementdttf_eta [6][12]
 
MonitorElementdttf_eta_fine_fraction [6][12]
 
MonitorElementdttf_eta_wheel_2ndTrack [6]
 
MonitorElementdttf_gmt_ghost
 
MonitorElementdttf_gmt_match
 
MonitorElementdttf_gmt_missed
 
MonitorElementdttf_nTracksPerEv [6][12]
 
MonitorElementdttf_nTracksPerEvent_integ
 
MonitorElementdttf_nTracksPerEvent_wheel [6]
 
MonitorElementdttf_phi [6][12]
 
MonitorElementdttf_phi_eta_coarse_wheel [6]
 
MonitorElementdttf_phi_eta_fine_wheel [6]
 
MonitorElementdttf_phi_eta_wheel_2ndTrack [6]
 
MonitorElementdttf_phi_wheel_2ndTrack [6]
 
MonitorElementdttf_pt [6][12]
 
MonitorElementdttf_pt_wheel_2ndTrack [6]
 
MonitorElementdttf_q [6][12]
 
MonitorElementdttf_q_wheel_2ndTrack [6]
 
MonitorElementdttf_qual [6][12]
 
MonitorElementdttf_quality_summary_wheel_2ndTrack [6]
 
MonitorElementdttf_quality_wheel_2ndTrack [6]
 
MonitorElementdttf_spare
 
edm::InputTag dttpgSource_
 
edm::InputTag gmtSource_
 
std::string l1tsubsystemfolder_
 
edm::InputTag muonCollectionLabel_
 
int nev_
 
int nev_dttf_
 
int nev_dttf_track2_
 
int numTracks [6][12]
 
bool online_
 
std::string outputFile_
 
edm::InputTag trackInputTag_
 
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 31 of file L1TDTTF.h.

Constructor & Destructor Documentation

L1TDTTF::L1TDTTF ( const edm::ParameterSet ps)

base services

DT input output tracks GMT GlobalMuon try

Verbose?

Use DQMStore?

Use ROOT Output?

Definition at line 205 of file L1TDTTF.cc.

References dbe_, dttpgSource_, edm::ParameterSet::getUntrackedParameter(), l1tsubsystemfolder_, edm::InputTag::label(), NULL, cppFunctionSkipper::operator, outputFile_, edm::InputTag::process(), DQMStore::setCurrentFolder(), DQMStore::setVerbose(), trackInputTag_, and verbose_.

206  : dttpgSource_( ps.getParameter< edm::InputTag >("dttpgSource") ),
207  gmtSource_( ps.getParameter< edm::InputTag >("gmtSource") ),
208  muonCollectionLabel_( ps.getParameter<edm::InputTag>("MuonCollection") ),
209  l1tsubsystemfolder_( ps.getUntrackedParameter<std::string>("l1tSystemFolder",
210  "L1T/L1TDTTF")),
211  online_( ps.getUntrackedParameter<bool>("online", true) ),
212  verbose_( ps.getUntrackedParameter<bool>("verbose", false) )
213 
214 {
215 
216  std::string trstring =
217  dttpgSource_.label() + ":DATA:" + dttpgSource_.process();
218  trackInputTag_ = edm::InputTag(trstring);
219 
221  if ( verbose_ ) edm::LogInfo("L1TDTTF: constructor") << "Verbose enabled";
222 
224  dbe_ = NULL;
225  if ( ps.getUntrackedParameter<bool>("DQMStore", false) ) {
227  dbe_->setVerbose(0);
229  }
230 
232  if ( ps.getUntrackedParameter<bool>("disableROOToutput", false) ) {
233 
234  outputFile_ = "";
235 
236  } else {
237 
238  outputFile_ = ps.getUntrackedParameter<std::string>("outputFile", "");
239  if ( ! outputFile_.empty() ) {
240  edm::LogInfo("L1TDTTF: constructor")
241  << "L1T Monitoring histograms will be saved to " << outputFile_;
242  }
243 
244  }
245 
246 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::string l1tsubsystemfolder_
Definition: L1TDTTF.h:70
edm::InputTag trackInputTag_
Definition: L1TDTTF.h:75
edm::InputTag muonCollectionLabel_
Definition: L1TDTTF.h:69
#define NULL
Definition: scimark2.h:8
DQMStore * dbe_
Definition: L1TDTTF.h:73
edm::InputTag gmtSource_
Definition: L1TDTTF.h:68
std::string outputFile_
Definition: L1TDTTF.h:74
edm::InputTag dttpgSource_
Definition: L1TDTTF.h:67
void setVerbose(unsigned level)
Definition: DQMStore.cc:393
bool verbose_
Definition: L1TDTTF.h:72
std::string const & label() const
Definition: InputTag.h:25
std::string const & process() const
Definition: InputTag.h:29
bool online_
Definition: L1TDTTF.h:71
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
L1TDTTF::~L1TDTTF ( )
virtual

Nothing to destroy

Definition at line 251 of file L1TDTTF.cc.

252 {
254 }

Member Function Documentation

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

counters

tracks handle

dttf counters

selection for offline

global muon selection plot

in case of problems accept all

in case of problems accept all

take only bx=0

in Gmt but not in DTTF

in phys values double phi= dttfCand->phiValue(); int sector = 1 + (phi + 15)/30; /// in phys values

Per event summaries

Implements edm::EDAnalyzer.

Definition at line 615 of file L1TDTTF.cc.

References accept(), dttf_gmt_ghost, dttf_nTracksPerEv, dttf_nTracksPerEvent_integ, dttf_nTracksPerEvent_wheel, dttf_spare, dttpgSource_, eta(), MonitorElement::Fill(), fillMEs(), L1MuGMTReadoutCollection::getRecords(), gmtSource_, edm::HandleBase::isValid(), edm::InputTag::label(), muonCollectionLabel_, patZpeak::muons, nev_, nev_dttf_, nev_dttf_track2_, numTracks, online_, phi, edm::InputTag::process(), edm::Handle< T >::product(), alignCSCRings::s, trackInputTag_, verbose_, and w().

617 {
618 
619 
620  if ( verbose_ )
621  edm::LogInfo("L1TDTTF::Analyze::start") << "#################### START";
622 
624  ++nev_;
625  memset( numTracks, 0, 72 * sizeof(int) );
626 
628  edm::Handle<L1MuDTTrackContainer > myL1MuDTTrackContainer;
629  try {
630  event.getByLabel(trackInputTag_, myL1MuDTTrackContainer);
631  } catch (...) {
632  edm::LogError("L1TDTTF::analyze::DataNotFound")
633  << "can't getByLabel L1MuDTTrackContainer with label "
634  << dttpgSource_.label() << ":DATA:" << dttpgSource_.process();
635  return;
636  }
637 
638  if ( !myL1MuDTTrackContainer.isValid() ) {
639  edm::LogError("L1TDTTF::analyze::DataNotFound")
640  << "can't find L1MuDTTrackContainer with label "
641  << dttpgSource_.label() << ":DATA:" << dttpgSource_.process();
642  return;
643  }
644 
645  L1MuDTTrackContainer::TrackContainer * trackContainer =
646  myL1MuDTTrackContainer->getContainer();
647 
649  if ( trackContainer->size() > 0 ) {
650  ++nev_dttf_;
651  if( trackContainer->size() > 1 ) ++nev_dttf_track2_;
652  }
653 
657  bool accept = true;
658  if ( ! online_ ) {
659 
660  try {
661 
663  event.getByLabel(muonCollectionLabel_, muons);
664 
665  accept = false;
666  if ( muons.isValid() ) {
667  for (reco::MuonCollection::const_iterator recoMu = muons->begin();
668  recoMu!=muons->end(); ++recoMu ) {
669  if ( fabs( recoMu->eta() ) < 1.4 ) {
670  if ( verbose_ ) {
671  edm::LogInfo("L1TDTTFClient::Analyze:GM") << "Found a global muon!";
672  }
673  accept = true;
674  break;
675  }
676 
677  }
678 
680  if ( ! accept ) {
681  dttf_spare->Fill( trackContainer->size() ? 1 : 0 );
682 
683  if ( verbose_ ) {
684  edm::LogInfo("L1TDTTFClient::Analyze:GM")
685  << "No global muons in this event!";
686  }
687 
688  } else {
689  dttf_spare->Fill( trackContainer->size() ? 2 : 3 );
690  }
691 
692  } else {
694  accept = true;
695  edm::LogWarning("L1TDTTFClient::Analyze:GM")
696  << "Invalid MuonCollection with label "
698  }
699 
700 
701  } catch (...) {
703  accept = true;
704  edm::LogError("DataNotFound") << "Unable to getByLabel MuonCollection with label "
706  }
707 
708  }
709 
710 
712  std::vector<L1MuRegionalCand> gmtBx0DttfCandidates;
713 
714  try {
715 
717  event.getByLabel(gmtSource_, pCollection);
718 
719  if ( !pCollection.isValid() ) {
720  edm::LogError("DataNotFound") << "can't find L1MuGMTReadoutCollection with label "
721  << gmtSource_.label() ;
722  }
723 
724  // get GMT readout collection
725  L1MuGMTReadoutCollection const* gmtrc = pCollection.product();
726  std::vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->getRecords();
727 
728  std::vector<L1MuGMTReadoutRecord>::const_iterator RRItr;
729 
730  for ( RRItr = gmt_records.begin(); RRItr != gmt_records.end(); ++RRItr ) {
731 
732  std::vector<L1MuRegionalCand> dttfCands = RRItr->getDTBXCands();
733  std::vector<L1MuRegionalCand>::iterator dttfCand;
734 
735  for( dttfCand = dttfCands.begin(); dttfCand != dttfCands.end();
736  ++dttfCand ) {
737 
738  if(dttfCand->empty()) continue;
740  if ( RRItr->getBxInEvent() ) continue;
741 
742  // dttf_gmt_ghost_phys->Fill( dttfCand->eta_packed(),
743  // dttfCand->phi_packed() );
744  gmtBx0DttfCandidates.push_back( *dttfCand );
745 
746  }
747  }
748 
749  } catch (...) {
750  edm::LogError("DataNotFound") << "Unable to getByLabel L1MuGMTReadoutCollection with label "
751  << gmtSource_.label() ;
752  }
753 
754 
755  // fill MEs if all selections are passed
756  if ( accept ) fillMEs( trackContainer, gmtBx0DttfCandidates );
757 
759  std::vector<L1MuRegionalCand>::iterator dttfCand;
760  for( dttfCand = gmtBx0DttfCandidates.begin();
761  dttfCand != gmtBx0DttfCandidates.end(); ++dttfCand ) {
762  if( dttfCand->empty() ) continue;
763 
767  int phi= dttfCand->phi_packed();
768  int sector = 1 + (phi + 6)/12;
769  if (sector > 12 ) sector -= 12;
770  double eta = dttfCand->etaValue();
771 
772  int wheel = -3;
773  if ( eta < -0.74 ) {
774  wheel = -2;
775  } else if ( eta < -0.3 ) {
776  wheel = -1;
777 
778  } else if ( eta < 0.3 ) {
779  wheel = 0;
780 
781  } else if ( eta < 0.74 ) {
782  wheel = 1;
783  } else {
784  wheel = 2;
785  }
786 
787  dttf_gmt_ghost->Fill( wheel, sector );
788  // dttf_gmt_ghost_phys->Fill( dttfCand->eta_packed(),
789  // dttfCand->phi_packed() );
790  }
791 
792 
794  int numTracksInt = 0;
795 
796  for ( int w = 0; w < 6; ++w ) {
797 
798  int numTracks_wh = 0;
799  for ( int s = 0; s < 12; ++s ) {
800 
802 
803  numTracks_wh += numTracks[w][s];
804 
805  }
806 
807  numTracksInt += numTracks_wh;
808  dttf_nTracksPerEvent_wheel[w]->Fill( numTracks_wh );
809 
810  }
811 
812  dttf_nTracksPerEvent_integ->Fill( numTracksInt );
813 
814 
815 
816 }
edm::InputTag trackInputTag_
Definition: L1TDTTF.h:75
edm::InputTag muonCollectionLabel_
Definition: L1TDTTF.h:69
MonitorElement * dttf_nTracksPerEvent_wheel[6]
Definition: L1TDTTF.h:77
T eta() const
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:22
void Fill(long long x)
void fillMEs(std::vector< L1MuDTTrackCand > *trackContainer, std::vector< L1MuRegionalCand > &gmtDttfCands)
Definition: L1TDTTF.cc:822
MonitorElement * dttf_nTracksPerEvent_integ
Definition: L1TDTTF.h:98
edm::InputTag gmtSource_
Definition: L1TDTTF.h:68
edm::InputTag dttpgSource_
Definition: L1TDTTF.h:67
std::vector< L1MuDTTrackCand > TrackContainer
bool isValid() const
Definition: HandleBase.h:76
int nev_dttf_track2_
Definition: L1TDTTF.h:108
int numTracks[6][12]
Definition: L1TDTTF.h:109
bool verbose_
Definition: L1TDTTF.h:72
MonitorElement * dttf_gmt_ghost
Definition: L1TDTTF.h:103
int nev_dttf_
Definition: L1TDTTF.h:107
T const * product() const
Definition: Handle.h:74
std::string const & label() const
Definition: InputTag.h:25
std::string const & process() const
Definition: InputTag.h:29
tuple muons
Definition: patZpeak.py:38
bool online_
Definition: L1TDTTF.h:71
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
MonitorElement * dttf_nTracksPerEv[6][12]
Definition: L1TDTTF.h:88
MonitorElement * dttf_spare
Definition: L1TDTTF.h:99
int nev_
Definition: L1TDTTF.h:106
T w() const
Definition: DDAxes.h:10
void L1TDTTF::beginJob ( void  )
protectedvirtual

testing purposes

histo name

histo title

DTTF Output (6 wheels)


Per wheel summaries

number of tracks per event per wheel

phi vs etafine - for each wheel

phi vs etacoarse - for each wheel

Per wheel summaries : 2ND_TRACK_ONLY

DTTF Tracks Quality distribution

quality per wheel 2ND TRACK

phi vs eta - for each wheel 2ND TRACK

DTTF Tracks eta distribution (Packed values)

DTTF Tracks Phi distribution (Packed values)

DTTF Tracks p_{T} distribution (Packed values)

DTTF Tracks Charge distribution

Go in detailed subfolders

number of tracks per event folder

BX_SECTORS for each wheel

CHARGE folder

PT folder

PHI folder

QUALITY folder

ETA folder

ETA folder

integrated values: always packed

Only for online: occupancy summary - reset

Reimplemented from edm::EDAnalyzer.

Definition at line 259 of file L1TDTTF.cc.

References DQMStore::book1D(), DQMStore::book2D(), bookEta(), dbe_, dttf_bx, dttf_bx_2ndTrack, dttf_eta, dttf_eta_fine_fraction, dttf_eta_wheel_2ndTrack, dttf_gmt_ghost, dttf_gmt_match, dttf_gmt_missed, dttf_nTracksPerEv, dttf_nTracksPerEvent_integ, dttf_nTracksPerEvent_wheel, dttf_phi, dttf_phi_eta_coarse_wheel, dttf_phi_eta_fine_wheel, dttf_phi_eta_wheel_2ndTrack, dttf_phi_wheel_2ndTrack, dttf_pt, dttf_pt_wheel_2ndTrack, dttf_q, dttf_q_wheel_2ndTrack, dttf_qual, dttf_quality_summary_wheel_2ndTrack, dttf_quality_wheel_2ndTrack, dttf_spare, MonitorElement::getTH2F(), l1tsubsystemfolder_, pileupCalc::nbins, nev_, nev_dttf_, nev_dttf_track2_, online_, MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), setQualLabel(), setWheelLabel(), and errorMatrix2Lands_multiChannel::start.

260 {
262  nev_ = 0;
263  nev_dttf_ = 0;
264  nev_dttf_track2_ = 0;
265 
266  // get hold of back-end interface
267 
268  if ( dbe_ ) {
269 
270  std::string dttf_trk_folder = l1tsubsystemfolder_;
271 
272  char hname[100];
273  char htitle[100];
274 
276  float start = 0;
277  float stop = 0;
278  int nbins = 0;
280 
282  dbe_->setCurrentFolder(dttf_trk_folder);
283 
284  std::string wheelpath[6] = { "/02-WHEEL_N2",
285  "/03-WHEEL_N1",
286  "/04-WHEEL_N0",
287  "/05-WHEEL_P0",
288  "/06-WHEEL_P1",
289  "/07-WHEEL_P2" };
290 
291 
292  char c_whn[6][3] = { "N2", "N1", "N0", "P0", "P1", "P2" };
293  // char bxn [3][3] = { "N1", "0", "P1" };
294  // char bxn[3][25] = {"/BX_NONZERO_ONLY/BX_N1", "", "/BX_NONZERO_ONLY/BX_P1"};
295 
296  for ( int iwh = 0; iwh < 6; ++iwh ) {
297 
298  bookEta( iwh, nbins, start, stop );
299 
303  std::string dttf_trk_folder_wheel = dttf_trk_folder + wheelpath[iwh];
304  dbe_->setCurrentFolder(dttf_trk_folder_wheel);
305 
307  sprintf(hname, "dttf_01_nTracksPerEvent_wh%s", c_whn[iwh]);
308  sprintf(htitle, "Wheel %s - Number Tracks Per Event", c_whn[iwh]);
309  dttf_nTracksPerEvent_wheel[iwh] = dbe_->book1D(hname, htitle,
310  10, 0.5, 10.5);
311  dttf_nTracksPerEvent_wheel[iwh]->setAxisTitle("# tracks/event", 1);
312 
314  sprintf(hname, "dttf_07_phi_vs_etaFine_wh%s", c_whn[iwh]);
315  sprintf(htitle, "Wheel %s - #eta-#phi DTTF Tracks occupancy (fine #eta only, unpacked values)", c_whn[iwh]);
316  dttf_phi_eta_fine_wheel[iwh] = dbe_->book2D(hname, htitle,
317  nbins, start-0.5, stop-0.5,
318  144, -6, 138);
319  // 144, -0.5, 143.5);
320 
321  dttf_phi_eta_fine_wheel[iwh]->setAxisTitle("#eta", 1);
322  dttf_phi_eta_fine_wheel[iwh]->setAxisTitle("#phi", 2);
323 
325  sprintf(hname, "dttf_08_phi_vs_etaCoarse_wh%s", c_whn[iwh]);
326  sprintf(htitle, "Wheel %s - #eta-#phi DTTF Tracks occupancy (coarse #eta only, unpacked values)", c_whn[iwh]);
327  dttf_phi_eta_coarse_wheel[iwh] = dbe_->book2D(hname, htitle,
328  nbins, start-0.5, stop-0.5,
329  144, -6, 138);
330  // 144, -0.5, 143.5);
331  dttf_phi_eta_coarse_wheel[iwh]->setAxisTitle("#eta", 1);
332  dttf_phi_eta_coarse_wheel[iwh]->setAxisTitle("#phi", 2);
333 
336  std::string dttf_trk_folder_wheel_2ndtrack =
337  dttf_trk_folder_wheel + "/2ND_TRACK_ONLY";
338  dbe_->setCurrentFolder(dttf_trk_folder_wheel_2ndtrack);
339 
340 
342  sprintf(hname, "dttf_04_quality_wh%s_2ndTrack", c_whn[iwh]);
343  sprintf(htitle, "Wheel %s - 2nd Tracks Quality distribution", c_whn[iwh]);
344  dttf_quality_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 7, 1, 8);
346 
348  sprintf(hname, "dttf_05_quality_summary_wh%s_2ndTrack", c_whn[iwh]);
349  sprintf(htitle, "Wheel %s - 2nd Tracks - Quality", c_whn[iwh]);
350  dttf_quality_summary_wheel_2ndTrack[iwh] = dbe_->book2D(hname, htitle,
351  12, 1, 13, 7, 1, 8 );
354  // dttf_quality_summary_wheel_2ndTrack[iwh]->setAxisTitle("Quality", 2);
355 
357  sprintf(hname, "dttf_06_phi_vs_eta_wh%s_2ndTrack", c_whn[iwh]);
358  sprintf(htitle, "Wheel %s - #eta-#phi Distribution of DTTF 2nd Tracks",
359  c_whn[iwh]);
360 
361  dttf_phi_eta_wheel_2ndTrack[iwh] = dbe_->book2D(hname, htitle,
362  nbins, start-0.5,stop-0.5,
363  144, -6, 138);
364  // 144, -0.5, 143.5);
365  dttf_phi_eta_wheel_2ndTrack[iwh]->setAxisTitle("#eta", 1);
366  dttf_phi_eta_wheel_2ndTrack[iwh]->setAxisTitle("#phi", 2);
367 
368 
369 
371  sprintf(hname, "dttf_07_eta_wh%s_2ndTrack", c_whn[iwh]);
372  sprintf(htitle, "Wheel %s - DTTF 2nd Tracks #eta distribution (Packed values)",
373  c_whn[iwh]);
374  dttf_eta_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 64, -0.5, 63.5);
375  dttf_eta_wheel_2ndTrack[iwh]->setAxisTitle("#eta", 1);
376 
378  sprintf(hname, "dttf_08_phi_wh%s_2ndTrack", c_whn[iwh]);
379  sprintf(htitle, "Wheel %s - DTTF 2nd Tracks Phi distribution (Packed values)",
380  c_whn[iwh]);
381  dttf_phi_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 144, -6, 138. );
382  dttf_phi_wheel_2ndTrack[iwh]->setAxisTitle("#phi", 1);
383 
385  sprintf(hname, "dttf_09_pt_wh%s_2ndTrack", c_whn[iwh]);
386  sprintf(htitle, "Wheel %s - DTTF 2nd Tracks p_{T} distribution (Packed values)",
387  c_whn[iwh]);
388  dttf_pt_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 32, -0.5, 31.5);
389  dttf_pt_wheel_2ndTrack[iwh]->setAxisTitle("p_{T}", 1);
390 
392  sprintf(hname, "dttf_10_charge_wh%s_2ndTrack", c_whn[iwh]);
393  sprintf(htitle, "Wheel %s - DTTF 2nd Tracks Charge distribution", c_whn[iwh]);
394  dttf_q_wheel_2ndTrack[iwh] = dbe_->book1D(hname, htitle, 2, -0.5, 1.5);
395  dttf_q_wheel_2ndTrack[iwh]->setAxisTitle("Charge", 1);
396 
397 
398 
399 
403 
405  std::string dttf_trk_folder_nTracksPerEvent = dttf_trk_folder_wheel + "/TracksPerEvent";
406  dbe_->setCurrentFolder(dttf_trk_folder_nTracksPerEvent);
407 
408  for(int ise = 0; ise < 12; ++ise) {
409  sprintf(hname, "dttf_nTracksPerEvent_wh%s_se%d", c_whn[iwh], ise+1);
410  sprintf(htitle, "Wheel %s Sector %d - Number of Tracks Per Event",
411  c_whn[iwh], ise+1);
412  dttf_nTracksPerEv[iwh][ise] = dbe_->book1D(hname, htitle, 2, 0.5, 2.5);
413  dttf_nTracksPerEv[iwh][ise]->setAxisTitle("# tracks/event", 1);
414  }
415 
416 
418  std::string dttf_trk_folder_wh_bxsec_all =
419  dttf_trk_folder_wheel + "/BX_BySector";
420  dbe_->setCurrentFolder(dttf_trk_folder_wh_bxsec_all);
421 
422  for(int ise = 0; ise < 12; ++ise ) {
423  sprintf(hname, "dttf_bx_wh%s_se%d", c_whn[iwh], ise+1);
424  sprintf(htitle, "Wheel %s Sector %d - BX Distribution",
425  c_whn[iwh], ise+1);
426  dttf_bx[iwh][ise] = dbe_->book1D(hname, htitle, 3, -1.5, 1.5);
427  dttf_bx[iwh][ise]->setAxisTitle("BX", 1);
428  }
429 
430  std::string dttf_trk_folder_wh_bxsec_trk2 =
431  dttf_trk_folder_wheel + "/BX_BySector/2ND_TRACK_ONLY";
432  dbe_->setCurrentFolder(dttf_trk_folder_wh_bxsec_trk2);
433 
434  for(int ise = 0; ise < 12; ++ise ) {
435  sprintf(hname, "dttf_bx_2ndTrack_wh%s_se%d", c_whn[iwh], ise+1);
436  sprintf(htitle, "Wheel %s Sector %d - BX 2nd Tracks only",
437  c_whn[iwh], ise+1);
438  dttf_bx_2ndTrack[iwh][ise] = dbe_->book1D(hname, htitle, 3, -1.5, 1.5);
439  dttf_bx_2ndTrack[iwh][ise]->setAxisTitle("BX", 1);
440  }
441 
443  std::string dttf_trk_folder_charge = dttf_trk_folder_wheel + "/Charge";
444  dbe_->setCurrentFolder(dttf_trk_folder_charge);
445 
446  for(int ise = 0; ise < 12; ++ise) {
447  sprintf(hname, "dttf_charge_wh%s_se%d", c_whn[iwh], ise+1);
448  sprintf(htitle, "Wheel %s Sector %d - Packed Charge", c_whn[iwh], ise+1);
449  dttf_q[iwh][ise] = dbe_->book1D(hname, htitle, 2, -0.5, 1.5);
450  dttf_q[iwh][ise]->setAxisTitle("Charge", 1);
451  }
452 
454  std::string dttf_trk_folder_pt = dttf_trk_folder_wheel + "/PT";
455  dbe_->setCurrentFolder(dttf_trk_folder_pt);
456 
457  for(int ise = 0; ise < 12; ++ise ) {
458  sprintf(hname, "dttf_pt_wh%s_se%d", c_whn[iwh], ise+1);
459  sprintf(htitle, "Wheel %s Sector %d - Packed p_{T}",
460  c_whn[iwh], ise + 1 );
461  dttf_pt[iwh][ise]= dbe_->book1D(hname, htitle, 32, -0.5, 31.5);
462  dttf_pt[iwh][ise]->setAxisTitle("p_{T}", 1);
463  }
464 
466  std::string dttf_trk_folder_phi = dttf_trk_folder_wheel + "/Phi";
467  dbe_->setCurrentFolder(dttf_trk_folder_phi);
468 
469  for(int ise = 0; ise < 12; ++ise ) {
470  sprintf(hname, "dttf_phi_wh%s_se%d", c_whn[iwh], ise+1);
471  sprintf(htitle, "Wheel %s Sector %d - Packed Phi", c_whn[iwh], ise+1);
472  dttf_phi[iwh][ise] = dbe_->book1D(hname, htitle, 144, -6, 138);
473  dttf_phi[iwh][ise]->setAxisTitle("#phi", 1);
474  //dttf_phi[iwh][ise] = dbe_->book1D(title,title, 32,-16.5, 15.5);
475  }
476 
478  std::string dttf_trk_folder_quality = dttf_trk_folder_wheel + "/Quality";
479  dbe_->setCurrentFolder(dttf_trk_folder_quality);
480 
481  for(int ise = 0; ise < 12; ++ise){
482  sprintf(hname, "dttf_qual_wh%s_se%d", c_whn[iwh], ise+1);
483  sprintf(htitle, "Wheel %s Sector %d - Packed Quality",
484  c_whn[iwh], ise+1);
485  dttf_qual[iwh][ise] = dbe_->book1D(hname, htitle, 7, 1, 8);
486  dttf_qual[iwh][ise]->setAxisTitle("Quality", 1);
487  setQualLabel( dttf_qual[iwh][ise], 1 );
488  }
489 
491  std::string dttf_trk_folder_eta = dttf_trk_folder_wheel + "/Eta";
492  dbe_->setCurrentFolder(dttf_trk_folder_eta);
493 
494  for (int ise = 0; ise < 12; ++ise ) {
495 
496  sprintf(hname, "dttf_eta_wh%s_se%d", c_whn[iwh], ise+1);
497  sprintf(htitle, "Wheel %s Sector %d - Packed #eta",
498  c_whn[iwh], ise+1);
499  dttf_eta[iwh][ise] = dbe_->book1D(hname, htitle, 64, -0.5, 63.5);
500  dttf_eta[iwh][ise]->setAxisTitle("#eta", 1);
501 
502  }
503 
505  dttf_trk_folder_eta = dttf_trk_folder_wheel + "/EtaFineFraction";
506  dbe_->setCurrentFolder(dttf_trk_folder_eta);
507 
508  for (int ise = 0; ise < 12; ++ise ) {
509 
510  sprintf(hname, "dttf_etaFine_fraction_wh%s_se%d", c_whn[iwh], ise+1);
511  sprintf(htitle, "Wheel %s Sector %d - Eta Fine Fraction",
512  c_whn[iwh], ise+1);
513  dttf_eta_fine_fraction[iwh][ise] = dbe_->book1D(hname, htitle, 2, 0, 2);
514  dttf_eta_fine_fraction[iwh][ise]->setAxisTitle("#eta", 1);
515  dttf_eta_fine_fraction[iwh][ise]->setBinLabel(1, "fine", 1);
516  dttf_eta_fine_fraction[iwh][ise]->setBinLabel(2, "coarse", 1);
517 
518  }
519 
520  }
521 
525  std::string dttf_trk_folder_inclusive = dttf_trk_folder + "/01-INCLUSIVE";
526  dbe_->setCurrentFolder(dttf_trk_folder_inclusive);
527 
528 
529  sprintf(hname, "dttf_01_nTracksPerEvent_integ");
530  sprintf(htitle, "Number of DTTF Tracks Per Event");
531  dttf_nTracksPerEvent_integ = dbe_->book1D(hname, htitle, 20, 0.5, 20.5);
532  dttf_nTracksPerEvent_integ->setAxisTitle("# tracks/event", 1);
533 
535  // sprintf(hname, "dttf_10_qual_eta_distr");
536  // sprintf(htitle, "DTTF Tracks Quality vs Eta Distribution");
537  // dttf_qual_eta_integ = dbe_->book2D(hname, htitle, 64, 0, 64, 7, 1, 8);
538  // setQualLabel( dttf_qual_eta_integ, 2);
539 
541  if ( online_ ) {
542  sprintf(hname, "dttf_04_tracks_occupancy_by_lumi");
543  sprintf(htitle, "DTTF Tracks in the last LumiSections");
544  dttf_spare = dbe_->book2D(hname, htitle, 6, 0, 6, 12, 1, 13);
546  dttf_spare->setAxisTitle("Sector", 2);
547  dttf_spare->getTH2F()->GetXaxis()->SetNdivisions(12);
548  } else {
549 
550  sprintf(hname, "dttf_04_global_muons_request");
551  sprintf(htitle, "Tracks compatible with a Global Muon in the Barrel");
552  dttf_spare = dbe_->book1D(hname, htitle, 4, -0.5, 3.5 );
553  dttf_spare->setBinLabel(1, "No tracks", 1);
554  dttf_spare->setBinLabel(2, "No tracks but GM", 1);
555  dttf_spare->setBinLabel(3, "Tracks wo GM", 1);
556  dttf_spare->setBinLabel(4, "Tracks w GM", 1);
557 
558  }
559 
560  std::string dttf_trk_folder_integrated_gmt =
561  dttf_trk_folder + "/08-GMT_MATCH";
562  dbe_->setCurrentFolder(dttf_trk_folder_integrated_gmt);
563 
564  sprintf(hname, "dttf_tracks_with_gmt_match");
565  sprintf(htitle, "DTTF Tracks With a Match in GMT");
566  dttf_gmt_match = dbe_->book2D(hname, htitle, 6, 0., 6., 12, 1., 13.);
568 
569  sprintf(hname, "dttf_tracks_without_gmt_match");
570  sprintf(htitle, "DTTF Tracks Without a Match in GMT");
571  dttf_gmt_missed = dbe_->book2D(hname, htitle, 6, 0., 6., 12, 1., 13.);
573 
574  sprintf(hname, "dttf_missing_tracks_in_gmt");
575  sprintf(htitle, "GMT Tracks Without a Corresponding Track in DTTF");
576  dttf_gmt_ghost = dbe_->book2D(hname, htitle, 5, -2, 3, 12, 1, 13.);
577 
578  dttf_gmt_ghost->setBinLabel(1, "N2", 1);
579  dttf_gmt_ghost->setBinLabel(2, "N1", 1);
580  dttf_gmt_ghost->setBinLabel(3, "N0/P0", 1);
581  dttf_gmt_ghost->setBinLabel(4, "P1", 1);
582  dttf_gmt_ghost->setBinLabel(5, "P2", 1);
583 
584 
585  // sprintf(hname, "dttf_eta_phi_missing_tracks_in_gmt");
586  // sprintf(htitle, "GMT Tracks Without a Corresponding Track in DTTF");
587  // dttf_gmt_ghost_phys = dbe_->book2D(hname, htitle, 64, 0., 64., 144, 0., 144. );
588 
589 
590  }
591 
592 }
std::string l1tsubsystemfolder_
Definition: L1TDTTF.h:70
MonitorElement * dttf_phi_eta_coarse_wheel[6]
Definition: L1TDTTF.h:81
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:717
void bookEta(int wh, int &nbins, float &start, float &stop)
Definition: L1TDTTF.cc:1050
MonitorElement * dttf_nTracksPerEvent_wheel[6]
Definition: L1TDTTF.h:77
MonitorElement * dttf_phi_eta_fine_wheel[6]
Definition: L1TDTTF.h:80
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)
void setWheelLabel(MonitorElement *me)
Definition: L1TDTTF.cc:1036
MonitorElement * dttf_gmt_match
Definition: L1TDTTF.h:101
MonitorElement * dttf_phi_wheel_2ndTrack[6]
Definition: L1TDTTF.h:84
MonitorElement * dttf_nTracksPerEvent_integ
Definition: L1TDTTF.h:98
DQMStore * dbe_
Definition: L1TDTTF.h:73
MonitorElement * dttf_pt_wheel_2ndTrack[6]
Definition: L1TDTTF.h:85
MonitorElement * dttf_eta_wheel_2ndTrack[6]
Definition: L1TDTTF.h:83
MonitorElement * dttf_qual[6][12]
Definition: L1TDTTF.h:91
MonitorElement * dttf_quality_wheel_2ndTrack[6]
Definition: L1TDTTF.h:78
MonitorElement * dttf_phi[6][12]
Definition: L1TDTTF.h:94
MonitorElement * dttf_gmt_missed
Definition: L1TDTTF.h:102
MonitorElement * dttf_quality_summary_wheel_2ndTrack[6]
Definition: L1TDTTF.h:79
MonitorElement * dttf_eta_fine_fraction[6][12]
Definition: L1TDTTF.h:92
MonitorElement * dttf_bx[6][12]
Definition: L1TDTTF.h:89
int nev_dttf_track2_
Definition: L1TDTTF.h:108
MonitorElement * dttf_gmt_ghost
Definition: L1TDTTF.h:103
MonitorElement * dttf_bx_2ndTrack[6][12]
Definition: L1TDTTF.h:90
int nev_dttf_
Definition: L1TDTTF.h:107
MonitorElement * dttf_q_wheel_2ndTrack[6]
Definition: L1TDTTF.h:86
MonitorElement * dttf_eta[6][12]
Definition: L1TDTTF.h:93
bool online_
Definition: L1TDTTF.h:71
MonitorElement * dttf_nTracksPerEv[6][12]
Definition: L1TDTTF.h:88
MonitorElement * dttf_pt[6][12]
Definition: L1TDTTF.h:95
MonitorElement * dttf_phi_eta_wheel_2ndTrack[6]
Definition: L1TDTTF.h:82
MonitorElement * dttf_spare
Definition: L1TDTTF.h:99
int nev_
Definition: L1TDTTF.h:106
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
MonitorElement * dttf_q[6][12]
Definition: L1TDTTF.h:96
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setQualLabel(MonitorElement *me, int axis)
Definition: L1TDTTF.cc:1021
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
void L1TDTTF::beginLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  context 
)
inlineprotectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 51 of file L1TDTTF.h.

52  {};
void L1TDTTF::bookEta ( int  wh,
int &  nbins,
float &  start,
float &  stop 
)
private

Definition at line 1050 of file L1TDTTF.cc.

Referenced by beginJob().

1051 {
1052 
1053  switch ( wh ) {
1054  case 0 : start = 0; stop = 18; nbins = 18; break; // N2
1055  case 1 : start = 8; stop = 28; nbins = 20; break; // N1
1056  case 2 : start = 22; stop = 32; nbins = 10; break; // N0
1057  case 3 : start = 22; stop = 42; nbins = 20; break; // P0
1058  case 4 : start = 36; stop = 56; nbins = 20; break; // P1
1059  case 5 : start = 46; stop = 64; nbins = 18; break; // P2
1060  default : start = 0; stop = 0; nbins = 0; break; // BOH
1061  }
1062 
1063 }
void L1TDTTF::endJob ( void  )
protectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 597 of file L1TDTTF.cc.

References dbe_, nev_, nev_dttf_, nev_dttf_track2_, outputFile_, DQMStore::save(), and verbose_.

598 {
599  if (verbose_) {
600  edm::LogInfo("EndJob") << "L1TDTTF: end job....";
601  edm::LogInfo("EndJob") << "analyzed " << nev_ << " events";
602  edm::LogInfo("EndJob") << "containing at least one dttf track : "
603  << nev_dttf_;
604  edm::LogInfo("EndJob") << "containing two dttf tracks : "
605  << nev_dttf_track2_;
606  }
607 
608  if ( outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_);
609 
610 }
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
DQMStore * dbe_
Definition: L1TDTTF.h:73
std::string outputFile_
Definition: L1TDTTF.h:74
int nev_dttf_track2_
Definition: L1TDTTF.h:108
bool verbose_
Definition: L1TDTTF.h:72
int nev_dttf_
Definition: L1TDTTF.h:107
int nev_
Definition: L1TDTTF.h:106
void L1TDTTF::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  context 
)
inlineprotectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 54 of file L1TDTTF.h.

55  {};
void L1TDTTF::fillMEs ( std::vector< L1MuDTTrackCand > *  trackContainer,
std::vector< L1MuRegionalCand > &  gmtDttfCands 
)
private

Forget N0 with zero eta value for physical values

from 0 to 11

from 1 to 12

wh has possible values {-3,-2,-1,1,2,3}

make wh2 go from 0 to 5

useful conversions

calculate phi in physical coordinates: keep it int, set labels later

new attempt

Fill per sector bx WHEEL_s/dttf_bx_whs

Fill per sector 2nd bx

WHEEL_s/BX_SECTORS/TRACK_2_ONLY/dttf_bx_2ndTrack_whs_sed

COUNTERS global

Fill per sector phi: WHEEL_s/BX_d/dttf_phi_whs_sed

Fill per sector quality WHEEL_s/BX_d/dttf_qual_whs_sed

Fill per sector pt WHEEL_s/BX_d/dttf_pt_whs_sed

Fill per sector charge WHEEL_s/BX_d/dttf_q_whs_sed

Fill per sector eta WHEEL_s/BX_d/dttf_eta_whs_sed

WHEEL_s/dttf_phi_eta_whs

WHEEL_s/dttf_phi_eta_whs

Only for online: INCLUSIVE/dttf_occupancy_summary_r

second track summary

WHEEL_s/dttf_phi_integ

WHEEL_s/dttf_pt_integ

WHEEL_s/dttf_eta_integ

WHEEL_s/dttf_qual_integ

WHEEL_s/dttf_q_integ

WHEEL_s/dttf_quality_whs

WHEEL_s/dttf_phi_eta_whs

gmt phi_packed() goes from 0 to 143

calculate phi in physical coordinates: keep it int, set labels later

Definition at line 822 of file L1TDTTF.cc.

References dttf_bx, dttf_bx_2ndTrack, dttf_eta, dttf_eta_fine_fraction, dttf_eta_wheel_2ndTrack, dttf_gmt_match, dttf_gmt_missed, dttf_phi, dttf_phi_eta_coarse_wheel, dttf_phi_eta_fine_wheel, dttf_phi_eta_wheel_2ndTrack, dttf_phi_wheel_2ndTrack, dttf_pt, dttf_pt_wheel_2ndTrack, dttf_q, dttf_q_wheel_2ndTrack, dttf_qual, dttf_quality_summary_wheel_2ndTrack, dttf_quality_wheel_2ndTrack, dttf_spare, MonitorElement::Fill(), match(), numTracks, online_, and verbose_.

Referenced by analyze().

824 {
825 
826  L1MuDTTrackContainer::TrackContainer::const_iterator track
827  = trackContainer->begin();
828  L1MuDTTrackContainer::TrackContainer::const_iterator trackEnd
829  = trackContainer->end();
830 
831  for ( ; track != trackEnd; ++track ) {
832 
833  if ( verbose_ ) {
834  edm::LogInfo("L1TDTTF::Analyze") << "bx = " << track->bx();
835  edm::LogInfo("L1TDTTF::Analyze") << "quality (packed) = "
836  << track->quality_packed();
837  edm::LogInfo("L1TDTTF::Analyze") << "pt (packed) = "
838  << track->pt_packed()
839  << " , pt (GeV) = " << track->ptValue();
840  edm::LogInfo("L1TDTTF::Analyze") << "phi (packed) = "
841  << track->phi_packed()
842  << " , phi (rad) = " << track->phiValue();
843  edm::LogInfo("L1TDTTF::Analyze") << "charge (packed) = "
844  << track->charge_packed();
845  }
846 
847 
849  if ( ( track->whNum() == -1 ) && ! track->eta_packed() ) {
850  edm::LogInfo("L1TDTTF::Analyze") << "Skipping N0 with zero eta value";
851 
852  continue;
853  }
854 
855 
856  int bxindex = track->bx() + 1;
857  int se = track->scNum();
858  int sector = se + 1;
859  int whindex = track->whNum();
860 
861  whindex = ( whindex < 0 ) ? whindex + 3 : whindex + 2;
862 
863  if ( whindex < 0 || whindex > 5 ) {
864  edm::LogError("L1TDTTF::Analyze::WHEEL_ERROR") << track->whNum()
865  << "(" << whindex << ")";
866  continue;
867  }
868 
869  if ( se < 0 || se > 11 ) {
870  edm::LogError("L1TDTTF::Analyze::SECTOR_ERROR") << se;
871  continue;
872  }
873 
875 
877  // int phi_local = track->phi_packed();//range: 0 < phi_local < 31
878  // if ( phi_local > 15 ) phi_local -= 32; //range: -16 < phi_local < 15
879 
880  // int phi_global = phi_local + se * 12; //range: -16 < phi_global < 147
881  // if(phi_global < 0) phi_global += 144; //range: 0 < phi_global < 147
882  // if(phi_global > 143) phi_global -= 144; //range: 0 < phi_global < 143
883  // // float phi_phys = phi_global * 2.5 + 1.25;
884 
886  int phi_global = track->phi_packed();
887  phi_global = (phi_global > 15 ? phi_global - 32 : phi_global ) + se * 12;
888  if ( phi_global < -6 ) phi_global += 144; //range: 0 < phi_global < 147
889  if ( phi_global > 137 ) phi_global -= 144; //range: 0 < phi_global < 143
890 
891  // int eta_global = track->eta_packed();
892  // int eta_global = track->eta_packed() - 32;
893  // dttf_eta[bxindex][whindex][se]->Fill(eta_global);
894  // float eta_phys = eta_global / 2.4 ;
895 
899 
901  dttf_bx[whindex][se]->Fill(track->bx());
902 
904  if( track->TrkTag() == 1 ) {
905 
907  dttf_bx_2ndTrack[whindex][se]->Fill(track->bx());
908 
909  }
910 
914 
915 
916  if ( bxindex == 1 ) {
917 
919  ++numTracks[whindex][se];
920 
922  dttf_phi[whindex][se]->Fill(phi_global);
923 
925  dttf_qual[whindex][se]->Fill(track->quality_packed());
926 
928  dttf_pt[whindex][se]->Fill(track->pt_packed());
929 
931  dttf_q[whindex][se]->Fill(track->charge_packed());
932 
933 
935  dttf_eta[whindex][se]->Fill( track->eta_packed() );
936 
937  if( track->isFineHalo() ) {
938 
939  dttf_eta_fine_fraction[whindex][se]->Fill( 0 );
940 
942  dttf_phi_eta_fine_wheel[whindex]->Fill( track->eta_packed(), phi_global );
943 
944  } else {
945 
946  dttf_eta_fine_fraction[whindex][se]->Fill( 1 );
947 
949  dttf_phi_eta_coarse_wheel[whindex]->Fill( track->eta_packed(), phi_global );
950  }
951 
953  if ( online_ ) {
954  dttf_spare->Fill( whindex, sector );
955  }
956 
958  // dttf_qual_eta_integ->Fill(track->eta_packed(), track->quality_packed());
959 
961  if ( track->TrkTag() == 1 ) {
962 
964  dttf_phi_wheel_2ndTrack[whindex]->Fill(phi_global);
965 
967  dttf_pt_wheel_2ndTrack[whindex]->Fill(track->pt_packed());
968 
970  dttf_eta_wheel_2ndTrack[whindex]->Fill(track->eta_packed());
971 
973  dttf_quality_wheel_2ndTrack[whindex]->Fill(track->quality_packed());
974 
976  dttf_q_wheel_2ndTrack[whindex]->Fill(track->charge_packed());
977 
979  dttf_quality_summary_wheel_2ndTrack[whindex]->Fill( sector, track->quality_packed() );
980 
982  dttf_phi_eta_wheel_2ndTrack[whindex]->Fill( track->eta_packed(), phi_global );
983 
984  }
985 
987  bool match = false;
988  std::vector<L1MuRegionalCand>::iterator dttfCand;
990  unsigned int gmt_phi = ( phi_global < 0 ? phi_global + 144 : phi_global );
991 
992  for ( dttfCand = gmtDttfCands.begin(); dttfCand != gmtDttfCands.end();
993  ++dttfCand ) {
994 
996  if ( dttfCand->empty() ) continue;
997  if ( ( dttfCand->phi_packed() == gmt_phi ) &&
998  dttfCand->quality_packed() == track->quality_packed() ) {
999  match = true;
1000  dttfCand->reset();
1001  break;
1002  }
1003 
1004 
1005  }
1006 
1007  if ( match ) {
1008  dttf_gmt_match->Fill( whindex, sector );
1009  } else {
1010  dttf_gmt_missed->Fill( whindex, sector );
1011  }
1012 
1013  }
1014 
1015  }
1016 
1017 }
MonitorElement * dttf_phi_eta_coarse_wheel[6]
Definition: L1TDTTF.h:81
MonitorElement * dttf_phi_eta_fine_wheel[6]
Definition: L1TDTTF.h:80
MonitorElement * dttf_gmt_match
Definition: L1TDTTF.h:101
MonitorElement * dttf_phi_wheel_2ndTrack[6]
Definition: L1TDTTF.h:84
void Fill(long long x)
MonitorElement * dttf_pt_wheel_2ndTrack[6]
Definition: L1TDTTF.h:85
MonitorElement * dttf_eta_wheel_2ndTrack[6]
Definition: L1TDTTF.h:83
MonitorElement * dttf_qual[6][12]
Definition: L1TDTTF.h:91
MonitorElement * dttf_quality_wheel_2ndTrack[6]
Definition: L1TDTTF.h:78
MonitorElement * dttf_phi[6][12]
Definition: L1TDTTF.h:94
MonitorElement * dttf_gmt_missed
Definition: L1TDTTF.h:102
MonitorElement * dttf_quality_summary_wheel_2ndTrack[6]
Definition: L1TDTTF.h:79
MonitorElement * dttf_eta_fine_fraction[6][12]
Definition: L1TDTTF.h:92
MonitorElement * dttf_bx[6][12]
Definition: L1TDTTF.h:89
int numTracks[6][12]
Definition: L1TDTTF.h:109
bool verbose_
Definition: L1TDTTF.h:72
MonitorElement * dttf_bx_2ndTrack[6][12]
Definition: L1TDTTF.h:90
MonitorElement * dttf_q_wheel_2ndTrack[6]
Definition: L1TDTTF.h:86
MonitorElement * dttf_eta[6][12]
Definition: L1TDTTF.h:93
bool online_
Definition: L1TDTTF.h:71
MonitorElement * dttf_pt[6][12]
Definition: L1TDTTF.h:95
MonitorElement * dttf_phi_eta_wheel_2ndTrack[6]
Definition: L1TDTTF.h:82
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:6
MonitorElement * dttf_spare
Definition: L1TDTTF.h:99
MonitorElement * dttf_q[6][12]
Definition: L1TDTTF.h:96
void L1TDTTF::setQualLabel ( MonitorElement me,
int  axis 
)
private

Definition at line 1021 of file L1TDTTF.cc.

References MonitorElement::setAxisTitle(), and MonitorElement::setBinLabel().

Referenced by beginJob().

1022 {
1023 
1024  if( axis == 1 )
1025  me->setAxisTitle("Quality", axis);
1026  me->setBinLabel(1, "T34", axis);
1027  me->setBinLabel(2, "T23/24", axis);
1028  me->setBinLabel(3, "T12/13/14", axis);
1029  me->setBinLabel(4, "T234", axis);
1030  me->setBinLabel(5, "T134", axis);
1031  me->setBinLabel(6, "T123/124", axis);
1032  me->setBinLabel(7, "T1234", axis);
1033 }
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)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void L1TDTTF::setWheelLabel ( MonitorElement me)
private

Definition at line 1036 of file L1TDTTF.cc.

References MonitorElement::setAxisTitle(), and MonitorElement::setBinLabel().

Referenced by beginJob().

1037 {
1038  me->setAxisTitle("Wheel", 1);
1039  me->setBinLabel(1, "N2", 1);
1040  me->setBinLabel(2, "N1", 1);
1041  me->setBinLabel(3, "N0", 1);
1042  me->setBinLabel(4, "P0", 1);
1043  me->setBinLabel(5, "P1", 1);
1044  me->setBinLabel(6, "P2", 1);
1045 }
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)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)

Member Data Documentation

DQMStore* L1TDTTF::dbe_
private

Definition at line 73 of file L1TDTTF.h.

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

MonitorElement* L1TDTTF::dttf_bx[6][12]
private

Definition at line 89 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_bx_2ndTrack[6][12]
private

Definition at line 90 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_eta[6][12]
private

Definition at line 93 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_eta_fine_fraction[6][12]
private

Definition at line 92 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_eta_wheel_2ndTrack[6]
private

Definition at line 83 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_gmt_ghost
private

Definition at line 103 of file L1TDTTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TDTTF::dttf_gmt_match
private

Definition at line 101 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_gmt_missed
private

Definition at line 102 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_nTracksPerEv[6][12]
private

Definition at line 88 of file L1TDTTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TDTTF::dttf_nTracksPerEvent_integ
private

Definition at line 98 of file L1TDTTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TDTTF::dttf_nTracksPerEvent_wheel[6]
private

Definition at line 77 of file L1TDTTF.h.

Referenced by analyze(), and beginJob().

MonitorElement* L1TDTTF::dttf_phi[6][12]
private

Definition at line 94 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_phi_eta_coarse_wheel[6]
private

Definition at line 81 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_phi_eta_fine_wheel[6]
private

Definition at line 80 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_phi_eta_wheel_2ndTrack[6]
private

Definition at line 82 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_phi_wheel_2ndTrack[6]
private

Definition at line 84 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_pt[6][12]
private

Definition at line 95 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_pt_wheel_2ndTrack[6]
private

Definition at line 85 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_q[6][12]
private

Definition at line 96 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_q_wheel_2ndTrack[6]
private

Definition at line 86 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_qual[6][12]
private

Definition at line 91 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_quality_summary_wheel_2ndTrack[6]
private

Definition at line 79 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_quality_wheel_2ndTrack[6]
private

Definition at line 78 of file L1TDTTF.h.

Referenced by beginJob(), and fillMEs().

MonitorElement* L1TDTTF::dttf_spare
private

Definition at line 99 of file L1TDTTF.h.

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

edm::InputTag L1TDTTF::dttpgSource_
private

Definition at line 67 of file L1TDTTF.h.

Referenced by analyze(), and L1TDTTF().

edm::InputTag L1TDTTF::gmtSource_
private

Definition at line 68 of file L1TDTTF.h.

Referenced by analyze().

std::string L1TDTTF::l1tsubsystemfolder_
private

Definition at line 70 of file L1TDTTF.h.

Referenced by beginJob(), and L1TDTTF().

edm::InputTag L1TDTTF::muonCollectionLabel_
private

Definition at line 69 of file L1TDTTF.h.

Referenced by analyze().

int L1TDTTF::nev_
private

Definition at line 106 of file L1TDTTF.h.

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

int L1TDTTF::nev_dttf_
private

Definition at line 107 of file L1TDTTF.h.

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

int L1TDTTF::nev_dttf_track2_
private

Definition at line 108 of file L1TDTTF.h.

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

int L1TDTTF::numTracks[6][12]
private

Definition at line 109 of file L1TDTTF.h.

Referenced by analyze(), and fillMEs().

bool L1TDTTF::online_
private

Definition at line 71 of file L1TDTTF.h.

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

std::string L1TDTTF::outputFile_
private

Definition at line 74 of file L1TDTTF.h.

Referenced by endJob(), and L1TDTTF().

edm::InputTag L1TDTTF::trackInputTag_
private

Definition at line 75 of file L1TDTTF.h.

Referenced by analyze(), and L1TDTTF().

bool L1TDTTF::verbose_
private

Definition at line 72 of file L1TDTTF.h.

Referenced by analyze(), endJob(), fillMEs(), and L1TDTTF().