3 #ifndef TrackReco_HitPattern_h 4 #define TrackReco_HitPattern_h 137 namespace TestHitPattern {
163 MISSING_INNER_HITS = 1,
164 MISSING_OUTER_HITS = 2
166 const static unsigned short ARRAY_LENGTH = 50;
167 const static unsigned short HIT_LENGTH = 11;
168 const static unsigned short MaxHits = (8 *
sizeof(uint16_t) * ARRAY_LENGTH) / HIT_LENGTH;
170 static const uint32_t NULL_RETURN = 999999;
171 static const uint16_t EMPTY_PATTERN = 0x0;
173 static bool trackerHitFilter(uint16_t
pattern);
174 static bool muonHitFilter(uint16_t
pattern);
176 static bool validHitFilter(uint16_t
pattern);
177 static bool missingHitFilter(uint16_t
pattern);
178 static bool inactiveHitFilter(uint16_t
pattern);
179 static bool badHitFilter(uint16_t
pattern);
181 static bool pixelHitFilter(uint16_t
pattern);
182 static bool pixelBarrelHitFilter(uint16_t
pattern);
183 static bool pixelEndcapHitFilter(uint16_t
pattern);
184 static bool stripHitFilter(uint16_t
pattern);
185 static bool stripTIBHitFilter(uint16_t
pattern);
186 static bool stripTIDHitFilter(uint16_t
pattern);
187 static bool stripTOBHitFilter(uint16_t
pattern);
188 static bool stripTECHitFilter(uint16_t
pattern);
190 static bool muonDTHitFilter(uint16_t
pattern);
191 static bool muonCSCHitFilter(uint16_t
pattern);
192 static bool muonRPCHitFilter(uint16_t
pattern);
193 static bool muonGEMHitFilter(uint16_t
pattern);
194 static bool muonME0HitFilter(uint16_t
pattern);
196 static uint32_t getHitType(uint16_t
pattern);
199 static uint32_t getSide(uint16_t
pattern);
200 static uint32_t getLayer(uint16_t
pattern);
201 static uint32_t getSubSubStructure(uint16_t
pattern);
202 static uint32_t getSubStructure(uint16_t
pattern);
203 static uint32_t getSubDetector(uint16_t
pattern);
206 static uint16_t getMuonStation(uint16_t
pattern);
209 static uint16_t getDTSuperLayer(uint16_t
pattern);
212 static uint16_t getCSCRing(uint16_t
pattern) ;
215 static uint16_t getRPCLayer(uint16_t
pattern) ;
218 static uint16_t getRPCregion(uint16_t
pattern);
221 static uint16_t getGEMStation(uint16_t
pattern);
224 static uint16_t getGEMLayer(uint16_t
pattern);
246 bool appendTrackerHit(uint16_t subdet, uint16_t layer, uint16_t stereo,
TrackingRecHit::Type hitType);
269 int numberOfValidHits()
const;
272 int numberOfValidTrackerHits()
const;
273 int numberOfValidPixelHits()
const;
274 int numberOfValidPixelBarrelHits()
const;
275 int numberOfValidPixelEndcapHits()
const;
276 int numberOfValidStripHits()
const;
277 int numberOfValidStripTIBHits()
const;
278 int numberOfValidStripTIDHits()
const;
279 int numberOfValidStripTOBHits()
const;
280 int numberOfValidStripTECHits()
const;
294 int numberOfMuonHits()
const;
295 int numberOfValidMuonHits()
const;
296 int numberOfValidMuonDTHits()
const;
297 int numberOfValidMuonCSCHits()
const;
298 int numberOfValidMuonRPCHits()
const;
299 int numberOfValidMuonGEMHits()
const;
300 int numberOfValidMuonME0Hits()
const;
302 int numberOfLostMuonHits()
const;
303 int numberOfLostMuonDTHits()
const;
304 int numberOfLostMuonCSCHits()
const;
305 int numberOfLostMuonRPCHits()
const;
306 int numberOfLostMuonGEMHits()
const;
307 int numberOfLostMuonME0Hits()
const;
309 int numberOfBadHits()
const;
310 int numberOfBadMuonHits()
const;
311 int numberOfBadMuonDTHits()
const;
312 int numberOfBadMuonCSCHits()
const;
313 int numberOfBadMuonRPCHits()
const;
314 int numberOfBadMuonGEMHits()
const;
315 int numberOfBadMuonME0Hits()
const;
317 int numberOfInactiveHits()
const;
318 int numberOfInactiveTrackerHits()
const;
321 int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer)
const;
322 int numberOfValidStripLayersWithMonoAndStereo()
const;
323 int numberOfValidTOBLayersWithMonoAndStereo(uint32_t layer = 0)
const;
324 int numberOfValidTIBLayersWithMonoAndStereo(uint32_t layer = 0)
const;
325 int numberOfValidTIDLayersWithMonoAndStereo(uint32_t layer = 0)
const;
326 int numberOfValidTECLayersWithMonoAndStereo(uint32_t layer = 0)
const;
329 uint16_t getTrackerMonoStereo(
HitCategory category, uint16_t substr, uint16_t layer)
const;
331 int trackerLayersWithMeasurementOld()
const;
332 int trackerLayersWithMeasurement()
const;
333 int pixelLayersWithMeasurementOld()
const;
334 int pixelLayersWithMeasurement()
const;
335 int stripLayersWithMeasurement()
const;
336 int pixelBarrelLayersWithMeasurement()
const;
337 int pixelEndcapLayersWithMeasurement()
const;
338 int stripTIBLayersWithMeasurement()
const;
339 int stripTIDLayersWithMeasurement()
const;
340 int stripTOBLayersWithMeasurement()
const;
341 int stripTECLayersWithMeasurement()
const;
354 int trackerLayersTotallyOffOrBad()
const;
355 int pixelLayersTotallyOffOrBad()
const;
356 int stripLayersTotallyOffOrBad()
const;
357 int pixelBarrelLayersTotallyOffOrBad()
const;
358 int pixelEndcapLayersTotallyOffOrBad()
const;
359 int stripTIBLayersTotallyOffOrBad()
const;
360 int stripTIDLayersTotallyOffOrBad()
const;
361 int stripTOBLayersTotallyOffOrBad()
const;
362 int stripTECLayersTotallyOffOrBad()
const;
364 int trackerLayersNull()
const;
365 int pixelLayersNull()
const;
366 int stripLayersNull()
const;
367 int pixelBarrelLayersNull()
const;
368 int pixelEndcapLayersNull()
const;
369 int stripTIBLayersNull()
const;
370 int stripTIDLayersNull()
const;
371 int stripTOBLayersNull()
const;
372 int stripTECLayersNull()
const;
375 int muonStations(
int subdet,
int hitType)
const ;
377 int muonStationsWithValidHits()
const;
378 int muonStationsWithBadHits()
const;
379 int muonStationsWithAnyHits()
const;
381 int dtStationsWithValidHits()
const;
382 int dtStationsWithBadHits()
const;
383 int dtStationsWithAnyHits()
const;
385 int cscStationsWithValidHits()
const;
386 int cscStationsWithBadHits()
const;
387 int cscStationsWithAnyHits()
const;
389 int rpcStationsWithValidHits()
const;
390 int rpcStationsWithBadHits()
const;
391 int rpcStationsWithAnyHits()
const;
393 int gemStationsWithValidHits()
const ;
394 int gemStationsWithBadHits()
const ;
395 int gemStationsWithAnyHits()
const ;
397 int me0StationsWithValidHits()
const ;
398 int me0StationsWithBadHits()
const ;
399 int me0StationsWithAnyHits()
const ;
403 int innermostMuonStationWithHits(
int hitType)
const;
404 int innermostMuonStationWithValidHits()
const;
405 int innermostMuonStationWithBadHits()
const;
406 int innermostMuonStationWithAnyHits()
const;
409 int outermostMuonStationWithHits(
int hitType)
const;
410 int outermostMuonStationWithValidHits()
const;
411 int outermostMuonStationWithBadHits()
const;
412 int outermostMuonStationWithAnyHits()
const;
414 int numberOfDTStationsWithRPhiView()
const;
415 int numberOfDTStationsWithRZView()
const;
416 int numberOfDTStationsWithBothViews()
const;
421 const static unsigned short HitTypeOffset = 0;
422 const static unsigned short HitTypeMask = 0x3;
425 const static unsigned short SideOffset = 2;
426 const static unsigned short SideMask = 0x1;
429 const static unsigned short LayerOffset = 3;
430 const static unsigned short LayerMask = 0xF;
433 const static unsigned short SubstrOffset = 7;
434 const static unsigned short SubstrMask = 0x7;
437 const static unsigned short SubDetectorOffset = 10;
438 const static unsigned short SubDetectorMask = 0x1;
440 const static unsigned short minTrackerWord = 1<< SubDetectorOffset;
441 const static unsigned short minPixelWord = minTrackerWord | (1<<SubstrOffset);
442 const static unsigned short minStripWord = minTrackerWord | (3<<SubstrOffset);
462 bool insertTrackHit(
const uint16_t
pattern);
463 bool insertExpectedInnerHit(
const uint16_t
pattern);
464 bool insertExpectedOuterHit(
const uint16_t
pattern);
465 void insertHit(
const uint16_t
pattern);
468 uint16_t getHitPatternByAbsoluteIndex(
int position)
const;
472 uint16_t hitPattern[ARRAY_LENGTH];
492 return std::pair<uint8_t, uint8_t>(beginTrackHits, endTrackHits);
494 case MISSING_INNER_HITS:
495 return std::pair<uint8_t, uint8_t>(beginInner, endInner);
497 case MISSING_OUTER_HITS:
498 return std::pair<uint8_t, uint8_t>(beginOuter, endOuter);
501 return std::pair<uint8_t, uint8_t>(-1, -1);
517 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
518 if unlikely((position < 0 || (position + range.first) >= range.second)) {
519 return HitPattern::EMPTY_PATTERN;
522 return getHitPatternByAbsoluteIndex(range.first + position);
528 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
529 for (
int i = range.first;
i < range.second; ++
i) {
530 if (
filter(getHitPatternByAbsoluteIndex(
i))) {
541 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
542 for (
int i = range.first;
i < range.second;
i++) {
543 uint16_t
pattern = getHitPatternByAbsoluteIndex(
i);
545 if (typeFilter(pattern) && !
f(pattern)) {
554 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
555 for (
int i = range.first;
i < range.second; ++
i) {
556 uint16_t
pattern = getHitPatternByAbsoluteIndex(
i);
557 if (typeFilter(pattern) &&
filter(pattern)) {
564 inline bool HitPattern::pixelHitFilter(uint16_t
pattern)
566 if unlikely(!trackerHitFilter(pattern)) {
570 uint32_t substructure = getSubStructure(pattern);
575 inline bool HitPattern::pixelBarrelHitFilter(uint16_t
pattern)
577 if unlikely(!trackerHitFilter(pattern)) {
581 uint32_t substructure = getSubStructure(pattern);
585 inline bool HitPattern::pixelEndcapHitFilter(uint16_t
pattern)
587 if unlikely(!trackerHitFilter(pattern)) {
591 uint32_t substructure = getSubStructure(pattern);
595 inline bool HitPattern::stripHitFilter(uint16_t
pattern)
597 return pattern > minStripWord;
603 if unlikely(!trackerHitFilter(pattern)) {
607 return substructure == getSubStructure(pattern);
610 inline bool HitPattern::stripTIBHitFilter(uint16_t
pattern)
615 inline bool HitPattern::stripTIDHitFilter(uint16_t
pattern)
620 inline bool HitPattern::stripTOBHitFilter(uint16_t
pattern)
625 inline bool HitPattern::stripTECHitFilter(uint16_t
pattern)
630 inline bool HitPattern::muonDTHitFilter(uint16_t
pattern)
632 if unlikely(!muonHitFilter(pattern)) {
636 uint32_t substructure = getSubStructure(pattern);
640 inline bool HitPattern::muonCSCHitFilter(uint16_t
pattern)
642 if unlikely(!muonHitFilter(pattern)) {
646 uint32_t substructure = getSubStructure(pattern);
650 inline bool HitPattern::muonRPCHitFilter(uint16_t
pattern)
652 if unlikely(!muonHitFilter(pattern)) {
656 uint32_t substructure = getSubStructure(pattern);
660 inline bool HitPattern::muonGEMHitFilter(uint16_t
pattern)
662 if unlikely(!muonHitFilter(pattern)) {
666 uint32_t substructure = getSubStructure(pattern);
670 inline bool HitPattern::muonME0HitFilter(uint16_t
pattern) {
671 if unlikely(!muonHitFilter(pattern))
return false;
672 uint16_t substructure = getSubStructure(pattern);
677 inline bool HitPattern::trackerHitFilter(uint16_t
pattern)
679 return pattern > minTrackerWord;
682 inline bool HitPattern::muonHitFilter(uint16_t
pattern)
684 if unlikely(pattern == HitPattern::EMPTY_PATTERN) {
688 return (((pattern >> SubDetectorOffset) & SubDetectorMask) == 0);
691 inline uint32_t HitPattern::getSubStructure(uint16_t
pattern)
693 if unlikely(pattern == HitPattern::EMPTY_PATTERN) {
697 return ((pattern >> SubstrOffset) & SubstrMask);
700 inline uint32_t HitPattern::getLayer(uint16_t
pattern)
702 return HitPattern::getSubSubStructure(pattern);
705 inline uint32_t HitPattern::getSubSubStructure(uint16_t
pattern)
707 if unlikely(pattern == HitPattern::EMPTY_PATTERN) {
711 return ((pattern >> LayerOffset) & LayerMask);
714 inline uint32_t HitPattern::getSubDetector(uint16_t
pattern)
716 if unlikely(pattern == HitPattern::EMPTY_PATTERN) {
720 return ((pattern >> SubDetectorOffset) & SubDetectorMask);
724 inline uint32_t HitPattern::getSide(uint16_t
pattern)
726 if unlikely(pattern == HitPattern::EMPTY_PATTERN) {
730 return (pattern >> SideOffset) & SideMask;
733 inline uint32_t HitPattern::getHitType(uint16_t
pattern)
735 if unlikely(pattern == HitPattern::EMPTY_PATTERN) {
739 return ((pattern >> HitTypeOffset) & HitTypeMask);
742 inline uint16_t HitPattern::getMuonStation(uint16_t
pattern)
744 return (getSubSubStructure(pattern) >> 2) + 1;
747 inline uint16_t HitPattern::getDTSuperLayer(uint16_t
pattern)
749 return (getSubSubStructure(pattern) & 3);
752 inline uint16_t HitPattern::getCSCRing(uint16_t
pattern)
754 return (getSubSubStructure(pattern) & 3) + 1;
757 inline uint16_t HitPattern::getRPCLayer(uint16_t
pattern)
759 uint16_t subSubStructure = getSubSubStructure(pattern);
760 uint16_t
stat = subSubStructure >> 2;
763 return ((subSubStructure >> 1) & 1) + 1;
769 inline uint16_t HitPattern::getRPCregion(uint16_t
pattern)
771 return getSubSubStructure(pattern) & 1;
775 inline uint16_t HitPattern::getGEMStation(uint16_t
pattern)
778 uint16_t sss = getSubSubStructure(pattern),
stat = sss >> 1;
782 inline uint16_t HitPattern::getGEMLayer(uint16_t
pattern)
784 return (getSubSubStructure(pattern) & 1) + 1;
787 inline bool HitPattern::validHitFilter(uint16_t
pattern)
789 return getHitType(pattern) == HitPattern::VALID;
792 inline bool HitPattern::missingHitFilter(uint16_t
pattern)
794 return getHitType(pattern) == HitPattern::MISSING;
797 inline bool HitPattern::inactiveHitFilter(uint16_t
pattern)
799 return getHitType(pattern) == HitPattern::INACTIVE;
802 inline bool HitPattern::badHitFilter(uint16_t
pattern)
809 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
810 return range.second - range.first;
815 return countHits(category, trackerHitFilter);
818 inline int HitPattern::numberOfMuonHits()
const 820 return countHits(TRACK_HITS, muonHitFilter);
823 inline int HitPattern::numberOfValidHits()
const 825 return countHits(TRACK_HITS, validHitFilter);
828 inline int HitPattern::numberOfValidTrackerHits()
const 830 return countTypedHits(TRACK_HITS, validHitFilter, trackerHitFilter);
833 inline int HitPattern::numberOfValidMuonHits()
const 835 return countTypedHits(TRACK_HITS, validHitFilter, muonHitFilter);
838 inline int HitPattern::numberOfValidPixelHits()
const 840 return countTypedHits(TRACK_HITS, validHitFilter, pixelHitFilter);
843 inline int HitPattern::numberOfValidPixelBarrelHits()
const 845 return countTypedHits(TRACK_HITS, validHitFilter, pixelBarrelHitFilter);
848 inline int HitPattern::numberOfValidPixelEndcapHits()
const 850 return countTypedHits(TRACK_HITS, validHitFilter, pixelEndcapHitFilter);
853 inline int HitPattern::numberOfValidStripHits()
const 855 return countTypedHits(TRACK_HITS, validHitFilter, stripHitFilter);
858 inline int HitPattern::numberOfValidStripTIBHits()
const 860 return countTypedHits(TRACK_HITS, validHitFilter, stripTIBHitFilter);
863 inline int HitPattern::numberOfValidStripTIDHits()
const 865 return countTypedHits(TRACK_HITS, validHitFilter, stripTIDHitFilter);
868 inline int HitPattern::numberOfValidStripTOBHits()
const 870 return countTypedHits(TRACK_HITS, validHitFilter, stripTOBHitFilter);
873 inline int HitPattern::numberOfValidStripTECHits()
const 875 return countTypedHits(TRACK_HITS, validHitFilter, stripTECHitFilter);
878 inline int HitPattern::numberOfValidMuonDTHits()
const 880 return countTypedHits(TRACK_HITS, validHitFilter, muonDTHitFilter);
883 inline int HitPattern::numberOfValidMuonCSCHits()
const 885 return countTypedHits(TRACK_HITS, validHitFilter, muonCSCHitFilter);
888 inline int HitPattern::numberOfValidMuonRPCHits()
const 890 return countTypedHits(TRACK_HITS, validHitFilter, muonRPCHitFilter);
893 inline int HitPattern::numberOfValidMuonGEMHits()
const 895 return countTypedHits(TRACK_HITS, validHitFilter, muonGEMHitFilter);
898 inline int HitPattern::numberOfValidMuonME0Hits()
const {
899 return countTypedHits(TRACK_HITS, validHitFilter, muonME0HitFilter);
904 return countHits(category, missingHitFilter);
909 return countTypedHits(category, missingHitFilter, trackerHitFilter);
912 inline int HitPattern::numberOfLostMuonHits()
const 914 return countTypedHits(TRACK_HITS, missingHitFilter, muonHitFilter);
919 return countTypedHits(category, missingHitFilter, pixelHitFilter);
924 return countTypedHits(category, missingHitFilter, pixelBarrelHitFilter);
929 return countTypedHits(category, missingHitFilter, pixelEndcapHitFilter);
934 return countTypedHits(category, missingHitFilter, stripHitFilter);
939 return countTypedHits(category, missingHitFilter, stripTIBHitFilter);
944 return countTypedHits(category, missingHitFilter, stripTIDHitFilter);
949 return countTypedHits(category, missingHitFilter, stripTOBHitFilter);
954 return countTypedHits(category, missingHitFilter, stripTECHitFilter);
957 inline int HitPattern::numberOfLostMuonDTHits()
const 959 return countTypedHits(TRACK_HITS, missingHitFilter, muonDTHitFilter);
962 inline int HitPattern::numberOfLostMuonCSCHits()
const 964 return countTypedHits(TRACK_HITS, missingHitFilter, muonCSCHitFilter);
967 inline int HitPattern::numberOfLostMuonRPCHits()
const 969 return countTypedHits(TRACK_HITS, missingHitFilter, muonRPCHitFilter);
972 inline int HitPattern::numberOfLostMuonGEMHits()
const 974 return countTypedHits(TRACK_HITS, missingHitFilter, muonGEMHitFilter);
977 inline int HitPattern::numberOfLostMuonME0Hits()
const {
978 return countTypedHits(TRACK_HITS, missingHitFilter, muonME0HitFilter);
981 inline int HitPattern::numberOfBadHits()
const 983 return countHits(TRACK_HITS, badHitFilter);
986 inline int HitPattern::numberOfBadMuonHits()
const 988 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonHitFilter);
991 inline int HitPattern::numberOfBadMuonDTHits()
const 993 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonDTHitFilter);
996 inline int HitPattern::numberOfBadMuonCSCHits()
const 998 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonCSCHitFilter);
1001 inline int HitPattern::numberOfBadMuonRPCHits()
const 1003 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonRPCHitFilter);
1006 inline int HitPattern::numberOfBadMuonGEMHits()
const 1008 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonGEMHitFilter);
1011 inline int HitPattern::numberOfBadMuonME0Hits()
const {
1012 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonME0HitFilter);
1015 inline int HitPattern::numberOfInactiveHits()
const 1017 return countHits(TRACK_HITS, inactiveHitFilter);
1020 inline int HitPattern::numberOfInactiveTrackerHits()
const 1022 return countTypedHits(TRACK_HITS, inactiveHitFilter, trackerHitFilter);
1025 inline int HitPattern::trackerLayersWithMeasurementOld()
const 1027 return pixelLayersWithMeasurement() + stripLayersWithMeasurement();
1030 inline int HitPattern::pixelLayersWithMeasurementOld()
const 1032 return pixelBarrelLayersWithMeasurement() + pixelEndcapLayersWithMeasurement();
1035 inline int HitPattern::stripLayersWithMeasurement()
const 1037 return stripTIBLayersWithMeasurement() + stripTIDLayersWithMeasurement() +
1038 stripTOBLayersWithMeasurement() + stripTECLayersWithMeasurement();
1043 return pixelLayersWithoutMeasurement(category) +
1044 stripLayersWithoutMeasurement(category);
1049 return pixelBarrelLayersWithoutMeasurement(category) +
1050 pixelEndcapLayersWithoutMeasurement(category);
1055 return stripTIBLayersWithoutMeasurement(category) +
1056 stripTIDLayersWithoutMeasurement(category) +
1057 stripTOBLayersWithoutMeasurement(category) +
1058 stripTECLayersWithoutMeasurement(category);
1061 inline int HitPattern::trackerLayersTotallyOffOrBad()
const 1063 return pixelLayersTotallyOffOrBad() +
1064 stripLayersTotallyOffOrBad();
1067 inline int HitPattern::pixelLayersTotallyOffOrBad()
const 1069 return pixelBarrelLayersTotallyOffOrBad() +
1070 pixelEndcapLayersTotallyOffOrBad();
1073 inline int HitPattern::stripLayersTotallyOffOrBad()
const 1075 return stripTIBLayersTotallyOffOrBad() +
1076 stripTIDLayersTotallyOffOrBad() +
1077 stripTOBLayersTotallyOffOrBad() +
1078 stripTECLayersTotallyOffOrBad();
1081 inline int HitPattern::trackerLayersNull()
const 1083 return pixelLayersNull() +
1087 inline int HitPattern::pixelLayersNull()
const 1089 return pixelBarrelLayersNull() +
1090 pixelEndcapLayersNull();
1093 inline int HitPattern::stripLayersNull()
const 1095 return stripTIBLayersNull() +
1096 stripTIDLayersNull() +
1097 stripTOBLayersNull() +
1098 stripTECLayersNull();
1101 inline int HitPattern::muonStationsWithValidHits()
const 1103 return muonStations(0, 0);
1106 inline int HitPattern::muonStationsWithBadHits()
const 1108 return muonStations(0, 3);
1111 inline int HitPattern::muonStationsWithAnyHits()
const 1113 return muonStations(0, -1);
1116 inline int HitPattern::dtStationsWithValidHits()
const 1118 return muonStations(1, 0);
1121 inline int HitPattern::dtStationsWithBadHits()
const 1123 return muonStations(1, 3);
1126 inline int HitPattern::dtStationsWithAnyHits()
const 1128 return muonStations(1, -1);
1131 inline int HitPattern::cscStationsWithValidHits()
const 1133 return muonStations(2, 0);
1136 inline int HitPattern::cscStationsWithBadHits()
const 1138 return muonStations(2, 3);
1141 inline int HitPattern::cscStationsWithAnyHits()
const 1143 return muonStations(2, -1);
1146 inline int HitPattern::rpcStationsWithValidHits()
const 1148 return muonStations(3, 0);
1151 inline int HitPattern::rpcStationsWithBadHits()
const 1153 return muonStations(3, 3);
1156 inline int HitPattern::rpcStationsWithAnyHits()
const 1158 return muonStations(3, -1);
1161 inline int HitPattern::gemStationsWithValidHits()
const 1163 return muonStations(4, 0);
1166 inline int HitPattern::gemStationsWithBadHits()
const 1168 return muonStations(4, 3);
1171 inline int HitPattern::gemStationsWithAnyHits()
const 1173 return muonStations(4,-1);
1176 inline int HitPattern::me0StationsWithValidHits()
const 1178 return muonStations(5, 0);
1181 inline int HitPattern::me0StationsWithBadHits()
const 1183 return muonStations(5, 3);
1186 inline int HitPattern::me0StationsWithAnyHits()
const 1188 return muonStations(5,-1);
1191 inline int HitPattern::innermostMuonStationWithValidHits()
const 1193 return innermostMuonStationWithHits(0);
1196 inline int HitPattern::innermostMuonStationWithBadHits()
const 1198 return innermostMuonStationWithHits(3);
1201 inline int HitPattern::innermostMuonStationWithAnyHits()
const 1203 return innermostMuonStationWithHits(-1);
1206 inline int HitPattern::outermostMuonStationWithValidHits()
const 1208 return outermostMuonStationWithHits(0);
1211 inline int HitPattern::outermostMuonStationWithBadHits()
const 1213 return outermostMuonStationWithHits(3);
1216 inline int HitPattern::outermostMuonStationWithAnyHits()
const 1218 return outermostMuonStationWithHits(-1);
1222 template<
int N = HitPattern::MaxHits>
1233 unsigned char const *
end()
const 1269 unsigned char p = 255 & (
pattern >> 3);
1274 for (
auto h = hit + lhit - 1;
h != hit; --
h) {
1275 if ((*(
h - 1)) <= p) {
1282 return lhit < MaxHits;
1285 hp.
call(category, HitPattern::validHitFilter,
unpack);
unsigned char const * begin() const
unsigned char const * end() const
PatternSet< N > commonHits(PatternSet< N > const &p1, PatternSet< N > const &p2)
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::string print(const Track &, edm::Verbosity=edm::Concise)
Track print utility.
void call(HitCategory category, filterType typeFilter, F f) const
bool filterType(uint16_t)
void clear(CLHEP::HepGenMatrix &m)
Helper function: Reset all elements of a matrix to 0.
const std::complex< double > I
void fill(HitPattern::HitCategory category, HitPattern const &hp)
static int position[264][3]
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
PatternSet(HitPattern::HitCategory category, HitPattern const &hp)
unsigned char operator[](int i) const