CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | Friends
reco::HitPattern Class Reference

#include <HitPattern.h>

Public Types

enum  { MONO = 1, STEREO = 2 }
 
enum  HIT_DETECTOR_TYPE { MUON_HIT = 0, TRACKER_HIT = 1, MTD_HIT = 2 }
 
enum  HIT_TYPE { VALID = 0, MISSING = 1, INACTIVE = 2, BAD = 3 }
 
enum  HitCategory { TRACK_HITS = 0, MISSING_INNER_HITS = 1, MISSING_OUTER_HITS = 2 }
 

Public Member Functions

bool appendHit (const TrackingRecHit &hit, const TrackerTopology &ttopo)
 
bool appendHit (const TrackingRecHitRef &ref, const TrackerTopology &ttopo)
 
bool appendHit (const DetId &id, TrackingRecHit::Type hitType, const TrackerTopology &ttopo)
 
bool appendHit (const uint16_t pattern, TrackingRecHit::Type hitType)
 
template<typename I >
bool appendHits (const I &begin, const I &end, const TrackerTopology &ttopo)
 
bool appendMuonHit (const DetId &id, TrackingRecHit::Type hitType)
 
bool appendTrackerHit (uint16_t subdet, uint16_t layer, uint16_t stereo, TrackingRecHit::Type hitType)
 
void clear ()
 
int cscStationsWithAnyHits () const
 
int cscStationsWithBadHits () const
 
int cscStationsWithValidHits () const
 
int dtStationsWithAnyHits () const
 
int dtStationsWithBadHits () const
 
int dtStationsWithValidHits () const
 
int gemStationsWithAnyHits () const
 
int gemStationsWithBadHits () const
 
int gemStationsWithValidHits () const
 
uint16_t getHitPattern (HitCategory category, int position) const
 
uint32_t getTrackerLayerCase (HitCategory category, uint16_t substr, uint16_t layer) const
 
uint16_t getTrackerMonoStereo (HitCategory category, uint16_t substr, uint16_t layer) const
 
bool hasValidHitInPixelLayer (enum PixelSubdetector::SubDetector, uint16_t layer) const
 
 HitPattern ()
 
 HitPattern (const HitPattern &other)
 
 HitPattern (const Run3ScoutingHitPatternPOD &other)
 
int innermostMuonStationWithAnyHits () const
 
int innermostMuonStationWithBadHits () const
 
int innermostMuonStationWithHits (int hitType) const
 hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all More...
 
int innermostMuonStationWithValidHits () const
 
int me0StationsWithAnyHits () const
 
int me0StationsWithBadHits () const
 
int me0StationsWithValidHits () const
 
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 More...
 
int muonStationsWithAnyHits () const
 
int muonStationsWithBadHits () const
 
int muonStationsWithValidHits () const
 
int numberOfAllHits (HitCategory category) const
 
int numberOfAllTrackerHits (HitCategory category) const
 
int numberOfBadHits () const
 
int numberOfBadMuonCSCHits () const
 
int numberOfBadMuonDTHits () const
 
int numberOfBadMuonGEMHits () const
 
int numberOfBadMuonHits () const
 
int numberOfBadMuonME0Hits () const
 
int numberOfBadMuonRPCHits () const
 
int numberOfDTStationsWithBothViews () const
 
int numberOfDTStationsWithRPhiView () const
 
int numberOfDTStationsWithRZView () const
 
int numberOfInactiveHits () const
 
int numberOfInactiveTimingHits () const
 
int numberOfInactiveTrackerHits () const
 
int numberOfLostHits (HitCategory category) const
 
int numberOfLostMuonCSCHits () const
 
int numberOfLostMuonDTHits () const
 
int numberOfLostMuonGEMHits () const
 
int numberOfLostMuonHits () const
 
int numberOfLostMuonME0Hits () const
 
int numberOfLostMuonRPCHits () const
 
int numberOfLostPixelBarrelHits (HitCategory category) const
 
int numberOfLostPixelEndcapHits (HitCategory category) const
 
int numberOfLostPixelHits (HitCategory category) const
 
int numberOfLostStripHits (HitCategory category) const
 
int numberOfLostStripTECHits (HitCategory category) const
 
int numberOfLostStripTIBHits (HitCategory category) const
 
int numberOfLostStripTIDHits (HitCategory category) const
 
int numberOfLostStripTOBHits (HitCategory category) const
 
int numberOfLostTimingBTLHits () const
 
int numberOfLostTimingETLHits () const
 
int numberOfLostTimingHits () const
 
int numberOfLostTrackerHits (HitCategory category) const
 
int numberOfMuonHits () const
 
int numberOfTimingHits () const
 
int numberOfValidHits () const
 
int numberOfValidMuonCSCHits () const
 
int numberOfValidMuonDTHits () const
 
int numberOfValidMuonGEMHits () const
 
int numberOfValidMuonHits () const
 
int numberOfValidMuonME0Hits () const
 
int numberOfValidMuonRPCHits () const
 
int numberOfValidPixelBarrelHits () const
 
int numberOfValidPixelEndcapHits () const
 
int numberOfValidPixelHits () const
 
int numberOfValidStripHits () const
 
int numberOfValidStripLayersWithMonoAndStereo (uint16_t stripdet, uint16_t layer) const
 
int numberOfValidStripLayersWithMonoAndStereo () const
 
int numberOfValidStripTECHits () const
 
int numberOfValidStripTIBHits () const
 
int numberOfValidStripTIDHits () const
 
int numberOfValidStripTOBHits () const
 
int numberOfValidTECLayersWithMonoAndStereo (uint32_t layer=0) const
 
int numberOfValidTIBLayersWithMonoAndStereo (uint32_t layer=0) const
 
int numberOfValidTIDLayersWithMonoAndStereo (uint32_t layer=0) const
 
int numberOfValidTimingBTLHits () const
 
int numberOfValidTimingETLHits () const
 
int numberOfValidTimingHits () const
 
int numberOfValidTOBLayersWithMonoAndStereo (uint32_t layer=0) const
 
int numberOfValidTrackerHits () const
 
HitPatternoperator= (const HitPattern &other)
 
int outermostMuonStationWithAnyHits () const
 
int outermostMuonStationWithBadHits () const
 
int outermostMuonStationWithHits (int hitType) const
 hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all More...
 
int outermostMuonStationWithValidHits () const
 
int pixelBarrelLayersNull () const
 
int pixelBarrelLayersTotallyOffOrBad (HitCategory category=TRACK_HITS) const
 
int pixelBarrelLayersWithMeasurement () const
 
int pixelBarrelLayersWithoutMeasurement (HitCategory category) const
 
int pixelEndcapLayersNull () const
 
int pixelEndcapLayersTotallyOffOrBad (HitCategory category=TRACK_HITS) const
 
int pixelEndcapLayersWithMeasurement () const
 
int pixelEndcapLayersWithoutMeasurement (HitCategory category) const
 
int pixelLayersNull () const
 
int pixelLayersTotallyOffOrBad (HitCategory category=TRACK_HITS) const
 
int pixelLayersWithMeasurement () const
 
int pixelLayersWithMeasurementOld () const
 
int pixelLayersWithoutMeasurement (HitCategory category) const
 
void print (HitCategory category, std::ostream &stream=std::cout) const
 
void printHitPattern (HitCategory category, int position, std::ostream &stream) const
 
int rpcStationsWithAnyHits () const
 
int rpcStationsWithBadHits () const
 
int rpcStationsWithValidHits () const
 
Run3ScoutingHitPatternPOD run3ScoutingHitPatternPOD () const
 
int stripLayersNull () const
 
int stripLayersTotallyOffOrBad (HitCategory category=TRACK_HITS) const
 
int stripLayersWithMeasurement () const
 
int stripLayersWithoutMeasurement (HitCategory category) const
 
int stripTECLayersNull () const
 
int stripTECLayersTotallyOffOrBad (HitCategory category=TRACK_HITS) const
 
int stripTECLayersWithMeasurement () const
 
int stripTECLayersWithoutMeasurement (HitCategory category) const
 
int stripTIBLayersNull () const
 
int stripTIBLayersTotallyOffOrBad (HitCategory category=TRACK_HITS) const
 
int stripTIBLayersWithMeasurement () const
 
int stripTIBLayersWithoutMeasurement (HitCategory category) const
 
int stripTIDLayersNull () const
 
int stripTIDLayersTotallyOffOrBad (HitCategory category=TRACK_HITS) const
 
int stripTIDLayersWithMeasurement () const
 
int stripTIDLayersWithoutMeasurement (HitCategory category) const
 
int stripTOBLayersNull () const
 
int stripTOBLayersTotallyOffOrBad (HitCategory category=TRACK_HITS) const
 
int stripTOBLayersWithMeasurement () const
 
int stripTOBLayersWithoutMeasurement (HitCategory category) const
 
int trackerLayersNull () const
 
int trackerLayersTotallyOffOrBad (HitCategory category=TRACK_HITS) const
 
int trackerLayersWithMeasurement () const
 
int trackerLayersWithMeasurementOld () const
 
int trackerLayersWithoutMeasurement (HitCategory category) const
 
int trackerLayersWithoutMeasurementOld (HitCategory category) const
 
 ~HitPattern ()
 

Static Public Member Functions

static bool badHitFilter (uint16_t pattern)
 
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)
 
static uint16_t getBTLModType (uint16_t pattern)
 BTL Module type: 1,2,3. Only valid for BTL patterns of course. More...
 
static uint16_t getCSCRing (uint16_t pattern)
 CSC ring (1-4). Only valid for muon CSC patterns, of course. More...
 
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 patterns, of course. More...
 
static uint16_t getETLRing (uint16_t pattern)
 ETL Ring: 1-12. Only valid for ETL patterns of course. More...
 
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. More...
 
static uint16_t getGEMStation (uint16_t pattern)
 GEM station: 1,2. Only valid for muon GEM patterns, of course. More...
 
static uint32_t getHitType (uint16_t pattern)
 
static uint32_t getLayer (uint16_t pattern)
 
static uint16_t getMuonStation (uint16_t pattern)
 Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon, of course. More...
 
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. Only valid for muon RPC patterns, of course. More...
 
static uint16_t getRPCregion (uint16_t pattern)
 RPC region: 0 = barrel, 1 = endcap. Only valid for muon RPC patterns, of course. More...
 
static uint32_t getSide (uint16_t pattern)
 
static uint32_t getSubDetector (uint16_t pattern)
 
static uint32_t getSubStructure (uint16_t pattern)
 
static uint32_t getSubSubStructure (uint16_t pattern)
 
static bool inactiveHitFilter (uint16_t pattern)
 
static bool missingHitFilter (uint16_t pattern)
 
static bool muonCSCHitFilter (uint16_t pattern)
 
static bool muonDTHitFilter (uint16_t pattern)
 
static bool muonGEMHitFilter (uint16_t pattern)
 
static bool muonHitFilter (uint16_t pattern)
 
static bool muonME0HitFilter (uint16_t pattern)
 
static bool muonRPCHitFilter (uint16_t pattern)
 
static bool pixelBarrelHitFilter (uint16_t pattern)
 
static bool pixelEndcapHitFilter (uint16_t pattern)
 
static bool pixelHitFilter (uint16_t pattern)
 
static bool stripHitFilter (uint16_t pattern)
 
static bool stripTECHitFilter (uint16_t pattern)
 
static bool stripTIBHitFilter (uint16_t pattern)
 
static bool stripTIDHitFilter (uint16_t pattern)
 
static bool stripTOBHitFilter (uint16_t pattern)
 
static bool timingBTLHitFilter (uint16_t pattern)
 
static bool timingETLHitFilter (uint16_t pattern)
 
static bool timingHitFilter (uint16_t pattern)
 
static bool trackerHitFilter (uint16_t pattern)
 
static bool validHitFilter (uint16_t pattern)
 

Static Public Attributes

static const unsigned short ARRAY_LENGTH = 57
 
static const uint16_t EMPTY_PATTERN = 0x0
 
static const unsigned short HIT_LENGTH = 12
 
static const unsigned short MaxHits = (8 * sizeof(uint16_t) * ARRAY_LENGTH) / HIT_LENGTH
 
static const uint32_t NULL_RETURN = 999999
 

Private Types

typedef bool filterType (uint16_t)
 

Private Member Functions

template<typename F >
void call (HitCategory category, filterType typeFilter, F f) const
 
int countHits (HitCategory category, filterType filter) const
 
int countTypedHits (HitCategory category, filterType typeFilter, filterType filter) const
 
std::pair< uint8_t, uint8_t > getCategoryIndexRange (HitCategory category) const
 
uint16_t getHitPatternByAbsoluteIndex (int position) const
 
bool insertExpectedInnerHit (const uint16_t pattern)
 
bool insertExpectedOuterHit (const uint16_t pattern)
 
void insertHit (const uint16_t pattern)
 
bool insertTrackHit (const uint16_t pattern)
 
friend int::test::TestHitPattern::test ()
 

Static Private Member Functions

static uint16_t encode (const TrackingRecHit &hit, const TrackerTopology &ttopo)
 
static uint16_t encode (const DetId &id, TrackingRecHit::Type hitType, const TrackerTopology &ttopo)
 
static uint16_t encode (uint16_t det, uint16_t subdet, uint16_t layer, uint16_t side, TrackingRecHit::Type hitType)
 
static uint16_t isStereo (DetId i, const TrackerTopology &ttopo)
 
static bool stripSubdetectorHitFilter (uint16_t pattern, StripSubdetector::SubDetector substructure)
 

Private Attributes

uint8_t beginInner
 
uint8_t beginOuter
 
uint8_t beginTrackHits
 
uint8_t endInner
 
uint8_t endOuter
 
uint8_t endTrackHits
 
uint8_t hitCount
 
uint16_t hitPattern [ARRAY_LENGTH]
 

Static Private Attributes

static const unsigned short HitTypeMask = 0x3
 
static const unsigned short HitTypeOffset = 0
 
static const unsigned short LayerMask = 0xF
 
static const unsigned short LayerOffset = 3
 
static const unsigned short maxTrackerWord = (2 << SubDetectorOffset) - 1
 
static const unsigned short minPixelWord = minTrackerWord | (1 << SubstrOffset)
 
static const unsigned short minStripWord = minTrackerWord | (3 << SubstrOffset)
 
static const unsigned short minTrackerWord = 1 << SubDetectorOffset
 
static const unsigned short SideMask = 0x1
 
static const unsigned short SideOffset = 2
 
static const unsigned short SubDetectorMask = 0x3
 
static const unsigned short SubDetectorOffset = 10
 
static const unsigned short SubstrMask = 0x7
 
static const unsigned short SubstrOffset = 7
 

Friends

template<int N>
struct PatternSet
 

Detailed Description

Definition at line 148 of file HitPattern.h.

Member Typedef Documentation

typedef bool reco::HitPattern::filterType(uint16_t)
private

Definition at line 479 of file HitPattern.h.

Member Enumeration Documentation

anonymous enum
Enumerator
MONO 
STEREO 

Definition at line 150 of file HitPattern.h.

Enumerator
MUON_HIT 
TRACKER_HIT 
MTD_HIT 

Definition at line 152 of file HitPattern.h.

Enumerator
VALID 
MISSING 
INACTIVE 
BAD 

Definition at line 154 of file HitPattern.h.

Enumerator
TRACK_HITS 
MISSING_INNER_HITS 
MISSING_OUTER_HITS 

Definition at line 156 of file HitPattern.h.

Constructor & Destructor Documentation

HitPattern::HitPattern ( )

Definition at line 19 of file HitPattern.cc.

References ARRAY_LENGTH, EMPTY_PATTERN, and hitPattern.

22 }
static const unsigned short ARRAY_LENGTH
Definition: HitPattern.h:157
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
uint8_t endInner
Definition: HitPattern.h:502
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:496
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t hitCount
Definition: HitPattern.h:497
uint8_t beginOuter
Definition: HitPattern.h:503
uint8_t endOuter
Definition: HitPattern.h:504
HitPattern::~HitPattern ( )

Definition at line 48 of file HitPattern.cc.

48 { ; }
HitPattern::HitPattern ( const HitPattern other)

Definition at line 24 of file HitPattern.cc.

References ARRAY_LENGTH, and hitPattern.

25  : hitCount(other.hitCount),
28  beginInner(other.beginInner),
29  endInner(other.endInner),
30  beginOuter(other.beginOuter),
31  endOuter(other.endOuter) {
32  memcpy(this->hitPattern, other.hitPattern, sizeof(uint16_t) * HitPattern::ARRAY_LENGTH);
33 }
static const unsigned short ARRAY_LENGTH
Definition: HitPattern.h:157
uint8_t endInner
Definition: HitPattern.h:502
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:496
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t hitCount
Definition: HitPattern.h:497
uint8_t beginOuter
Definition: HitPattern.h:503
uint8_t endOuter
Definition: HitPattern.h:504
HitPattern::HitPattern ( const Run3ScoutingHitPatternPOD other)

Definition at line 35 of file HitPattern.cc.

References ARRAY_LENGTH, filterCSVwithJSON::copy, Run3ScoutingHitPatternPOD::hitPattern, and hitPattern.

36  : hitCount(other.hitCount),
39  beginInner(other.beginInner),
40  endInner(other.endInner),
41  beginOuter(other.beginOuter),
42  endOuter(other.endOuter) {
43  const unsigned short max_vector_length =
45  std::copy(other.hitPattern.begin(), other.hitPattern.begin() + max_vector_length, this->hitPattern);
46 }
static const unsigned short ARRAY_LENGTH
Definition: HitPattern.h:157
std::vector< uint16_t > hitPattern
uint8_t endInner
Definition: HitPattern.h:502
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:496
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t hitCount
Definition: HitPattern.h:497
uint8_t beginOuter
Definition: HitPattern.h:503
uint8_t endOuter
Definition: HitPattern.h:504

Member Function Documentation

bool HitPattern::appendHit ( const TrackingRecHit hit,
const TrackerTopology ttopo 
)

Definition at line 223 of file HitPattern.cc.

References TrackingRecHit::geographicalId(), and TrackingRecHit::getType().

Referenced by appendHit(), reco::TrackBase::appendHitPattern(), appendHits(), appendMuonHit(), appendTrackerHit(), and fillNewHitPatternWithOldHitPattern_v12().

223  {
224  return appendHit(hit.geographicalId(), hit.getType(), ttopo);
225 }
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:223
Type getType() const
DetId geographicalId() const
bool HitPattern::appendHit ( const TrackingRecHitRef ref,
const TrackerTopology ttopo 
)

Definition at line 83 of file HitPattern.cc.

References appendHit().

83  {
84  return appendHit(*ref, ttopo);
85 }
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:223
bool HitPattern::appendHit ( const DetId id,
TrackingRecHit::Type  hitType,
const TrackerTopology ttopo 
)

Definition at line 227 of file HitPattern.cc.

References appendHit(), encode(), hitCount, MaxHits, and UNLIKELY.

227  {
228  //if HitPattern is full, journey ends no matter what.
230  return false;
231  }
232 
233  uint16_t pattern = HitPattern::encode(id, hitType, ttopo);
234 
235  return appendHit(pattern, hitType);
236 }
static const unsigned short MaxHits
Definition: HitPattern.h:159
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:223
uint8_t hitCount
Definition: HitPattern.h:497
#define UNLIKELY(x)
Definition: Likely.h:21
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:87
bool HitPattern::appendHit ( const uint16_t  pattern,
TrackingRecHit::Type  hitType 
)

Definition at line 238 of file HitPattern.cc.

References TrackingRecHit::bad, beginInner, beginOuter, beginTrackHits, endInner, endOuter, endTrackHits, Exception, hitCount, TrackingRecHit::inactive, TrackingRecHit::inactive_inner, TrackingRecHit::inactive_outer, insertExpectedInnerHit(), insertExpectedOuterHit(), insertTrackHit(), MaxHits, TrackingRecHit::missing, TrackingRecHit::missing_inner, TrackingRecHit::missing_outer, UNLIKELY, and TrackingRecHit::valid.

238  {
239  //if HitPattern is full, journey ends no matter what.
241  return false;
242  }
243 
244  switch (hitType) {
248  case TrackingRecHit::bad:
249  // hitCount != endT => we are not inserting T type of hits but of T'
250  // 0 != beginT || 0 != endT => we already have hits of T type
251  // so we already have hits of T in the vector and we don't want to
252  // mess them with T' hits.
253  if UNLIKELY (((hitCount != endTrackHits) && (0 != beginTrackHits || 0 != endTrackHits))) {
254  cms::Exception("HitPattern") << "TRACK_HITS"
255  << " were stored on this object before hits of some other category were inserted "
256  << "but hits of the same category should be inserted in a row. "
257  << "Please rework the code so it inserts all "
258  << "TRACK_HITS"
259  << " in a row.";
260  return false;
261  }
262  return insertTrackHit(pattern);
263  break;
266  if UNLIKELY (((hitCount != endInner) && (0 != beginInner || 0 != endInner))) {
267  cms::Exception("HitPattern") << "MISSING_INNER_HITS"
268  << " were stored on this object before hits of some other category were inserted "
269  << "but hits of the same category should be inserted in a row. "
270  << "Please rework the code so it inserts all "
271  << "MISSING_INNER_HITS"
272  << " in a row.";
273  return false;
274  }
275  return insertExpectedInnerHit(pattern);
276  break;
279  if UNLIKELY (((hitCount != endOuter) && (0 != beginOuter || 0 != endOuter))) {
280  cms::Exception("HitPattern") << "MISSING_OUTER_HITS"
281  << " were stored on this object before hits of some other category were inserted "
282  << "but hits of the same category should be inserted in a row. "
283  << "Please rework the code so it inserts all "
284  << "MISSING_OUTER_HITS"
285  << " in a row.";
286  return false;
287  }
288  return insertExpectedOuterHit(pattern);
289  break;
290  }
291 
292  return false;
293 }
static const unsigned short MaxHits
Definition: HitPattern.h:159
bool insertExpectedOuterHit(const uint16_t pattern)
Definition: HitPattern.cc:1018
uint8_t endInner
Definition: HitPattern.h:502
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t hitCount
Definition: HitPattern.h:497
uint8_t beginOuter
Definition: HitPattern.h:503
bool insertExpectedInnerHit(const uint16_t pattern)
Definition: HitPattern.cc:1006
bool insertTrackHit(const uint16_t pattern)
Definition: HitPattern.cc:988
#define UNLIKELY(x)
Definition: Likely.h:21
uint8_t endOuter
Definition: HitPattern.h:504
template<typename I >
bool reco::HitPattern::appendHits ( const I &  begin,
const I &  end,
const TrackerTopology ttopo 
)

Definition at line 528 of file HitPattern.h.

References appendHit(), dataset::end, Exhume::I, and UNLIKELY.

Referenced by reco::TrackBase::appendHits().

528  {
529  for (I hit = begin; hit != end; hit++) {
530  if UNLIKELY ((!appendHit(*hit, ttopo))) {
531  return false;
532  }
533  }
534  return true;
535  }
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:223
const std::complex< double > I
Definition: I.h:8
string end
Definition: dataset.py:937
#define UNLIKELY(x)
Definition: Likely.h:21
bool HitPattern::appendMuonHit ( const DetId id,
TrackingRecHit::Type  hitType 
)

This is meant to be used only in cases where the an already-packed hit information is re-interpreted in terms of HitPattern (i.e. the IO rule for reading old versions of HitPattern)

Definition at line 299 of file HitPattern.cc.

References appendHit(), encode(), Exception, hitCount, MaxHits, DetId::Muon, MUON_HIT, and UNLIKELY.

Referenced by reco::TrackBase::appendMuonHitPattern().

299  {
300  //if HitPattern is full, journey ends no matter what.
302  return false;
303  }
304 
305  if UNLIKELY (id.det() != DetId::Muon) {
306  throw cms::Exception("HitPattern")
307  << "Got DetId from det " << id.det()
308  << " that is not Muon in appendMuonHit(), which should only be used for muon hits in the HitPattern IO rule";
309  }
310 
311  uint16_t subdet = id.subdetId();
312  return appendHit(encode(MUON_HIT, subdet, encodeMuonLayer(id), 0, hitType), hitType);
313 }
static const unsigned short MaxHits
Definition: HitPattern.h:159
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:223
uint8_t hitCount
Definition: HitPattern.h:497
#define UNLIKELY(x)
Definition: Likely.h:21
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:87
bool HitPattern::appendTrackerHit ( uint16_t  subdet,
uint16_t  layer,
uint16_t  stereo,
TrackingRecHit::Type  hitType 
)

This is meant to be used only in cases where the an already-packed hit information is re-interpreted in terms of HitPattern (i.e. MiniAOD PackedCandidate, and the IO rule for reading old versions of HitPattern)

Definition at line 295 of file HitPattern.cc.

References appendHit(), encode(), and TRACKER_HIT.

Referenced by reco::TrackBase::appendTrackerHitPattern().

295  {
296  return appendHit(encode(TRACKER_HIT, subdet, layer, stereo, hitType), hitType);
297 }
constexpr std::array< uint8_t, layerIndexSize > layer
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:223
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:87
bool reco::HitPattern::badHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 802 of file HitPattern.h.

References BAD, and getHitType().

Referenced by numberOfBadHits().

802 { return getHitType(pattern) == HitPattern::BAD; }
static uint32_t getHitType(uint16_t pattern)
Definition: HitPattern.h:747
template<typename F >
void reco::HitPattern::call ( HitCategory  category,
filterType  typeFilter,
F  f 
) const
private

Definition at line 558 of file HitPattern.h.

References validate-o2o-wbm::f, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), mps_fire::i, and sistrip::SpyUtilities::range().

Referenced by reco::PatternSet< N >::fill().

558  {
559  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
560  for (int i = range.first; i < range.second; i++) {
561  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
562  // f() return false to ask to stop looping
563  if (typeFilter(pattern) && !f(pattern)) {
564  break;
565  }
566  }
567  }
static const char category[]
const uint16_t range(const Frame &aFrame)
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
void HitPattern::clear ( void  )

Definition at line 71 of file HitPattern.cc.

References ARRAY_LENGTH, beginInner, beginOuter, beginTrackHits, EMPTY_PATTERN, endInner, endOuter, endTrackHits, hitCount, and hitPattern.

Referenced by fillNewHitPatternWithOldHitPattern_v12(), reco::TrackBase::resetHitPattern(), and BeautifulSoup.Tag::setString().

71  {
72  this->hitCount = 0;
73  this->beginTrackHits = 0;
74  this->endTrackHits = 0;
75  this->beginInner = 0;
76  this->endInner = 0;
77  this->beginOuter = 0;
78  this->endOuter = 0;
79 
80  memset(this->hitPattern, EMPTY_PATTERN, sizeof(uint16_t) * HitPattern::ARRAY_LENGTH);
81 }
static const unsigned short ARRAY_LENGTH
Definition: HitPattern.h:157
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
uint8_t endInner
Definition: HitPattern.h:502
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:496
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t hitCount
Definition: HitPattern.h:497
uint8_t beginOuter
Definition: HitPattern.h:503
uint8_t endOuter
Definition: HitPattern.h:504
int reco::HitPattern::countHits ( HitCategory  category,
filterType  filter 
) const
inlineprivate

Definition at line 546 of file HitPattern.h.

References submitPVResolutionJobs::count, alcazmumu_cfi::filter, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), mps_fire::i, and sistrip::SpyUtilities::range().

Referenced by numberOfAllTrackerHits(), numberOfBadHits(), numberOfInactiveHits(), numberOfLostHits(), numberOfMuonHits(), numberOfTimingHits(), and numberOfValidHits().

546  {
547  int count = 0;
548  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
549  for (int i = range.first; i < range.second; ++i) {
551  ++count;
552  }
553  }
554  return count;
555  }
static const char category[]
const uint16_t range(const Frame &aFrame)
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
int reco::HitPattern::countTypedHits ( HitCategory  category,
filterType  typeFilter,
filterType  filter 
) const
inlineprivate

Definition at line 569 of file HitPattern.h.

References submitPVResolutionJobs::count, alcazmumu_cfi::filter, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), mps_fire::i, and sistrip::SpyUtilities::range().

Referenced by numberOfBadMuonCSCHits(), numberOfBadMuonDTHits(), numberOfBadMuonGEMHits(), numberOfBadMuonHits(), numberOfBadMuonME0Hits(), numberOfBadMuonRPCHits(), numberOfInactiveTrackerHits(), numberOfLostMuonCSCHits(), numberOfLostMuonDTHits(), numberOfLostMuonGEMHits(), numberOfLostMuonHits(), numberOfLostMuonME0Hits(), numberOfLostMuonRPCHits(), numberOfLostPixelBarrelHits(), numberOfLostPixelEndcapHits(), numberOfLostPixelHits(), numberOfLostStripHits(), numberOfLostStripTECHits(), numberOfLostStripTIBHits(), numberOfLostStripTIDHits(), numberOfLostStripTOBHits(), numberOfLostTimingBTLHits(), numberOfLostTimingETLHits(), numberOfLostTimingHits(), numberOfLostTrackerHits(), numberOfValidMuonCSCHits(), numberOfValidMuonDTHits(), numberOfValidMuonGEMHits(), numberOfValidMuonHits(), numberOfValidMuonME0Hits(), numberOfValidMuonRPCHits(), numberOfValidPixelBarrelHits(), numberOfValidPixelEndcapHits(), numberOfValidPixelHits(), numberOfValidStripHits(), numberOfValidStripTECHits(), numberOfValidStripTIBHits(), numberOfValidStripTIDHits(), numberOfValidStripTOBHits(), numberOfValidTimingBTLHits(), numberOfValidTimingETLHits(), numberOfValidTimingHits(), and numberOfValidTrackerHits().

569  {
570  int count = 0;
571  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
572  for (int i = range.first; i < range.second; ++i) {
573  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
574  if (typeFilter(pattern) && filter(pattern)) {
575  ++count;
576  }
577  }
578  return count;
579  }
static const char category[]
const uint16_t range(const Frame &aFrame)
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
int reco::HitPattern::cscStationsWithAnyHits ( ) const
inline

Definition at line 1060 of file HitPattern.h.

References muonStations().

1060 { return muonStations(2, -1); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::cscStationsWithBadHits ( ) const
inline

Definition at line 1058 of file HitPattern.h.

References muonStations().

1058 { return muonStations(2, 3); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::cscStationsWithValidHits ( ) const
inline

Definition at line 1056 of file HitPattern.h.

References muonStations().

1056 { return muonStations(2, 0); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::dtStationsWithAnyHits ( ) const
inline

Definition at line 1054 of file HitPattern.h.

References muonStations().

1054 { return muonStations(1, -1); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::dtStationsWithBadHits ( ) const
inline

Definition at line 1052 of file HitPattern.h.

References muonStations().

1052 { return muonStations(1, 3); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::dtStationsWithValidHits ( ) const
inline

Definition at line 1050 of file HitPattern.h.

References muonStations().

1050 { return muonStations(1, 0); }
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
Definition: HitPattern.cc:899
uint16_t HitPattern::encode ( const TrackingRecHit hit,
const TrackerTopology ttopo 
)
staticprivate

Definition at line 87 of file HitPattern.cc.

References TrackingRecHit::geographicalId(), and TrackingRecHit::getType().

Referenced by appendHit(), appendMuonHit(), appendTrackerHit(), and encode().

87  {
88  return encode(hit.geographicalId(), hit.getType(), ttopo);
89 }
Type getType() const
DetId geographicalId() const
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:87
uint16_t HitPattern::encode ( const DetId id,
TrackingRecHit::Type  hitType,
const TrackerTopology ttopo 
)
staticprivate

Definition at line 161 of file HitPattern.cc.

References encode(), FastTime, DetId::Forward, isStereo(), TrackerTopology::layer(), MTD_HIT, DetId::Muon, MUON_HIT, DetId::Tracker, and TRACKER_HIT.

161  {
162  uint16_t detid = id.det();
163  uint16_t subdet = id.subdetId();
164 
165  // adding layer/disk/wheel bits
166  uint16_t layer = 0x0;
167  if (detid == DetId::Tracker) {
168  layer = ttopo.layer(id);
169  } else if (detid == DetId::Muon) {
170  layer = encodeMuonLayer(id);
171  } else if (detid == DetId::Forward && subdet == FastTime) {
172  layer = encodeTimingLayer(id);
173  }
174 
175  // adding mono/stereo bit
176  uint16_t side = 0x0;
177  if (detid == DetId::Tracker) {
178  side = isStereo(id, ttopo);
179  } else if (detid == DetId::Muon || (detid == DetId::Forward && subdet == FastTime)) {
180  side = 0x0;
181  }
182 
183  // juggle the detid around to deal with the fact the bitwidth is larger
184  // DetId::Muon is 2 and DetId::Forward is 6, must map to 0 and 2 respectively
185  if (detid == DetId::Tracker) {
186  detid = TRACKER_HIT;
187  } else if (detid == DetId::Muon) {
188  detid = MUON_HIT; // DetId::Muon is 2 and needs to be reordered to match old encoding where it got masked
189  } else if (detid == DetId::Forward && subdet == FastTime) {
190  detid = MTD_HIT; // since DetId::Forward is some other number, reorder it here
191  }
192 
193  return encode(detid, subdet, layer, side, hitType);
194 }
static uint16_t isStereo(DetId i, const TrackerTopology &ttopo)
Definition: HitPattern.cc:877
constexpr std::array< uint8_t, layerIndexSize > layer
unsigned int layer(const DetId &id) const
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:87
uint16_t HitPattern::encode ( uint16_t  det,
uint16_t  subdet,
uint16_t  layer,
uint16_t  side,
TrackingRecHit::Type  hitType 
)
staticprivate

Definition at line 196 of file HitPattern.cc.

References EMPTY_PATTERN, HitTypeMask, HitTypeOffset, TrackingRecHit::inactive, TrackingRecHit::inactive_inner, TrackingRecHit::inactive_outer, LayerMask, LayerOffset, TrackingRecHit::missing, TrackingRecHit::missing_inner, TrackingRecHit::missing_outer, SideMask, SideOffset, SubDetectorMask, SubDetectorOffset, SubstrMask, and SubstrOffset.

196  {
197  uint16_t pattern = HitPattern::EMPTY_PATTERN;
198 
199  // adding tracker/muon/mtd detector bits
200  pattern |= (det & SubDetectorMask) << SubDetectorOffset;
201 
202  // adding substructure (PXB, PXF, TIB, TID, TOB, TEC, or DT, CSC, RPC,GEM, or BTL, ETL) bits
203  pattern |= (subdet & SubstrMask) << SubstrOffset;
204 
205  // adding layer/disk/wheel/ring/modType bits
206  pattern |= (layer & LayerMask) << LayerOffset;
207 
208  // adding mono/stereo bit
209  pattern |= (side & SideMask) << SideOffset;
210 
211  TrackingRecHit::Type patternHitType =
216  : hitType);
217 
218  pattern |= (patternHitType & HitTypeMask) << HitTypeOffset;
219 
220  return pattern;
221 }
static const unsigned short SideOffset
Definition: HitPattern.h:450
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short SubstrOffset
Definition: HitPattern.h:458
static const unsigned short HitTypeMask
Definition: HitPattern.h:447
constexpr std::array< uint8_t, layerIndexSize > layer
static const unsigned short SubDetectorMask
Definition: HitPattern.h:463
static const unsigned short HitTypeOffset
Definition: HitPattern.h:446
static const unsigned short SideMask
Definition: HitPattern.h:451
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:462
static const unsigned short SubstrMask
Definition: HitPattern.h:459
static const unsigned short LayerOffset
Definition: HitPattern.h:454
static const unsigned short LayerMask
Definition: HitPattern.h:455
bool reco::HitPattern::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 
)
static

Definition at line 60 of file rootio_HitPattern.cc.

References appendHit(), beginInner, beginOuter, beginTrackHits, clear(), endInner, endOuter, endTrackHits, hitCount, mps_fire::i, and runTheMatrix::ret.

68  {
69  newObj->clear();
70  bool ret = true;
71  for (int i = 0; i < MaxHitsV12; i++) {
72  uint16_t pattern = getHitFromOldHitPattern(oldHitPattern, i);
73  if (pattern == 0) {
74  break;
75  }
76  if (!newObj->appendHit(pattern, hitTypeFromOldHitPattern(pattern))) {
77  ret = false;
78  break;
79  }
80  }
81  newObj->hitCount = hitCount;
83  newObj->endTrackHits = endTrackHits;
84  newObj->beginInner = beginInner;
85  newObj->endInner = endInner;
86  newObj->beginOuter = beginOuter;
87  newObj->endOuter = endOuter;
88  return ret;
89 }
tuple ret
prodAgent to be discontinued
uint8_t endInner
Definition: HitPattern.h:502
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:223
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t hitCount
Definition: HitPattern.h:497
uint8_t beginOuter
Definition: HitPattern.h:503
uint8_t endOuter
Definition: HitPattern.h:504
int reco::HitPattern::gemStationsWithAnyHits ( ) const
inline

Definition at line 1072 of file HitPattern.h.

References muonStations().

1072 { return muonStations(4, -1); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::gemStationsWithBadHits ( ) const
inline

Definition at line 1070 of file HitPattern.h.

References muonStations().

1070 { return muonStations(4, 3); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::gemStationsWithValidHits ( ) const
inline

Definition at line 1068 of file HitPattern.h.

References muonStations().

1068 { return muonStations(4, 0); }
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
Definition: HitPattern.cc:899
uint16_t reco::HitPattern::getBTLModType ( uint16_t  pattern)
inlinestatic

BTL Module type: 1,2,3. Only valid for BTL patterns of course.

MTD.

Definition at line 785 of file HitPattern.h.

References getSubSubStructure().

785 { return getSubSubStructure(pattern); }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
std::pair< uint8_t, uint8_t > reco::HitPattern::getCategoryIndexRange ( HitCategory  category) const
inlineprivate

Definition at line 512 of file HitPattern.h.

References beginInner, beginOuter, beginTrackHits, endInner, endOuter, endTrackHits, MISSING_INNER_HITS, MISSING_OUTER_HITS, and TRACK_HITS.

Referenced by call(), countHits(), countTypedHits(), getHitPattern(), getTrackerLayerCase(), getTrackerMonoStereo(), numberOfAllHits(), numberOfValidStripLayersWithMonoAndStereo(), pixelLayersWithMeasurement(), trackerLayersWithMeasurement(), and trackerLayersWithoutMeasurement().

512  {
513  switch (category) {
514  case TRACK_HITS:
515  return std::pair<uint8_t, uint8_t>(beginTrackHits, endTrackHits);
516  break;
517  case MISSING_INNER_HITS:
518  return std::pair<uint8_t, uint8_t>(beginInner, endInner);
519  break;
520  case MISSING_OUTER_HITS:
521  return std::pair<uint8_t, uint8_t>(beginOuter, endOuter);
522  break;
523  }
524  return std::pair<uint8_t, uint8_t>(-1, -1);
525  }
static const char category[]
uint8_t endInner
Definition: HitPattern.h:502
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t beginOuter
Definition: HitPattern.h:503
uint8_t endOuter
Definition: HitPattern.h:504
uint16_t reco::HitPattern::getCSCRing ( uint16_t  pattern)
inlinestatic

CSC ring (1-4). Only valid for muon CSC patterns, of course.

Definition at line 761 of file HitPattern.h.

References getSubSubStructure().

Referenced by printHitPattern().

761 { return (getSubSubStructure(pattern) & 3) + 1; }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
uint16_t reco::HitPattern::getDTSuperLayer ( uint16_t  pattern)
inlinestatic

DT superlayer (1-3). Where the "hit" was a DT segment, superlayer is 0. Only valid for muon DT patterns, of course.

Definition at line 759 of file HitPattern.h.

References getSubSubStructure().

Referenced by numberOfDTStationsWithBothViews(), numberOfDTStationsWithRPhiView(), numberOfDTStationsWithRZView(), and printHitPattern().

759 { return (getSubSubStructure(pattern) & 3); }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
uint16_t reco::HitPattern::getETLRing ( uint16_t  pattern)
inlinestatic

ETL Ring: 1-12. Only valid for ETL patterns of course.

Definition at line 787 of file HitPattern.h.

References getSubSubStructure().

787 { return getSubSubStructure(pattern); }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
uint16_t reco::HitPattern::getGEMLayer ( uint16_t  pattern)
inlinestatic

GEM layer: 1-6 for station 0, 1-2 for stations 1 and 2. Only valid for muon GEM patterns, of course.

Definition at line 789 of file HitPattern.h.

References getSubSubStructure().

Referenced by printHitPattern().

789  {
790  uint16_t sss = getSubSubStructure(pattern);
791  if (sss & 0b1000)
792  return (sss & 0b0111) + 1;
793  return (sss & 0b11) + 1;
794  }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
uint16_t reco::HitPattern::getGEMStation ( uint16_t  pattern)
inlinestatic

GEM station: 1,2. Only valid for muon GEM patterns, of course.

Definition at line 777 of file HitPattern.h.

References getSubSubStructure().

Referenced by getMuonStation(), and printHitPattern().

777  {
778  uint16_t sss = getSubSubStructure(pattern);
779  if (sss & 0b1000)
780  return 0;
781  return (sss >> 2) + 1;
782  }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
uint16_t reco::HitPattern::getHitPattern ( HitCategory  category,
int  position 
) const
inline

Definition at line 537 of file HitPattern.h.

References EMPTY_PATTERN, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), sistrip::SpyUtilities::range(), and UNLIKELY.

Referenced by PFCheckHitPattern::analyze(), pat::SoftMuonMvaEstimator::computeMva(), reco::tau::countHits(), tadqm::TrackAnalyzer::fillHistosForEfficiencyFromHitPatter(), DeepBoostedJetTagInfoProducer::fillParticleFeatures(), OniaPhotonConversionProducer::foundCompatibleInnerHits(), egamma::getClosestCtfToGsf(), PFElecTkProducer::isInnerMost(), CheckHitPattern::operator()(), FWTrackResidualDetailView::prepareData(), CheckHitPattern::print(), PFCheckHitPattern::print(), print(), printHitPattern(), pat::PATPackedCandidateProducer::produce(), FWConvTrackHitsDetailView::setTextInfo(), egamma::sharedDets(), egamma::sharedHits(), and QcdUeDQM::trackSelection().

537  {
538  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
539  if UNLIKELY ((position < 0 || (position + range.first) >= range.second)) {
541  }
542 
543  return getHitPatternByAbsoluteIndex(range.first + position);
544  }
static const char category[]
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
const uint16_t range(const Frame &aFrame)
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static int position[264][3]
Definition: ReadPGInfo.cc:289
#define UNLIKELY(x)
Definition: Likely.h:21
uint16_t HitPattern::getHitPatternByAbsoluteIndex ( int  position) const
private

Definition at line 315 of file HitPattern.cc.

References EMPTY_PATTERN, HIT_LENGTH, hitCount, hitPattern, and UNLIKELY.

Referenced by call(), countHits(), countTypedHits(), getHitPattern(), getTrackerLayerCase(), getTrackerMonoStereo(), hasValidHitInPixelLayer(), innermostMuonStationWithHits(), muonStations(), numberOfDTStationsWithBothViews(), numberOfDTStationsWithRPhiView(), numberOfDTStationsWithRZView(), numberOfValidStripLayersWithMonoAndStereo(), outermostMuonStationWithHits(), pixelLayersWithMeasurement(), trackerLayersWithMeasurement(), and trackerLayersWithoutMeasurement().

315  {
316  if UNLIKELY ((position < 0 || position >= hitCount)) {
318  }
319  /*
320  Note: you are not taking a consecutive sequence of HIT_LENGTH bits starting from position * HIT_LENGTH
321  as the bit order in the words are reversed.
322  e.g. if position = 0 you take the lowest 12 bits of the first word.
323 
324  I hope this can clarify what is the memory layout of such thing
325 
326  straight 01234567890123456789012345678901 | 23456789012345678901234567890123 | 4567
327  (global) 0 1 2 3 | 3 4 5 6 | 6
328  words [--------------0---------------] | [--------------1---------------] | [---
329  word 01234567890123456789012345678901 | 01234567890123456789012345678901 | 0123
330  (str) 0 1 2 3 | 0 1 2 3 | 0
331  [--------------0---------------] | [--------------1---------------] | [---
332  word 10987654321098765432109876543210 | 10987654321098765432109876543210 | 1098
333  (rev) 32 21 10 0 | 32 21 10 0 | 32
334  reverse 10987654321098765432109876543210 | 32109876543210987654321098765432 | 5432
335  32 21 10 0 | 6 65 54 43 3 9
336 
337  ugly enough, but it's not my fault, I was not even in CMS at that time [gpetrucc]
338  */
339 
340  uint16_t bitEndOffset = (position + 1) * HIT_LENGTH;
341  uint8_t secondWord = (bitEndOffset >> 4);
342  uint8_t secondWordBits = bitEndOffset & (16 - 1); // that is, bitEndOffset % 16
343  if (secondWordBits >= HIT_LENGTH) { // full block is in this word
344  uint8_t lowBitsToTrash = secondWordBits - HIT_LENGTH;
345  uint16_t myResult = (hitPattern[secondWord] >> lowBitsToTrash) & ((1 << HIT_LENGTH) - 1);
346  return myResult;
347  } else {
348  uint8_t firstWordBits = HIT_LENGTH - secondWordBits;
349  uint16_t firstWordBlock = hitPattern[secondWord - 1] >> (16 - firstWordBits);
350  if (secondWordBits == 0)
351  return firstWordBlock;
352  uint16_t secondWordBlock = hitPattern[secondWord] & ((1 << secondWordBits) - 1);
353  uint16_t myResult = firstWordBlock + (secondWordBlock << firstWordBits);
354  return myResult;
355  }
356 }
static const unsigned short HIT_LENGTH
Definition: HitPattern.h:158
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:496
uint8_t hitCount
Definition: HitPattern.h:497
static int position[264][3]
Definition: ReadPGInfo.cc:289
#define UNLIKELY(x)
Definition: Likely.h:21
uint32_t reco::HitPattern::getHitType ( uint16_t  pattern)
inlinestatic

Definition at line 747 of file HitPattern.h.

References EMPTY_PATTERN, HitTypeMask, HitTypeOffset, NULL_RETURN, and UNLIKELY.

Referenced by badHitFilter(), reco::tau::countHits(), inactiveHitFilter(), innermostMuonStationWithHits(), missingHitFilter(), muonStations(), outermostMuonStationWithHits(), CheckHitPattern::print(), PFCheckHitPattern::print(), printHitPattern(), and validHitFilter().

747  {
748  if UNLIKELY (pattern == HitPattern::EMPTY_PATTERN) {
749  return NULL_RETURN;
750  }
751 
752  return ((pattern >> HitTypeOffset) & HitTypeMask);
753  }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short HitTypeMask
Definition: HitPattern.h:447
static const unsigned short HitTypeOffset
Definition: HitPattern.h:446
#define UNLIKELY(x)
Definition: Likely.h:21
uint32_t reco::HitPattern::getLayer ( uint16_t  pattern)
inlinestatic
uint16_t reco::HitPattern::getMuonStation ( uint16_t  pattern)
inlinestatic

Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon, of course.

Definition at line 755 of file HitPattern.h.

References getGEMStation(), getSubSubStructure(), and muonGEMHitFilter().

Referenced by pat::SoftMuonMvaEstimator::computeMva(), reco::tau::countHits(), innermostMuonStationWithHits(), muonStations(), numberOfDTStationsWithBothViews(), numberOfDTStationsWithRPhiView(), numberOfDTStationsWithRZView(), outermostMuonStationWithHits(), and printHitPattern().

755  {
756  return muonGEMHitFilter(pattern) ? getGEMStation(pattern) : (getSubSubStructure(pattern) >> 2) + 1;
757  }
static bool muonGEMHitFilter(uint16_t pattern)
Definition: HitPattern.h:663
static uint16_t getGEMStation(uint16_t pattern)
GEM station: 1,2. Only valid for muon GEM patterns, of course.
Definition: HitPattern.h:777
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
uint16_t reco::HitPattern::getRPCLayer ( uint16_t  pattern)
inlinestatic

RPC layer: for station 1 and 2, layer = 1(inner) or 2(outer); for station 3, 4 layer is always 0. Only valid for muon RPC patterns, of course.

Definition at line 763 of file HitPattern.h.

References getSubSubStructure(), LIKELY, and edm_modernize_messagelogger::stat.

Referenced by printHitPattern().

763  {
764  uint16_t subSubStructure = getSubSubStructure(pattern);
765  uint16_t stat = subSubStructure >> 2;
766 
767  if LIKELY (stat <= 1) {
768  return ((subSubStructure >> 1) & 1) + 1;
769  }
770 
771  return 0;
772  }
#define LIKELY(x)
Definition: Likely.h:20
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
uint16_t reco::HitPattern::getRPCregion ( uint16_t  pattern)
inlinestatic

RPC region: 0 = barrel, 1 = endcap. Only valid for muon RPC patterns, of course.

Definition at line 774 of file HitPattern.h.

References getSubSubStructure().

Referenced by printHitPattern().

774 { return getSubSubStructure(pattern) & 1; }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
uint32_t reco::HitPattern::getSide ( uint16_t  pattern)
inlinestatic

Definition at line 739 of file HitPattern.h.

References EMPTY_PATTERN, NULL_RETURN, SideMask, SideOffset, and UNLIKELY.

Referenced by getTrackerMonoStereo(), and numberOfValidStripLayersWithMonoAndStereo().

739  {
740  if UNLIKELY (pattern == HitPattern::EMPTY_PATTERN) {
741  return NULL_RETURN;
742  }
743 
744  return (pattern >> SideOffset) & SideMask;
745  }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
static const unsigned short SideOffset
Definition: HitPattern.h:450
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short SideMask
Definition: HitPattern.h:451
#define UNLIKELY(x)
Definition: Likely.h:21
uint32_t reco::HitPattern::getSubDetector ( uint16_t  pattern)
inlinestatic

Definition at line 731 of file HitPattern.h.

References EMPTY_PATTERN, NULL_RETURN, SubDetectorMask, SubDetectorOffset, and UNLIKELY.

731  {
732  if UNLIKELY (pattern == HitPattern::EMPTY_PATTERN) {
733  return NULL_RETURN;
734  }
735 
736  return ((pattern >> SubDetectorOffset) & SubDetectorMask);
737  }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short SubDetectorMask
Definition: HitPattern.h:463
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:462
#define UNLIKELY(x)
Definition: Likely.h:21
uint32_t reco::HitPattern::getSubStructure ( uint16_t  pattern)
inlinestatic
uint32_t reco::HitPattern::getSubSubStructure ( uint16_t  pattern)
inlinestatic

Definition at line 723 of file HitPattern.h.

References EMPTY_PATTERN, LayerMask, LayerOffset, NULL_RETURN, and UNLIKELY.

Referenced by getBTLModType(), getCSCRing(), getDTSuperLayer(), getETLRing(), getGEMLayer(), getGEMStation(), getLayer(), getMuonStation(), getRPCLayer(), getRPCregion(), and numberOfValidStripLayersWithMonoAndStereo().

723  {
724  if UNLIKELY (pattern == HitPattern::EMPTY_PATTERN) {
725  return NULL_RETURN;
726  }
727 
728  return ((pattern >> LayerOffset) & LayerMask);
729  }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short LayerOffset
Definition: HitPattern.h:454
#define UNLIKELY(x)
Definition: Likely.h:21
static const unsigned short LayerMask
Definition: HitPattern.h:455
uint32_t HitPattern::getTrackerLayerCase ( HitCategory  category,
uint16_t  substr,
uint16_t  layer 
) const

Definition at line 451 of file HitPattern.cc.

References hcaldqm::constants::BAD, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerMask, LayerOffset, NULL_RETURN, sistrip::SpyUtilities::range(), SubDetectorMask, SubDetectorOffset, SubstrMask, and SubstrOffset.

Referenced by pixelBarrelLayersNull(), pixelBarrelLayersTotallyOffOrBad(), pixelBarrelLayersWithMeasurement(), pixelBarrelLayersWithoutMeasurement(), pixelEndcapLayersNull(), pixelEndcapLayersTotallyOffOrBad(), pixelEndcapLayersWithMeasurement(), pixelEndcapLayersWithoutMeasurement(), stripTECLayersNull(), stripTECLayersTotallyOffOrBad(), stripTECLayersWithMeasurement(), stripTECLayersWithoutMeasurement(), stripTIBLayersNull(), stripTIBLayersTotallyOffOrBad(), stripTIBLayersWithMeasurement(), stripTIBLayersWithoutMeasurement(), stripTIDLayersNull(), stripTIDLayersTotallyOffOrBad(), stripTIDLayersWithMeasurement(), stripTIDLayersWithoutMeasurement(), stripTOBLayersNull(), stripTOBLayersTotallyOffOrBad(), stripTOBLayersWithMeasurement(), and stripTOBLayersWithoutMeasurement().

451  {
452  uint16_t tk_substr_layer =
453  (0x1 << SubDetectorOffset) + ((substr & SubstrMask) << SubstrOffset) + ((layer & LayerMask) << LayerOffset);
454 
455  uint16_t mask = (SubDetectorMask << SubDetectorOffset) + (SubstrMask << SubstrOffset) + (LayerMask << LayerOffset);
456 
457  // layer case 0: valid + (missing, off, bad) ==> with measurement
458  // layer case 1: missing + (off, bad) ==> without measurement
459  // layer case 2: off, bad ==> totally off or bad, cannot say much
460  // layer case NULL_RETURN: track outside acceptance or in gap ==> null
461  uint32_t layerCase = NULL_RETURN;
462  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
463  for (int i = range.first; i < range.second; ++i) {
464  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
465  if ((pattern & mask) == tk_substr_layer) {
466  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
467  if (hitType < layerCase) {
468  // BAD and INACTIVE as the same type (as INACTIVE)
469  layerCase = (hitType == HIT_TYPE::BAD ? (uint32_t)HIT_TYPE::INACTIVE : hitType);
470  if (layerCase == HIT_TYPE::VALID) {
471  break;
472  }
473  }
474  }
475  }
476  return layerCase;
477 }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
static const char category[]
static const unsigned short SubstrOffset
Definition: HitPattern.h:458
static const unsigned short HitTypeMask
Definition: HitPattern.h:447
constexpr std::array< uint8_t, layerIndexSize > layer
const uint16_t range(const Frame &aFrame)
static const unsigned short SubDetectorMask
Definition: HitPattern.h:463
static const unsigned short HitTypeOffset
Definition: HitPattern.h:446
double const BAD
Definition: Constants.h:15
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:462
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static const unsigned short SubstrMask
Definition: HitPattern.h:459
static const unsigned short LayerOffset
Definition: HitPattern.h:454
static const unsigned short LayerMask
Definition: HitPattern.h:455
uint16_t HitPattern::getTrackerMonoStereo ( HitCategory  category,
uint16_t  substr,
uint16_t  layer 
) const

Definition at line 479 of file HitPattern.cc.

References getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), getSide(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerMask, LayerOffset, MONO, sistrip::SpyUtilities::range(), STEREO, SubDetectorMask, SubDetectorOffset, SubstrMask, and SubstrOffset.

Referenced by OniaPhotonConversionProducer::foundCompatibleInnerHits().

479  {
480  uint16_t tk_substr_layer =
481  (0x1 << SubDetectorOffset) + ((substr & SubstrMask) << SubstrOffset) + ((layer & LayerMask) << LayerOffset);
482  uint16_t mask = (SubDetectorMask << SubDetectorOffset) + (SubstrMask << SubstrOffset) + (LayerMask << LayerOffset);
483 
484  // 0: neither a valid mono nor a valid stereo hit
485  // MONO: valid mono hit
486  // STEREO: valid stereo hit
487  // MONO | STEREO: both
488  uint16_t monoStereo = 0x0;
489  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
490  for (int i = range.first; i < range.second; ++i) {
491  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
492  if ((pattern & mask) == tk_substr_layer) {
493  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
494  if (hitType == HIT_TYPE::VALID) {
495  switch (getSide(pattern)) {
496  case 0: // mono
497  monoStereo |= MONO;
498  break;
499  case 1: // stereo
500  monoStereo |= STEREO;
501  break;
502  }
503  }
504 
505  if (monoStereo == (MONO | STEREO)) {
506  break;
507  }
508  }
509  }
510  return monoStereo;
511 }
static const char category[]
static const unsigned short SubstrOffset
Definition: HitPattern.h:458
static const unsigned short HitTypeMask
Definition: HitPattern.h:447
constexpr std::array< uint8_t, layerIndexSize > layer
const uint16_t range(const Frame &aFrame)
static const unsigned short SubDetectorMask
Definition: HitPattern.h:463
static const unsigned short HitTypeOffset
Definition: HitPattern.h:446
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:462
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static uint32_t getSide(uint16_t pattern)
Definition: HitPattern.h:739
static const unsigned short SubstrMask
Definition: HitPattern.h:459
static const unsigned short LayerOffset
Definition: HitPattern.h:454
static const unsigned short LayerMask
Definition: HitPattern.h:455
bool HitPattern::hasValidHitInPixelLayer ( enum PixelSubdetector::SubDetector  det,
uint16_t  layer 
) const

Definition at line 358 of file HitPattern.cc.

References beginTrackHits, endTrackHits, getHitPatternByAbsoluteIndex(), getLayer(), mps_fire::i, phase1PixelTopology::layer, pixelBarrelHitFilter(), pixelEndcapHitFilter(), pixelHitFilter(), and validHitFilter().

Referenced by PackedCandidateTrackValidator::analyze(), DeepBoostedJetTagInfoProducer::fillParticleFeatures(), TrackClassFilter::operator()(), and pat::PATPackedCandidateProducer::produce().

358  {
359  for (int i = beginTrackHits; i < endTrackHits; ++i) {
360  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
361  bool pixelHitFilter = ((det == 1 && pixelBarrelHitFilter(pattern)) || (det == 2 && pixelEndcapHitFilter(pattern)));
362  if (pixelHitFilter && (getLayer(pattern) == layer) && validHitFilter(pattern)) {
363  return true;
364  }
365  }
366  return false;
367 }
static uint32_t getLayer(uint16_t pattern)
Definition: HitPattern.h:721
static bool pixelHitFilter(uint16_t pattern)
Definition: HitPattern.h:581
static bool pixelBarrelHitFilter(uint16_t pattern)
Definition: HitPattern.h:590
constexpr std::array< uint8_t, layerIndexSize > layer
static bool pixelEndcapHitFilter(uint16_t pattern)
Definition: HitPattern.h:599
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
bool reco::HitPattern::inactiveHitFilter ( uint16_t  pattern)
inlinestatic
int reco::HitPattern::innermostMuonStationWithAnyHits ( ) const
inline

Definition at line 1084 of file HitPattern.h.

References innermostMuonStationWithHits().

1084 { return innermostMuonStationWithHits(-1); }
int innermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
Definition: HitPattern.cc:912
int reco::HitPattern::innermostMuonStationWithBadHits ( ) const
inline

Definition at line 1082 of file HitPattern.h.

References innermostMuonStationWithHits().

1082 { return innermostMuonStationWithHits(3); }
int innermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
Definition: HitPattern.cc:912
int HitPattern::innermostMuonStationWithHits ( int  hitType) const

hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all

Definition at line 912 of file HitPattern.cc.

References beginTrackHits, endTrackHits, getHitPatternByAbsoluteIndex(), getHitType(), getMuonStation(), mps_fire::i, muonHitFilter(), runTheMatrix::ret, and edm_modernize_messagelogger::stat.

Referenced by innermostMuonStationWithAnyHits(), innermostMuonStationWithBadHits(), and innermostMuonStationWithValidHits().

912  {
913  int ret = 0;
914  for (int i = beginTrackHits; i < endTrackHits; ++i) {
915  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
916  if (muonHitFilter(pattern) && (hitType == -1 || int(getHitType(pattern)) == hitType)) {
917  int stat = getMuonStation(pattern);
918  if (ret == 0 || stat < ret) {
919  ret = stat;
920  }
921  }
922  }
923 
924  return ret;
925 }
tuple ret
prodAgent to be discontinued
static uint32_t getHitType(uint16_t pattern)
Definition: HitPattern.h:747
uint8_t beginTrackHits
Definition: HitPattern.h:499
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
uint8_t endTrackHits
Definition: HitPattern.h:500
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static uint16_t getMuonStation(uint16_t pattern)
Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon...
Definition: HitPattern.h:755
int reco::HitPattern::innermostMuonStationWithValidHits ( ) const
inline

Definition at line 1080 of file HitPattern.h.

References innermostMuonStationWithHits().

1080 { return innermostMuonStationWithHits(0); }
int innermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
Definition: HitPattern.cc:912
bool HitPattern::insertExpectedInnerHit ( const uint16_t  pattern)
private

Definition at line 1006 of file HitPattern.cc.

References beginInner, endInner, hitCount, insertHit(), and UNLIKELY.

Referenced by appendHit().

1006  {
1007  if UNLIKELY ((0 == beginInner && 0 == endInner)) {
1008  beginInner = hitCount;
1009  endInner = beginInner;
1010  }
1011 
1012  insertHit(pattern);
1013  endInner++;
1014 
1015  return true;
1016 }
void insertHit(const uint16_t pattern)
Definition: HitPattern.cc:977
uint8_t endInner
Definition: HitPattern.h:502
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t hitCount
Definition: HitPattern.h:497
#define UNLIKELY(x)
Definition: Likely.h:21
bool HitPattern::insertExpectedOuterHit ( const uint16_t  pattern)
private

Definition at line 1018 of file HitPattern.cc.

References beginOuter, endOuter, hitCount, insertHit(), and UNLIKELY.

Referenced by appendHit().

1018  {
1019  if UNLIKELY ((0 == beginOuter && 0 == endOuter)) {
1020  beginOuter = hitCount;
1021  endOuter = beginOuter;
1022  }
1023 
1024  insertHit(pattern);
1025  endOuter++;
1026 
1027  return true;
1028 }
void insertHit(const uint16_t pattern)
Definition: HitPattern.cc:977
uint8_t hitCount
Definition: HitPattern.h:497
uint8_t beginOuter
Definition: HitPattern.h:503
#define UNLIKELY(x)
Definition: Likely.h:21
uint8_t endOuter
Definition: HitPattern.h:504
void HitPattern::insertHit ( const uint16_t  pattern)
private

Definition at line 977 of file HitPattern.cc.

References HIT_LENGTH, hitCount, hitPattern, mps_fire::i, and hltrates_dqm_sourceclient-live_cfg::offset.

Referenced by insertExpectedInnerHit(), insertExpectedOuterHit(), and insertTrackHit().

977  {
978  int offset = hitCount * HIT_LENGTH;
979  for (int i = 0; i < HIT_LENGTH; i++) {
980  int pos = offset + i;
981  uint16_t bit = (pattern >> i) & 0x1;
982  //equivalent to hitPattern[pos / 16] += bit << ((offset + i) % 16);
983  hitPattern[pos >> 4] += bit << ((offset + i) & (16 - 1));
984  }
985  hitCount++;
986 }
static const unsigned short HIT_LENGTH
Definition: HitPattern.h:158
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:496
uint8_t hitCount
Definition: HitPattern.h:497
bool HitPattern::insertTrackHit ( const uint16_t  pattern)
private

Definition at line 988 of file HitPattern.cc.

References beginTrackHits, endTrackHits, hitCount, insertHit(), and UNLIKELY.

Referenced by appendHit().

988  {
989  // if begin is 0, this is the first hit of this type being inserted, so
990  // we need to update begin so it points to the correct index, the first
991  // empty index.
992  // unlikely, because it will happen only when inserting
993  // the first hit of this type
994  if UNLIKELY ((0 == beginTrackHits && 0 == endTrackHits)) {
996  // before the first hit of this type is inserted, there are no hits
998  }
999 
1000  insertHit(pattern);
1001  endTrackHits++;
1002 
1003  return true;
1004 }
void insertHit(const uint16_t pattern)
Definition: HitPattern.cc:977
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t hitCount
Definition: HitPattern.h:497
#define UNLIKELY(x)
Definition: Likely.h:21
reco::HitPattern::int::test::TestHitPattern::test ( )
private
uint16_t HitPattern::isStereo ( DetId  i,
const TrackerTopology ttopo 
)
staticprivate

Definition at line 877 of file HitPattern.cc.

References DetId::det(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, DetId::subdetId(), StripSubdetector::TEC, TrackerTopology::tecIsStereo(), StripSubdetector::TIB, TrackerTopology::tibIsStereo(), StripSubdetector::TID, TrackerTopology::tidIsStereo(), StripSubdetector::TOB, TrackerTopology::tobIsStereo(), and DetId::Tracker.

Referenced by encode().

877  {
878  if (i.det() != DetId::Tracker) {
879  return 0;
880  }
881 
882  switch (i.subdetId()) {
885  return 0;
887  return ttopo.tibIsStereo(i);
889  return ttopo.tidIsStereo(i);
891  return ttopo.tobIsStereo(i);
893  return ttopo.tecIsStereo(i);
894  default:
895  return 0;
896  }
897 }
static constexpr auto TEC
bool tobIsStereo(const DetId &id) const
bool tidIsStereo(const DetId &id) const
bool tecIsStereo(const DetId &id) const
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
static constexpr auto TOB
static constexpr auto TIB
bool tibIsStereo(const DetId &id) const
static constexpr auto TID
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
int reco::HitPattern::me0StationsWithAnyHits ( ) const
inline

Definition at line 1078 of file HitPattern.h.

References muonStations().

1078 { return muonStations(5, -1); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::me0StationsWithBadHits ( ) const
inline

Definition at line 1076 of file HitPattern.h.

References muonStations().

1076 { return muonStations(5, 3); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::me0StationsWithValidHits ( ) const
inline

Definition at line 1074 of file HitPattern.h.

References muonStations().

1074 { return muonStations(5, 0); }
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
Definition: HitPattern.cc:899
bool reco::HitPattern::missingHitFilter ( uint16_t  pattern)
inlinestatic
bool reco::HitPattern::muonCSCHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 645 of file HitPattern.h.

References MuonSubdetId::CSC, getSubStructure(), muonHitFilter(), and UNLIKELY.

Referenced by pat::SoftMuonMvaEstimator::computeMva(), reco::tau::countHits(), numberOfBadMuonCSCHits(), numberOfLostMuonCSCHits(), numberOfValidMuonCSCHits(), and printHitPattern().

645  {
646  if UNLIKELY (!muonHitFilter(pattern)) {
647  return false;
648  }
649 
650  uint32_t substructure = getSubStructure(pattern);
651  return (substructure == (uint32_t)MuonSubdetId::CSC);
652  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
#define UNLIKELY(x)
Definition: Likely.h:21
static constexpr int CSC
Definition: MuonSubdetId.h:12
bool reco::HitPattern::muonDTHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 636 of file HitPattern.h.

References MuonSubdetId::DT, getSubStructure(), muonHitFilter(), and UNLIKELY.

Referenced by pat::SoftMuonMvaEstimator::computeMva(), reco::tau::countHits(), numberOfBadMuonDTHits(), numberOfDTStationsWithBothViews(), numberOfDTStationsWithRPhiView(), numberOfDTStationsWithRZView(), numberOfLostMuonDTHits(), numberOfValidMuonDTHits(), and printHitPattern().

636  {
637  if UNLIKELY (!muonHitFilter(pattern)) {
638  return false;
639  }
640 
641  uint32_t substructure = getSubStructure(pattern);
642  return (substructure == (uint32_t)MuonSubdetId::DT);
643  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
#define UNLIKELY(x)
Definition: Likely.h:21
static constexpr int DT
Definition: MuonSubdetId.h:11
bool reco::HitPattern::muonGEMHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 663 of file HitPattern.h.

References MuonSubdetId::GEM, getSubStructure(), muonHitFilter(), and UNLIKELY.

Referenced by getMuonStation(), numberOfBadMuonGEMHits(), numberOfLostMuonGEMHits(), numberOfValidMuonGEMHits(), and printHitPattern().

663  {
664  if UNLIKELY (!muonHitFilter(pattern)) {
665  return false;
666  }
667 
668  uint32_t substructure = getSubStructure(pattern);
669  return (substructure == (uint32_t)MuonSubdetId::GEM);
670  }
static constexpr int GEM
Definition: MuonSubdetId.h:14
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::muonHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 683 of file HitPattern.h.

References EMPTY_PATTERN, SubDetectorMask, SubDetectorOffset, and UNLIKELY.

Referenced by reco::tau::countHits(), innermostMuonStationWithHits(), muonCSCHitFilter(), muonDTHitFilter(), muonGEMHitFilter(), muonME0HitFilter(), muonRPCHitFilter(), muonStations(), numberOfBadMuonHits(), numberOfLostMuonHits(), numberOfMuonHits(), numberOfValidMuonHits(), outermostMuonStationWithHits(), and printHitPattern().

683  {
684  if UNLIKELY (pattern == HitPattern::EMPTY_PATTERN) {
685  return false;
686  }
687 
688  return (((pattern >> SubDetectorOffset) & SubDetectorMask) == 0);
689  }
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short SubDetectorMask
Definition: HitPattern.h:463
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:462
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::muonME0HitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 672 of file HitPattern.h.

References getSubStructure(), MuonSubdetId::ME0, muonHitFilter(), and UNLIKELY.

Referenced by numberOfBadMuonME0Hits(), numberOfLostMuonME0Hits(), numberOfValidMuonME0Hits(), and printHitPattern().

672  {
673  if UNLIKELY (!muonHitFilter(pattern))
674  return false;
675  uint16_t substructure = getSubStructure(pattern);
676  return (substructure == (uint16_t)MuonSubdetId::ME0);
677  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
ME0 Data Record : block-&gt;header().getID() = 6.
Definition: Block.h:23
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::muonRPCHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 654 of file HitPattern.h.

References getSubStructure(), muonHitFilter(), MuonSubdetId::RPC, and UNLIKELY.

Referenced by pat::SoftMuonMvaEstimator::computeMva(), reco::tau::countHits(), numberOfBadMuonRPCHits(), numberOfLostMuonRPCHits(), numberOfValidMuonRPCHits(), and printHitPattern().

654  {
655  if UNLIKELY (!muonHitFilter(pattern)) {
656  return false;
657  }
658 
659  uint32_t substructure = getSubStructure(pattern);
660  return (substructure == (uint32_t)MuonSubdetId::RPC);
661  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
static constexpr int RPC
Definition: MuonSubdetId.h:13
#define UNLIKELY(x)
Definition: Likely.h:21
int HitPattern::muonStations ( int  subdet,
int  hitType 
) const

subdet = 0(all), 1(DT), 2(CSC), 3(RPC) 4(GEM); hitType=-1(all), 0=valid, 3=bad

Definition at line 899 of file HitPattern.cc.

References beginTrackHits, endTrackHits, getHitPatternByAbsoluteIndex(), getHitType(), getMuonStation(), getSubStructure(), mps_fire::i, muonHitFilter(), and mergeVDriftHistosByStation::stations.

Referenced by cscStationsWithAnyHits(), cscStationsWithBadHits(), cscStationsWithValidHits(), dtStationsWithAnyHits(), dtStationsWithBadHits(), dtStationsWithValidHits(), gemStationsWithAnyHits(), gemStationsWithBadHits(), gemStationsWithValidHits(), me0StationsWithAnyHits(), me0StationsWithBadHits(), me0StationsWithValidHits(), muonStationsWithAnyHits(), muonStationsWithBadHits(), muonStationsWithValidHits(), rpcStationsWithAnyHits(), rpcStationsWithBadHits(), and rpcStationsWithValidHits().

899  {
900  int stations[5] = {0, 0, 0, 0, 0};
901  for (int i = beginTrackHits; i < endTrackHits; ++i) {
902  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
903  if (muonHitFilter(pattern) && (subdet == 0 || int(getSubStructure(pattern)) == subdet) &&
904  (hitType == -1 || int(getHitType(pattern)) == hitType)) {
905  stations[getMuonStation(pattern)] = 1;
906  }
907  }
908 
909  return stations[0] + stations[1] + stations[2] + stations[3] + stations[4];
910 }
static uint32_t getHitType(uint16_t pattern)
Definition: HitPattern.h:747
uint8_t beginTrackHits
Definition: HitPattern.h:499
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
uint8_t endTrackHits
Definition: HitPattern.h:500
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static uint16_t getMuonStation(uint16_t pattern)
Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon...
Definition: HitPattern.h:755
int reco::HitPattern::muonStationsWithAnyHits ( ) const
inline

Definition at line 1048 of file HitPattern.h.

References muonStations().

1048 { return muonStations(0, -1); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::muonStationsWithBadHits ( ) const
inline

Definition at line 1046 of file HitPattern.h.

References muonStations().

1046 { return muonStations(0, 3); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::muonStationsWithValidHits ( ) const
inline

Definition at line 1044 of file HitPattern.h.

References muonStations().

1044 { return muonStations(0, 0); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::numberOfAllHits ( HitCategory  category) const
inline
int reco::HitPattern::numberOfAllTrackerHits ( HitCategory  category) const
inline

Definition at line 809 of file HitPattern.h.

References countHits(), and trackerHitFilter().

809  {
811  }
static const char category[]
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
int countHits(HitCategory category, filterType filter) const
Definition: HitPattern.h:546
int reco::HitPattern::numberOfBadHits ( ) const
inline

Definition at line 965 of file HitPattern.h.

References badHitFilter(), countHits(), and TRACK_HITS.

965 { return countHits(TRACK_HITS, badHitFilter); }
static bool badHitFilter(uint16_t pattern)
Definition: HitPattern.h:802
int countHits(HitCategory category, filterType filter) const
Definition: HitPattern.h:546
int reco::HitPattern::numberOfBadMuonCSCHits ( ) const
inline

Definition at line 975 of file HitPattern.h.

References countTypedHits(), inactiveHitFilter(), muonCSCHitFilter(), and TRACK_HITS.

975  {
977  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool muonCSCHitFilter(uint16_t pattern)
Definition: HitPattern.h:645
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:800
int reco::HitPattern::numberOfBadMuonDTHits ( ) const
inline

Definition at line 971 of file HitPattern.h.

References countTypedHits(), inactiveHitFilter(), muonDTHitFilter(), and TRACK_HITS.

971  {
973  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:800
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:636
int reco::HitPattern::numberOfBadMuonGEMHits ( ) const
inline

Definition at line 983 of file HitPattern.h.

References countTypedHits(), inactiveHitFilter(), muonGEMHitFilter(), and TRACK_HITS.

983  {
985  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:800
static bool muonGEMHitFilter(uint16_t pattern)
Definition: HitPattern.h:663
int reco::HitPattern::numberOfBadMuonHits ( ) const
inline

Definition at line 967 of file HitPattern.h.

References countTypedHits(), inactiveHitFilter(), muonHitFilter(), and TRACK_HITS.

967  {
969  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:800
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
int reco::HitPattern::numberOfBadMuonME0Hits ( ) const
inline

Definition at line 987 of file HitPattern.h.

References countTypedHits(), inactiveHitFilter(), muonME0HitFilter(), and TRACK_HITS.

987  {
989  }
static bool muonME0HitFilter(uint16_t pattern)
Definition: HitPattern.h:672
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:800
int reco::HitPattern::numberOfBadMuonRPCHits ( ) const
inline

Definition at line 979 of file HitPattern.h.

References countTypedHits(), inactiveHitFilter(), muonRPCHitFilter(), and TRACK_HITS.

979  {
981  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:800
static bool muonRPCHitFilter(uint16_t pattern)
Definition: HitPattern.h:654
int HitPattern::numberOfDTStationsWithBothViews ( ) const

Definition at line 964 of file HitPattern.cc.

References beginTrackHits, endTrackHits, getDTSuperLayer(), getHitPatternByAbsoluteIndex(), getMuonStation(), mps_fire::i, muonDTHitFilter(), mergeVDriftHistosByStation::stations, and validHitFilter().

964  {
965  int stations[4][2] = {{0, 0}, {0, 0}, {0, 0}, {0, 0}};
966  for (int i = beginTrackHits; i < endTrackHits; ++i) {
967  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
968  if (muonDTHitFilter(pattern) && validHitFilter(pattern)) {
969  stations[getMuonStation(pattern) - 1][getDTSuperLayer(pattern) == 2] = 1;
970  }
971  }
972 
973  return stations[0][0] * stations[0][1] + stations[1][0] * stations[1][1] + stations[2][0] * stations[2][1] +
974  stations[3][0] * stations[3][1];
975 }
static uint16_t getDTSuperLayer(uint16_t pattern)
DT superlayer (1-3). Where the &quot;hit&quot; was a DT segment, superlayer is 0. Only valid for muon DT patter...
Definition: HitPattern.h:759
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:636
static uint16_t getMuonStation(uint16_t pattern)
Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon...
Definition: HitPattern.h:755
int HitPattern::numberOfDTStationsWithRPhiView ( ) const

Definition at line 941 of file HitPattern.cc.

References beginTrackHits, endTrackHits, getDTSuperLayer(), getHitPatternByAbsoluteIndex(), getMuonStation(), mps_fire::i, muonDTHitFilter(), mergeVDriftHistosByStation::stations, and validHitFilter().

941  {
942  int stations[4] = {0, 0, 0, 0};
943  for (int i = beginTrackHits; i < endTrackHits; ++i) {
944  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
945 
946  if (muonDTHitFilter(pattern) && validHitFilter(pattern) && getDTSuperLayer(pattern) != 2) {
947  stations[getMuonStation(pattern) - 1] = 1;
948  }
949  }
950  return stations[0] + stations[1] + stations[2] + stations[3];
951 }
static uint16_t getDTSuperLayer(uint16_t pattern)
DT superlayer (1-3). Where the &quot;hit&quot; was a DT segment, superlayer is 0. Only valid for muon DT patter...
Definition: HitPattern.h:759
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:636
static uint16_t getMuonStation(uint16_t pattern)
Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon...
Definition: HitPattern.h:755
int HitPattern::numberOfDTStationsWithRZView ( ) const

Definition at line 953 of file HitPattern.cc.

References beginTrackHits, endTrackHits, getDTSuperLayer(), getHitPatternByAbsoluteIndex(), getMuonStation(), mps_fire::i, muonDTHitFilter(), mergeVDriftHistosByStation::stations, and validHitFilter().

953  {
954  int stations[4] = {0, 0, 0, 0};
955  for (int i = beginTrackHits; i < endTrackHits; ++i) {
956  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
957  if (muonDTHitFilter(pattern) && validHitFilter(pattern) && getDTSuperLayer(pattern) == 2) {
958  stations[getMuonStation(pattern) - 1] = 1;
959  }
960  }
961  return stations[0] + stations[1] + stations[2] + stations[3];
962 }
static uint16_t getDTSuperLayer(uint16_t pattern)
DT superlayer (1-3). Where the &quot;hit&quot; was a DT segment, superlayer is 0. Only valid for muon DT patter...
Definition: HitPattern.h:759
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:636
static uint16_t getMuonStation(uint16_t pattern)
Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon...
Definition: HitPattern.h:755
int reco::HitPattern::numberOfInactiveHits ( ) const
inline

Definition at line 991 of file HitPattern.h.

References countHits(), inactiveHitFilter(), and TRACK_HITS.

static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:800
int countHits(HitCategory category, filterType filter) const
Definition: HitPattern.h:546
int reco::HitPattern::numberOfInactiveTimingHits ( ) const
int reco::HitPattern::numberOfInactiveTrackerHits ( ) const
inline

Definition at line 993 of file HitPattern.h.

References countTypedHits(), inactiveHitFilter(), TRACK_HITS, and trackerHitFilter().

993  {
995  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:800
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
int reco::HitPattern::numberOfLostHits ( HitCategory  category) const
inline
int reco::HitPattern::numberOfLostMuonCSCHits ( ) const
inline

Definition at line 949 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), muonCSCHitFilter(), and TRACK_HITS.

Referenced by MuonBadTrackFilter::trackInfo().

949  {
951  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool muonCSCHitFilter(uint16_t pattern)
Definition: HitPattern.h:645
int reco::HitPattern::numberOfLostMuonDTHits ( ) const
inline

Definition at line 945 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), muonDTHitFilter(), and TRACK_HITS.

Referenced by MuonBadTrackFilter::trackInfo().

945  {
947  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:636
int reco::HitPattern::numberOfLostMuonGEMHits ( ) const
inline

Definition at line 957 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), muonGEMHitFilter(), and TRACK_HITS.

957  {
959  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool muonGEMHitFilter(uint16_t pattern)
Definition: HitPattern.h:663
int reco::HitPattern::numberOfLostMuonHits ( ) const
inline

Definition at line 897 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), muonHitFilter(), and TRACK_HITS.

Referenced by MuonBadTrackFilter::trackInfo().

897  {
899  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
int reco::HitPattern::numberOfLostMuonME0Hits ( ) const
inline

Definition at line 961 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), muonME0HitFilter(), and TRACK_HITS.

961  {
963  }
static bool muonME0HitFilter(uint16_t pattern)
Definition: HitPattern.h:672
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
int reco::HitPattern::numberOfLostMuonRPCHits ( ) const
inline

Definition at line 953 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), muonRPCHitFilter(), and TRACK_HITS.

Referenced by MuonBadTrackFilter::trackInfo().

953  {
955  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool muonRPCHitFilter(uint16_t pattern)
Definition: HitPattern.h:654
int reco::HitPattern::numberOfLostPixelBarrelHits ( HitCategory  category) const
inline

Definition at line 917 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), and pixelBarrelHitFilter().

917  {
919  }
static const char category[]
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool pixelBarrelHitFilter(uint16_t pattern)
Definition: HitPattern.h:590
int reco::HitPattern::numberOfLostPixelEndcapHits ( HitCategory  category) const
inline

Definition at line 921 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), and pixelEndcapHitFilter().

921  {
923  }
static const char category[]
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool pixelEndcapHitFilter(uint16_t pattern)
Definition: HitPattern.h:599
int reco::HitPattern::numberOfLostPixelHits ( HitCategory  category) const
inline

Definition at line 913 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), and pixelHitFilter().

913  {
915  }
static bool pixelHitFilter(uint16_t pattern)
Definition: HitPattern.h:581
static const char category[]
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
int reco::HitPattern::numberOfLostStripHits ( HitCategory  category) const
inline

Definition at line 925 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), and stripHitFilter().

925  {
927  }
static const char category[]
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool stripHitFilter(uint16_t pattern)
Definition: HitPattern.h:608
int reco::HitPattern::numberOfLostStripTECHits ( HitCategory  category) const
inline

Definition at line 941 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), and stripTECHitFilter().

941  {
943  }
static bool stripTECHitFilter(uint16_t pattern)
Definition: HitPattern.h:632
static const char category[]
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
int reco::HitPattern::numberOfLostStripTIBHits ( HitCategory  category) const
inline

Definition at line 929 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), and stripTIBHitFilter().

929  {
931  }
static const char category[]
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool stripTIBHitFilter(uint16_t pattern)
Definition: HitPattern.h:620
int reco::HitPattern::numberOfLostStripTIDHits ( HitCategory  category) const
inline

Definition at line 933 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), and stripTIDHitFilter().

933  {
935  }
static const char category[]
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool stripTIDHitFilter(uint16_t pattern)
Definition: HitPattern.h:624
int reco::HitPattern::numberOfLostStripTOBHits ( HitCategory  category) const
inline

Definition at line 937 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), and stripTOBHitFilter().

937  {
939  }
static const char category[]
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool stripTOBHitFilter(uint16_t pattern)
Definition: HitPattern.h:628
int reco::HitPattern::numberOfLostTimingBTLHits ( ) const
inline

Definition at line 905 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), timingBTLHitFilter(), and TRACK_HITS.

905  {
907  }
static bool timingBTLHitFilter(uint16_t pattern)
Definition: HitPattern.h:691
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
int reco::HitPattern::numberOfLostTimingETLHits ( ) const
inline

Definition at line 909 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), timingETLHitFilter(), and TRACK_HITS.

909  {
911  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool timingETLHitFilter(uint16_t pattern)
Definition: HitPattern.h:698
int reco::HitPattern::numberOfLostTimingHits ( ) const
inline

Definition at line 901 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), timingHitFilter(), and TRACK_HITS.

901  {
903  }
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:705
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
int reco::HitPattern::numberOfLostTrackerHits ( HitCategory  category) const
inline

Definition at line 893 of file HitPattern.h.

References countTypedHits(), missingHitFilter(), and trackerHitFilter().

Referenced by tadqm::TrackAnalyzer::analyze(), TrackingNtuple::fillTracks(), MultiTrackSelector::processMVA(), HIMultiTrackSelector::processMVA(), MultiTrackSelector::select(), HIMultiTrackSelector::select(), and reco::TrackBase::validFraction().

893  {
895  }
static const char category[]
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
int reco::HitPattern::numberOfMuonHits ( ) const
inline

Definition at line 813 of file HitPattern.h.

References countHits(), muonHitFilter(), and TRACK_HITS.

813 { return countHits(TRACK_HITS, muonHitFilter); }
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
int countHits(HitCategory category, filterType filter) const
Definition: HitPattern.h:546
int reco::HitPattern::numberOfTimingHits ( ) const
inline

Definition at line 815 of file HitPattern.h.

References countHits(), timingHitFilter(), and TRACK_HITS.

static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:705
int countHits(HitCategory category, filterType filter) const
Definition: HitPattern.h:546
int reco::HitPattern::numberOfValidHits ( ) const
inline
int reco::HitPattern::numberOfValidMuonCSCHits ( ) const
inline

Definition at line 867 of file HitPattern.h.

References countTypedHits(), muonCSCHitFilter(), TRACK_HITS, and validHitFilter().

Referenced by MuonRecoAnalyzer::analyze(), MuonTrackValidator::analyze(), and MuonBadTrackFilter::trackInfo().

867  {
869  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
static bool muonCSCHitFilter(uint16_t pattern)
Definition: HitPattern.h:645
int reco::HitPattern::numberOfValidMuonDTHits ( ) const
inline

Definition at line 863 of file HitPattern.h.

References countTypedHits(), muonDTHitFilter(), TRACK_HITS, and validHitFilter().

Referenced by MuonRecoAnalyzer::analyze(), MuonTrackValidator::analyze(), and MuonBadTrackFilter::trackInfo().

863  {
865  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:636
int reco::HitPattern::numberOfValidMuonGEMHits ( ) const
inline

Definition at line 875 of file HitPattern.h.

References countTypedHits(), muonGEMHitFilter(), TRACK_HITS, and validHitFilter().

Referenced by MuonRecoAnalyzer::analyze(), and MuonTrackValidator::analyze().

875  {
877  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
static bool muonGEMHitFilter(uint16_t pattern)
Definition: HitPattern.h:663
int reco::HitPattern::numberOfValidMuonHits ( ) const
inline
int reco::HitPattern::numberOfValidMuonME0Hits ( ) const
inline

Definition at line 879 of file HitPattern.h.

References countTypedHits(), muonME0HitFilter(), TRACK_HITS, and validHitFilter().

Referenced by MuonTrackValidator::analyze().

879  {
881  }
static bool muonME0HitFilter(uint16_t pattern)
Definition: HitPattern.h:672
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
int reco::HitPattern::numberOfValidMuonRPCHits ( ) const
inline

Definition at line 871 of file HitPattern.h.

References countTypedHits(), muonRPCHitFilter(), TRACK_HITS, and validHitFilter().

Referenced by MuonRecoAnalyzer::analyze(), MuonTrackValidator::analyze(), and MuonBadTrackFilter::trackInfo().

871  {
873  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
static bool muonRPCHitFilter(uint16_t pattern)
Definition: HitPattern.h:654
int reco::HitPattern::numberOfValidPixelBarrelHits ( ) const
inline
int reco::HitPattern::numberOfValidPixelEndcapHits ( ) const
inline
int reco::HitPattern::numberOfValidPixelHits ( ) const
inline

Definition at line 831 of file HitPattern.h.

References countTypedHits(), pixelHitFilter(), TRACK_HITS, and validHitFilter().

Referenced by TrackTypeMonitor::analyze(), MuonRecoAnalyzer::analyze(), StandaloneTrackMonitor::analyze(), BDHadronTrackMonitoringAnalyzer::analyze(), PackedCandidateTrackValidator::analyze(), IPTagPlotter< Container, Base >::analyzeTag(), PFRecoTauDiscriminationByHPSSelection::discriminate(), DeepBoostedJetTagInfoProducer::fillParticleFeatures(), TrackingNtuple::fillTracks(), ZtoMMEventSelector::filter(), ZtoEEEventSelector::filter(), WtoLNuSelector::filter(), HLTMuonPointingFilter::filter(), reco::tau::RecoTauQualityCuts::filterTrack_(), HLTTrackWithHits::hltFilter(), TrackClassFilter::operator()(), CheckHitPattern::operator()(), reco::tau::RecoTauPiZeroStripPlugin2::operator()(), reco::tau::RecoTauPiZeroStripPlugin3::operator()(), RecoTrackSelectorBase::operator()(), EleTkIsolFromCands::passTrackPreselection(), pat::PATLostTracks::passTrkCuts(), TrackListMerger::produce(), pat::PATPackedCandidateProducer::produce(), IPProducer< Container, Base, Helper >::produce(), pat::PackedCandidate::setHits(), TrackWithVertexSelector::testTrack(), TrackVertexArbitration< VTX >::trackFilterArbitrator(), MuonBadTrackFilter::trackInfo(), reco::TrackSelector::trackSelection(), and QuickTrackAssociatorByHitsImpl::weightedNumberOfTrackClusters().

831  {
833  }
static bool pixelHitFilter(uint16_t pattern)
Definition: HitPattern.h:581
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
int reco::HitPattern::numberOfValidStripHits ( ) const
inline
int HitPattern::numberOfValidStripLayersWithMonoAndStereo ( uint16_t  stripdet,
uint16_t  layer 
) const

Definition at line 369 of file HitPattern.cc.

References beginTrackHits, submitPVResolutionJobs::count, endTrackHits, getHitPatternByAbsoluteIndex(), getLayer(), getSide(), getSubStructure(), getSubSubStructure(), mps_fire::i, dqmiolumiharvest::j, LayerMask, stripHitFilter(), SubstrMask, and validHitFilter().

Referenced by tadqm::TrackAnalyzer::analyze(), MTVHistoProducerAlgoForTracker::fill_generic_recoTrack_histos(), MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(), TrackingNtuple::fillTracks(), RecoTrackSelectorBase::operator()(), MultiTrackSelector::processMVA(), HIMultiTrackSelector::processMVA(), CosmicTrackSelector::select(), MultiTrackSelector::select(), HIMultiTrackSelector::select(), and QcdUeDQM::trackSelection().

369  {
370  bool hasMono[SubstrMask + 1][LayerMask + 1];
371  bool hasStereo[SubstrMask + 1][LayerMask + 1];
372  memset(hasMono, 0, sizeof(hasMono));
373  memset(hasStereo, 0, sizeof(hasStereo));
374 
375  // mark which layers have mono/stereo hits
376  for (int i = beginTrackHits; i < endTrackHits; ++i) {
377  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
378  uint16_t subStructure = getSubStructure(pattern);
379 
380  if (validHitFilter(pattern) && stripHitFilter(pattern)) {
381  if (stripdet != 0 && subStructure != stripdet) {
382  continue;
383  }
384 
385  if (layer != 0 && getSubSubStructure(pattern) != layer) {
386  continue;
387  }
388 
389  switch (getSide(pattern)) {
390  case 0: // mono
391  hasMono[subStructure][getLayer(pattern)] = true;
392  break;
393  case 1: // stereo
394  hasStereo[subStructure][getLayer(pattern)] = true;
395  break;
396  default:;
397  break;
398  }
399  }
400  }
401 
402  // count how many layers have mono and stereo hits
403  int count = 0;
404  for (int i = 0; i < SubstrMask + 1; ++i) {
405  for (int j = 0; j < LayerMask + 1; ++j) {
406  if (hasMono[i][j] && hasStereo[i][j]) {
407  count++;
408  }
409  }
410  }
411  return count;
412 }
static uint32_t getLayer(uint16_t pattern)
Definition: HitPattern.h:721
constexpr std::array< uint8_t, layerIndexSize > layer
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
static bool stripHitFilter(uint16_t pattern)
Definition: HitPattern.h:608
uint8_t beginTrackHits
Definition: HitPattern.h:499
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
uint8_t endTrackHits
Definition: HitPattern.h:500
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static uint32_t getSide(uint16_t pattern)
Definition: HitPattern.h:739
static const unsigned short SubstrMask
Definition: HitPattern.h:459
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:723
static const unsigned short LayerMask
Definition: HitPattern.h:455
int HitPattern::numberOfValidStripLayersWithMonoAndStereo ( ) const

Definition at line 414 of file HitPattern.cc.

References category, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), getSide(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerOffset, maxTrackerWord, minStripWord, minTrackerWord, sistrip::SpyUtilities::range(), and TRACK_HITS.

Referenced by numberOfValidTECLayersWithMonoAndStereo(), numberOfValidTIBLayersWithMonoAndStereo(), numberOfValidTIDLayersWithMonoAndStereo(), and numberOfValidTOBLayersWithMonoAndStereo().

414  {
415  auto category = TRACK_HITS;
416  std::bitset<128> side[2];
417  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
418  for (int i = range.first; i < range.second; ++i) {
419  auto pattern = getHitPatternByAbsoluteIndex(i);
420  if (pattern > maxTrackerWord)
421  continue;
422  if (pattern < minStripWord)
423  continue;
424  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
425  if (hitType != HIT_TYPE::VALID)
426  continue;
427  auto apattern = (pattern - minTrackerWord) >> LayerOffset;
428  // assert(apattern<128);
429  side[getSide(pattern)].set(apattern);
430  }
431  // assert(numberOfValidStripLayersWithMonoAndStereo(0, 0)==int((side[0]&side[1]).count()));
432  return (side[0] & side[1]).count();
433 }
static const char category[]
static const unsigned short maxTrackerWord
Definition: HitPattern.h:466
static const unsigned short HitTypeMask
Definition: HitPattern.h:447
const uint16_t range(const Frame &aFrame)
static const unsigned short minTrackerWord
Definition: HitPattern.h:465
static const unsigned short HitTypeOffset
Definition: HitPattern.h:446
static const unsigned short minStripWord
Definition: HitPattern.h:468
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static uint32_t getSide(uint16_t pattern)
Definition: HitPattern.h:739
static const unsigned short LayerOffset
Definition: HitPattern.h:454
int reco::HitPattern::numberOfValidStripTECHits ( ) const
inline
int reco::HitPattern::numberOfValidStripTIBHits ( ) const
inline
int reco::HitPattern::numberOfValidStripTIDHits ( ) const
inline
int reco::HitPattern::numberOfValidStripTOBHits ( ) const
inline
int HitPattern::numberOfValidTECLayersWithMonoAndStereo ( uint32_t  layer = 0) const

Definition at line 447 of file HitPattern.cc.

References numberOfValidStripLayersWithMonoAndStereo(), and StripSubdetector::TEC.

447  {
449 }
static constexpr auto TEC
int numberOfValidStripLayersWithMonoAndStereo() const
Definition: HitPattern.cc:414
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::numberOfValidTIBLayersWithMonoAndStereo ( uint32_t  layer = 0) const

Definition at line 439 of file HitPattern.cc.

References numberOfValidStripLayersWithMonoAndStereo(), and StripSubdetector::TIB.

439  {
441 }
int numberOfValidStripLayersWithMonoAndStereo() const
Definition: HitPattern.cc:414
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TIB
int HitPattern::numberOfValidTIDLayersWithMonoAndStereo ( uint32_t  layer = 0) const

Definition at line 443 of file HitPattern.cc.

References numberOfValidStripLayersWithMonoAndStereo(), and StripSubdetector::TID.

443  {
445 }
int numberOfValidStripLayersWithMonoAndStereo() const
Definition: HitPattern.cc:414
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TID
int reco::HitPattern::numberOfValidTimingBTLHits ( ) const
inline

Definition at line 883 of file HitPattern.h.

References countTypedHits(), timingBTLHitFilter(), TRACK_HITS, and validHitFilter().

Referenced by MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos().

883  {
885  }
static bool timingBTLHitFilter(uint16_t pattern)
Definition: HitPattern.h:691
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
int reco::HitPattern::numberOfValidTimingETLHits ( ) const
inline

Definition at line 887 of file HitPattern.h.

References countTypedHits(), timingETLHitFilter(), TRACK_HITS, and validHitFilter().

Referenced by MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos().

887  {
889  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
static bool timingETLHitFilter(uint16_t pattern)
Definition: HitPattern.h:698
int reco::HitPattern::numberOfValidTimingHits ( ) const
inline

Definition at line 827 of file HitPattern.h.

References countTypedHits(), timingHitFilter(), TRACK_HITS, and validHitFilter().

827  {
829  }
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:705
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:569
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:796
int HitPattern::numberOfValidTOBLayersWithMonoAndStereo ( uint32_t  layer = 0) const

Definition at line 435 of file HitPattern.cc.

References numberOfValidStripLayersWithMonoAndStereo(), and StripSubdetector::TOB.

435  {
437 }
int numberOfValidStripLayersWithMonoAndStereo() const
Definition: HitPattern.cc:414
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TOB
int reco::HitPattern::numberOfValidTrackerHits ( ) const
inline
HitPattern & HitPattern::operator= ( const HitPattern other)

Definition at line 50 of file HitPattern.cc.

References ARRAY_LENGTH, beginInner, beginOuter, beginTrackHits, endInner, endOuter, endTrackHits, hitCount, and hitPattern.

50  {
51  if (this == &other) {
52  return *this;
53  }
54 
55  this->hitCount = other.hitCount;
56 
57  this->beginTrackHits = other.beginTrackHits;
58  this->endTrackHits = other.endTrackHits;
59 
60  this->beginInner = other.beginInner;
61  this->endInner = other.endInner;
62 
63  this->beginOuter = other.beginOuter;
64  this->endOuter = other.endOuter;
65 
66  memcpy(this->hitPattern, other.hitPattern, sizeof(uint16_t) * HitPattern::ARRAY_LENGTH);
67 
68  return *this;
69 }
static const unsigned short ARRAY_LENGTH
Definition: HitPattern.h:157
uint8_t endInner
Definition: HitPattern.h:502
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:496
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t hitCount
Definition: HitPattern.h:497
uint8_t beginOuter
Definition: HitPattern.h:503
uint8_t endOuter
Definition: HitPattern.h:504
int reco::HitPattern::outermostMuonStationWithAnyHits ( ) const
inline

Definition at line 1090 of file HitPattern.h.

References outermostMuonStationWithHits().

1090 { return outermostMuonStationWithHits(-1); }
int outermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
Definition: HitPattern.cc:927
int reco::HitPattern::outermostMuonStationWithBadHits ( ) const
inline

Definition at line 1088 of file HitPattern.h.

References outermostMuonStationWithHits().

1088 { return outermostMuonStationWithHits(3); }
int outermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
Definition: HitPattern.cc:927
int HitPattern::outermostMuonStationWithHits ( int  hitType) const

hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all

Definition at line 927 of file HitPattern.cc.

References beginTrackHits, endTrackHits, getHitPatternByAbsoluteIndex(), getHitType(), getMuonStation(), mps_fire::i, muonHitFilter(), runTheMatrix::ret, and edm_modernize_messagelogger::stat.

Referenced by outermostMuonStationWithAnyHits(), outermostMuonStationWithBadHits(), and outermostMuonStationWithValidHits().

927  {
928  int ret = 0;
929  for (int i = beginTrackHits; i < endTrackHits; ++i) {
930  uint16_t pattern = getHitPatternByAbsoluteIndex(i);
931  if (muonHitFilter(pattern) && (hitType == -1 || int(getHitType(pattern)) == hitType)) {
932  int stat = getMuonStation(pattern);
933  if (ret == 0 || stat > ret) {
934  ret = stat;
935  }
936  }
937  }
938  return ret;
939 }
tuple ret
prodAgent to be discontinued
static uint32_t getHitType(uint16_t pattern)
Definition: HitPattern.h:747
uint8_t beginTrackHits
Definition: HitPattern.h:499
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
uint8_t endTrackHits
Definition: HitPattern.h:500
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static uint16_t getMuonStation(uint16_t pattern)
Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon...
Definition: HitPattern.h:755
int reco::HitPattern::outermostMuonStationWithValidHits ( ) const
inline

Definition at line 1086 of file HitPattern.h.

References outermostMuonStationWithHits().

1086 { return outermostMuonStationWithHits(0); }
int outermostMuonStationWithHits(int hitType) const
hitType=-1(all), 0=valid, 3=bad; 0 = no stations at all
Definition: HitPattern.cc:927
bool reco::HitPattern::pixelBarrelHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 590 of file HitPattern.h.

References getSubStructure(), PixelSubdetector::PixelBarrel, trackerHitFilter(), and UNLIKELY.

Referenced by hasValidHitInPixelLayer(), numberOfLostPixelBarrelHits(), and numberOfValidPixelBarrelHits().

590  {
591  if UNLIKELY (!trackerHitFilter(pattern)) {
592  return false;
593  }
594 
595  uint32_t substructure = getSubStructure(pattern);
596  return (substructure == PixelSubdetector::PixelBarrel);
597  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
#define UNLIKELY(x)
Definition: Likely.h:21
int HitPattern::pixelBarrelLayersNull ( ) const

Definition at line 762 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), NULL_RETURN, PixelSubdetector::PixelBarrel, and TRACK_HITS.

Referenced by pixelLayersNull().

762  {
763  int count = 0;
764  uint16_t NPixBarrel = 4;
765  for (uint16_t layer = 1; layer <= NPixBarrel; layer++) {
767  count++;
768  }
769  }
770  return count;
771 }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::pixelBarrelLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 700 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and PixelSubdetector::PixelBarrel.

Referenced by pixelLayersTotallyOffOrBad().

700  {
701  int count = 0;
702  uint16_t NPixBarrel = 4;
703  for (uint16_t layer = 1; layer <= NPixBarrel; layer++) {
704  if (getTrackerLayerCase(category, PixelSubdetector::PixelBarrel, layer) == HIT_TYPE::INACTIVE) {
705  count++;
706  }
707  }
708  return count;
709 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::pixelBarrelLayersWithMeasurement ( ) const

Definition at line 576 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), PixelSubdetector::PixelBarrel, and TRACK_HITS.

Referenced by tadqm::TrackAnalyzer::fillHistosForTrackerSpecific(), PrimaryVertexValidation::fillTrackHistos(), pixelLayersWithMeasurementOld(), IsolatedTracksNxN::printTrack(), and BeamFitter::readEvent().

576  {
577  int count = 0;
578  uint16_t NPixBarrel = 4;
579  for (uint16_t layer = 1; layer <= NPixBarrel; layer++) {
581  count++;
582  }
583  }
584  return count;
585 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::pixelBarrelLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 638 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and PixelSubdetector::PixelBarrel.

Referenced by pixelLayersWithoutMeasurement().

638  {
639  int count = 0;
640  uint16_t NPixBarrel = 4;
641  for (uint16_t layer = 1; layer <= NPixBarrel; layer++) {
642  if (getTrackerLayerCase(category, PixelSubdetector::PixelBarrel, layer) == HIT_TYPE::MISSING) {
643  count++;
644  }
645  }
646  return count;
647 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
bool reco::HitPattern::pixelEndcapHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 599 of file HitPattern.h.

References getSubStructure(), PixelSubdetector::PixelEndcap, trackerHitFilter(), and UNLIKELY.

Referenced by hasValidHitInPixelLayer(), numberOfLostPixelEndcapHits(), and numberOfValidPixelEndcapHits().

599  {
600  if UNLIKELY (!trackerHitFilter(pattern)) {
601  return false;
602  }
603 
604  uint32_t substructure = getSubStructure(pattern);
605  return (substructure == PixelSubdetector::PixelEndcap);
606  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
#define UNLIKELY(x)
Definition: Likely.h:21
int HitPattern::pixelEndcapLayersNull ( ) const

Definition at line 773 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), NULL_RETURN, PixelSubdetector::PixelEndcap, and TRACK_HITS.

Referenced by pixelLayersNull().

773  {
774  int count = 0;
775  uint16_t NPixForward = 3;
776  for (uint16_t layer = 1; layer <= NPixForward; layer++) {
778  count++;
779  }
780  }
781  return count;
782 }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::pixelEndcapLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 711 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and PixelSubdetector::PixelEndcap.

Referenced by pixelLayersTotallyOffOrBad().

711  {
712  int count = 0;
713  uint16_t NPixForward = 3;
714  for (uint16_t layer = 1; layer <= NPixForward; layer++) {
715  if (getTrackerLayerCase(category, PixelSubdetector::PixelEndcap, layer) == HIT_TYPE::INACTIVE) {
716  count++;
717  }
718  }
719  return count;
720 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::pixelEndcapLayersWithMeasurement ( ) const

Definition at line 587 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), PixelSubdetector::PixelEndcap, and TRACK_HITS.

Referenced by tadqm::TrackAnalyzer::fillHistosForTrackerSpecific(), pixelLayersWithMeasurementOld(), IsolatedTracksNxN::printTrack(), and BeamFitter::readEvent().

587  {
588  int count = 0;
589  uint16_t NPixForward = 3;
590  for (uint16_t layer = 1; layer <= NPixForward; layer++) {
592  count++;
593  }
594  }
595  return count;
596 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::pixelEndcapLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 649 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and PixelSubdetector::PixelEndcap.

Referenced by pixelLayersWithoutMeasurement().

649  {
650  int count = 0;
651  uint16_t NPixForward = 3;
652  for (uint16_t layer = 1; layer <= NPixForward; layer++) {
653  if (getTrackerLayerCase(category, PixelSubdetector::PixelEndcap, layer) == HIT_TYPE::MISSING) {
654  count++;
655  }
656  }
657  return count;
658 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
bool reco::HitPattern::pixelHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 581 of file HitPattern.h.

References getSubStructure(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, trackerHitFilter(), and UNLIKELY.

Referenced by egamma::getClosestCtfToGsf(), hasValidHitInPixelLayer(), numberOfLostPixelHits(), numberOfValidPixelHits(), FWConvTrackHitsDetailView::setTextInfo(), QcdUeDQM::trackSelection(), and pat::PackedCandidate::unpackTrk().

581  {
582  if UNLIKELY (!trackerHitFilter(pattern)) {
583  return false;
584  }
585 
586  uint32_t substructure = getSubStructure(pattern);
587  return (substructure == PixelSubdetector::PixelBarrel || substructure == PixelSubdetector::PixelEndcap);
588  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
#define UNLIKELY(x)
Definition: Likely.h:21
int reco::HitPattern::pixelLayersNull ( ) const
inline

Definition at line 1038 of file HitPattern.h.

References pixelBarrelLayersNull(), and pixelEndcapLayersNull().

Referenced by trackerLayersNull().

int pixelBarrelLayersNull() const
Definition: HitPattern.cc:762
int pixelEndcapLayersNull() const
Definition: HitPattern.cc:773
int reco::HitPattern::pixelLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const
inline

Definition at line 1027 of file HitPattern.h.

References pixelBarrelLayersTotallyOffOrBad(), and pixelEndcapLayersTotallyOffOrBad().

Referenced by trackerLayersTotallyOffOrBad().

1027  {
1029  }
int pixelBarrelLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:700
static const char category[]
int pixelEndcapLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:711
int HitPattern::pixelLayersWithMeasurement ( ) const

Definition at line 513 of file HitPattern.cc.

References category, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerOffset, minStripWord, minTrackerWord, sistrip::SpyUtilities::range(), TRACK_HITS, trackerHitFilter(), and UNLIKELY.

Referenced by tadqm::TrackAnalyzer::analyze(), StandaloneTrackMonitor::analyze(), MuonTrackValidator::analyze(), PackedCandidateTrackValidator::analyze(), MTVHistoProducerAlgoForTracker::fill_generic_recoTrack_histos(), MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(), PrimaryVertexValidation::fillTrackHistos(), TrackingNtuple::fillTracks(), GhostTrackComputer::operator()(), TrackFilterForPVFinding::operator()(), RecoTrackSelectorBase::operator()(), IsolatedTracksNxN::printTrack(), MultiTrackSelector::processMVA(), HIMultiTrackSelector::processMVA(), BeamFitter::readEvent(), CosmicTrackSelector::select(), MultiTrackSelector::select(), HIMultiTrackSelector::select(), BPhysicsOniaDQM::selGlobalMuon(), MuScleFitMuonSelector::selGlobalMuon(), MuScleFit::selGlobalMuon(), BPhysicsOniaDQM::selTrackerMuon(), MuScleFitMuonSelector::selTrackerMuon(), MuScleFit::selTrackerMuon(), pat::PackedCandidate::setHits(), trackerLayersWithMeasurementOld(), and QcdUeDQM::trackSelection().

513  {
514  auto category = TRACK_HITS;
515  std::bitset<128> layerOk;
516  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
517  for (int i = range.first; i < range.second; ++i) {
518  auto pattern = getHitPatternByAbsoluteIndex(i);
519  if UNLIKELY (!trackerHitFilter(pattern))
520  continue;
521  if (pattern > minStripWord)
522  continue;
523  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
524  if (hitType != HIT_TYPE::VALID)
525  continue;
526  pattern = (pattern - minTrackerWord) >> LayerOffset;
527  // assert(pattern<128);
528  layerOk.set(pattern);
529  }
530  // assert(pixelLayersWithMeasurementOld()==int(layerOk.count()));
531  return layerOk.count();
532 }
static const char category[]
static const unsigned short HitTypeMask
Definition: HitPattern.h:447
const uint16_t range(const Frame &aFrame)
static const unsigned short minTrackerWord
Definition: HitPattern.h:465
if(conf_.getParameter< bool >("UseStripCablingDB"))
static const unsigned short HitTypeOffset
Definition: HitPattern.h:446
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
static const unsigned short minStripWord
Definition: HitPattern.h:468
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static const unsigned short LayerOffset
Definition: HitPattern.h:454
#define UNLIKELY(x)
Definition: Likely.h:21
int reco::HitPattern::pixelLayersWithMeasurementOld ( ) const
inline

Definition at line 1001 of file HitPattern.h.

References pixelBarrelLayersWithMeasurement(), and pixelEndcapLayersWithMeasurement().

1001  {
1003  }
int pixelEndcapLayersWithMeasurement() const
Definition: HitPattern.cc:587
int pixelBarrelLayersWithMeasurement() const
Definition: HitPattern.cc:576
int reco::HitPattern::pixelLayersWithoutMeasurement ( HitCategory  category) const
inline

Definition at line 1014 of file HitPattern.h.

References pixelBarrelLayersWithoutMeasurement(), and pixelEndcapLayersWithoutMeasurement().

Referenced by trackerLayersWithoutMeasurementOld().

1014  {
1016  }
int pixelBarrelLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:638
static const char category[]
int pixelEndcapLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:649
void HitPattern::print ( HitCategory  category,
std::ostream &  stream = std::cout 
) const

Definition at line 861 of file HitPattern.cc.

References getHitPattern(), mps_fire::i, numberOfAllHits(), and printHitPattern().

861  {
862  stream << "HitPattern" << std::endl;
863  for (int i = 0; i < numberOfAllHits(category); ++i) {
865  }
866  std::ios_base::fmtflags flags = stream.flags();
867  stream.setf(std::ios_base::hex, std::ios_base::basefield);
868  stream.setf(std::ios_base::showbase);
869 
870  for (int i = 0; i < this->numberOfAllHits(category); ++i) {
871  stream << getHitPattern(category, i) << std::endl;
872  }
873 
874  stream.flags(flags);
875 }
static const char category[]
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
void printHitPattern(HitCategory category, int position, std::ostream &stream) const
Definition: HitPattern.cc:824
int numberOfAllHits(HitCategory category) const
Definition: HitPattern.h:804
uint16_t getHitPattern(HitCategory category, int position) const
Definition: HitPattern.h:537
void HitPattern::printHitPattern ( HitCategory  category,
int  position,
std::ostream &  stream 
) const

Definition at line 824 of file HitPattern.cc.

References getCSCRing(), getDTSuperLayer(), getGEMLayer(), getGEMStation(), getHitPattern(), getHitType(), getLayer(), getMuonStation(), getRPCLayer(), getRPCregion(), getSubStructure(), muonCSCHitFilter(), muonDTHitFilter(), muonGEMHitFilter(), muonHitFilter(), muonME0HitFilter(), muonRPCHitFilter(), timingHitFilter(), and trackerHitFilter().

Referenced by spr::goodTrack(), print(), IsolatedTracksCone::printTrack(), and IsolatedTracksNxN::printTrack().

824  {
825  uint16_t pattern = getHitPattern(category, position);
826  stream << "\t";
827  if (muonHitFilter(pattern)) {
828  stream << "muon";
829  } else if (trackerHitFilter(pattern)) {
830  stream << "tracker";
831  } else if (timingHitFilter(pattern)) {
832  stream << "timing";
833  }
834 
835  stream << "\tsubstructure " << getSubStructure(pattern);
836  if (muonHitFilter(pattern)) {
837  stream << "\tstation " << getMuonStation(pattern);
838  if (muonDTHitFilter(pattern)) {
839  stream << "\tdt superlayer " << getDTSuperLayer(pattern);
840  } else if (muonCSCHitFilter(pattern)) {
841  stream << "\tcsc ring " << getCSCRing(pattern);
842  } else if (muonRPCHitFilter(pattern)) {
843  stream << "\trpc " << (getRPCregion(pattern) ? "endcaps" : "barrel") << ", layer " << getRPCLayer(pattern);
844  } else if (muonGEMHitFilter(pattern)) {
845  stream << "\tgem "
846  << " station " << getGEMStation(pattern) << ", layer" << getGEMLayer(pattern);
847  } else if (muonME0HitFilter(pattern)) {
848  stream << "\tme0 ";
849  } else {
850  stream << "(UNKNOWN Muon SubStructure!) \tsubsubstructure " << getSubStructure(pattern);
851  }
852  } else if (timingHitFilter(pattern)) {
853  stream << "\tdetector " << getSubStructure(pattern);
854  } else {
855  stream << "\tlayer " << getLayer(pattern);
856  }
857  stream << "\thit type " << getHitType(pattern);
858  stream << std::endl;
859 }
static uint16_t getCSCRing(uint16_t pattern)
CSC ring (1-4). Only valid for muon CSC patterns, of course.
Definition: HitPattern.h:761
static uint32_t getLayer(uint16_t pattern)
Definition: HitPattern.h:721
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:705
static const char category[]
static uint16_t getDTSuperLayer(uint16_t pattern)
DT superlayer (1-3). Where the &quot;hit&quot; was a DT segment, superlayer is 0. Only valid for muon DT patter...
Definition: HitPattern.h:759
static bool muonME0HitFilter(uint16_t pattern)
Definition: HitPattern.h:672
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
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.
Definition: HitPattern.h:789
static bool muonCSCHitFilter(uint16_t pattern)
Definition: HitPattern.h:645
static uint32_t getHitType(uint16_t pattern)
Definition: HitPattern.h:747
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static uint16_t getRPCregion(uint16_t pattern)
RPC region: 0 = barrel, 1 = endcap. Only valid for muon RPC patterns, of course.
Definition: HitPattern.h:774
static bool muonGEMHitFilter(uint16_t pattern)
Definition: HitPattern.h:663
static uint16_t getGEMStation(uint16_t pattern)
GEM station: 1,2. Only valid for muon GEM patterns, of course.
Definition: HitPattern.h:777
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:683
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:636
static int position[264][3]
Definition: ReadPGInfo.cc:289
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...
Definition: HitPattern.h:763
static uint16_t getMuonStation(uint16_t pattern)
Muon station (1-4). Only valid for muon patterns, of course. only for patterns from muon...
Definition: HitPattern.h:755
uint16_t getHitPattern(HitCategory category, int position) const
Definition: HitPattern.h:537
static bool muonRPCHitFilter(uint16_t pattern)
Definition: HitPattern.h:654
int reco::HitPattern::rpcStationsWithAnyHits ( ) const
inline

Definition at line 1066 of file HitPattern.h.

References muonStations().

1066 { return muonStations(3, -1); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::rpcStationsWithBadHits ( ) const
inline

Definition at line 1064 of file HitPattern.h.

References muonStations().

1064 { return muonStations(3, 3); }
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
Definition: HitPattern.cc:899
int reco::HitPattern::rpcStationsWithValidHits ( ) const
inline

Definition at line 1062 of file HitPattern.h.

References muonStations().

1062 { return muonStations(3, 0); }
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
Definition: HitPattern.cc:899
Run3ScoutingHitPatternPOD HitPattern::run3ScoutingHitPatternPOD ( ) const

Definition at line 1030 of file HitPattern.cc.

References ARRAY_LENGTH, beginInner, beginOuter, beginTrackHits, endInner, endOuter, endTrackHits, hitCount, hitPattern, and mps_fire::result.

1030  {
1032  .hitCount = hitCount,
1033  .beginTrackHits = beginTrackHits,
1034  .endTrackHits = endTrackHits,
1035  .beginInner = beginInner,
1036  .endInner = endInner,
1037  .beginOuter = beginOuter,
1038  .endOuter = endOuter,
1039  .hitPattern = std::vector<uint16_t>(hitPattern, hitPattern + HitPattern::ARRAY_LENGTH)};
1040  return result;
1041 }
static const unsigned short ARRAY_LENGTH
Definition: HitPattern.h:157
tuple result
Definition: mps_fire.py:311
uint8_t endInner
Definition: HitPattern.h:502
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:496
uint8_t beginInner
Definition: HitPattern.h:501
uint8_t beginTrackHits
Definition: HitPattern.h:499
uint8_t endTrackHits
Definition: HitPattern.h:500
uint8_t hitCount
Definition: HitPattern.h:497
uint8_t beginOuter
Definition: HitPattern.h:503
uint8_t endOuter
Definition: HitPattern.h:504
bool reco::HitPattern::stripHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 608 of file HitPattern.h.

References maxTrackerWord, and minStripWord.

Referenced by numberOfLostStripHits(), numberOfValidStripHits(), numberOfValidStripLayersWithMonoAndStereo(), FWConvTrackHitsDetailView::setTextInfo(), and pat::PackedCandidate::unpackTrk().

608  {
609  return pattern > minStripWord && pattern <= maxTrackerWord;
610  }
static const unsigned short maxTrackerWord
Definition: HitPattern.h:466
static const unsigned short minStripWord
Definition: HitPattern.h:468
int reco::HitPattern::stripLayersNull ( ) const
inline

Definition at line 1040 of file HitPattern.h.

References stripTECLayersNull(), stripTIBLayersNull(), stripTIDLayersNull(), and stripTOBLayersNull().

Referenced by trackerLayersNull().

1040  {
1042  }
int stripTIBLayersNull() const
Definition: HitPattern.cc:784
int stripTECLayersNull() const
Definition: HitPattern.cc:814
int stripTIDLayersNull() const
Definition: HitPattern.cc:794
int stripTOBLayersNull() const
Definition: HitPattern.cc:804
int reco::HitPattern::stripLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const
inline

Definition at line 1031 of file HitPattern.h.

References stripTECLayersTotallyOffOrBad(), stripTIBLayersTotallyOffOrBad(), stripTIDLayersTotallyOffOrBad(), and stripTOBLayersTotallyOffOrBad().

Referenced by trackerLayersTotallyOffOrBad().

1031  {
1034  }
int stripTOBLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:742
static const char category[]
int stripTIBLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:722
int stripTIDLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:732
int stripTECLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:752
int reco::HitPattern::stripLayersWithMeasurement ( ) const
inline
int reco::HitPattern::stripLayersWithoutMeasurement ( HitCategory  category) const
inline

Definition at line 1018 of file HitPattern.h.

References stripTECLayersWithoutMeasurement(), stripTIBLayersWithoutMeasurement(), stripTIDLayersWithoutMeasurement(), and stripTOBLayersWithoutMeasurement().

Referenced by trackerLayersWithoutMeasurementOld().

1018  {
1021  }
static const char category[]
int stripTOBLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:680
int stripTIDLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:670
int stripTECLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:690
int stripTIBLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:660
bool reco::HitPattern::stripSubdetectorHitFilter ( uint16_t  pattern,
StripSubdetector::SubDetector  substructure 
)
inlinestaticprivate

Definition at line 612 of file HitPattern.h.

References getSubStructure(), trackerHitFilter(), and UNLIKELY.

Referenced by stripTECHitFilter(), stripTIBHitFilter(), stripTIDHitFilter(), and stripTOBHitFilter().

612  {
613  if UNLIKELY (!trackerHitFilter(pattern)) {
614  return false;
615  }
616 
617  return substructure == getSubStructure(pattern);
618  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::stripTECHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 632 of file HitPattern.h.

References stripSubdetectorHitFilter(), and StripSubdetector::TEC.

Referenced by numberOfLostStripTECHits(), and numberOfValidStripTECHits().

632  {
634  }
static constexpr auto TEC
static bool stripSubdetectorHitFilter(uint16_t pattern, StripSubdetector::SubDetector substructure)
Definition: HitPattern.h:612
int HitPattern::stripTECLayersNull ( ) const

Definition at line 814 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), NULL_RETURN, StripSubdetector::TEC, and TRACK_HITS.

Referenced by stripLayersNull().

814  {
815  int count = 0;
816  for (uint16_t layer = 1; layer <= 9; layer++) {
818  count++;
819  }
820  }
821  return count;
822 }
static constexpr auto TEC
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::stripTECLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 752 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and StripSubdetector::TEC.

Referenced by stripLayersTotallyOffOrBad().

752  {
753  int count = 0;
754  for (uint16_t layer = 1; layer <= 9; layer++) {
755  if (getTrackerLayerCase(category, StripSubdetector::TEC, layer) == HIT_TYPE::INACTIVE) {
756  count++;
757  }
758  }
759  return count;
760 }
static constexpr auto TEC
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::stripTECLayersWithMeasurement ( ) const

Definition at line 628 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), StripSubdetector::TEC, and TRACK_HITS.

Referenced by IsolatedTracksNxN::analyze(), tadqm::TrackAnalyzer::fillHistosForTrackerSpecific(), HcalHBHEMuonHighEtaAnalyzer::fillTrackParameters(), spr::goodTrack(), IsolatedTracksNxN::printTrack(), BeamFitter::readEvent(), and stripLayersWithMeasurement().

628  {
629  int count = 0;
630  for (uint16_t layer = 1; layer <= 9; layer++) {
631  if (getTrackerLayerCase(TRACK_HITS, StripSubdetector::TEC, layer) == HIT_TYPE::VALID) {
632  count++;
633  }
634  }
635  return count;
636 }
static constexpr auto TEC
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
int HitPattern::stripTECLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 690 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and StripSubdetector::TEC.

Referenced by IsolatedTracksNxN::analyze(), and stripLayersWithoutMeasurement().

690  {
691  int count = 0;
692  for (uint16_t layer = 1; layer <= 9; layer++) {
693  if (getTrackerLayerCase(category, StripSubdetector::TEC, layer) == HIT_TYPE::MISSING) {
694  count++;
695  }
696  }
697  return count;
698 }
static constexpr auto TEC
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
bool reco::HitPattern::stripTIBHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 620 of file HitPattern.h.

References stripSubdetectorHitFilter(), and StripSubdetector::TIB.

Referenced by egamma::getClosestCtfToGsf(), numberOfLostStripTIBHits(), and numberOfValidStripTIBHits().

620  {
622  }
static constexpr auto TIB
static bool stripSubdetectorHitFilter(uint16_t pattern, StripSubdetector::SubDetector substructure)
Definition: HitPattern.h:612
int HitPattern::stripTIBLayersNull ( ) const

Definition at line 784 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), NULL_RETURN, StripSubdetector::TIB, and TRACK_HITS.

Referenced by stripLayersNull().

784  {
785  int count = 0;
786  for (uint16_t layer = 1; layer <= 4; layer++) {
788  count++;
789  }
790  }
791  return count;
792 }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TIB
int HitPattern::stripTIBLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 722 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and StripSubdetector::TIB.

Referenced by stripLayersTotallyOffOrBad().

722  {
723  int count = 0;
724  for (uint16_t layer = 1; layer <= 4; layer++) {
725  if (getTrackerLayerCase(category, StripSubdetector::TIB, layer) == HIT_TYPE::INACTIVE) {
726  count++;
727  }
728  }
729  return count;
730 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TIB
int HitPattern::stripTIBLayersWithMeasurement ( ) const

Definition at line 598 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), StripSubdetector::TIB, and TRACK_HITS.

Referenced by IsolatedTracksNxN::analyze(), tadqm::TrackAnalyzer::fillHistosForTrackerSpecific(), IsolatedTracksNxN::printTrack(), BeamFitter::readEvent(), and stripLayersWithMeasurement().

598  {
599  int count = 0;
600  for (uint16_t layer = 1; layer <= 4; layer++) {
601  if (getTrackerLayerCase(TRACK_HITS, StripSubdetector::TIB, layer) == HIT_TYPE::VALID) {
602  count++;
603  }
604  }
605  return count;
606 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TIB
int HitPattern::stripTIBLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 660 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and StripSubdetector::TIB.

Referenced by IsolatedTracksNxN::analyze(), and stripLayersWithoutMeasurement().

660  {
661  int count = 0;
662  for (uint16_t layer = 1; layer <= 4; layer++) {
663  if (getTrackerLayerCase(category, StripSubdetector::TIB, layer) == HIT_TYPE::MISSING) {
664  count++;
665  }
666  }
667  return count;
668 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TIB
bool reco::HitPattern::stripTIDHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 624 of file HitPattern.h.

References stripSubdetectorHitFilter(), and StripSubdetector::TID.

Referenced by egamma::getClosestCtfToGsf(), numberOfLostStripTIDHits(), and numberOfValidStripTIDHits().

624  {
626  }
static constexpr auto TID
static bool stripSubdetectorHitFilter(uint16_t pattern, StripSubdetector::SubDetector substructure)
Definition: HitPattern.h:612
int HitPattern::stripTIDLayersNull ( ) const

Definition at line 794 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), NULL_RETURN, StripSubdetector::TID, and TRACK_HITS.

Referenced by stripLayersNull().

794  {
795  int count = 0;
796  for (uint16_t layer = 1; layer <= 3; layer++) {
798  count++;
799  }
800  }
801  return count;
802 }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TID
int HitPattern::stripTIDLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 732 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and StripSubdetector::TID.

Referenced by stripLayersTotallyOffOrBad().

732  {
733  int count = 0;
734  for (uint16_t layer = 1; layer <= 3; layer++) {
735  if (getTrackerLayerCase(category, StripSubdetector::TID, layer) == HIT_TYPE::INACTIVE) {
736  count++;
737  }
738  }
739  return count;
740 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TID
int HitPattern::stripTIDLayersWithMeasurement ( ) const

Definition at line 608 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), StripSubdetector::TID, and TRACK_HITS.

Referenced by IsolatedTracksNxN::analyze(), tadqm::TrackAnalyzer::fillHistosForTrackerSpecific(), IsolatedTracksNxN::printTrack(), BeamFitter::readEvent(), and stripLayersWithMeasurement().

608  {
609  int count = 0;
610  for (uint16_t layer = 1; layer <= 3; layer++) {
611  if (getTrackerLayerCase(TRACK_HITS, StripSubdetector::TID, layer) == HIT_TYPE::VALID) {
612  count++;
613  }
614  }
615  return count;
616 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TID
int HitPattern::stripTIDLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 670 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and StripSubdetector::TID.

Referenced by IsolatedTracksNxN::analyze(), and stripLayersWithoutMeasurement().

670  {
671  int count = 0;
672  for (uint16_t layer = 1; layer <= 3; layer++) {
673  if (getTrackerLayerCase(category, StripSubdetector::TID, layer) == HIT_TYPE::MISSING) {
674  count++;
675  }
676  }
677  return count;
678 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TID
bool reco::HitPattern::stripTOBHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 628 of file HitPattern.h.

References stripSubdetectorHitFilter(), and StripSubdetector::TOB.

Referenced by numberOfLostStripTOBHits(), and numberOfValidStripTOBHits().

628  {
630  }
static constexpr auto TOB
static bool stripSubdetectorHitFilter(uint16_t pattern, StripSubdetector::SubDetector substructure)
Definition: HitPattern.h:612
int HitPattern::stripTOBLayersNull ( ) const

Definition at line 804 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), NULL_RETURN, StripSubdetector::TOB, and TRACK_HITS.

Referenced by stripLayersNull().

804  {
805  int count = 0;
806  for (uint16_t layer = 1; layer <= 6; layer++) {
808  count++;
809  }
810  }
811  return count;
812 }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TOB
int HitPattern::stripTOBLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 742 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and StripSubdetector::TOB.

Referenced by stripLayersTotallyOffOrBad().

742  {
743  int count = 0;
744  for (uint16_t layer = 1; layer <= 6; layer++) {
745  if (getTrackerLayerCase(category, StripSubdetector::TOB, layer) == HIT_TYPE::INACTIVE) {
746  count++;
747  }
748  }
749  return count;
750 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TOB
int HitPattern::stripTOBLayersWithMeasurement ( ) const

Definition at line 618 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), StripSubdetector::TOB, and TRACK_HITS.

Referenced by IsolatedTracksNxN::analyze(), tadqm::TrackAnalyzer::fillHistosForTrackerSpecific(), HcalHBHEMuonHighEtaAnalyzer::fillTrackParameters(), spr::goodTrack(), IsolatedTracksNxN::printTrack(), BeamFitter::readEvent(), and stripLayersWithMeasurement().

618  {
619  int count = 0;
620  for (uint16_t layer = 1; layer <= 6; layer++) {
621  if (getTrackerLayerCase(TRACK_HITS, StripSubdetector::TOB, layer) == HIT_TYPE::VALID) {
622  count++;
623  }
624  }
625  return count;
626 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TOB
int HitPattern::stripTOBLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 680 of file HitPattern.cc.

References submitPVResolutionJobs::count, getTrackerLayerCase(), and StripSubdetector::TOB.

Referenced by IsolatedTracksNxN::analyze(), and stripLayersWithoutMeasurement().

680  {
681  int count = 0;
682  for (uint16_t layer = 1; layer <= 6; layer++) {
683  if (getTrackerLayerCase(category, StripSubdetector::TOB, layer) == HIT_TYPE::MISSING) {
684  count++;
685  }
686  }
687  return count;
688 }
static const char category[]
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:451
constexpr std::array< uint8_t, layerIndexSize > layer
static constexpr auto TOB
bool reco::HitPattern::timingBTLHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 691 of file HitPattern.h.

References MTDDetId::BTL, getSubStructure(), timingHitFilter(), and UNLIKELY.

Referenced by numberOfLostTimingBTLHits(), and numberOfValidTimingBTLHits().

691  {
692  if UNLIKELY (!timingHitFilter(pattern))
693  return false;
694  uint16_t substructure = getSubStructure(pattern);
695  return (substructure == (uint16_t)MTDDetId::BTL);
696  }
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:705
Detector identifier base class for the MIP Timing Layer.
Definition: MTDDetId.h:21
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::timingETLHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 698 of file HitPattern.h.

References MTDDetId::ETL, getSubStructure(), timingHitFilter(), and UNLIKELY.

Referenced by numberOfLostTimingETLHits(), and numberOfValidTimingETLHits().

698  {
699  if UNLIKELY (!timingHitFilter(pattern))
700  return false;
701  uint16_t substructure = getSubStructure(pattern);
702  return (substructure == (uint16_t)MTDDetId::ETL);
703  }
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:705
Detector identifier base class for the MIP Timing Layer.
Definition: MTDDetId.h:21
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:713
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::timingHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 705 of file HitPattern.h.

References EMPTY_PATTERN, SubDetectorMask, SubDetectorOffset, and UNLIKELY.

Referenced by numberOfLostTimingHits(), numberOfTimingHits(), numberOfValidTimingHits(), printHitPattern(), timingBTLHitFilter(), and timingETLHitFilter().

705  {
706  if UNLIKELY (pattern == HitPattern::EMPTY_PATTERN) {
707  return false;
708  }
709 
710  return (((pattern >> SubDetectorOffset) & SubDetectorMask) == 2);
711  }
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short SubDetectorMask
Definition: HitPattern.h:463
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:462
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::trackerHitFilter ( uint16_t  pattern)
inlinestatic
int reco::HitPattern::trackerLayersNull ( ) const
inline

Definition at line 1036 of file HitPattern.h.

References pixelLayersNull(), and stripLayersNull().

1036 { return pixelLayersNull() + stripLayersNull(); }
int pixelLayersNull() const
Definition: HitPattern.h:1038
int stripLayersNull() const
Definition: HitPattern.h:1040
int reco::HitPattern::trackerLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const
inline

Definition at line 1023 of file HitPattern.h.

References pixelLayersTotallyOffOrBad(), and stripLayersTotallyOffOrBad().

Referenced by tadqm::TrackAnalyzer::analyze(), and TrackingNtuple::fillTracks().

1023  {
1025  }
int pixelLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.h:1027
static const char category[]
int stripLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.h:1031
int HitPattern::trackerLayersWithMeasurement ( ) const

Definition at line 534 of file HitPattern.cc.

References category, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerOffset, minTrackerWord, sistrip::SpyUtilities::range(), TRACK_HITS, trackerHitFilter(), and UNLIKELY.

Referenced by MuonRecoAnalyzer::analyze(), tadqm::TrackAnalyzer::analyze(), StandaloneTrackMonitor::analyze(), IsolatedTracksCone::analyze(), IsolatedTracksNxN::analyze(), MuonTrackValidator::analyze(), PackedCandidateTrackValidator::analyze(), spr::coneChargeIsolation(), MTVHistoProducerAlgoForTracker::fill_generic_recoTrack_histos(), MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(), tadqm::TrackAnalyzer::fillHistosForState(), PrimaryVertexValidation::fillTrackHistos(), HcalHBHEMuonHighEtaAnalyzer::fillTrackParameters(), HLTMuonPointingFilter::filter(), spr::goodTrack(), cms::MuonTCMETValueMapProducer::nLayers(), GhostTrackComputer::operator()(), TrackFilterForPVFinding::operator()(), RecoTrackSelectorBase::operator()(), IsolatedTracksNxN::printTrack(), MultiTrackSelector::processMVA(), HIMultiTrackSelector::processMVA(), FastTrackerRecHitMaskProducer::produce(), EvtPlaneProducer::produce(), BeamFitter::readEvent(), CosmicTrackSelector::select(), MultiTrackSelector::select(), HIMultiTrackSelector::select(), TrackVertexArbitration< VTX >::trackFilterArbitrator(), and QcdUeDQM::trackSelection().

534  {
535  auto category = TRACK_HITS;
536  std::bitset<128> layerOk;
537  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
538  for (int i = range.first; i < range.second; ++i) {
539  auto pattern = getHitPatternByAbsoluteIndex(i);
540  if UNLIKELY (!trackerHitFilter(pattern))
541  continue;
542  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
543  if (hitType != HIT_TYPE::VALID)
544  continue;
545  pattern = (pattern - minTrackerWord) >> LayerOffset;
546  // assert(pattern<128);
547  layerOk.set(pattern);
548  }
549  // assert(trackerLayersWithMeasurementOld()==int(layerOk.count()));
550  return layerOk.count();
551 }
static const char category[]
static const unsigned short HitTypeMask
Definition: HitPattern.h:447
const uint16_t range(const Frame &aFrame)
static const unsigned short minTrackerWord
Definition: HitPattern.h:465
if(conf_.getParameter< bool >("UseStripCablingDB"))
static const unsigned short HitTypeOffset
Definition: HitPattern.h:446
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static const unsigned short LayerOffset
Definition: HitPattern.h:454
#define UNLIKELY(x)
Definition: Likely.h:21
int reco::HitPattern::trackerLayersWithMeasurementOld ( ) const
inline

Definition at line 997 of file HitPattern.h.

References pixelLayersWithMeasurement(), and stripLayersWithMeasurement().

997  {
999  }
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:513
int stripLayersWithMeasurement() const
Definition: HitPattern.h:1005
int HitPattern::trackerLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 553 of file HitPattern.cc.

References getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerOffset, minTrackerWord, sistrip::SpyUtilities::range(), trackerHitFilter(), and UNLIKELY.

Referenced by tadqm::TrackAnalyzer::analyze(), HcalHBHEMuonHighEtaAnalyzer::fillTrackParameters(), TrackingNtuple::fillTracks(), spr::goodTrack(), pat::IsolatedTrack::lostInnerLayers(), pat::IsolatedTrack::lostLayers(), pat::IsolatedTrack::lostOuterLayers(), MultiTrackSelector::processMVA(), HIMultiTrackSelector::processMVA(), CosmicTrackSelector::select(), MultiTrackSelector::select(), and HIMultiTrackSelector::select().

553  {
554  std::bitset<128> layerOk;
555  std::bitset<128> layerMissed;
556  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
557  for (int i = range.first; i < range.second; ++i) {
558  auto pattern = getHitPatternByAbsoluteIndex(i);
559  if UNLIKELY (!trackerHitFilter(pattern))
560  continue;
561  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
562  pattern = (pattern - minTrackerWord) >> LayerOffset;
563  // assert(pattern<128);
564  if (hitType == HIT_TYPE::VALID)
565  layerOk.set(pattern);
566  if (hitType == HIT_TYPE::MISSING)
567  layerMissed.set(pattern);
568  }
569  layerMissed &= ~layerOk;
570 
571  // assert(trackerLayersWithoutMeasurementOld(category)==int(layerMissed.count()));
572 
573  return layerMissed.count();
574 }
static const char category[]
static const unsigned short HitTypeMask
Definition: HitPattern.h:447
const uint16_t range(const Frame &aFrame)
static const unsigned short minTrackerWord
Definition: HitPattern.h:465
if(conf_.getParameter< bool >("UseStripCablingDB"))
static const unsigned short HitTypeOffset
Definition: HitPattern.h:446
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:679
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:512
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:315
static const unsigned short LayerOffset
Definition: HitPattern.h:454
#define UNLIKELY(x)
Definition: Likely.h:21
int reco::HitPattern::trackerLayersWithoutMeasurementOld ( HitCategory  category) const
inline

Definition at line 1010 of file HitPattern.h.

References pixelLayersWithoutMeasurement(), and stripLayersWithoutMeasurement().

1010  {
1012  }
static const char category[]
int pixelLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.h:1014
int stripLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.h:1018
bool reco::HitPattern::validHitFilter ( uint16_t  pattern)
inlinestatic

Friends And Related Function Documentation

template<int N>
friend struct PatternSet
friend

Definition at line 509 of file HitPattern.h.

Member Data Documentation

const unsigned short reco::HitPattern::ARRAY_LENGTH = 57
static

Definition at line 157 of file HitPattern.h.

Referenced by clear(), HitPattern(), operator=(), and run3ScoutingHitPatternPOD().

uint8_t reco::HitPattern::beginInner
private
uint8_t reco::HitPattern::beginOuter
private
uint8_t reco::HitPattern::beginTrackHits
private
const uint16_t reco::HitPattern::EMPTY_PATTERN = 0x0
static
uint8_t reco::HitPattern::endInner
private
uint8_t reco::HitPattern::endOuter
private
uint8_t reco::HitPattern::endTrackHits
private
const unsigned short reco::HitPattern::HIT_LENGTH = 12
static

Definition at line 158 of file HitPattern.h.

Referenced by getHitPatternByAbsoluteIndex(), and insertHit().

uint8_t reco::HitPattern::hitCount
private
uint16_t reco::HitPattern::hitPattern[ARRAY_LENGTH]
private
const unsigned short reco::HitPattern::HitTypeMask = 0x3
staticprivate
const unsigned short reco::HitPattern::HitTypeOffset = 0
staticprivate
const unsigned short reco::HitPattern::LayerMask = 0xF
staticprivate
const unsigned short reco::HitPattern::LayerOffset = 3
staticprivate
const unsigned short reco::HitPattern::MaxHits = (8 * sizeof(uint16_t) * ARRAY_LENGTH) / HIT_LENGTH
static

Definition at line 159 of file HitPattern.h.

Referenced by appendHit(), and appendMuonHit().

const unsigned short reco::HitPattern::maxTrackerWord = (2 << SubDetectorOffset) - 1
staticprivate
const unsigned short reco::HitPattern::minPixelWord = minTrackerWord | (1 << SubstrOffset)
staticprivate

Definition at line 467 of file HitPattern.h.

const unsigned short reco::HitPattern::minStripWord = minTrackerWord | (3 << SubstrOffset)
staticprivate
const unsigned short reco::HitPattern::minTrackerWord = 1 << SubDetectorOffset
staticprivate
const uint32_t reco::HitPattern::NULL_RETURN = 999999
static
const unsigned short reco::HitPattern::SideMask = 0x1
staticprivate

Definition at line 451 of file HitPattern.h.

Referenced by encode(), and getSide().

const unsigned short reco::HitPattern::SideOffset = 2
staticprivate

Definition at line 450 of file HitPattern.h.

Referenced by encode(), and getSide().

const unsigned short reco::HitPattern::SubDetectorMask = 0x3
staticprivate
const unsigned short reco::HitPattern::SubDetectorOffset = 10
staticprivate
const unsigned short reco::HitPattern::SubstrMask = 0x7
staticprivate
const unsigned short reco::HitPattern::SubstrOffset = 7
staticprivate

Definition at line 458 of file HitPattern.h.

Referenced by encode(), getSubStructure(), getTrackerLayerCase(), and getTrackerMonoStereo().