CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HitPattern.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 #ifndef TrackReco_HitPattern_h
3 #define TrackReco_HitPattern_h
4 
5 //
6 // File: DataFormats/TrackReco/interface/HitPattern.h
7 //
8 // Marcel Vos, INFN Pisa
9 // v1.10 2007/05/08 bellan
10 // Zongru Wan, Kansas State University
11 // Jean-Roch Vlimant
12 // Kevin Burkett
13 // Boris Mangano
14 //
15 // Hit pattern is the summary information of the hits associated to track in
16 // AOD. When RecHits are no longer available, the compact hit pattern should
17 // allow basic track selection based on the hits in various subdetectors. The
18 // hits of a track are saved in unit32_t hitPattern_[28], initialized as
19 // 0x00000000, ..., 0x00000000. Set one hit with 10 bits
20 //
21 // +-----+-----+-----+-----+-----+-----+-----+-----+----------------+-----+-----+
22 // |tk/mu| sub-structure | sub-sub-structure | stereo | hit type |
23 // +-----+-----+-----+-----+-----+-----+-----+-----+----------------+-----+-----+
24 // ... | 10 | 9 8 7 | 6 5 4 3 | 2 | 1 0 | bit
25 //
26 // |tk = 1 PXB = 1 layer = 1-3 hit type = 0-3
27 // |tk = 1 PXF = 2 disk = 1-2 hit type = 0-3
28 // |tk = 1 TIB = 3 layer = 1-4 0=rphi,1=stereo hit type = 0-3
29 // |tk = 1 TID = 4 wheel = 1-3 0=rphi,1=stereo hit type = 0-3
30 // |tk = 1 TOB = 5 layer = 1-6 0=rphi,1=stereo hit type = 0-3
31 // |tk = 1 TEC = 6 wheel = 1-9 0=rphi,1=stereo hit type = 0-3
32 // |mu = 0 DT = 1 4*(stat-1)+superlayer hit type = 0-3
33 // |mu = 0 CSC = 2 4*(stat-1)+(ring-1) hit type = 0-3
34 // |mu = 0 RPC = 3 4*(stat-1)+2*layer+region hit type = 0-3
35 //
36 // hit type, see DataFormats/TrackingRecHit/interface/TrackingRecHit.h
37 // valid = valid hit = 0
38 // missing = detector is good, but no rec hit found = 1
39 // inactive = detector is off, so there was no hope = 2
40 // bad = there were many bad strips within the ellipse = 3
41 //
42 // The maximum number of hits = 32*28/11 = 81. It had been shown by Zongru
43 // using a 100 GeV muon sample with 5000 events uniform in eta and phi, the
44 // average (maximum) number of tracker hits is 13 (17) and the average
45 // (maximum) number of muon detector hits is about 26 (50). If the number of
46 // hits of a track is larger than 80 then the extra hits are ignored by hit
47 // pattern. The static hit pattern array might be improved to a dynamic one
48 // in the future.
49 //
50 // Because of tracking with/without overlaps and with/without hit-splitting,
51 // the final number of hits per track is pretty "variable". Compared with the
52 // number of valid hits, the number of crossed layers with measurement should
53 // be more robust to discriminate between good and fake track.
54 //
55 // Since 4-bit for sub-sub-structure is not enough to specify a muon layer,
56 // the layer case counting methods are implemented for tracker only. This is
57 // different from the hit counting methods which are implemented for both
58 // tracker and muon detector.
59 //
60 // Given a tracker layer, specified by sub-structure and layer, the method
61 // getTrackerLayerCase(substr, layer) groups all of the hits in the hit pattern
62 // array for the layer together and returns one of the four cases
63 //
64 // crossed
65 // layer case 0: valid + (missing, off, bad) ==> with measurement
66 // layer case 1: missing + (off, bad) ==> without measurement
67 // layer case 2: off, bad ==> totally off or bad, cannot say much
68 // not crossed
69 // layer case 999999: track outside acceptance or in gap ==> null
70 //
71 // Given a tracker layer, specified by sub-structure and layer, the method
72 // getTrackerMonoStereo(substr, layer) groups all of the valid hits in the hit
73 // pattern array for the layer together and returns
74 //
75 // 0: neither a valid mono nor a valid stereo hit
76 // MONO: valid mono hit
77 // STEREO: valid stereo hit
78 // MONO | STEREO: both
79 //
80 // Given a track, here is an example usage of hit pattern
81 //
82 // // hit pattern of the track
83 // const reco::HitPattern& p = track->hitPattern();
84 //
85 // // loop over the hits of the track
86 // for (int i=0; i<p.numberOfHits(); i++) {
87 // uint32_t hit = p.getHitPattern(i);
88 //
89 // // if the hit is valid and in pixel barrel, print out the layer
90 // if (p.validHitFilter(hit) && p.pixelBarrelHitFilter(hit))
91 // std::cout << "valid hit found in pixel barrel layer "
92 // << p.getLayer(hit) << std::endl;
93 //
94 // // expert level: printout the hit in 10-bit binary format
95 // std::cout << "hit in 10-bit binary format = ";
96 // for (int j=9; j>=0; j--) {
97 // int bit = (hit >> j) & 0x1;
98 // std::cout << bit;
99 // }
100 // std::cout << std::endl;
101 // }
102 //
103 // // count the number of valid pixel barrel *** hits ***
104 // std::cout << "number of of valid pixel barrel hits is "
105 // << p.numberOfValidPixelBarrelHits() << std::endl;
106 //
107 // // count the number of pixel barrel *** layers *** with measurement
108 // std::cout << "number of of pixel barrel layers with measurement is "
109 // << p.pixelBarrelLayersWithMeasurement() << std::endl;
110 //
111 #include <ostream>
116 
117 namespace reco {
118  class HitPattern {
119  public:
120  enum { MONO = 1, STEREO = 2 };
121 
122  // default constructor
123  // init hit pattern array as 0x00000000, ..., 0x00000000
124  HitPattern() { for (int i=0; i<PatternSize; i++) hitPattern_[i] = 0; }
125 
126  // constructor from iterator (begin, end) pair
127  template<typename I>
128  HitPattern(const I & begin, const I & end) { set(begin, end); }
129 
130  // constructor from hit collection
131  template<typename C>
132  HitPattern(const C & c) { set(c); }
133 
134  // set pattern from iterator (begin, end) pair
135  // init hit pattern array as 0x00000000, ..., 0x00000000
136  // loop over the hits and set hit pattern
137  template<typename I>
138  void set(const I & begin, const I & end) {
139  for (int i=0; i<PatternSize; i++) hitPattern_[i] = 0;
140  unsigned int counter = 0;
141  for (I hit=begin; hit!=end && counter<32*PatternSize/HitSize;
142  hit++, counter++)
143  set(*hit, counter);
144  }
145 
146  // print the pattern of the position-th hit
147  void printHitPattern (int position, std::ostream &stream) const;
148  void print (std::ostream &stream = std::cout) const;
149 
150  // set the pattern of the i-th hit
151  void set(const TrackingRecHit &, unsigned int i);
152 
153  // get the pattern of the position-th hit
154  uint32_t getHitPattern(int position) const;
155 
156  bool trackerHitFilter(uint32_t pattern) const; // tracker hit
157  bool muonHitFilter(uint32_t pattern) const; // muon hit
158 
159  uint32_t getSubStructure(uint32_t pattern) const; // sub-structure
160  bool pixelHitFilter(uint32_t pattern) const; // pixel
161  bool pixelBarrelHitFilter(uint32_t pattern) const; // pixel barrel
162  bool pixelEndcapHitFilter(uint32_t pattern) const; // pixel endcap
163  bool stripHitFilter(uint32_t pattern) const; // strip
164  bool stripTIBHitFilter(uint32_t pattern) const; // strip TIB
165  bool stripTIDHitFilter(uint32_t pattern) const; // strip TID
166  bool stripTOBHitFilter(uint32_t pattern) const; // strip TOB
167  bool stripTECHitFilter(uint32_t pattern) const; // strip TEC
168  bool muonDTHitFilter(uint32_t pattern) const; // muon DT
169  bool muonCSCHitFilter(uint32_t pattern) const; // muon CSC
170  bool muonRPCHitFilter(uint32_t pattern) const; // muon RPC
171 
172  uint32_t getLayer(uint32_t pattern) const; // sub-sub-structure
173  uint32_t getSubSubStructure(uint32_t pattern) const; // sub-sub-structure
174 
176  uint32_t getMuonStation(uint32_t pattern) const; // only for patterns from muon, of course
178  uint32_t getDTSuperLayer(uint32_t pattern) const; // only for DT patterns
180  uint32_t getCSCRing(uint32_t pattern) const ;
182  uint32_t getRPCLayer(uint32_t pattern) const ;
184  uint32_t getRPCregion(uint32_t pattern) const;
185 
186  uint32_t getHitType(uint32_t pattern) const; // hit type
187  bool validHitFilter(uint32_t pattern) const; // hit type 0 = valid
188  bool type_1_HitFilter(uint32_t pattern) const; // hit type 1
189  bool type_2_HitFilter(uint32_t pattern) const; // hit type 2
190  bool type_3_HitFilter(uint32_t pattern) const; // hit type 3
191 
192  static uint32_t getSide (uint32_t pattern); // mono (0) or stereo (1)
193 
194  bool hasValidHitInFirstPixelBarrel() const; // has valid hit in PXB layer 1
195  bool hasValidHitInFirstPixelEndcap() const; // has valid hit in PXF layer 1
196 
197  int numberOfHits() const; // not-null
198  int numberOfValidHits() const; // not-null, valid
199  int numberOfValidTrackerHits() const; // not-null, valid, tracker
200  int numberOfValidMuonHits() const; // not-null, valid, muon
201  int numberOfValidPixelHits() const; // not-null, valid, pixel
202  int numberOfValidPixelBarrelHits() const; // not-null, valid, pixel PXB
203  int numberOfValidPixelEndcapHits() const; // not-null, valid, pixel PXF
204  int numberOfValidStripHits() const; // not-null, valid, strip
205  int numberOfValidStripTIBHits() const; // not-null, valid, strip TIB
206  int numberOfValidStripTIDHits() const; // not-null, valid, strip TID
207  int numberOfValidStripTOBHits() const; // not-null, valid, strip TOB
208  int numberOfValidStripTECHits() const; // not-null, valid, strip TEC
209  int numberOfValidMuonDTHits() const; // not-null, valid, muon DT
210  int numberOfValidMuonCSCHits() const; // not-null, valid, muon CSC
211  int numberOfValidMuonRPCHits() const; // not-null, valid, muon RPC
212  int numberOfLostHits() const; // not-null, not valid
213  int numberOfLostTrackerHits() const; // not-null, not valid, tracker
214  int numberOfLostMuonHits() const; // not-null, not valid, muon
215  int numberOfLostPixelHits() const; // not-null, not valid, pixel
216  int numberOfLostPixelBarrelHits() const; // not-null, not valid, pixel PXB
217  int numberOfLostPixelEndcapHits() const; // not-null, not valid, pixel PXF
218  int numberOfLostStripHits() const; // not-null, not valid, strip
219  int numberOfLostStripTIBHits() const; // not-null, not valid, strip TIB
220  int numberOfLostStripTIDHits() const; // not-null, not valid, strip TID
221  int numberOfLostStripTOBHits() const; // not-null, not valid, strip TOB
222  int numberOfLostStripTECHits() const; // not-null, not valid, strip TEC
223  int numberOfLostMuonDTHits() const; // not-null, not valid, muon DT
224  int numberOfLostMuonCSCHits() const; // not-null, not valid, muon CSC
225  int numberOfLostMuonRPCHits() const; // not-null, not valid, muon RPC
226  int numberOfBadHits() const; // not-null, bad (only used in Muon Ch.)
227  int numberOfBadMuonHits() const; // not-null, bad, muon
228  int numberOfBadMuonDTHits() const; // not-null, bad, muon DT
229  int numberOfBadMuonCSCHits() const; // not-null, bad, muon CSC
230  int numberOfBadMuonRPCHits() const; // not-null, bad, muon RPC
231  int numberOfInactiveHits() const; // not-null, inactive
232  int numberOfInactiveTrackerHits() const; // not-null, inactive, tracker
233 
234 
236  const; // count strip layers that have non-null, valid mono and stereo hits
237 
238  uint32_t getTrackerLayerCase(uint32_t substr, uint32_t layer) const;
239  uint32_t getTrackerMonoStereo (uint32_t substr, uint32_t layer) const;
240 
241  int trackerLayersWithMeasurement() const; // case 0: tracker
242  int pixelLayersWithMeasurement() const; // case 0: pixel
243  int stripLayersWithMeasurement() const; // case 0: strip
244  int pixelBarrelLayersWithMeasurement() const; // case 0: pixel PXB
245  int pixelEndcapLayersWithMeasurement() const; // case 0: pixel PXF
246  int stripTIBLayersWithMeasurement() const; // case 0: strip TIB
247  int stripTIDLayersWithMeasurement() const; // case 0: strip TID
248  int stripTOBLayersWithMeasurement() const; // case 0: strip TOB
249  int stripTECLayersWithMeasurement() const; // case 0: strip TEC
250  int trackerLayersWithoutMeasurement() const; // case 1: tracker
251  int pixelLayersWithoutMeasurement() const; // case 1: pixel
252  int stripLayersWithoutMeasurement() const; // case 1: strip
253  int pixelBarrelLayersWithoutMeasurement() const; // case 1: pixel PXB
254  int pixelEndcapLayersWithoutMeasurement() const; // case 1: pixel PXF
255  int stripTIBLayersWithoutMeasurement() const; // case 1: strip TIB
256  int stripTIDLayersWithoutMeasurement() const; // case 1: strip TID
257  int stripTOBLayersWithoutMeasurement() const; // case 1: strip TOB
258  int stripTECLayersWithoutMeasurement() const; // case 1: strip TEC
259  int trackerLayersTotallyOffOrBad() const; // case 2: tracker
260  int pixelLayersTotallyOffOrBad() const; // case 2: pixel
261  int stripLayersTotallyOffOrBad() const; // case 2: strip
262  int pixelBarrelLayersTotallyOffOrBad() const; // case 2: pixel PXB
263  int pixelEndcapLayersTotallyOffOrBad() const; // case 2: pixel PXF
264  int stripTIBLayersTotallyOffOrBad() const; // case 2: strip TIB
265  int stripTIDLayersTotallyOffOrBad() const; // case 2: strip TID
266  int stripTOBLayersTotallyOffOrBad() const; // case 2: strip TOB
267  int stripTECLayersTotallyOffOrBad() const; // case 2: strip TEC
268  int trackerLayersNull() const; // case 999999: tracker
269  int pixelLayersNull() const; // case 999999: pixel
270  int stripLayersNull() const; // case 999999: strip
271  int pixelBarrelLayersNull() const; // case 999999: pixel PXB
272  int pixelEndcapLayersNull() const; // case 999999: pixel PXF
273  int stripTIBLayersNull() const; // case 999999: strip TIB
274  int stripTIDLayersNull() const; // case 999999: strip TID
275  int stripTOBLayersNull() const; // case 999999: strip TOB
276  int stripTECLayersNull() const; // case 999999: strip TEC
277 
278 
279 
281  int muonStations(int subdet, int hitType) const ;
282 
283  int muonStationsWithValidHits() const ;
284  int muonStationsWithBadHits() const ;
285  int muonStationsWithAnyHits() const ;
286  int dtStationsWithValidHits() const ;
287  int dtStationsWithBadHits() const ;
288  int dtStationsWithAnyHits() const ;
289  int cscStationsWithValidHits() const ;
290  int cscStationsWithBadHits() const ;
291  int cscStationsWithAnyHits() const ;
292  int rpcStationsWithValidHits() const ;
293  int rpcStationsWithBadHits() const ;
294  int rpcStationsWithAnyHits() const ;
295 
297  int innermostMuonStationWithHits(int hitType) const ;
299  int innermostMuonStationWithBadHits() const ;
300  int innermostMuonStationWithAnyHits() const ;
301 
303  int outermostMuonStationWithHits(int hitType) const ;
305  int outermostMuonStationWithBadHits() const ;
306  int outermostMuonStationWithAnyHits() const ;
307 
308  int numberOfDTStationsWithRPhiView() const ;
309  int numberOfDTStationsWithRZView() const ;
310  int numberOfDTStationsWithBothViews() const ;
311  private:
312 
313  // number of 32 bit integers to store the full pattern
314  const static unsigned short PatternSize = 25;
315 
316  // number of bits used for each hit
317  const static unsigned short HitSize = 11;
318 
319  // 1 bit to distinguish tracker and muon subsystems
320  const static unsigned short SubDetectorOffset = 10;
321  const static unsigned short SubDetectorMask = 0x1;
322 
323  // 3 bits to identify the tracker/muon detector substructure
324  const static unsigned short SubstrOffset = 7;
325  const static unsigned short SubstrMask = 0x7;
326 
327  // 4 bits to identify the layer/disk/wheel within the substructure
328  const static unsigned short LayerOffset = 3;
329  const static unsigned short LayerMask = 0xF;
330 
331  // 1 bit to identify the side in double-sided detectors
332  const static unsigned short SideOffset = 2;
333  const static unsigned short SideMask = 0x1;
334 
335  // 2 bits for hit type
336  const static unsigned short HitTypeOffset = 0;
337  const static unsigned short HitTypeMask = 0x3;
338 
339  // full hit pattern information is packed in PatternSize 32 bit words
340  uint32_t hitPattern_[ PatternSize ];
341 
342  // set pattern for position-th hit
343  void setHitPattern(int position, uint32_t pattern);
344 
345  // set pattern for i-th hit passing a reference
346  void set(const TrackingRecHitRef & ref, unsigned int i) { set(* ref, i); }
347 
348  // detector side for tracker modules (mono/stereo)
349  static uint32_t isStereo (DetId);
350  };
351 }
352 
353 #endif
int stripTOBLayersWithMeasurement() const
Definition: HitPattern.cc:936
int cscStationsWithAnyHits() const
Definition: HitPattern.cc:1268
int dtStationsWithAnyHits() const
Definition: HitPattern.cc:1265
int i
Definition: DBlmapReader.cc:9
int numberOfBadMuonRPCHits() const
Definition: HitPattern.cc:732
int rpcStationsWithValidHits() const
Definition: HitPattern.cc:1269
int outermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
Definition: HitPattern.cc:1287
int numberOfLostPixelEndcapHits() const
Definition: HitPattern.cc:565
int numberOfValidHits() const
Definition: HitPattern.cc:321
int pixelBarrelLayersNull() const
Definition: HitPattern.cc:1113
int stripTIBLayersNull() const
Definition: HitPattern.cc:1131
uint32_t getSubStructure(uint32_t pattern) const
Definition: HitPattern.cc:133
bool muonDTHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:198
static uint32_t isStereo(DetId)
Definition: HitPattern.cc:1209
uint32_t hitPattern_[PatternSize]
Definition: HitPattern.h:340
int dtStationsWithValidHits() const
Definition: HitPattern.cc:1263
int stripLayersNull() const
Definition: HitPattern.cc:1106
int stripTIBLayersWithMeasurement() const
Definition: HitPattern.cc:918
int stripTECLayersNull() const
Definition: HitPattern.cc:1158
int numberOfValidMuonHits() const
Definition: HitPattern.cc:346
static const unsigned short SideOffset
Definition: HitPattern.h:332
int muonStations(int subdet, int hitType) const
subdet = 0(all), 1(DT), 2(CSC), 3(RPC); hitType=-1(all), 0=valid, 3=bad
Definition: HitPattern.cc:1246
int numberOfLostMuonHits() const
Definition: HitPattern.cc:526
bool trackerHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:121
static const unsigned short SubstrOffset
Definition: HitPattern.h:324
int muonStationsWithBadHits() const
Definition: HitPattern.cc:1261
int innermostMuonStationWithBadHits() const
Definition: HitPattern.cc:1302
uint32_t getTrackerMonoStereo(uint32_t substr, uint32_t layer) const
Definition: HitPattern.cc:842
uint32_t getCSCRing(uint32_t pattern) const
CSC ring (1-4). Only valid for muon CSC patterns, of course.
Definition: HitPattern.cc:249
int numberOfDTStationsWithRPhiView() const
Definition: HitPattern.cc:1308
int stripLayersWithoutMeasurement() const
Definition: HitPattern.cc:964
int stripTIDLayersWithoutMeasurement() const
Definition: HitPattern.cc:998
bool stripTIBHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:170
HitPattern(const C &c)
Definition: HitPattern.h:132
int numberOfLostTrackerHits() const
Definition: HitPattern.cc:513
void set(const I &begin, const I &end)
Definition: HitPattern.h:138
uint32_t getLayer(uint32_t pattern) const
Definition: HitPattern.cc:219
void print(std::ostream &stream=std::cout) const
Definition: HitPattern.cc:1194
int rpcStationsWithAnyHits() const
Definition: HitPattern.cc:1271
int outermostMuonStationWithAnyHits() const
Definition: HitPattern.cc:1306
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:888
static const unsigned short PatternSize
Definition: HitPattern.h:314
int trackerLayersWithoutMeasurement() const
Definition: HitPattern.cc:954
int numberOfValidStripLayersWithMonoAndStereo() const
Definition: HitPattern.cc:768
int pixelBarrelLayersWithoutMeasurement() const
Definition: HitPattern.cc:971
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:883
static const unsigned short HitTypeMask
Definition: HitPattern.h:337
int pixelEndcapLayersWithMeasurement() const
Definition: HitPattern.cc:909
int numberOfValidStripTIDHits() const
Definition: HitPattern.cc:424
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
int stripLayersTotallyOffOrBad() const
Definition: HitPattern.cc:1035
int numberOfValidTrackerHits() const
Definition: HitPattern.cc:333
int numberOfLostStripTIDHits() const
Definition: HitPattern.cc:604
int numberOfLostPixelHits() const
Definition: HitPattern.cc:539
bool stripTOBHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:184
bool hasValidHitInFirstPixelEndcap() const
Definition: HitPattern.cc:298
int numberOfInactiveTrackerHits() const
Definition: HitPattern.cc:756
bool type_3_HitFilter(uint32_t pattern) const
Definition: HitPattern.cc:279
int outermostMuonStationWithBadHits() const
Definition: HitPattern.cc:1305
int muonStationsWithAnyHits() const
Definition: HitPattern.cc:1262
int outermostMuonStationWithValidHits() const
Definition: HitPattern.cc:1304
int numberOfLostStripHits() const
Definition: HitPattern.cc:578
int stripTOBLayersTotallyOffOrBad() const
Definition: HitPattern.cc:1078
bool muonRPCHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:212
int numberOfValidPixelEndcapHits() const
Definition: HitPattern.cc:385
int numberOfBadMuonDTHits() const
Definition: HitPattern.cc:706
int rpcStationsWithBadHits() const
Definition: HitPattern.cc:1270
int stripTIDLayersTotallyOffOrBad() const
Definition: HitPattern.cc:1069
int innermostMuonStationWithAnyHits() const
Definition: HitPattern.cc:1303
int numberOfValidStripHits() const
Definition: HitPattern.cc:398
int stripTIDLayersWithMeasurement() const
Definition: HitPattern.cc:927
bool pixelEndcapHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:153
bool muonCSCHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:205
static const unsigned short SubDetectorMask
Definition: HitPattern.h:321
int numberOfLostHits() const
Definition: HitPattern.cc:502
int numberOfValidPixelHits() const
Definition: HitPattern.cc:359
int stripTECLayersTotallyOffOrBad() const
Definition: HitPattern.cc:1087
bool stripHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:160
int numberOfHits() const
Definition: HitPattern.cc:312
int numberOfLostMuonCSCHits() const
Definition: HitPattern.cc:656
int stripTIBLayersWithoutMeasurement() const
Definition: HitPattern.cc:989
int dtStationsWithBadHits() const
Definition: HitPattern.cc:1264
const std::complex< double > I
Definition: I.h:8
int numberOfDTStationsWithRZView() const
Definition: HitPattern.cc:1320
bool pixelBarrelHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:146
int numberOfValidStripTECHits() const
Definition: HitPattern.cc:450
int numberOfValidMuonRPCHits() const
Definition: HitPattern.cc:489
bool type_1_HitFilter(uint32_t pattern) const
Definition: HitPattern.cc:269
#define end
Definition: vmac.h:38
int stripTIDLayersNull() const
Definition: HitPattern.cc:1140
int numberOfLostPixelBarrelHits() const
Definition: HitPattern.cc:552
static const unsigned short HitTypeOffset
Definition: HitPattern.h:336
bool validHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:264
bool pixelHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:138
int numberOfLostStripTOBHits() const
Definition: HitPattern.cc:617
int numberOfDTStationsWithBothViews() const
Definition: HitPattern.cc:1332
static const unsigned short HitSize
Definition: HitPattern.h:317
int numberOfValidStripTIBHits() const
Definition: HitPattern.cc:411
static uint32_t getSide(uint32_t pattern)
Definition: HitPattern.cc:230
int cscStationsWithBadHits() const
Definition: HitPattern.cc:1267
uint32_t getRPCLayer(uint32_t pattern) const
RPC layer: for station 1 and 2, layer = 1(inner) or 2(outer); for station 3, 4 layer is always 0...
Definition: HitPattern.cc:253
int numberOfValidMuonDTHits() const
Definition: HitPattern.cc:463
bool type_2_HitFilter(uint32_t pattern) const
Definition: HitPattern.cc:274
uint32_t getDTSuperLayer(uint32_t pattern) const
DT superlayer (1-3). Only valid for muon DT patterns, of course.
Definition: HitPattern.cc:245
Definition: DetId.h:20
int innermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
Definition: HitPattern.cc:1273
uint32_t getSubSubStructure(uint32_t pattern) const
Definition: HitPattern.cc:224
static const unsigned short SideMask
Definition: HitPattern.h:333
int trackerLayersNull() const
Definition: HitPattern.cc:1096
int pixelEndcapLayersWithoutMeasurement() const
Definition: HitPattern.cc:980
int cscStationsWithValidHits() const
Definition: HitPattern.cc:1266
int numberOfBadHits() const
Definition: HitPattern.cc:682
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:320
int muonStationsWithValidHits() const
Definition: HitPattern.cc:1260
int pixelBarrelLayersWithMeasurement() const
Definition: HitPattern.cc:900
int numberOfLostStripTIBHits() const
Definition: HitPattern.cc:591
int pixelLayersWithoutMeasurement() const
Definition: HitPattern.cc:959
int stripLayersWithMeasurement() const
Definition: HitPattern.cc:893
int numberOfLostMuonDTHits() const
Definition: HitPattern.cc:643
int numberOfValidStripTOBHits() const
Definition: HitPattern.cc:437
int stripTOBLayersNull() const
Definition: HitPattern.cc:1149
uint32_t getTrackerLayerCase(uint32_t substr, uint32_t layer) const
Definition: HitPattern.cc:805
int pixelBarrelLayersTotallyOffOrBad() const
Definition: HitPattern.cc:1042
uint32_t getHitType(uint32_t pattern) const
Definition: HitPattern.cc:236
#define begin
Definition: vmac.h:31
int numberOfLostMuonRPCHits() const
Definition: HitPattern.cc:669
static const unsigned short SubstrMask
Definition: HitPattern.h:325
static const unsigned short LayerOffset
Definition: HitPattern.h:328
int stripTECLayersWithoutMeasurement() const
Definition: HitPattern.cc:1016
int numberOfValidMuonCSCHits() const
Definition: HitPattern.cc:476
int trackerLayersTotallyOffOrBad() const
Definition: HitPattern.cc:1025
int stripTECLayersWithMeasurement() const
Definition: HitPattern.cc:945
int stripTOBLayersWithoutMeasurement() const
Definition: HitPattern.cc:1007
int pixelEndcapLayersTotallyOffOrBad() const
Definition: HitPattern.cc:1051
uint32_t getRPCregion(uint32_t pattern) const
RPC region: 0 = barrel, 1 = endcap. Only valid for muon RPC patterns, of course.
Definition: HitPattern.cc:259
tuple cout
Definition: gather_cfg.py:41
int numberOfBadMuonHits() const
Definition: HitPattern.cc:693
int numberOfValidPixelBarrelHits() const
Definition: HitPattern.cc:372
void printHitPattern(int position, std::ostream &stream) const
Definition: HitPattern.cc:1167
bool hasValidHitInFirstPixelBarrel() const
Definition: HitPattern.cc:284
int numberOfLostStripTECHits() const
Definition: HitPattern.cc:630
int stripTIBLayersTotallyOffOrBad() const
Definition: HitPattern.cc:1060
static const unsigned short LayerMask
Definition: HitPattern.h:329
uint32_t getHitPattern(int position) const
Definition: HitPattern.cc:86
int pixelLayersTotallyOffOrBad() const
Definition: HitPattern.cc:1030
void set(const TrackingRecHitRef &ref, unsigned int i)
Definition: HitPattern.h:346
int pixelLayersNull() const
Definition: HitPattern.cc:1101
uint32_t getMuonStation(uint32_t pattern) const
Muon station (1-4). Only valid for muon patterns, of course.
Definition: HitPattern.cc:241
int numberOfInactiveHits() const
Definition: HitPattern.cc:745
bool stripTIDHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:177
bool muonHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:127
bool stripTECHitFilter(uint32_t pattern) const
Definition: HitPattern.cc:191
int numberOfBadMuonCSCHits() const
Definition: HitPattern.cc:719
int pixelEndcapLayersNull() const
Definition: HitPattern.cc:1122
int innermostMuonStationWithValidHits() const
Definition: HitPattern.cc:1301
void setHitPattern(int position, uint32_t pattern)
Definition: HitPattern.cc:77
HitPattern(const I &begin, const I &end)
Definition: HitPattern.h:128