CMS 3D CMS Logo

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

#include <DTSegmentsTask.h>

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

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 book the histos More...
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 DTSegmentsTask (const edm::ParameterSet &pset)
 Constructor. More...
 
 ~DTSegmentsTask () override
 Destructor. More...
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
void beginStream (edm::StreamID id) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Attributes

bool checkNoisyChannels
 
bool debug
 
edm::ParameterSet parameters
 
std::vector< MonitorElement * > phiHistos
 
edm::EDGetTokenT< DTRecSegment4DCollectiontheRecHits4DLabel_
 
std::vector< MonitorElement * > thetaHistos
 

Additional Inherited Members

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

Detailed Description

DQM Analysis of 4D DT segments

Author
G. Mila - INFN Torino

Definition at line 25 of file DTSegmentsTask.h.

Constructor & Destructor Documentation

◆ DTSegmentsTask()

DTSegmentsTask::DTSegmentsTask ( const edm::ParameterSet pset)

Constructor.

Definition at line 27 of file DTSegmentsTask.cc.

27  {
28  debug = pset.getUntrackedParameter<bool>("debug", false);
29  parameters = pset;
30 
31  // should be init from pset, but it was commented out...
32  // better false than undefined
33  checkNoisyChannels = false;
34 
35  // the name of the 4D rec hits collection
36  theRecHits4DLabel_ = consumes<DTRecSegment4DCollection>(parameters.getParameter<std::string>("recHits4DLabel"));
37 }

References dtDigiTask_cfi::checkNoisyChannels, debug, muonDTDigis_cfi::pset, and AlCaHLTBitMon_QueryRunRegistry::string.

◆ ~DTSegmentsTask()

DTSegmentsTask::~DTSegmentsTask ( )
override

Destructor.

Definition at line 39 of file DTSegmentsTask.cc.

39 {}

Member Function Documentation

◆ analyze()

void DTSegmentsTask::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
overridevirtual

book the histos

Reimplemented from DQMEDAnalyzer.

Definition at line 110 of file DTSegmentsTask.cc.

110  {
111  // Get the map of noisy channels
112  // bool checkNoisyChannels = parameters.getUntrackedParameter<bool>("checkNoisyChannels",false);
113  ESHandle<DTStatusFlag> statusMap;
114  if (checkNoisyChannels) {
115  setup.get<DTStatusFlagRcd>().get(statusMap);
116  }
117 
118  // Get the 4D segment collection from the event
120  event.getByToken(theRecHits4DLabel_, all4DSegments);
121 
122  // Loop over all chambers containing a segment
124  for (chamberId = all4DSegments->id_begin(); chamberId != all4DSegments->id_end(); ++chamberId) {
125  // Get the range for the corresponding ChamerId
126  DTRecSegment4DCollection::range range = all4DSegments->get(*chamberId);
127  int nsegm = distance(range.first, range.second);
128  if (debug)
129  cout << " Chamber: " << *chamberId << " has " << nsegm << " 4D segments" << endl;
130 
131  // Loop over the rechits of this ChamerId
132  for (DTRecSegment4DCollection::const_iterator segment4D = range.first; segment4D != range.second; ++segment4D) {
133  //FOR NOISY CHANNELS////////////////////////////////
134  bool segmNoisy = false;
135  if ((*segment4D).hasPhi()) {
136  const DTChamberRecSegment2D* phiSeg = (*segment4D).phiSegment();
137  vector<DTRecHit1D> phiHits = phiSeg->specificRecHits();
138  map<DTSuperLayerId, vector<DTRecHit1D> > hitsBySLMap;
139  for (vector<DTRecHit1D>::const_iterator hit = phiHits.begin(); hit != phiHits.end(); ++hit) {
140  DTWireId wireId = (*hit).wireId();
141 
142  // Check for noisy channels to skip them
143  if (checkNoisyChannels) {
144  bool isNoisy = false;
145  bool isFEMasked = false;
146  bool isTDCMasked = false;
147  bool isTrigMask = false;
148  bool isDead = false;
149  bool isNohv = false;
150  statusMap->cellStatus(wireId, isNoisy, isFEMasked, isTDCMasked, isTrigMask, isDead, isNohv);
151  if (isNoisy) {
152  if (debug)
153  cout << "Wire: " << wireId << " is noisy, skipping!" << endl;
154  segmNoisy = true;
155  }
156  }
157  }
158  }
159 
160  if ((*segment4D).hasZed()) {
161  const DTSLRecSegment2D* zSeg = (*segment4D).zSegment(); // zSeg lives in the SL RF
162  // Check for noisy channels to skip them
163  vector<DTRecHit1D> zHits = zSeg->specificRecHits();
164  for (vector<DTRecHit1D>::const_iterator hit = zHits.begin(); hit != zHits.end(); ++hit) {
165  DTWireId wireId = (*hit).wireId();
166  if (checkNoisyChannels) {
167  bool isNoisy = false;
168  bool isFEMasked = false;
169  bool isTDCMasked = false;
170  bool isTrigMask = false;
171  bool isDead = false;
172  bool isNohv = false;
173  //cout<<"wire id "<<wireId<<endl;
174  statusMap->cellStatus(wireId, isNoisy, isFEMasked, isTDCMasked, isTrigMask, isDead, isNohv);
175  if (isNoisy) {
176  if (debug)
177  cout << "Wire: " << wireId << " is noisy, skipping!" << endl;
178  segmNoisy = true;
179  }
180  }
181  }
182  }
183 
184  if (segmNoisy) {
185  if (debug)
186  cout << "skipping the segment: it contains noisy cells" << endl;
187  continue;
188  }
189  //END FOR NOISY CHANNELS////////////////////////////////
190 
191  // Fill the histos
192  int nHits = 0;
193  if ((*segment4D).hasPhi()) {
194  nHits = (((*segment4D).phiSegment())->specificRecHits()).size();
195  if (debug)
196  cout << "Phi segment with number of hits: " << nHits << endl;
197  phiHistos[0]->Fill((*chamberId).wheel(), nHits);
198  phiHistos[1]->Fill((*chamberId).sector(), nHits);
199  phiHistos[2]->Fill((*chamberId).station(), nHits);
200  }
201  if ((*segment4D).hasZed()) {
202  nHits = (((*segment4D).zSegment())->specificRecHits()).size();
203  if (debug)
204  cout << "Zed segment with number of hits: " << nHits << endl;
205  thetaHistos[0]->Fill((*chamberId).wheel(), nHits);
206  thetaHistos[1]->Fill((*chamberId).sector(), nHits);
207  thetaHistos[2]->Fill((*chamberId).station(), nHits);
208  }
209 
210  } //loop over segments
211  } // loop over chambers
212 }

References DTStatusFlag::cellStatus(), dtDigiTask_cfi::checkNoisyChannels, gather_cfg::cout, debug, HLT_2018_cff::distance, edm::get(), FastTimerService_cff::range, singleTopDQM_cfi::setup, findQualityFiles::size, and DTRecSegment2D::specificRecHits().

◆ bookHistograms()

void DTSegmentsTask::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 41 of file DTSegmentsTask.cc.

43  {
44  ibooker.cd();
45  ibooker.setCurrentFolder("Muons/DTSegmentsMonitor");
46 
47  // histos for phi segments
48  phiHistos.push_back(
49  ibooker.book2D("phiSegments_numHitsVsWheel", "phiSegments_numHitsVsWheel", 5, -2.5, 2.5, 20, 0, 20));
50  phiHistos[0]->setBinLabel(1, "W-2", 1);
51  phiHistos[0]->setBinLabel(2, "W-1", 1);
52  phiHistos[0]->setBinLabel(3, "W0", 1);
53  phiHistos[0]->setBinLabel(4, "W1", 1);
54  phiHistos[0]->setBinLabel(5, "W2", 1);
55  phiHistos.push_back(
56  ibooker.book2D("phiSegments_numHitsVsSector", "phiSegments_numHitsVsSector", 14, 0.5, 14.5, 20, 0, 20));
57  phiHistos[1]->setBinLabel(1, "Sec1", 1);
58  phiHistos[1]->setBinLabel(2, "Sec2", 1);
59  phiHistos[1]->setBinLabel(3, "Sec3", 1);
60  phiHistos[1]->setBinLabel(4, "Sec4", 1);
61  phiHistos[1]->setBinLabel(5, "Sec5", 1);
62  phiHistos[1]->setBinLabel(6, "Sec6", 1);
63  phiHistos[1]->setBinLabel(7, "Sec7", 1);
64  phiHistos[1]->setBinLabel(8, "Sec8", 1);
65  phiHistos[1]->setBinLabel(9, "Sec9", 1);
66  phiHistos[1]->setBinLabel(10, "Sec10", 1);
67  phiHistos[1]->setBinLabel(11, "Sec11", 1);
68  phiHistos[1]->setBinLabel(12, "Sec12", 1);
69  phiHistos[1]->setBinLabel(13, "Sec13", 1);
70  phiHistos[1]->setBinLabel(14, "Sec14", 1);
71  phiHistos.push_back(
72  ibooker.book2D("phiSegments_numHitsVsStation", "phiSegments_numHitsVsStation", 4, 0.5, 4.5, 20, 0, 20));
73  phiHistos[2]->setBinLabel(1, "St1", 1);
74  phiHistos[2]->setBinLabel(2, "St2", 1);
75  phiHistos[2]->setBinLabel(3, "St3", 1);
76  phiHistos[2]->setBinLabel(4, "St4", 1);
77 
78  // histos for theta segments
79  thetaHistos.push_back(
80  ibooker.book2D("thetaSegments_numHitsVsWheel", "thetaSegments_numHitsVsWheel", 5, -2.5, 2.5, 20, 0, 20));
81  thetaHistos[0]->setBinLabel(1, "W-2", 1);
82  thetaHistos[0]->setBinLabel(2, "W-1", 1);
83  thetaHistos[0]->setBinLabel(3, "W0", 1);
84  thetaHistos[0]->setBinLabel(4, "W1", 1);
85  thetaHistos[0]->setBinLabel(5, "W2", 1);
86  thetaHistos.push_back(
87  ibooker.book2D("thetaSegments_numHitsVsSector", "thetaSegments_numHitsVsSector", 14, 0.5, 14.5, 20, 0, 20));
88  thetaHistos[1]->setBinLabel(1, "Sec1", 1);
89  thetaHistos[1]->setBinLabel(2, "Sec2", 1);
90  thetaHistos[1]->setBinLabel(3, "Sec3", 1);
91  thetaHistos[1]->setBinLabel(4, "Sec4", 1);
92  thetaHistos[1]->setBinLabel(5, "Sec5", 1);
93  thetaHistos[1]->setBinLabel(6, "Sec6", 1);
94  thetaHistos[1]->setBinLabel(7, "Sec7", 1);
95  thetaHistos[1]->setBinLabel(8, "Sec8", 1);
96  thetaHistos[1]->setBinLabel(9, "Sec9", 1);
97  thetaHistos[1]->setBinLabel(10, "Sec10", 1);
98  thetaHistos[1]->setBinLabel(11, "Sec11", 1);
99  thetaHistos[1]->setBinLabel(12, "Sec12", 1);
100  thetaHistos[1]->setBinLabel(13, "Sec13", 1);
101  thetaHistos[1]->setBinLabel(14, "Sec14", 1);
102  thetaHistos.push_back(
103  ibooker.book2D("thetaSegments_numHitsVsStation", "thetaSegments_numHitsVsStation", 4, 0.5, 4.5, 20, 0, 20));
104  thetaHistos[2]->setBinLabel(1, "St1", 1);
105  thetaHistos[2]->setBinLabel(2, "St2", 1);
106  thetaHistos[2]->setBinLabel(3, "St3", 1);
107  thetaHistos[2]->setBinLabel(4, "St4", 1);
108 }

References dqm::implementation::IBooker::book2D(), dqm::implementation::NavigatorBase::cd(), and dqm::implementation::NavigatorBase::setCurrentFolder().

Member Data Documentation

◆ checkNoisyChannels

bool DTSegmentsTask::checkNoisyChannels
private

Definition at line 41 of file DTSegmentsTask.h.

◆ debug

bool DTSegmentsTask::debug
private

◆ parameters

edm::ParameterSet DTSegmentsTask::parameters
private

Definition at line 42 of file DTSegmentsTask.h.

◆ phiHistos

std::vector<MonitorElement *> DTSegmentsTask::phiHistos
private

Definition at line 45 of file DTSegmentsTask.h.

◆ theRecHits4DLabel_

edm::EDGetTokenT<DTRecSegment4DCollection> DTSegmentsTask::theRecHits4DLabel_
private

Definition at line 49 of file DTSegmentsTask.h.

◆ thetaHistos

std::vector<MonitorElement *> DTSegmentsTask::thetaHistos
private

Definition at line 46 of file DTSegmentsTask.h.

DTSLRecSegment2D
Definition: DTSLRecSegment2D.h:15
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
DTStatusFlag::cellStatus
int cellStatus(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool &noiseFlag, bool &feMask, bool &tdcMask, bool &trigMask, bool &deadFlag, bool &nohvFlag) const
get content
Definition: DTStatusFlag.h:88
gather_cfg.cout
cout
Definition: gather_cfg.py:144
HLT_2018_cff.distance
distance
Definition: HLT_2018_cff.py:6417
edm::Handle< DTRecSegment4DCollection >
edm::RangeMap::id_iterator
identifier iterator
Definition: RangeMap.h:130
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
parameters
parameters
Definition: BeamSpot_PayloadInspector.cc:14
DTWireId
Definition: DTWireId.h:12
edm::ESHandle
Definition: DTSurvey.h:22
DTSegmentsTask::theRecHits4DLabel_
edm::EDGetTokenT< DTRecSegment4DCollection > theRecHits4DLabel_
Definition: DTSegmentsTask.h:49
DTSegmentsTask::checkNoisyChannels
bool checkNoisyChannels
Definition: DTSegmentsTask.h:41
DTSegmentsTask::debug
bool debug
Definition: DTSegmentsTask.h:40
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
DTStatusFlagRcd
Definition: DTStatusFlagRcd.h:5
edm::RangeMap::const_iterator
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:43
DTChamberRecSegment2D
Definition: DTChamberRecSegment2D.h:31
DTSegmentsTask::thetaHistos
std::vector< MonitorElement * > thetaHistos
Definition: DTSegmentsTask.h:46
get
#define get
edm::RangeMap::range
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:50
DTRecSegment2D::specificRecHits
std::vector< DTRecHit1D > specificRecHits() const
Access to specific components.
Definition: DTRecSegment2D.cc:104
hit
Definition: SiStripHitEffFromCalibTree.cc:88
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
DTSegmentsTask::phiHistos
std::vector< MonitorElement * > phiHistos
Definition: DTSegmentsTask.h:45
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443