3 #ifndef TrackReco_HitPattern_h
4 #define TrackReco_HitPattern_h
141 namespace TestHitPattern {
194 static uint32_t
getSide(uint16_t pattern);
195 static uint32_t
getLayer(uint16_t pattern);
237 template <
typename I>
481 template <
typename F>
524 return std::pair<uint8_t, uint8_t>(-1, -1);
527 template <
typename I>
539 if UNLIKELY ((position < 0 || (position + range.first) >= range.second)) {
549 for (
int i = range.first;
i < range.second; ++
i) {
557 template <
typename F>
560 for (
int i = range.first;
i < range.second;
i++) {
563 if (typeFilter(pattern) && !
f(pattern)) {
572 for (
int i = range.first;
i < range.second; ++
i) {
574 if (typeFilter(pattern) &&
filter(pattern)) {
765 uint16_t
stat = subSubStructure >> 2;
768 return ((subSubStructure >> 1) & 1) + 1;
781 return (sss >> 2) + 1;
792 return (sss & 0b0111) + 1;
793 return (sss & 0b11) + 1;
806 return range.second - range.first;
1092 template <
int N = HitPattern::MaxHits>
1116 auto unpack = [&lhit,
this](uint16_t pattern) ->
bool {
1117 unsigned char p = 255 & (pattern >> 3);
1122 for (
auto h =
hit + lhit - 1;
h !=
hit; --
h) {
1123 if ((*(
h - 1)) <= p) {
int stripTOBLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
unsigned char const * begin() const
int stripTOBLayersWithMeasurement() const
static uint16_t getCSCRing(uint16_t pattern)
CSC ring (1-4). Only valid for muon CSC patterns, of course.
static constexpr auto TEC
unsigned char const * end() const
static bool stripTECHitFilter(uint16_t pattern)
int pixelBarrelLayersWithoutMeasurement(HitCategory category) const
int cscStationsWithAnyHits() const
int pixelLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
static uint32_t getLayer(uint16_t pattern)
void insertHit(const uint16_t pattern)
int numberOfLostStripTIBHits(HitCategory category) const
int outermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
static const unsigned short HIT_LENGTH
int outermostMuonStationWithValidHits() const
static const unsigned short ARRAY_LENGTH
static const uint32_t NULL_RETURN
bool appendHits(const I &begin, const I &end, const TrackerTopology &ttopo)
int pixelBarrelLayersNull() const
int numberOfLostStripTOBHits(HitCategory category) const
static bool timingHitFilter(uint16_t pattern)
static bool pixelHitFilter(uint16_t pattern)
int stripTIBLayersNull() const
PatternSet< N > commonHits(PatternSet< N > const &p1, PatternSet< N > const &p2)
std::pair< unsigned int, unsigned int > unpack(cond::Time_t since)
int numberOfInactiveHits() const
int pixelBarrelLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
bool hasValidHitInPixelLayer(enum PixelSubdetector::SubDetector, uint16_t layer) const
int gemStationsWithBadHits() const
static uint16_t isStereo(DetId i, const TrackerTopology &ttopo)
static bool timingBTLHitFilter(uint16_t pattern)
int stripTIBLayersWithMeasurement() const
static bool badHitFilter(uint16_t pattern)
int stripTECLayersNull() const
static const unsigned short SideOffset
static const char category[]
static const uint16_t EMPTY_PATTERN
int muonStations(int subdet, int hitType) const
subdet = 0(all), 1(DT), 2(CSC), 3(RPC) 4(GEM); hitType=-1(all), 0=valid, 3=bad
static uint16_t getDTSuperLayer(uint16_t pattern)
DT superlayer (1-3). Where the "hit" was a DT segment, superlayer is 0. Only valid for muon DT patter...
static bool muonME0HitFilter(uint16_t pattern)
static const unsigned short SubstrOffset
int stripTOBLayersWithoutMeasurement(HitCategory category) const
int numberOfValidHits() const
int numberOfLostPixelHits(HitCategory category) const
int numberOfDTStationsWithRPhiView() const
int numberOfBadHits() const
int cscStationsWithValidHits() const
int pixelLayersNull() const
void call(HitCategory category, filterType typeFilter, F f) const
static uint16_t getETLRing(uint16_t pattern)
ETL Ring: 1-12. Only valid for ETL patterns of course.
HitPattern & operator=(const HitPattern &other)
uint16_t getTrackerMonoStereo(HitCategory category, uint16_t substr, uint16_t layer) const
int numberOfLostTimingETLHits() const
static const unsigned short MaxHits
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
int numberOfValidStripHits() const
int numberOfLostTimingHits() const
static const unsigned short maxTrackerWord
int rpcStationsWithValidHits() const
int me0StationsWithValidHits() const
int numberOfValidTimingBTLHits() const
int pixelLayersWithMeasurement() const
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
int numberOfValidStripLayersWithMonoAndStereo() const
bool filterType(uint16_t)
int pixelEndcapLayersWithoutMeasurement(HitCategory category) const
int numberOfLostMuonHits() const
int me0StationsWithAnyHits() const
static bool missingHitFilter(uint16_t pattern)
static uint16_t getBTLModType(uint16_t pattern)
BTL Module type: 1,2,3. Only valid for BTL patterns of course.
int trackerLayersWithMeasurement() const
static const unsigned short HitTypeMask
static bool pixelBarrelHitFilter(uint16_t pattern)
int pixelEndcapLayersWithMeasurement() const
int numberOfValidStripTOBHits() const
int numberOfValidMuonCSCHits() const
int numberOfMuonHits() const
bool insertExpectedOuterHit(const uint16_t pattern)
constexpr std::array< uint8_t, layerIndexSize > layer
static bool pixelEndcapHitFilter(uint16_t pattern)
const uint16_t range(const Frame &aFrame)
int numberOfLostTrackerHits(HitCategory category) const
int numberOfLostStripHits(HitCategory category) const
int numberOfValidMuonRPCHits() const
static bool validHitFilter(uint16_t pattern)
int muonStationsWithBadHits() const
int trackerLayersWithoutMeasurementOld(HitCategory category) const
void printHitPattern(HitCategory category, int position, std::ostream &stream) const
int stripLayersNull() const
int numberOfLostStripTIDHits(HitCategory category) const
static uint16_t getGEMLayer(uint16_t pattern)
GEM layer: 1-6 for station 0, 1-2 for stations 1 and 2. Only valid for muon GEM patterns, of course.
int numberOfAllTrackerHits(HitCategory category) const
int muonStationsWithValidHits() const
static constexpr int MaxHits
int pixelLayersWithoutMeasurement(HitCategory category) const
int rpcStationsWithBadHits() const
static const unsigned short minTrackerWord
int innermostMuonStationWithAnyHits() const
uint16_t hitPattern[ARRAY_LENGTH]
int numberOfValidPixelBarrelHits() const
int stripTIBLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
static bool muonCSCHitFilter(uint16_t pattern)
static uint32_t getHitType(uint16_t pattern)
int numberOfBadMuonGEMHits() const
int numberOfValidTECLayersWithMonoAndStereo(uint32_t layer=0) const
int stripTIDLayersWithMeasurement() const
int stripLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
static const unsigned short SubDetectorMask
int muonStationsWithAnyHits() const
int numberOfLostMuonME0Hits() const
static bool stripHitFilter(uint16_t pattern)
int numberOfAllHits(HitCategory category) const
int stripLayersWithoutMeasurement(HitCategory category) const
int numberOfBadMuonHits() const
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
int numberOfValidStripTIDHits() const
const std::complex< double > I
int numberOfDTStationsWithRZView() const
int numberOfTimingHits() const
int numberOfValidStripTECHits() const
int numberOfValidTimingETLHits() const
static constexpr auto TOB
int stripTIDLayersNull() const
int numberOfLostMuonRPCHits() const
static const unsigned short HitTypeOffset
int gemStationsWithAnyHits() const
int trackerLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
int numberOfBadMuonRPCHits() const
int numberOfValidTIDLayersWithMonoAndStereo(uint32_t layer=0) const
int dtStationsWithValidHits() const
bool appendTrackerHit(uint16_t subdet, uint16_t layer, uint16_t stereo, TrackingRecHit::Type hitType)
int cscStationsWithBadHits() const
static uint32_t getSubStructure(uint16_t pattern)
int numberOfDTStationsWithBothViews() const
static bool inactiveHitFilter(uint16_t pattern)
static const unsigned short minPixelWord
int numberOfLostTimingBTLHits() const
int numberOfValidTIBLayersWithMonoAndStereo(uint32_t layer=0) const
int gemStationsWithValidHits() const
static uint16_t getRPCregion(uint16_t pattern)
RPC region: 0 = barrel, 1 = endcap. Only valid for muon RPC patterns, of course.
static uint32_t getSubDetector(uint16_t pattern)
int numberOfBadMuonME0Hits() const
int dtStationsWithAnyHits() const
static bool muonGEMHitFilter(uint16_t pattern)
static uint16_t getGEMStation(uint16_t pattern)
GEM station: 1,2. Only valid for muon GEM patterns, of course.
int stripTIDLayersWithoutMeasurement(HitCategory category) const
int pixelLayersWithMeasurementOld() const
int innermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
int numberOfInactiveTrackerHits() const
static bool muonHitFilter(uint16_t pattern)
static bool trackerHitFilter(uint16_t pattern)
int numberOfLostPixelEndcapHits(HitCategory category) const
static constexpr auto TIB
static const unsigned short SideMask
static const unsigned short minStripWord
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
int innermostMuonStationWithBadHits() const
static const unsigned short SubDetectorOffset
int trackerLayersNull() const
int stripLayersWithMeasurement() const
int pixelBarrelLayersWithMeasurement() const
static bool fillNewHitPatternWithOldHitPattern_v12(const uint16_t oldHitPattern[], uint8_t hitCount, uint8_t beginTrackHits, uint8_t endTrackHits, uint8_t beginInner, uint8_t endInner, uint8_t beginOuter, uint8_t endOuter, reco::HitPattern *newObj)
int numberOfBadMuonDTHits() const
int numberOfLostMuonGEMHits() const
int me0StationsWithBadHits() const
int numberOfValidTimingHits() const
int outermostMuonStationWithBadHits() const
int dtStationsWithBadHits() const
int numberOfValidStripTIBHits() const
static bool stripTOBHitFilter(uint16_t pattern)
int numberOfLostHits(HitCategory category) const
int numberOfValidTrackerHits() const
int numberOfValidPixelEndcapHits() const
uint16_t getHitPatternByAbsoluteIndex(int position) const
static uint32_t getSide(uint16_t pattern)
int numberOfLostPixelBarrelHits(HitCategory category) const
int stripTOBLayersNull() const
static bool muonDTHitFilter(uint16_t pattern)
int stripTIDLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
int trackerLayersWithoutMeasurement(HitCategory category) const
bool insertExpectedInnerHit(const uint16_t pattern)
int numberOfLostStripTECHits(HitCategory category) const
static bool stripTIBHitFilter(uint16_t pattern)
int numberOfValidMuonGEMHits() const
int numberOfLostMuonDTHits() const
static const unsigned short SubstrMask
int numberOfBadMuonCSCHits() const
static const unsigned short LayerOffset
int numberOfValidMuonME0Hits() const
void fill(HitPattern::HitCategory category, HitPattern const &hp)
static int position[264][3]
int numberOfValidMuonDTHits() const
int pixelEndcapLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
bool insertTrackHit(const uint16_t pattern)
int stripTECLayersWithMeasurement() const
int stripTECLayersWithoutMeasurement(HitCategory category) const
int numberOfValidPixelHits() const
static uint16_t getRPCLayer(uint16_t pattern)
RPC layer: for station 1 and 2, layer = 1(inner) or 2(outer); for station 3, 4 layer is always 0...
static uint16_t getMuonStation(uint16_t pattern)
Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon...
void print(HitCategory category, std::ostream &stream=std::cout) const
int numberOfValidTOBLayersWithMonoAndStereo(uint32_t layer=0) const
static bool timingETLHitFilter(uint16_t pattern)
int countHits(HitCategory category, filterType filter) const
Run3ScoutingHitPatternPOD run3ScoutingHitPatternPOD() const
int numberOfValidMuonHits() const
static uint32_t getSubSubStructure(uint16_t pattern)
int numberOfInactiveTimingHits() const
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
uint16_t getHitPattern(HitCategory category, int position) const
static const unsigned short LayerMask
static bool stripTIDHitFilter(uint16_t pattern)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
static bool muonRPCHitFilter(uint16_t pattern)
int rpcStationsWithAnyHits() const
static constexpr auto TID
PatternSet(HitPattern::HitCategory category, HitPattern const &hp)
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
int trackerLayersWithMeasurementOld() const
static bool stripSubdetectorHitFilter(uint16_t pattern, StripSubdetector::SubDetector substructure)
unsigned char operator[](int i) const
int innermostMuonStationWithValidHits() const
int stripTECLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
int numberOfLostMuonCSCHits() const
int outermostMuonStationWithAnyHits() const
int stripTIBLayersWithoutMeasurement(HitCategory category) const
bool appendMuonHit(const DetId &id, TrackingRecHit::Type hitType)
int pixelEndcapLayersNull() const