CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DTStatusFlag.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  * \author Paolo Ronchese INFN Padova
5  *
6  */
7 
8 //----------------------
9 // This Class' Header --
10 //----------------------
12 
13 //-------------------------------
14 // Collaborating Class Headers --
15 //-------------------------------
17 
18 //---------------
19 // C++ Headers --
20 //---------------
21 #include <iostream>
22 #include <sstream>
23 
24 //----------------
25 // Constructors --
26 //----------------
28  dataVersion( " " ),
29  dBuf(new DTBufferTree<int,int>) {
30  dataList.reserve( 1000 );
31 }
32 
33 
35  dataVersion( version ),
36  dBuf(new DTBufferTree<int,int>) {
37  dataList.reserve( 1000 );
38 }
39 
40 
42  wheelId( 0 ),
43  stationId( 0 ),
44  sectorId( 0 ),
45  slId( 0 ),
46  layerId( 0 ),
47  cellId( 0 ) {
48 }
49 
50 
52  noiseFlag( false ),
53  feMask( false ),
54  tdcMask( false ),
55  trigMask( false ),
56  deadFlag( false ),
57  nohvFlag( false ) {
58 }
59 
60 
61 //--------------
62 // Destructor --
63 //--------------
65 }
66 
67 
69 }
70 
71 
73 }
74 
75 
76 //--------------
77 // Operations --
78 //--------------
79 int DTStatusFlag::get( int wheelId,
80  int stationId,
81  int sectorId,
82  int slId,
83  int layerId,
84  int cellId,
85  bool& noiseFlag,
86  bool& feMask,
87  bool& tdcMask,
88  bool& trigMask,
89  bool& deadFlag,
90  bool& nohvFlag ) const {
91 
92  noiseFlag =
93  feMask =
94  tdcMask =
95  trigMask =
96  deadFlag =
97  nohvFlag = false;
98 
99  std::vector<int> chanKey;
100  chanKey.reserve(6);
101  chanKey.push_back( wheelId );
102  chanKey.push_back( stationId );
103  chanKey.push_back( sectorId );
104  chanKey.push_back( slId );
105  chanKey.push_back( layerId );
106  chanKey.push_back( cellId );
107  int ientry;
108  int searchStatus = dBuf->find( chanKey.begin(), chanKey.end(), ientry );
109  if ( !searchStatus ) {
110  const DTStatusFlagData& data( dataList[ientry].second );
111  noiseFlag = data.noiseFlag;
112  feMask = data. feMask;
113  tdcMask = data. tdcMask;
114  trigMask = data. trigMask;
115  deadFlag = data. deadFlag;
116  nohvFlag = data. nohvFlag;
117  }
118 
119  return searchStatus;
120 
121 }
122 
123 
125  bool& noiseFlag,
126  bool& feMask,
127  bool& tdcMask,
128  bool& trigMask,
129  bool& deadFlag,
130  bool& nohvFlag ) const {
131  return get( id.wheel(),
132  id.station(),
133  id.sector(),
134  id.superLayer(),
135  id.layer(),
136  id.wire(),
137  noiseFlag, feMask, tdcMask,
138  trigMask, deadFlag, nohvFlag );
139 }
140 
141 
142 const
144  return dataVersion;
145 }
146 
147 
149  return dataVersion;
150 }
151 
152 
154  dataList.clear();
155  initialize();
156  return;
157 }
158 
159 
160 int DTStatusFlag::set( int wheelId,
161  int stationId,
162  int sectorId,
163  int slId,
164  int layerId,
165  int cellId,
166  bool noiseFlag,
167  bool feMask,
168  bool tdcMask,
169  bool trigMask,
170  bool deadFlag,
171  bool nohvFlag ) {
172 
173  std::vector<int> chanKey;
174  chanKey.reserve(6);
175  chanKey.push_back( wheelId );
176  chanKey.push_back( stationId );
177  chanKey.push_back( sectorId );
178  chanKey.push_back( slId );
179  chanKey.push_back( layerId );
180  chanKey.push_back( cellId );
181  int ientry;
182  int searchStatus = dBuf->find( chanKey.begin(), chanKey.end(), ientry );
183 
184  if ( !searchStatus ) {
185  DTStatusFlagData& data( dataList[ientry].second );
186  data.noiseFlag = noiseFlag;
187  data. feMask = feMask;
188  data. tdcMask = tdcMask;
189  data. trigMask = trigMask;
190  data. deadFlag = deadFlag;
191  data. nohvFlag = nohvFlag;
192  return -1;
193  }
194  else {
196  key. wheelId = wheelId;
197  key.stationId = stationId;
198  key. sectorId = sectorId;
199  key. slId = slId;
200  key. layerId = layerId;
201  key. cellId = cellId;
203  data.noiseFlag = noiseFlag;
204  data. feMask = feMask;
205  data. tdcMask = tdcMask;
206  data. trigMask = trigMask;
207  data. deadFlag = deadFlag;
208  data. nohvFlag = nohvFlag;
209  ientry = dataList.size();
210  dataList.push_back( std::pair<const DTStatusFlagId,
211  DTStatusFlagData>( key, data ) );
212  dBuf->insert( chanKey.begin(), chanKey.end(), ientry );
213  return 0;
214  }
215 
216  return 99;
217 
218 }
219 
220 
222  bool noiseFlag,
223  bool feMask,
224  bool tdcMask,
225  bool trigMask,
226  bool deadFlag,
227  bool nohvFlag ) {
228  return set( id.wheel(),
229  id.station(),
230  id.sector(),
231  id.superLayer(),
232  id.layer(),
233  id.wire(),
234  noiseFlag, feMask, tdcMask,
235  trigMask, deadFlag, nohvFlag );
236 }
237 
238 
239 int DTStatusFlag::setCellNoise( int wheelId,
240  int stationId,
241  int sectorId,
242  int slId,
243  int layerId,
244  int cellId,
245  bool flag ) {
246 
247  bool noiseFlag;
248  bool feMask;
249  bool tdcMask;
250  bool trigMask;
251  bool deadFlag;
252  bool nohvFlag;
253  int status = get( wheelId,
254  stationId,
255  sectorId,
256  slId,
257  layerId,
258  cellId,
259  noiseFlag,
260  feMask,
261  tdcMask,
262  trigMask,
263  deadFlag,
264  nohvFlag );
265  set( wheelId,
266  stationId,
267  sectorId,
268  slId,
269  layerId,
270  cellId,
271  flag,
272  feMask,
273  tdcMask,
274  trigMask,
275  deadFlag,
276  nohvFlag );
277  return status;
278 
279 }
280 
281 
283  bool flag ) {
284  return setCellNoise( id.wheel(),
285  id.station(),
286  id.sector(),
287  id.superLayer(),
288  id.layer(),
289  id.wire(),
290  flag );
291 }
292 
293 
295  int stationId,
296  int sectorId,
297  int slId,
298  int layerId,
299  int cellId,
300  bool mask ) {
301 
302  bool noiseFlag;
303  bool feMask;
304  bool tdcMask;
305  bool trigMask;
306  bool deadFlag;
307  bool nohvFlag;
308  int status = get( wheelId,
309  stationId,
310  sectorId,
311  slId,
312  layerId,
313  cellId,
314  noiseFlag,
315  feMask,
316  tdcMask,
317  trigMask,
318  deadFlag,
319  nohvFlag );
320  set( wheelId,
321  stationId,
322  sectorId,
323  slId,
324  layerId,
325  cellId,
326  noiseFlag,
327  mask,
328  tdcMask,
329  trigMask,
330  deadFlag,
331  nohvFlag );
332  return status;
333 
334 }
335 
336 
338  bool mask ) {
339  return setCellFEMask( id.wheel(),
340  id.station(),
341  id.sector(),
342  id.superLayer(),
343  id.layer(),
344  id.wire(),
345  mask );
346 }
347 
348 
350  int stationId,
351  int sectorId,
352  int slId,
353  int layerId,
354  int cellId,
355  bool mask ) {
356 
357  bool noiseFlag;
358  bool feMask;
359  bool tdcMask;
360  bool trigMask;
361  bool deadFlag;
362  bool nohvFlag;
363  int status = get( wheelId,
364  stationId,
365  sectorId,
366  slId,
367  layerId,
368  cellId,
369  noiseFlag,
370  feMask,
371  tdcMask,
372  trigMask,
373  deadFlag,
374  nohvFlag );
375  set( wheelId,
376  stationId,
377  sectorId,
378  slId,
379  layerId,
380  cellId,
381  noiseFlag,
382  feMask,
383  mask,
384  trigMask,
385  deadFlag,
386  nohvFlag );
387  return status;
388 
389 }
390 
391 
393  bool mask ) {
394  return setCellTDCMask( id.wheel(),
395  id.station(),
396  id.sector(),
397  id.superLayer(),
398  id.layer(),
399  id.wire(),
400  mask );
401 }
402 
403 
405  int stationId,
406  int sectorId,
407  int slId,
408  int layerId,
409  int cellId,
410  bool mask ) {
411 
412  bool noiseFlag;
413  bool feMask;
414  bool tdcMask;
415  bool trigMask;
416  bool deadFlag;
417  bool nohvFlag;
418  int status = get( wheelId,
419  stationId,
420  sectorId,
421  slId,
422  layerId,
423  cellId,
424  noiseFlag,
425  feMask,
426  tdcMask,
427  trigMask,
428  deadFlag,
429  nohvFlag );
430  set( wheelId,
431  stationId,
432  sectorId,
433  slId,
434  layerId,
435  cellId,
436  noiseFlag,
437  feMask,
438  tdcMask,
439  mask,
440  deadFlag,
441  nohvFlag );
442  return status;
443 
444 }
445 
446 
448  bool mask ) {
449  return setCellTrigMask( id.wheel(),
450  id.station(),
451  id.sector(),
452  id.superLayer(),
453  id.layer(),
454  id.wire(),
455  mask );
456 }
457 
458 
459 int DTStatusFlag::setCellDead( int wheelId,
460  int stationId,
461  int sectorId,
462  int slId,
463  int layerId,
464  int cellId,
465  bool flag ) {
466 
467  bool noiseFlag;
468  bool feMask;
469  bool tdcMask;
470  bool trigMask;
471  bool deadFlag;
472  bool nohvFlag;
473  int status = get( wheelId,
474  stationId,
475  sectorId,
476  slId,
477  layerId,
478  cellId,
479  noiseFlag,
480  feMask,
481  tdcMask,
482  trigMask,
483  deadFlag,
484  nohvFlag );
485  set( wheelId,
486  stationId,
487  sectorId,
488  slId,
489  layerId,
490  cellId,
491  noiseFlag,
492  feMask,
493  tdcMask,
494  trigMask,
495  flag,
496  nohvFlag );
497  return status;
498 
499 }
500 
501 
503  bool flag ) {
504  return setCellDead( id.wheel(),
505  id.station(),
506  id.sector(),
507  id.superLayer(),
508  id.layer(),
509  id.wire(),
510  flag );
511 }
512 
513 
514 int DTStatusFlag::setCellNoHV( int wheelId,
515  int stationId,
516  int sectorId,
517  int slId,
518  int layerId,
519  int cellId,
520  bool flag ) {
521 
522  bool noiseFlag;
523  bool feMask;
524  bool tdcMask;
525  bool trigMask;
526  bool deadFlag;
527  bool nohvFlag;
528  int status = get( wheelId,
529  stationId,
530  sectorId,
531  slId,
532  layerId,
533  cellId,
534  noiseFlag,
535  feMask,
536  tdcMask,
537  trigMask,
538  deadFlag,
539  nohvFlag );
540  set( wheelId,
541  stationId,
542  sectorId,
543  slId,
544  layerId,
545  cellId,
546  noiseFlag,
547  feMask,
548  tdcMask,
549  trigMask,
550  deadFlag,
551  flag );
552  return status;
553 
554 }
555 
556 
558  bool flag ) {
559  return setCellNoHV( id.wheel(),
560  id.station(),
561  id.sector(),
562  id.superLayer(),
563  id.layer(),
564  id.wire(),
565  flag );
566 }
567 
568 
570  return dataList.begin();
571 }
572 
573 
575  return dataList.end();
576 }
577 
578 
580  std::stringstream name;
581  name << dataVersion << "_map_StatusFlag" << this;
582  return name.str();
583 }
584 
585 
587 
588  dBuf->clear();
589 
590  int entryNum = 0;
591  int entryMax = dataList.size();
592  std::vector<int> chanKey;
593  chanKey.reserve(6);
594  while ( entryNum < entryMax ) {
595 
596  const DTStatusFlagId& chan = dataList[entryNum].first;
597 
598  chanKey.clear();
599  chanKey.push_back( chan. wheelId );
600  chanKey.push_back( chan.stationId );
601  chanKey.push_back( chan. sectorId );
602  chanKey.push_back( chan. slId );
603  chanKey.push_back( chan. layerId );
604  chanKey.push_back( chan. cellId );
605  dBuf->insert( chanKey.begin(), chanKey.end(), entryNum++ );
606 
607  }
608 
609  return;
610 
611 }
612 
int set(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_iterator end() const
int setCellDead(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool flag)
int get(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
Definition: DTStatusFlag.cc:79
int setCellTrigMask(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool mask)
int find(ElementKey fKey, ElementKey lKey, typename DTBufferTreeTrait< Content >::outputTypeOfConstFind &cont) const
U second(std::pair< T, U > const &p)
std::vector< std::pair< DTStatusFlagId, DTStatusFlagData > > dataList
Definition: DTStatusFlag.h:275
void initialize()
int setCellNoise(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool flag)
edm::ConstRespectingPtr< DTBufferTree< int, int > > dBuf
Definition: DTStatusFlag.h:277
std::string dataVersion
Definition: DTStatusFlag.h:273
std::vector< std::pair< DTStatusFlagId, DTStatusFlagData > >::const_iterator const_iterator
Access methods to data.
Definition: DTStatusFlag.h:262
const std::string & version() const
access version
void clear()
reset content
int setCellNoHV(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool flag)
std::string mapName() const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
int insert(ElementKey fKey, ElementKey lKey, Content cont)
list key
Definition: combine.py:13
int setCellTDCMask(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool mask)
int setCellFEMask(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool mask)
volatile std::atomic< bool > shutdown_flag false
tuple status
Definition: ntuplemaker.py:245
const_iterator begin() const