3 #ifndef TrackReco_HitPattern_h 4 #define TrackReco_HitPattern_h 138 namespace TestHitPattern {
164 MISSING_INNER_HITS = 1,
165 MISSING_OUTER_HITS = 2
167 const static unsigned short ARRAY_LENGTH = 50;
168 const static unsigned short HIT_LENGTH = 11;
169 const static unsigned short MaxHits = (8 *
sizeof(uint16_t) * ARRAY_LENGTH) / HIT_LENGTH;
171 static const uint32_t NULL_RETURN = 999999;
172 static const uint16_t EMPTY_PATTERN = 0x0;
174 static bool trackerHitFilter(uint16_t
pattern);
175 static bool muonHitFilter(uint16_t
pattern);
177 static bool validHitFilter(uint16_t
pattern);
178 static bool missingHitFilter(uint16_t
pattern);
179 static bool inactiveHitFilter(uint16_t
pattern);
180 static bool badHitFilter(uint16_t
pattern);
182 static bool pixelHitFilter(uint16_t
pattern);
183 static bool pixelBarrelHitFilter(uint16_t
pattern);
184 static bool pixelEndcapHitFilter(uint16_t
pattern);
185 static bool stripHitFilter(uint16_t
pattern);
186 static bool stripTIBHitFilter(uint16_t
pattern);
187 static bool stripTIDHitFilter(uint16_t
pattern);
188 static bool stripTOBHitFilter(uint16_t
pattern);
189 static bool stripTECHitFilter(uint16_t
pattern);
191 static bool muonDTHitFilter(uint16_t
pattern);
192 static bool muonCSCHitFilter(uint16_t
pattern);
193 static bool muonRPCHitFilter(uint16_t
pattern);
194 static bool muonGEMHitFilter(uint16_t
pattern);
195 static bool muonME0HitFilter(uint16_t
pattern);
197 static uint32_t getHitType(uint16_t
pattern);
200 static uint32_t getSide(uint16_t
pattern);
201 static uint32_t getLayer(uint16_t
pattern);
202 static uint32_t getSubSubStructure(uint16_t
pattern);
203 static uint32_t getSubStructure(uint16_t
pattern);
204 static uint32_t getSubDetector(uint16_t
pattern);
207 static uint16_t getMuonStation(uint16_t
pattern);
210 static uint16_t getDTSuperLayer(uint16_t
pattern);
213 static uint16_t getCSCRing(uint16_t
pattern) ;
216 static uint16_t getRPCLayer(uint16_t
pattern) ;
219 static uint16_t getRPCregion(uint16_t
pattern);
222 static uint16_t getGEMStation(uint16_t
pattern);
225 static uint16_t getGEMLayer(uint16_t
pattern);
248 bool appendTrackerHit(uint16_t subdet, uint16_t layer, uint16_t stereo,
TrackingRecHit::Type hitType);
271 int numberOfValidHits()
const;
274 int numberOfValidTrackerHits()
const;
275 int numberOfValidPixelHits()
const;
276 int numberOfValidPixelBarrelHits()
const;
277 int numberOfValidPixelEndcapHits()
const;
278 int numberOfValidStripHits()
const;
279 int numberOfValidStripTIBHits()
const;
280 int numberOfValidStripTIDHits()
const;
281 int numberOfValidStripTOBHits()
const;
282 int numberOfValidStripTECHits()
const;
296 int numberOfMuonHits()
const;
297 int numberOfValidMuonHits()
const;
298 int numberOfValidMuonDTHits()
const;
299 int numberOfValidMuonCSCHits()
const;
300 int numberOfValidMuonRPCHits()
const;
301 int numberOfValidMuonGEMHits()
const;
302 int numberOfValidMuonME0Hits()
const;
304 int numberOfLostMuonHits()
const;
305 int numberOfLostMuonDTHits()
const;
306 int numberOfLostMuonCSCHits()
const;
307 int numberOfLostMuonRPCHits()
const;
308 int numberOfLostMuonGEMHits()
const;
309 int numberOfLostMuonME0Hits()
const;
311 int numberOfBadHits()
const;
312 int numberOfBadMuonHits()
const;
313 int numberOfBadMuonDTHits()
const;
314 int numberOfBadMuonCSCHits()
const;
315 int numberOfBadMuonRPCHits()
const;
316 int numberOfBadMuonGEMHits()
const;
317 int numberOfBadMuonME0Hits()
const;
319 int numberOfInactiveHits()
const;
320 int numberOfInactiveTrackerHits()
const;
323 int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer)
const;
324 int numberOfValidStripLayersWithMonoAndStereo()
const;
325 int numberOfValidTOBLayersWithMonoAndStereo(uint32_t layer = 0)
const;
326 int numberOfValidTIBLayersWithMonoAndStereo(uint32_t layer = 0)
const;
327 int numberOfValidTIDLayersWithMonoAndStereo(uint32_t layer = 0)
const;
328 int numberOfValidTECLayersWithMonoAndStereo(uint32_t layer = 0)
const;
331 uint16_t getTrackerMonoStereo(
HitCategory category, uint16_t substr, uint16_t layer)
const;
333 int trackerLayersWithMeasurementOld()
const;
334 int trackerLayersWithMeasurement()
const;
335 int pixelLayersWithMeasurementOld()
const;
336 int pixelLayersWithMeasurement()
const;
337 int stripLayersWithMeasurement()
const;
338 int pixelBarrelLayersWithMeasurement()
const;
339 int pixelEndcapLayersWithMeasurement()
const;
340 int stripTIBLayersWithMeasurement()
const;
341 int stripTIDLayersWithMeasurement()
const;
342 int stripTOBLayersWithMeasurement()
const;
343 int stripTECLayersWithMeasurement()
const;
366 int trackerLayersNull()
const;
367 int pixelLayersNull()
const;
368 int stripLayersNull()
const;
369 int pixelBarrelLayersNull()
const;
370 int pixelEndcapLayersNull()
const;
371 int stripTIBLayersNull()
const;
372 int stripTIDLayersNull()
const;
373 int stripTOBLayersNull()
const;
374 int stripTECLayersNull()
const;
377 int muonStations(
int subdet,
int hitType)
const ;
379 int muonStationsWithValidHits()
const;
380 int muonStationsWithBadHits()
const;
381 int muonStationsWithAnyHits()
const;
383 int dtStationsWithValidHits()
const;
384 int dtStationsWithBadHits()
const;
385 int dtStationsWithAnyHits()
const;
387 int cscStationsWithValidHits()
const;
388 int cscStationsWithBadHits()
const;
389 int cscStationsWithAnyHits()
const;
391 int rpcStationsWithValidHits()
const;
392 int rpcStationsWithBadHits()
const;
393 int rpcStationsWithAnyHits()
const;
395 int gemStationsWithValidHits()
const ;
396 int gemStationsWithBadHits()
const ;
397 int gemStationsWithAnyHits()
const ;
399 int me0StationsWithValidHits()
const ;
400 int me0StationsWithBadHits()
const ;
401 int me0StationsWithAnyHits()
const ;
405 int innermostMuonStationWithHits(
int hitType)
const;
406 int innermostMuonStationWithValidHits()
const;
407 int innermostMuonStationWithBadHits()
const;
408 int innermostMuonStationWithAnyHits()
const;
411 int outermostMuonStationWithHits(
int hitType)
const;
412 int outermostMuonStationWithValidHits()
const;
413 int outermostMuonStationWithBadHits()
const;
414 int outermostMuonStationWithAnyHits()
const;
416 int numberOfDTStationsWithRPhiView()
const;
417 int numberOfDTStationsWithRZView()
const;
418 int numberOfDTStationsWithBothViews()
const;
423 const static unsigned short HitTypeOffset = 0;
424 const static unsigned short HitTypeMask = 0x3;
427 const static unsigned short SideOffset = 2;
428 const static unsigned short SideMask = 0x1;
431 const static unsigned short LayerOffset = 3;
432 const static unsigned short LayerMask = 0xF;
435 const static unsigned short SubstrOffset = 7;
436 const static unsigned short SubstrMask = 0x7;
439 const static unsigned short SubDetectorOffset = 10;
440 const static unsigned short SubDetectorMask = 0x1;
442 const static unsigned short minTrackerWord = 1<< SubDetectorOffset;
443 const static unsigned short minPixelWord = minTrackerWord | (1<<SubstrOffset);
444 const static unsigned short minStripWord = minTrackerWord | (3<<SubstrOffset);
464 bool insertTrackHit(
const uint16_t
pattern);
465 bool insertExpectedInnerHit(
const uint16_t
pattern);
466 bool insertExpectedOuterHit(
const uint16_t
pattern);
467 void insertHit(
const uint16_t
pattern);
469 uint16_t getHitPatternByAbsoluteIndex(
int position)
const;
473 uint16_t hitPattern[ARRAY_LENGTH];
493 return std::pair<uint8_t, uint8_t>(beginTrackHits, endTrackHits);
495 case MISSING_INNER_HITS:
496 return std::pair<uint8_t, uint8_t>(beginInner, endInner);
498 case MISSING_OUTER_HITS:
499 return std::pair<uint8_t, uint8_t>(beginOuter, endOuter);
502 return std::pair<uint8_t, uint8_t>(-1, -1);
518 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
519 if UNLIKELY((position < 0 || (position + range.first) >= range.second)) {
520 return HitPattern::EMPTY_PATTERN;
523 return getHitPatternByAbsoluteIndex(range.first + position);
529 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
530 for (
int i = range.first;
i < range.second; ++
i) {
531 if (
filter(getHitPatternByAbsoluteIndex(
i))) {
542 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
543 for (
int i = range.first;
i < range.second;
i++) {
544 uint16_t
pattern = getHitPatternByAbsoluteIndex(
i);
546 if (typeFilter(pattern) && !
f(pattern)) {
555 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
556 for (
int i = range.first;
i < range.second; ++
i) {
557 uint16_t
pattern = getHitPatternByAbsoluteIndex(
i);
558 if (typeFilter(pattern) &&
filter(pattern)) {
565 inline bool HitPattern::pixelHitFilter(uint16_t
pattern)
567 if UNLIKELY(!trackerHitFilter(pattern)) {
571 uint32_t substructure = getSubStructure(pattern);
576 inline bool HitPattern::pixelBarrelHitFilter(uint16_t
pattern)
578 if UNLIKELY(!trackerHitFilter(pattern)) {
582 uint32_t substructure = getSubStructure(pattern);
586 inline bool HitPattern::pixelEndcapHitFilter(uint16_t
pattern)
588 if UNLIKELY(!trackerHitFilter(pattern)) {
592 uint32_t substructure = getSubStructure(pattern);
596 inline bool HitPattern::stripHitFilter(uint16_t
pattern)
598 return pattern > minStripWord;
604 if UNLIKELY(!trackerHitFilter(pattern)) {
608 return substructure == getSubStructure(pattern);
611 inline bool HitPattern::stripTIBHitFilter(uint16_t
pattern)
616 inline bool HitPattern::stripTIDHitFilter(uint16_t
pattern)
621 inline bool HitPattern::stripTOBHitFilter(uint16_t
pattern)
626 inline bool HitPattern::stripTECHitFilter(uint16_t
pattern)
631 inline bool HitPattern::muonDTHitFilter(uint16_t
pattern)
633 if UNLIKELY(!muonHitFilter(pattern)) {
637 uint32_t substructure = getSubStructure(pattern);
641 inline bool HitPattern::muonCSCHitFilter(uint16_t
pattern)
643 if UNLIKELY(!muonHitFilter(pattern)) {
647 uint32_t substructure = getSubStructure(pattern);
651 inline bool HitPattern::muonRPCHitFilter(uint16_t
pattern)
653 if UNLIKELY(!muonHitFilter(pattern)) {
657 uint32_t substructure = getSubStructure(pattern);
661 inline bool HitPattern::muonGEMHitFilter(uint16_t
pattern)
663 if UNLIKELY(!muonHitFilter(pattern)) {
667 uint32_t substructure = getSubStructure(pattern);
671 inline bool HitPattern::muonME0HitFilter(uint16_t
pattern) {
672 if UNLIKELY(!muonHitFilter(pattern))
return false;
673 uint16_t substructure = getSubStructure(pattern);
678 inline bool HitPattern::trackerHitFilter(uint16_t
pattern)
680 return pattern > minTrackerWord;
683 inline bool HitPattern::muonHitFilter(uint16_t
pattern)
685 if UNLIKELY(pattern == HitPattern::EMPTY_PATTERN) {
689 return (((pattern >> SubDetectorOffset) & SubDetectorMask) == 0);
692 inline uint32_t HitPattern::getSubStructure(uint16_t
pattern)
694 if UNLIKELY(pattern == HitPattern::EMPTY_PATTERN) {
698 return ((pattern >> SubstrOffset) & SubstrMask);
701 inline uint32_t HitPattern::getLayer(uint16_t
pattern)
703 return HitPattern::getSubSubStructure(pattern);
706 inline uint32_t HitPattern::getSubSubStructure(uint16_t
pattern)
708 if UNLIKELY(pattern == HitPattern::EMPTY_PATTERN) {
712 return ((pattern >> LayerOffset) & LayerMask);
715 inline uint32_t HitPattern::getSubDetector(uint16_t
pattern)
717 if UNLIKELY(pattern == HitPattern::EMPTY_PATTERN) {
721 return ((pattern >> SubDetectorOffset) & SubDetectorMask);
725 inline uint32_t HitPattern::getSide(uint16_t
pattern)
727 if UNLIKELY(pattern == HitPattern::EMPTY_PATTERN) {
731 return (pattern >> SideOffset) & SideMask;
734 inline uint32_t HitPattern::getHitType(uint16_t
pattern)
736 if UNLIKELY(pattern == HitPattern::EMPTY_PATTERN) {
740 return ((pattern >> HitTypeOffset) & HitTypeMask);
743 inline uint16_t HitPattern::getMuonStation(uint16_t
pattern)
745 return (getSubSubStructure(pattern) >> 2) + 1;
748 inline uint16_t HitPattern::getDTSuperLayer(uint16_t
pattern)
750 return (getSubSubStructure(pattern) & 3);
753 inline uint16_t HitPattern::getCSCRing(uint16_t
pattern)
755 return (getSubSubStructure(pattern) & 3) + 1;
758 inline uint16_t HitPattern::getRPCLayer(uint16_t
pattern)
760 uint16_t subSubStructure = getSubSubStructure(pattern);
761 uint16_t
stat = subSubStructure >> 2;
764 return ((subSubStructure >> 1) & 1) + 1;
770 inline uint16_t HitPattern::getRPCregion(uint16_t
pattern)
772 return getSubSubStructure(pattern) & 1;
776 inline uint16_t HitPattern::getGEMStation(uint16_t
pattern)
779 uint16_t sss = getSubSubStructure(pattern),
stat = sss >> 1;
783 inline uint16_t HitPattern::getGEMLayer(uint16_t
pattern)
785 return (getSubSubStructure(pattern) & 1) + 1;
788 inline bool HitPattern::validHitFilter(uint16_t
pattern)
790 return getHitType(pattern) == HitPattern::VALID;
793 inline bool HitPattern::missingHitFilter(uint16_t
pattern)
795 return getHitType(pattern) == HitPattern::MISSING;
798 inline bool HitPattern::inactiveHitFilter(uint16_t
pattern)
800 return getHitType(pattern) == HitPattern::INACTIVE;
803 inline bool HitPattern::badHitFilter(uint16_t
pattern)
810 std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
811 return range.second - range.first;
816 return countHits(category, trackerHitFilter);
819 inline int HitPattern::numberOfMuonHits()
const 821 return countHits(TRACK_HITS, muonHitFilter);
824 inline int HitPattern::numberOfValidHits()
const 826 return countHits(TRACK_HITS, validHitFilter);
829 inline int HitPattern::numberOfValidTrackerHits()
const 831 return countTypedHits(TRACK_HITS, validHitFilter, trackerHitFilter);
834 inline int HitPattern::numberOfValidMuonHits()
const 836 return countTypedHits(TRACK_HITS, validHitFilter, muonHitFilter);
839 inline int HitPattern::numberOfValidPixelHits()
const 841 return countTypedHits(TRACK_HITS, validHitFilter, pixelHitFilter);
844 inline int HitPattern::numberOfValidPixelBarrelHits()
const 846 return countTypedHits(TRACK_HITS, validHitFilter, pixelBarrelHitFilter);
849 inline int HitPattern::numberOfValidPixelEndcapHits()
const 851 return countTypedHits(TRACK_HITS, validHitFilter, pixelEndcapHitFilter);
854 inline int HitPattern::numberOfValidStripHits()
const 856 return countTypedHits(TRACK_HITS, validHitFilter, stripHitFilter);
859 inline int HitPattern::numberOfValidStripTIBHits()
const 861 return countTypedHits(TRACK_HITS, validHitFilter, stripTIBHitFilter);
864 inline int HitPattern::numberOfValidStripTIDHits()
const 866 return countTypedHits(TRACK_HITS, validHitFilter, stripTIDHitFilter);
869 inline int HitPattern::numberOfValidStripTOBHits()
const 871 return countTypedHits(TRACK_HITS, validHitFilter, stripTOBHitFilter);
874 inline int HitPattern::numberOfValidStripTECHits()
const 876 return countTypedHits(TRACK_HITS, validHitFilter, stripTECHitFilter);
879 inline int HitPattern::numberOfValidMuonDTHits()
const 881 return countTypedHits(TRACK_HITS, validHitFilter, muonDTHitFilter);
884 inline int HitPattern::numberOfValidMuonCSCHits()
const 886 return countTypedHits(TRACK_HITS, validHitFilter, muonCSCHitFilter);
889 inline int HitPattern::numberOfValidMuonRPCHits()
const 891 return countTypedHits(TRACK_HITS, validHitFilter, muonRPCHitFilter);
894 inline int HitPattern::numberOfValidMuonGEMHits()
const 896 return countTypedHits(TRACK_HITS, validHitFilter, muonGEMHitFilter);
899 inline int HitPattern::numberOfValidMuonME0Hits()
const {
900 return countTypedHits(TRACK_HITS, validHitFilter, muonME0HitFilter);
905 return countHits(category, missingHitFilter);
910 return countTypedHits(category, missingHitFilter, trackerHitFilter);
913 inline int HitPattern::numberOfLostMuonHits()
const 915 return countTypedHits(TRACK_HITS, missingHitFilter, muonHitFilter);
920 return countTypedHits(category, missingHitFilter, pixelHitFilter);
925 return countTypedHits(category, missingHitFilter, pixelBarrelHitFilter);
930 return countTypedHits(category, missingHitFilter, pixelEndcapHitFilter);
935 return countTypedHits(category, missingHitFilter, stripHitFilter);
940 return countTypedHits(category, missingHitFilter, stripTIBHitFilter);
945 return countTypedHits(category, missingHitFilter, stripTIDHitFilter);
950 return countTypedHits(category, missingHitFilter, stripTOBHitFilter);
955 return countTypedHits(category, missingHitFilter, stripTECHitFilter);
958 inline int HitPattern::numberOfLostMuonDTHits()
const 960 return countTypedHits(TRACK_HITS, missingHitFilter, muonDTHitFilter);
963 inline int HitPattern::numberOfLostMuonCSCHits()
const 965 return countTypedHits(TRACK_HITS, missingHitFilter, muonCSCHitFilter);
968 inline int HitPattern::numberOfLostMuonRPCHits()
const 970 return countTypedHits(TRACK_HITS, missingHitFilter, muonRPCHitFilter);
973 inline int HitPattern::numberOfLostMuonGEMHits()
const 975 return countTypedHits(TRACK_HITS, missingHitFilter, muonGEMHitFilter);
978 inline int HitPattern::numberOfLostMuonME0Hits()
const {
979 return countTypedHits(TRACK_HITS, missingHitFilter, muonME0HitFilter);
982 inline int HitPattern::numberOfBadHits()
const 984 return countHits(TRACK_HITS, badHitFilter);
987 inline int HitPattern::numberOfBadMuonHits()
const 989 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonHitFilter);
992 inline int HitPattern::numberOfBadMuonDTHits()
const 994 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonDTHitFilter);
997 inline int HitPattern::numberOfBadMuonCSCHits()
const 999 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonCSCHitFilter);
1002 inline int HitPattern::numberOfBadMuonRPCHits()
const 1004 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonRPCHitFilter);
1007 inline int HitPattern::numberOfBadMuonGEMHits()
const 1009 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonGEMHitFilter);
1012 inline int HitPattern::numberOfBadMuonME0Hits()
const {
1013 return countTypedHits(TRACK_HITS, inactiveHitFilter, muonME0HitFilter);
1016 inline int HitPattern::numberOfInactiveHits()
const 1018 return countHits(TRACK_HITS, inactiveHitFilter);
1021 inline int HitPattern::numberOfInactiveTrackerHits()
const 1023 return countTypedHits(TRACK_HITS, inactiveHitFilter, trackerHitFilter);
1026 inline int HitPattern::trackerLayersWithMeasurementOld()
const 1028 return pixelLayersWithMeasurement() + stripLayersWithMeasurement();
1031 inline int HitPattern::pixelLayersWithMeasurementOld()
const 1033 return pixelBarrelLayersWithMeasurement() + pixelEndcapLayersWithMeasurement();
1036 inline int HitPattern::stripLayersWithMeasurement()
const 1038 return stripTIBLayersWithMeasurement() + stripTIDLayersWithMeasurement() +
1039 stripTOBLayersWithMeasurement() + stripTECLayersWithMeasurement();
1044 return pixelLayersWithoutMeasurement(category) +
1045 stripLayersWithoutMeasurement(category);
1050 return pixelBarrelLayersWithoutMeasurement(category) +
1051 pixelEndcapLayersWithoutMeasurement(category);
1056 return stripTIBLayersWithoutMeasurement(category) +
1057 stripTIDLayersWithoutMeasurement(category) +
1058 stripTOBLayersWithoutMeasurement(category) +
1059 stripTECLayersWithoutMeasurement(category);
1064 return pixelLayersTotallyOffOrBad(category) +
1065 stripLayersTotallyOffOrBad(category);
1070 return pixelBarrelLayersTotallyOffOrBad(category) +
1071 pixelEndcapLayersTotallyOffOrBad(category);
1076 return stripTIBLayersTotallyOffOrBad(category) +
1077 stripTIDLayersTotallyOffOrBad(category) +
1078 stripTOBLayersTotallyOffOrBad(category) +
1079 stripTECLayersTotallyOffOrBad(category);
1082 inline int HitPattern::trackerLayersNull()
const 1084 return pixelLayersNull() +
1088 inline int HitPattern::pixelLayersNull()
const 1090 return pixelBarrelLayersNull() +
1091 pixelEndcapLayersNull();
1094 inline int HitPattern::stripLayersNull()
const 1096 return stripTIBLayersNull() +
1097 stripTIDLayersNull() +
1098 stripTOBLayersNull() +
1099 stripTECLayersNull();
1102 inline int HitPattern::muonStationsWithValidHits()
const 1104 return muonStations(0, 0);
1107 inline int HitPattern::muonStationsWithBadHits()
const 1109 return muonStations(0, 3);
1112 inline int HitPattern::muonStationsWithAnyHits()
const 1114 return muonStations(0, -1);
1117 inline int HitPattern::dtStationsWithValidHits()
const 1119 return muonStations(1, 0);
1122 inline int HitPattern::dtStationsWithBadHits()
const 1124 return muonStations(1, 3);
1127 inline int HitPattern::dtStationsWithAnyHits()
const 1129 return muonStations(1, -1);
1132 inline int HitPattern::cscStationsWithValidHits()
const 1134 return muonStations(2, 0);
1137 inline int HitPattern::cscStationsWithBadHits()
const 1139 return muonStations(2, 3);
1142 inline int HitPattern::cscStationsWithAnyHits()
const 1144 return muonStations(2, -1);
1147 inline int HitPattern::rpcStationsWithValidHits()
const 1149 return muonStations(3, 0);
1152 inline int HitPattern::rpcStationsWithBadHits()
const 1154 return muonStations(3, 3);
1157 inline int HitPattern::rpcStationsWithAnyHits()
const 1159 return muonStations(3, -1);
1162 inline int HitPattern::gemStationsWithValidHits()
const 1164 return muonStations(4, 0);
1167 inline int HitPattern::gemStationsWithBadHits()
const 1169 return muonStations(4, 3);
1172 inline int HitPattern::gemStationsWithAnyHits()
const 1174 return muonStations(4,-1);
1177 inline int HitPattern::me0StationsWithValidHits()
const 1179 return muonStations(5, 0);
1182 inline int HitPattern::me0StationsWithBadHits()
const 1184 return muonStations(5, 3);
1187 inline int HitPattern::me0StationsWithAnyHits()
const 1189 return muonStations(5,-1);
1192 inline int HitPattern::innermostMuonStationWithValidHits()
const 1194 return innermostMuonStationWithHits(0);
1197 inline int HitPattern::innermostMuonStationWithBadHits()
const 1199 return innermostMuonStationWithHits(3);
1202 inline int HitPattern::innermostMuonStationWithAnyHits()
const 1204 return innermostMuonStationWithHits(-1);
1207 inline int HitPattern::outermostMuonStationWithValidHits()
const 1209 return outermostMuonStationWithHits(0);
1212 inline int HitPattern::outermostMuonStationWithBadHits()
const 1214 return outermostMuonStationWithHits(3);
1217 inline int HitPattern::outermostMuonStationWithAnyHits()
const 1219 return outermostMuonStationWithHits(-1);
1223 template<
int N = HitPattern::MaxHits>
1234 unsigned char const *
end()
const 1270 unsigned char p = 255 & (
pattern >> 3);
1275 for (
auto h = hit + lhit - 1;
h != hit; --
h) {
1276 if ((*(
h - 1)) <= p) {
1283 return lhit < MaxHits;
1286 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.
void call(HitCategory category, filterType typeFilter, F f) const
S & print(S &os, JobReport::InputFile const &f)
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