35 checkNoisyChannels =
false;
38 theRecHits4DLabel_ = consumes<DTRecSegment4DCollection>(parameters.getParameter<
std::string>(
"recHits4DLabel"));
53 phiHistos.push_back(ibooker.
book2D(
"phiSegments_numHitsVsWheel",
"phiSegments_numHitsVsWheel", 5, -2.5, 2.5, 20, 0, 20));
54 phiHistos[0]->setBinLabel(1,
"W-2",1);
55 phiHistos[0]->setBinLabel(2,
"W-1",1);
56 phiHistos[0]->setBinLabel(3,
"W0",1);
57 phiHistos[0]->setBinLabel(4,
"W1",1);
58 phiHistos[0]->setBinLabel(5,
"W2",1);
59 phiHistos.push_back(ibooker.
book2D(
"phiSegments_numHitsVsSector",
"phiSegments_numHitsVsSector", 14, 0.5, 14.5, 20, 0, 20));
60 phiHistos[1]->setBinLabel(1,
"Sec1",1);
61 phiHistos[1]->setBinLabel(2,
"Sec2",1);
62 phiHistos[1]->setBinLabel(3,
"Sec3",1);
63 phiHistos[1]->setBinLabel(4,
"Sec4",1);
64 phiHistos[1]->setBinLabel(5,
"Sec5",1);
65 phiHistos[1]->setBinLabel(6,
"Sec6",1);
66 phiHistos[1]->setBinLabel(7,
"Sec7",1);
67 phiHistos[1]->setBinLabel(8,
"Sec8",1);
68 phiHistos[1]->setBinLabel(9,
"Sec9",1);
69 phiHistos[1]->setBinLabel(10,
"Sec10",1);
70 phiHistos[1]->setBinLabel(11,
"Sec11",1);
71 phiHistos[1]->setBinLabel(12,
"Sec12",1);
72 phiHistos[1]->setBinLabel(13,
"Sec13",1);
73 phiHistos[1]->setBinLabel(14,
"Sec14",1);
74 phiHistos.push_back(ibooker.
book2D(
"phiSegments_numHitsVsStation",
"phiSegments_numHitsVsStation", 4, 0.5, 4.5, 20, 0, 20));
75 phiHistos[2]->setBinLabel(1,
"St1",1);
76 phiHistos[2]->setBinLabel(2,
"St2",1);
77 phiHistos[2]->setBinLabel(3,
"St3",1);
78 phiHistos[2]->setBinLabel(4,
"St4",1);
81 thetaHistos.push_back(ibooker.
book2D(
"thetaSegments_numHitsVsWheel",
"thetaSegments_numHitsVsWheel", 5, -2.5, 2.5, 20, 0, 20));
82 thetaHistos[0]->setBinLabel(1,
"W-2",1);
83 thetaHistos[0]->setBinLabel(2,
"W-1",1);
84 thetaHistos[0]->setBinLabel(3,
"W0",1);
85 thetaHistos[0]->setBinLabel(4,
"W1",1);
86 thetaHistos[0]->setBinLabel(5,
"W2",1);
87 thetaHistos.push_back(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(ibooker.
book2D(
"thetaSegments_numHitsVsStation",
"thetaSegments_numHitsVsStation", 4, 0.5, 4.5, 20, 0, 20));
103 thetaHistos[2]->setBinLabel(1,
"St1",1);
104 thetaHistos[2]->setBinLabel(2,
"St2",1);
105 thetaHistos[2]->setBinLabel(3,
"St3",1);
106 thetaHistos[2]->setBinLabel(4,
"St4",1);
115 if(checkNoisyChannels) {
121 event.getByToken(theRecHits4DLabel_, all4DSegments);
124 DTRecSegment4DCollection::id_iterator chamberId;
125 for (chamberId = all4DSegments->id_begin(); chamberId != all4DSegments->id_end(); ++chamberId){
128 int nsegm =
distance(range.first, range.second);
130 cout <<
" Chamber: " << *chamberId <<
" has " << nsegm
131 <<
" 4D segments" << endl;
137 bool segmNoisy =
false;
138 if((*segment4D).hasPhi()){
141 map<DTSuperLayerId,vector<DTRecHit1D> > hitsBySLMap;
142 for(vector<DTRecHit1D>::const_iterator
hit = phiHits.begin();
hit != phiHits.end(); ++
hit) {
146 if(checkNoisyChannels) {
147 bool isNoisy =
false;
148 bool isFEMasked =
false;
149 bool isTDCMasked =
false;
150 bool isTrigMask =
false;
153 statusMap->cellStatus(wireId, isNoisy, isFEMasked, isTDCMasked, isTrigMask, isDead, isNohv);
156 cout <<
"Wire: " << wireId <<
" is noisy, skipping!" << endl;
163 if((*segment4D).hasZed()) {
167 for(vector<DTRecHit1D>::const_iterator
hit = zHits.begin();
168 hit != zHits.end(); ++
hit) {
170 if(checkNoisyChannels) {
171 bool isNoisy =
false;
172 bool isFEMasked =
false;
173 bool isTDCMasked =
false;
174 bool isTrigMask =
false;
178 statusMap->cellStatus(wireId, isNoisy, isFEMasked, isTDCMasked, isTrigMask, isDead, isNohv);
181 cout <<
"Wire: " << wireId <<
" is noisy, skipping!" << endl;
190 cout<<
"skipping the segment: it contains noisy cells"<<endl;
197 if((*segment4D).hasPhi()){
198 nHits = (((*segment4D).phiSegment())->specificRecHits()).
size();
200 cout<<
"Phi segment with number of hits: "<<nHits<<endl;
201 phiHistos[0]->Fill((*chamberId).wheel(), nHits);
202 phiHistos[1]->Fill((*chamberId).sector(), nHits);
203 phiHistos[2]->Fill((*chamberId).station(), nHits);
205 if((*segment4D).hasZed()) {
206 nHits = (((*segment4D).zSegment())->specificRecHits()).
size();
208 cout<<
"Zed segment with number of hits: "<<nHits<<endl;
209 thetaHistos[0]->Fill((*chamberId).wheel(), nHits);
210 thetaHistos[1]->Fill((*chamberId).sector(), nHits);
211 thetaHistos[2]->Fill((*chamberId).station(), nHits);
T getUntrackedParameter(std::string const &, T const &) const
std::pair< const_iterator, const_iterator > range
iterator range
virtual ~DTSegmentsTask()
Destructor.
void analyze(const edm::Event &, const edm::EventSetup &) override
book the histos
DTSegmentsTask(const edm::ParameterSet &pset)
Constructor.
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
std::vector< DTRecHit1D > specificRecHits() const
Access to specific components.
void setCurrentFolder(const std::string &fullpath)
MonitorElement * book2D(Args &&...args)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
tuple size
Write out results.