3 #ifndef TrackReco_HitPattern_h
4 #define TrackReco_HitPattern_h
137 namespace TestHitPattern {
501 return std::pair<uint8_t, uint8_t>(-1, -1);
518 if unlikely((position < 0 || (position + range.first) >= range.second)) {
529 for (
int i = range.first;
i < range.second; ++
i) {
542 for (
int i = range.first;
i < range.second;
i++) {
545 if (typeFilter(pattern) && !
f(pattern)) {
555 for (
int i = range.first;
i < range.second; ++
i) {
557 if (typeFilter(pattern) &&
filter(pattern)) {
760 uint16_t stat = subSubStructure >> 2;
763 return ((subSubStructure >> 1) & 1) + 1;
810 return range.second - range.first;
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) {
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.
unsigned char const * end() const
static bool stripTECHitFilter(uint16_t pattern)
int pixelBarrelLayersWithoutMeasurement(HitCategory category) const
int cscStationsWithAnyHits() 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 pixelHitFilter(uint16_t pattern)
int stripTIBLayersNull() const
PatternSet< N > commonHits(PatternSet< N > const &p1, PatternSet< N > const &p2)
int numberOfInactiveHits() const
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
int gemStationsWithBadHits() const
static uint16_t isStereo(DetId i, const TrackerTopology &ttopo)
int stripTIBLayersWithMeasurement() const
static bool badHitFilter(uint16_t pattern)
int stripTECLayersNull() const
static const unsigned short SideOffset
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
HitPattern & operator=(const HitPattern &other)
uint16_t getTrackerMonoStereo(HitCategory category, uint16_t substr, uint16_t layer) const
static const unsigned short MaxHits
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
int numberOfValidStripHits() const
int rpcStationsWithValidHits() const
int me0StationsWithValidHits() const
int pixelLayersWithMeasurement() const
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
int numberOfValidStripLayersWithMonoAndStereo() const
bool filterType(uint16_t)
int pixelEndcapLayersWithoutMeasurement(HitCategory category) const
int numberOfLostMuonHits() const
int me0StationsWithAnyHits() const
static bool missingHitFilter(uint16_t pattern)
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)
static bool pixelEndcapHitFilter(uint16_t pattern)
int numberOfLostTrackerHits(HitCategory category) const
int numberOfLostStripHits(HitCategory category) const
int numberOfValidMuonRPCHits() const
bool hasValidHitInFirstPixelEndcap() 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,2. Only valid for muon GEM patterns, of course.
int muonStationsWithValidHits() const
int pixelLayersWithoutMeasurement(HitCategory category) const
int stripTOBLayersTotallyOffOrBad() const
int rpcStationsWithBadHits() const
static const unsigned short minTrackerWord
int innermostMuonStationWithAnyHits() const
int trackerLayersTotallyOffOrBad() const
uint16_t hitPattern[ARRAY_LENGTH]
int numberOfValidPixelBarrelHits() const
int stripTIDLayersTotallyOffOrBad() 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
static const unsigned short SubDetectorMask
int numberOfTrackerHits(HitCategory category) const
int muonStationsWithAnyHits() const
int numberOfLostMuonME0Hits() const
static bool stripHitFilter(uint16_t pattern)
int pixelLayersTotallyOffOrBad() const
int stripTECLayersTotallyOffOrBad() 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 numberOfValidStripTECHits() const
int stripTIDLayersNull() const
int numberOfLostMuonRPCHits() const
static const unsigned short HitTypeOffset
int gemStationsWithAnyHits() const
int numberOfBadMuonRPCHits() const
int numberOfValidTIDLayersWithMonoAndStereo(uint32_t layer=0) const
int dtStationsWithValidHits() const
int stripLayersTotallyOffOrBad() 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 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 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
int numberOfBadMuonDTHits() const
int numberOfLostMuonGEMHits() const
int me0StationsWithBadHits() 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 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 pixelBarrelLayersTotallyOffOrBad() 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
bool insertTrackHit(const uint16_t pattern)
int stripTECLayersWithMeasurement() const
int stripTECLayersWithoutMeasurement(HitCategory category) const
int pixelEndcapLayersTotallyOffOrBad() 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
bool hasValidHitInFirstPixelBarrel() const
int countHits(HitCategory category, filterType filter) const
int numberOfValidMuonHits() const
static uint32_t getSubSubStructure(uint16_t pattern)
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
uint16_t getHitPattern(HitCategory category, int position) const
int stripTIBLayersTotallyOffOrBad() const
static const unsigned short LayerMask
static bool stripTIDHitFilter(uint16_t pattern)
static bool muonRPCHitFilter(uint16_t pattern)
int rpcStationsWithAnyHits() const
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 numberOfHits(HitCategory category) const
int numberOfLostMuonCSCHits() const
int outermostMuonStationWithAnyHits() const
int stripTIBLayersWithoutMeasurement(HitCategory category) const
bool appendMuonHit(const DetId &id, TrackingRecHit::Type hitType)
int pixelEndcapLayersNull() const