CMS 3D CMS Logo

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)
 
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
 
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,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 474 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:497
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:491
uint8_t beginInner
Definition: HitPattern.h:496
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint8_t hitCount
Definition: HitPattern.h:492
uint8_t beginOuter
Definition: HitPattern.h:498
uint8_t endOuter
Definition: HitPattern.h:499
HitPattern::~HitPattern ( )

Definition at line 35 of file HitPattern.cc.

35 { ; }
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:497
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:491
uint8_t beginInner
Definition: HitPattern.h:496
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint8_t hitCount
Definition: HitPattern.h:492
uint8_t beginOuter
Definition: HitPattern.h:498
uint8_t endOuter
Definition: HitPattern.h:499

Member Function Documentation

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

Definition at line 201 of file HitPattern.cc.

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

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

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

Definition at line 70 of file HitPattern.cc.

References appendHit().

70  {
71  return appendHit(*ref, ttopo);
72 }
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:201
bool HitPattern::appendHit ( const DetId id,
TrackingRecHit::Type  hitType,
const TrackerTopology ttopo 
)

Definition at line 205 of file HitPattern.cc.

References appendHit(), encode(), hitCount, MaxHits, topSingleLeptonDQM_PU_cfi::pattern, and UNLIKELY.

205  {
206  //if HitPattern is full, journey ends no matter what.
207  if
208  UNLIKELY((hitCount == HitPattern::MaxHits)) { return false; }
209 
210  uint16_t pattern = HitPattern::encode(id, hitType, ttopo);
211 
212  return appendHit(pattern, hitType);
213 }
static const unsigned short MaxHits
Definition: HitPattern.h:159
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:201
uint8_t hitCount
Definition: HitPattern.h:492
#define UNLIKELY(x)
Definition: Likely.h:21
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:74
bool HitPattern::appendHit ( const uint16_t  pattern,
TrackingRecHit::Type  hitType 
)

Definition at line 215 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.

215  {
216  //if HitPattern is full, journey ends no matter what.
217  if
218  UNLIKELY((hitCount == HitPattern::MaxHits)) { return false; }
219 
220  switch (hitType) {
224  case TrackingRecHit::bad:
225  // hitCount != endT => we are not inserting T type of hits but of T'
226  // 0 != beginT || 0 != endT => we already have hits of T type
227  // so we already have hits of T in the vector and we don't want to
228  // mess them with T' hits.
229  if
230  UNLIKELY(((hitCount != endTrackHits) && (0 != beginTrackHits || 0 != endTrackHits))) {
231  cms::Exception("HitPattern")
232  << "TRACK_HITS"
233  << " were stored on this object before hits of some other category were inserted "
234  << "but hits of the same category should be inserted in a row. "
235  << "Please rework the code so it inserts all "
236  << "TRACK_HITS"
237  << " in a row.";
238  return false;
239  }
240  return insertTrackHit(pattern);
241  break;
244  if
245  UNLIKELY(((hitCount != endInner) && (0 != beginInner || 0 != endInner))) {
246  cms::Exception("HitPattern")
247  << "MISSING_INNER_HITS"
248  << " were stored on this object before hits of some other category were inserted "
249  << "but hits of the same category should be inserted in a row. "
250  << "Please rework the code so it inserts all "
251  << "MISSING_INNER_HITS"
252  << " in a row.";
253  return false;
254  }
256  break;
259  if
260  UNLIKELY(((hitCount != endOuter) && (0 != beginOuter || 0 != endOuter))) {
261  cms::Exception("HitPattern")
262  << "MISSING_OUTER_HITS"
263  << " were stored on this object before hits of some other category were inserted "
264  << "but hits of the same category should be inserted in a row. "
265  << "Please rework the code so it inserts all "
266  << "MISSING_OUTER_HITS"
267  << " in a row.";
268  return false;
269  }
271  break;
272  }
273 
274  return false;
275 }
static const unsigned short MaxHits
Definition: HitPattern.h:159
bool insertExpectedOuterHit(const uint16_t pattern)
Definition: HitPattern.cc:998
uint8_t endInner
Definition: HitPattern.h:497
uint8_t beginInner
Definition: HitPattern.h:496
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint8_t hitCount
Definition: HitPattern.h:492
uint8_t beginOuter
Definition: HitPattern.h:498
bool insertExpectedInnerHit(const uint16_t pattern)
Definition: HitPattern.cc:985
bool insertTrackHit(const uint16_t pattern)
Definition: HitPattern.cc:966
#define UNLIKELY(x)
Definition: Likely.h:21
uint8_t endOuter
Definition: HitPattern.h:499
template<typename I >
bool reco::HitPattern::appendHits ( const I &  begin,
const I &  end,
const TrackerTopology ttopo 
)

Definition at line 523 of file HitPattern.h.

References end, Exhume::I, and UNLIKELY.

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

523  {
524  for (I hit = begin; hit != end; hit++) {
525  if
526  UNLIKELY((!appendHit(*hit, ttopo))) { return false; }
527  }
528  return true;
529  }
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:201
const std::complex< double > I
Definition: I.h:8
#define end
Definition: vmac.h:39
#define begin
Definition: vmac.h:32
#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 281 of file HitPattern.cc.

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

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

281  {
282  //if HitPattern is full, journey ends no matter what.
283  if
284  UNLIKELY((hitCount == HitPattern::MaxHits)) { return false; }
285 
286  if
287  UNLIKELY(id.det() != DetId::Muon) {
288  throw cms::Exception("HitPattern")
289  << "Got DetId from det " << id.det()
290  << " that is not Muon in appendMuonHit(), which should only be used for muon hits in the HitPattern IO rule";
291  }
292 
293  uint16_t subdet = id.subdetId();
294  return appendHit(encode(MUON_HIT, subdet, encodeMuonLayer(id), 0, hitType), hitType);
295 }
static const unsigned short MaxHits
Definition: HitPattern.h:159
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:201
uint8_t hitCount
Definition: HitPattern.h:492
#define UNLIKELY(x)
Definition: Likely.h:21
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:74
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 277 of file HitPattern.cc.

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

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

277  {
278  return appendHit(encode(TRACKER_HIT, subdet, layer, stereo, hitType), hitType);
279 }
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:201
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:74
bool reco::HitPattern::badHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 772 of file HitPattern.h.

References hcaldqm::constants::BAD.

template<typename F >
void reco::HitPattern::call ( HitCategory  category,
filterType  typeFilter,
F  f 
) const
private

Definition at line 551 of file HitPattern.h.

References f, mps_fire::i, topSingleLeptonDQM_PU_cfi::pattern, and FastTimerService_cff::range.

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

551  {
552  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
553  for (int i = range.first; i < range.second; i++) {
555  // f() return false to ask to stop looping
556  if (typeFilter(pattern) && !f(pattern)) {
557  break;
558  }
559  }
560  }
double f[11][100]
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
void HitPattern::clear ( void  )

Definition at line 58 of file HitPattern.cc.

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

Referenced by Vispa.Views.WidgetView.WidgetView::closeEvent(), Vispa.Views.BoxDecayView.BoxDecayView::closeEvent(), fillNewHitPatternWithOldHitPattern_v12(), Vispa.Share.FindAlgorithm.FindAlgorithm::findUsingFindDialog(), reco::TrackBase::resetHitPattern(), Vispa.Views.LineDecayView.LineDecayView::setDataObjects(), Vispa.Views.WidgetView.WidgetView::setDataObjects(), BeautifulSoup.Tag::setString(), Vispa.Views.TreeView.TreeView::updateContent(), Vispa.Views.TableView.TableView::updateContent(), Vispa.Views.BoxDecayView.BoxDecayView::updateContent(), and Vispa.Views.PropertyView.PropertyView::updateContent().

58  {
59  this->hitCount = 0;
60  this->beginTrackHits = 0;
61  this->endTrackHits = 0;
62  this->beginInner = 0;
63  this->endInner = 0;
64  this->beginOuter = 0;
65  this->endOuter = 0;
66 
67  memset(this->hitPattern, EMPTY_PATTERN, sizeof(uint16_t) * HitPattern::ARRAY_LENGTH);
68 }
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:497
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:491
uint8_t beginInner
Definition: HitPattern.h:496
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint8_t hitCount
Definition: HitPattern.h:492
uint8_t beginOuter
Definition: HitPattern.h:498
uint8_t endOuter
Definition: HitPattern.h:499
int reco::HitPattern::countHits ( HitCategory  category,
filterType  filter 
) const
inlineprivate

Definition at line 539 of file HitPattern.h.

References KineDebug3::count(), ALCARECOTkAlBeamHalo_cff::filter, mps_fire::i, and FastTimerService_cff::range.

539  {
540  int count = 0;
541  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
542  for (int i = range.first; i < range.second; ++i) {
544  ++count;
545  }
546  }
547  return count;
548  }
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
int reco::HitPattern::countTypedHits ( HitCategory  category,
filterType  typeFilter,
filterType  filter 
) const
inlineprivate

Definition at line 562 of file HitPattern.h.

References KineDebug3::count(), ALCARECOTkAlBeamHalo_cff::filter, mps_fire::i, topSingleLeptonDQM_PU_cfi::pattern, and FastTimerService_cff::range.

562  {
563  int count = 0;
564  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
565  for (int i = range.first; i < range.second; ++i) {
567  if (typeFilter(pattern) && filter(pattern)) {
568  ++count;
569  }
570  }
571  return count;
572  }
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
int reco::HitPattern::cscStationsWithAnyHits ( ) const
inline

Definition at line 1030 of file HitPattern.h.

1030 { 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:877
int reco::HitPattern::cscStationsWithBadHits ( ) const
inline

Definition at line 1028 of file HitPattern.h.

1028 { 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:877
int reco::HitPattern::cscStationsWithValidHits ( ) const
inline

Definition at line 1026 of file HitPattern.h.

1026 { 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:877
int reco::HitPattern::dtStationsWithAnyHits ( ) const
inline

Definition at line 1024 of file HitPattern.h.

1024 { 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:877
int reco::HitPattern::dtStationsWithBadHits ( ) const
inline

Definition at line 1022 of file HitPattern.h.

1022 { 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:877
int reco::HitPattern::dtStationsWithValidHits ( ) const
inline

Definition at line 1020 of file HitPattern.h.

1020 { 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:877
uint16_t HitPattern::encode ( const TrackingRecHit hit,
const TrackerTopology ttopo 
)
staticprivate
uint16_t HitPattern::encode ( const DetId id,
TrackingRecHit::Type  hitType,
const TrackerTopology ttopo 
)
staticprivate

Definition at line 139 of file HitPattern.cc.

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

139  {
140  uint16_t detid = id.det();
141  uint16_t subdet = id.subdetId();
142 
143  // adding layer/disk/wheel bits
144  uint16_t layer = 0x0;
145  if (detid == DetId::Tracker) {
146  layer = ttopo.layer(id);
147  } else if (detid == DetId::Muon) {
148  layer = encodeMuonLayer(id);
149  } else if (detid == DetId::Forward && subdet == FastTime) {
150  layer = encodeTimingLayer(id);
151  }
152 
153  // adding mono/stereo bit
154  uint16_t side = 0x0;
155  if (detid == DetId::Tracker) {
156  side = isStereo(id, ttopo);
157  } else if (detid == DetId::Muon || (detid == DetId::Forward && subdet == FastTime)) {
158  side = 0x0;
159  }
160 
161  // juggle the detid around to deal with the fact the bitwidth is larger
162  // DetId::Muon is 2 and DetId::Forward is 6, must map to 0 and 2 respectively
163  if (detid == DetId::Tracker) {
164  detid = TRACKER_HIT;
165  } else if (detid == DetId::Muon) {
166  detid = MUON_HIT; // DetId::Muon is 2 and needs to be reordered to match old encoding where it got masked
167  } else if (detid == DetId::Forward && subdet == FastTime) {
168  detid = MTD_HIT; // since DetId::Forward is some other number, reorder it here
169  }
170 
171  return encode(detid, subdet, layer, side, hitType);
172 }
static uint16_t isStereo(DetId i, const TrackerTopology &ttopo)
Definition: HitPattern.cc:855
unsigned int layer(const DetId &id) const
static uint16_t encode(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:74
uint16_t HitPattern::encode ( uint16_t  det,
uint16_t  subdet,
uint16_t  layer,
uint16_t  side,
TrackingRecHit::Type  hitType 
)
staticprivate

Definition at line 174 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, topSingleLeptonDQM_PU_cfi::pattern, SideMask, SideOffset, SubDetectorMask, SubDetectorOffset, SubstrMask, and SubstrOffset.

174  {
176 
177  // adding tracker/muon/mtd detector bits
178  pattern |= (det & SubDetectorMask) << SubDetectorOffset;
179 
180  // adding substructure (PXB, PXF, TIB, TID, TOB, TEC, or DT, CSC, RPC,GEM, or BTL, ETL) bits
181  pattern |= (subdet & SubstrMask) << SubstrOffset;
182 
183  // adding layer/disk/wheel/ring/modType bits
184  pattern |= (layer & LayerMask) << LayerOffset;
185 
186  // adding mono/stereo bit
187  pattern |= (side & SideMask) << SideOffset;
188 
189  TrackingRecHit::Type patternHitType =
194  : hitType);
195 
196  pattern |= (patternHitType & HitTypeMask) << HitTypeOffset;
197 
198  return pattern;
199 }
static const unsigned short SideOffset
Definition: HitPattern.h:445
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short SubstrOffset
Definition: HitPattern.h:453
static const unsigned short HitTypeMask
Definition: HitPattern.h:442
static const unsigned short SubDetectorMask
Definition: HitPattern.h:458
static const unsigned short HitTypeOffset
Definition: HitPattern.h:441
static const unsigned short SideMask
Definition: HitPattern.h:446
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:457
static const unsigned short SubstrMask
Definition: HitPattern.h:454
static const unsigned short LayerOffset
Definition: HitPattern.h:449
static const unsigned short LayerMask
Definition: HitPattern.h:450
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, topSingleLeptonDQM_PU_cfi::pattern, 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 }
ret
prodAgent to be discontinued
uint8_t endInner
Definition: HitPattern.h:497
bool appendHit(const TrackingRecHit &hit, const TrackerTopology &ttopo)
Definition: HitPattern.cc:201
uint8_t beginInner
Definition: HitPattern.h:496
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint8_t hitCount
Definition: HitPattern.h:492
uint8_t beginOuter
Definition: HitPattern.h:498
uint8_t endOuter
Definition: HitPattern.h:499
int reco::HitPattern::gemStationsWithAnyHits ( ) const
inline

Definition at line 1042 of file HitPattern.h.

1042 { 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:877
int reco::HitPattern::gemStationsWithBadHits ( ) const
inline

Definition at line 1040 of file HitPattern.h.

1040 { 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:877
int reco::HitPattern::gemStationsWithValidHits ( ) const
inline

Definition at line 1038 of file HitPattern.h.

1038 { 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:877
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 760 of file HitPattern.h.

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

Definition at line 507 of file HitPattern.h.

Referenced by getTrackerLayerCase(), getTrackerMonoStereo(), numberOfValidStripLayersWithMonoAndStereo(), pixelLayersWithMeasurement(), trackerLayersWithMeasurement(), and trackerLayersWithoutMeasurement().

507  {
508  switch (category) {
509  case TRACK_HITS:
510  return std::pair<uint8_t, uint8_t>(beginTrackHits, endTrackHits);
511  break;
512  case MISSING_INNER_HITS:
513  return std::pair<uint8_t, uint8_t>(beginInner, endInner);
514  break;
515  case MISSING_OUTER_HITS:
516  return std::pair<uint8_t, uint8_t>(beginOuter, endOuter);
517  break;
518  }
519  return std::pair<uint8_t, uint8_t>(-1, -1);
520  }
uint8_t endInner
Definition: HitPattern.h:497
uint8_t beginInner
Definition: HitPattern.h:496
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint8_t beginOuter
Definition: HitPattern.h:498
uint8_t endOuter
Definition: HitPattern.h:499
uint16_t reco::HitPattern::getCSCRing ( uint16_t  pattern)
inlinestatic

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

Definition at line 737 of file HitPattern.h.

Referenced by printHitPattern().

737 { return (getSubSubStructure(pattern) & 3) + 1; }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:705
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 735 of file HitPattern.h.

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

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

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

Definition at line 762 of file HitPattern.h.

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

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

Definition at line 764 of file HitPattern.h.

Referenced by printHitPattern().

764 { return (getSubSubStructure(pattern) & 1) + 1; }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:705
uint16_t reco::HitPattern::getGEMStation ( uint16_t  pattern)
inlinestatic

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

Definition at line 752 of file HitPattern.h.

Referenced by printHitPattern().

754  {
755  uint16_t sss = getSubSubStructure(pattern), stat = sss >> 1;
756  return stat + 1;
757  }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:705
uint16_t reco::HitPattern::getHitPattern ( HitCategory  category,
int  position 
) const
inline

Definition at line 531 of file HitPattern.h.

References FastTimerService_cff::range, and UNLIKELY.

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

531  {
532  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
533  if
534  UNLIKELY((position < 0 || (position + range.first) >= range.second)) { return HitPattern::EMPTY_PATTERN; }
535 
536  return getHitPatternByAbsoluteIndex(range.first + position);
537  }
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
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 297 of file HitPattern.cc.

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

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

297  {
298  if
299  UNLIKELY((position < 0 || position >= hitCount)) { return HitPattern::EMPTY_PATTERN; }
300  /*
301  Note: you are not taking a consecutive sequence of HIT_LENGTH bits starting from position * HIT_LENGTH
302  as the bit order in the words are reversed.
303  e.g. if position = 0 you take the lowest 12 bits of the first word.
304 
305  I hope this can clarify what is the memory layout of such thing
306 
307  straight 01234567890123456789012345678901 | 23456789012345678901234567890123 | 4567
308  (global) 0 1 2 3 | 3 4 5 6 | 6
309  words [--------------0---------------] | [--------------1---------------] | [---
310  word 01234567890123456789012345678901 | 01234567890123456789012345678901 | 0123
311  (str) 0 1 2 3 | 0 1 2 3 | 0
312  [--------------0---------------] | [--------------1---------------] | [---
313  word 10987654321098765432109876543210 | 10987654321098765432109876543210 | 1098
314  (rev) 32 21 10 0 | 32 21 10 0 | 32
315  reverse 10987654321098765432109876543210 | 32109876543210987654321098765432 | 5432
316  32 21 10 0 | 6 65 54 43 3 9
317 
318  ugly enough, but it's not my fault, I was not even in CMS at that time [gpetrucc]
319  */
320 
321  uint16_t bitEndOffset = (position + 1) * HIT_LENGTH;
322  uint8_t secondWord = (bitEndOffset >> 4);
323  uint8_t secondWordBits = bitEndOffset & (16 - 1); // that is, bitEndOffset % 16
324  if (secondWordBits >= HIT_LENGTH) { // full block is in this word
325  uint8_t lowBitsToTrash = secondWordBits - HIT_LENGTH;
326  uint16_t myResult = (hitPattern[secondWord] >> lowBitsToTrash) & ((1 << HIT_LENGTH) - 1);
327  return myResult;
328  } else {
329  uint8_t firstWordBits = HIT_LENGTH - secondWordBits;
330  uint16_t firstWordBlock = hitPattern[secondWord - 1] >> (16 - firstWordBits);
331  uint16_t secondWordBlock = hitPattern[secondWord] & ((1 << secondWordBits) - 1);
332  uint16_t myResult = firstWordBlock + (secondWordBlock << firstWordBits);
333  return myResult;
334  }
335 }
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:491
uint8_t hitCount
Definition: HitPattern.h:492
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 726 of file HitPattern.h.

References UNLIKELY.

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

726  {
727  if
729 
730  return ((pattern >> HitTypeOffset) & HitTypeMask);
731  }
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:442
static const unsigned short HitTypeOffset
Definition: HitPattern.h:441
#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 733 of file HitPattern.h.

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

733 { return (getSubSubStructure(pattern) >> 2) + 1; }
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:705
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 739 of file HitPattern.h.

References LIKELY.

Referenced by printHitPattern().

739  {
740  uint16_t subSubStructure = getSubSubStructure(pattern);
741  uint16_t stat = subSubStructure >> 2;
742 
743  if
744  LIKELY(stat <= 1) { return ((subSubStructure >> 1) & 1) + 1; }
745 
746  return 0;
747  }
#define LIKELY(x)
Definition: Likely.h:20
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:705
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 749 of file HitPattern.h.

Referenced by printHitPattern().

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

Definition at line 719 of file HitPattern.h.

References UNLIKELY.

Referenced by getTrackerMonoStereo(), and numberOfValidStripLayersWithMonoAndStereo().

719  {
720  if
722 
723  return (pattern >> SideOffset) & SideMask;
724  }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
static const unsigned short SideOffset
Definition: HitPattern.h:445
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short SideMask
Definition: HitPattern.h:446
#define UNLIKELY(x)
Definition: Likely.h:21
uint32_t reco::HitPattern::getSubDetector ( uint16_t  pattern)
inlinestatic

Definition at line 712 of file HitPattern.h.

References UNLIKELY.

712  {
713  if
715 
716  return ((pattern >> SubDetectorOffset) & SubDetectorMask);
717  }
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:458
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:457
#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 705 of file HitPattern.h.

References UNLIKELY.

Referenced by numberOfValidStripLayersWithMonoAndStereo().

705  {
706  if
708 
709  return ((pattern >> LayerOffset) & LayerMask);
710  }
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:449
#define UNLIKELY(x)
Definition: Likely.h:21
static const unsigned short LayerMask
Definition: HitPattern.h:450
uint32_t HitPattern::getTrackerLayerCase ( HitCategory  category,
uint16_t  substr,
uint16_t  layer 
) const

Definition at line 430 of file HitPattern.cc.

References hcaldqm::constants::BAD, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerMask, LayerOffset, NULL_RETURN, topSingleLeptonDQM_PU_cfi::pattern, FastTimerService_cff::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().

430  {
431  uint16_t tk_substr_layer =
432  (0x1 << SubDetectorOffset) + ((substr & SubstrMask) << SubstrOffset) + ((layer & LayerMask) << LayerOffset);
433 
434  uint16_t mask = (SubDetectorMask << SubDetectorOffset) + (SubstrMask << SubstrOffset) + (LayerMask << LayerOffset);
435 
436  // layer case 0: valid + (missing, off, bad) ==> with measurement
437  // layer case 1: missing + (off, bad) ==> without measurement
438  // layer case 2: off, bad ==> totally off or bad, cannot say much
439  // layer case NULL_RETURN: track outside acceptance or in gap ==> null
440  uint32_t layerCase = NULL_RETURN;
441  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
442  for (int i = range.first; i < range.second; ++i) {
444  if ((pattern & mask) == tk_substr_layer) {
445  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
446  if (hitType < layerCase) {
447  // BAD and INACTIVE as the same type (as INACTIVE)
448  layerCase = (hitType == HIT_TYPE::BAD ? (uint32_t)HIT_TYPE::INACTIVE : hitType);
449  if (layerCase == HIT_TYPE::VALID) {
450  break;
451  }
452  }
453  }
454  }
455  return layerCase;
456 }
static const uint32_t NULL_RETURN
Definition: HitPattern.h:161
static const unsigned short SubstrOffset
Definition: HitPattern.h:453
static const unsigned short HitTypeMask
Definition: HitPattern.h:442
static const unsigned short SubDetectorMask
Definition: HitPattern.h:458
static const unsigned short HitTypeOffset
Definition: HitPattern.h:441
double const BAD
Definition: Constants.h:15
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:457
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static const unsigned short SubstrMask
Definition: HitPattern.h:454
static const unsigned short LayerOffset
Definition: HitPattern.h:449
static const unsigned short LayerMask
Definition: HitPattern.h:450
uint16_t HitPattern::getTrackerMonoStereo ( HitCategory  category,
uint16_t  substr,
uint16_t  layer 
) const

Definition at line 458 of file HitPattern.cc.

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

Referenced by OniaPhotonConversionProducer::foundCompatibleInnerHits().

458  {
459  uint16_t tk_substr_layer =
460  (0x1 << SubDetectorOffset) + ((substr & SubstrMask) << SubstrOffset) + ((layer & LayerMask) << LayerOffset);
461  uint16_t mask = (SubDetectorMask << SubDetectorOffset) + (SubstrMask << SubstrOffset) + (LayerMask << LayerOffset);
462 
463  // 0: neither a valid mono nor a valid stereo hit
464  // MONO: valid mono hit
465  // STEREO: valid stereo hit
466  // MONO | STEREO: both
467  uint16_t monoStereo = 0x0;
468  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
469  for (int i = range.first; i < range.second; ++i) {
471  if ((pattern & mask) == tk_substr_layer) {
472  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
473  if (hitType == HIT_TYPE::VALID) {
474  switch (getSide(pattern)) {
475  case 0: // mono
476  monoStereo |= MONO;
477  break;
478  case 1: // stereo
479  monoStereo |= STEREO;
480  break;
481  }
482  }
483 
484  if (monoStereo == (MONO | STEREO)) {
485  break;
486  }
487  }
488  }
489  return monoStereo;
490 }
static const unsigned short SubstrOffset
Definition: HitPattern.h:453
static const unsigned short HitTypeMask
Definition: HitPattern.h:442
static const unsigned short SubDetectorMask
Definition: HitPattern.h:458
static const unsigned short HitTypeOffset
Definition: HitPattern.h:441
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:457
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static uint32_t getSide(uint16_t pattern)
Definition: HitPattern.h:719
static const unsigned short SubstrMask
Definition: HitPattern.h:454
static const unsigned short LayerOffset
Definition: HitPattern.h:449
static const unsigned short LayerMask
Definition: HitPattern.h:450
bool HitPattern::hasValidHitInPixelLayer ( enum PixelSubdetector::SubDetector  det,
uint16_t  layer 
) const

Definition at line 337 of file HitPattern.cc.

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

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

337  {
338  for (int i = beginTrackHits; i < endTrackHits; ++i) {
340  bool pixelHitFilter = ((det == 1 && pixelBarrelHitFilter(pattern)) || (det == 2 && pixelEndcapHitFilter(pattern)));
341  if (pixelHitFilter && (getLayer(pattern) == layer) && validHitFilter(pattern)) {
342  return true;
343  }
344  }
345  return false;
346 }
static uint32_t getLayer(uint16_t pattern)
Definition: HitPattern.h:703
static bool pixelHitFilter(uint16_t pattern)
Definition: HitPattern.h:574
static bool pixelBarrelHitFilter(uint16_t pattern)
Definition: HitPattern.h:582
static bool pixelEndcapHitFilter(uint16_t pattern)
Definition: HitPattern.h:590
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
bool reco::HitPattern::inactiveHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 770 of file HitPattern.h.

int reco::HitPattern::innermostMuonStationWithAnyHits ( ) const
inline

Definition at line 1054 of file HitPattern.h.

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

Definition at line 1052 of file HitPattern.h.

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

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

Definition at line 890 of file HitPattern.cc.

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

890  {
891  int ret = 0;
892  for (int i = beginTrackHits; i < endTrackHits; ++i) {
894  if (muonHitFilter(pattern) && (hitType == -1 || int(getHitType(pattern)) == hitType)) {
895  int stat = getMuonStation(pattern);
896  if (ret == 0 || stat < ret) {
897  ret = stat;
898  }
899  }
900  }
901 
902  return ret;
903 }
ret
prodAgent to be discontinued
static uint32_t getHitType(uint16_t pattern)
Definition: HitPattern.h:726
uint8_t beginTrackHits
Definition: HitPattern.h:494
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
uint8_t endTrackHits
Definition: HitPattern.h:495
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
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:733
int reco::HitPattern::innermostMuonStationWithValidHits ( ) const
inline

Definition at line 1050 of file HitPattern.h.

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

Definition at line 985 of file HitPattern.cc.

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

Referenced by appendHit().

985  {
986  if
987  UNLIKELY((0 == beginInner && 0 == endInner)) {
990  }
991 
993  endInner++;
994 
995  return true;
996 }
void insertHit(const uint16_t pattern)
Definition: HitPattern.cc:955
uint8_t endInner
Definition: HitPattern.h:497
uint8_t beginInner
Definition: HitPattern.h:496
uint8_t hitCount
Definition: HitPattern.h:492
#define UNLIKELY(x)
Definition: Likely.h:21
bool HitPattern::insertExpectedOuterHit ( const uint16_t  pattern)
private

Definition at line 998 of file HitPattern.cc.

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

Referenced by appendHit().

998  {
999  if
1000  UNLIKELY((0 == beginOuter && 0 == endOuter)) {
1001  beginOuter = hitCount;
1002  endOuter = beginOuter;
1003  }
1004 
1005  insertHit(pattern);
1006  endOuter++;
1007 
1008  return true;
1009 }
void insertHit(const uint16_t pattern)
Definition: HitPattern.cc:955
uint8_t hitCount
Definition: HitPattern.h:492
uint8_t beginOuter
Definition: HitPattern.h:498
#define UNLIKELY(x)
Definition: Likely.h:21
uint8_t endOuter
Definition: HitPattern.h:499
void HitPattern::insertHit ( const uint16_t  pattern)
private

Definition at line 955 of file HitPattern.cc.

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

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

955  {
956  int offset = hitCount * HIT_LENGTH;
957  for (int i = 0; i < HIT_LENGTH; i++) {
958  int pos = offset + i;
959  uint16_t bit = (pattern >> i) & 0x1;
960  //equivalent to hitPattern[pos / 16] += bit << ((offset + i) % 16);
961  hitPattern[pos >> 4] += bit << ((offset + i) & (16 - 1));
962  }
963  hitCount++;
964 }
static const unsigned short HIT_LENGTH
Definition: HitPattern.h:158
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:491
uint8_t hitCount
Definition: HitPattern.h:492
bool HitPattern::insertTrackHit ( const uint16_t  pattern)
private

Definition at line 966 of file HitPattern.cc.

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

Referenced by appendHit().

966  {
967  // if begin is 0, this is the first hit of this type being inserted, so
968  // we need to update begin so it points to the correct index, the first
969  // empty index.
970  // unlikely, because it will happen only when inserting
971  // the first hit of this type
972  if
973  UNLIKELY((0 == beginTrackHits && 0 == endTrackHits)) {
975  // before the first hit of this type is inserted, there are no hits
977  }
978 
980  endTrackHits++;
981 
982  return true;
983 }
void insertHit(const uint16_t pattern)
Definition: HitPattern.cc:955
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint8_t hitCount
Definition: HitPattern.h:492
#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 855 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().

855  {
856  if (i.det() != DetId::Tracker) {
857  return 0;
858  }
859 
860  switch (i.subdetId()) {
863  return 0;
865  return ttopo.tibIsStereo(i);
867  return ttopo.tidIsStereo(i);
869  return ttopo.tobIsStereo(i);
871  return ttopo.tecIsStereo(i);
872  default:
873  return 0;
874  }
875 }
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 1048 of file HitPattern.h.

1048 { 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:877
int reco::HitPattern::me0StationsWithBadHits ( ) const
inline

Definition at line 1046 of file HitPattern.h.

1046 { 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:877
int reco::HitPattern::me0StationsWithValidHits ( ) const
inline

Definition at line 1044 of file HitPattern.h.

1044 { 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:877
bool reco::HitPattern::missingHitFilter ( uint16_t  pattern)
inlinestatic
bool reco::HitPattern::muonCSCHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 633 of file HitPattern.h.

References MuonSubdetId::CSC, and UNLIKELY.

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

633  {
634  if
635  UNLIKELY(!muonHitFilter(pattern)) { return false; }
636 
637  uint32_t substructure = getSubStructure(pattern);
638  return (substructure == (uint32_t)MuonSubdetId::CSC);
639  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
#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 625 of file HitPattern.h.

References MuonSubdetId::DT, and UNLIKELY.

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

625  {
626  if
627  UNLIKELY(!muonHitFilter(pattern)) { return false; }
628 
629  uint32_t substructure = getSubStructure(pattern);
630  return (substructure == (uint32_t)MuonSubdetId::DT);
631  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
#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 649 of file HitPattern.h.

References MuonSubdetId::GEM, and UNLIKELY.

Referenced by printHitPattern().

649  {
650  if
651  UNLIKELY(!muonHitFilter(pattern)) { return false; }
652 
653  uint32_t substructure = getSubStructure(pattern);
654  return (substructure == (uint32_t)MuonSubdetId::GEM);
655  }
static constexpr int GEM
Definition: MuonSubdetId.h:14
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::muonHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 668 of file HitPattern.h.

References UNLIKELY.

Referenced by reco::tau::countHits(), innermostMuonStationWithHits(), muonStations(), outermostMuonStationWithHits(), and printHitPattern().

668  {
669  if
670  UNLIKELY(pattern == HitPattern::EMPTY_PATTERN) { return false; }
671 
672  return (((pattern >> SubDetectorOffset) & SubDetectorMask) == 0);
673  }
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short SubDetectorMask
Definition: HitPattern.h:458
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:457
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::muonME0HitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 657 of file HitPattern.h.

References MuonSubdetId::ME0, and UNLIKELY.

Referenced by printHitPattern().

657  {
658  if
660  uint16_t substructure = getSubStructure(pattern);
661  return (substructure == (uint16_t)MuonSubdetId::ME0);
662  }
return((rh^lh)&mask)
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::muonRPCHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 641 of file HitPattern.h.

References MuonSubdetId::RPC, and UNLIKELY.

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

641  {
642  if
643  UNLIKELY(!muonHitFilter(pattern)) { return false; }
644 
645  uint32_t substructure = getSubStructure(pattern);
646  return (substructure == (uint32_t)MuonSubdetId::RPC);
647  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
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 877 of file HitPattern.cc.

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

877  {
878  int stations[4] = {0, 0, 0, 0};
879  for (int i = beginTrackHits; i < endTrackHits; ++i) {
881  if (muonHitFilter(pattern) && (subdet == 0 || int(getSubStructure(pattern)) == subdet) &&
882  (hitType == -1 || int(getHitType(pattern)) == hitType)) {
883  stations[getMuonStation(pattern) - 1] = 1;
884  }
885  }
886 
887  return stations[0] + stations[1] + stations[2] + stations[3];
888 }
static uint32_t getHitType(uint16_t pattern)
Definition: HitPattern.h:726
uint8_t beginTrackHits
Definition: HitPattern.h:494
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
uint8_t endTrackHits
Definition: HitPattern.h:495
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
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:733
int reco::HitPattern::muonStationsWithAnyHits ( ) const
inline

Definition at line 1018 of file HitPattern.h.

1018 { 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:877
int reco::HitPattern::muonStationsWithBadHits ( ) const
inline

Definition at line 1016 of file HitPattern.h.

1016 { 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:877
int reco::HitPattern::muonStationsWithValidHits ( ) const
inline

Definition at line 1014 of file HitPattern.h.

1014 { 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:877
int reco::HitPattern::numberOfAllHits ( HitCategory  category) const
inline
int reco::HitPattern::numberOfAllTrackerHits ( HitCategory  category) const
inline

Definition at line 779 of file HitPattern.h.

References reco::tau::countHits().

779  {
781  }
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:664
int countHits(HitCategory category, filterType filter) const
Definition: HitPattern.h:539
int reco::HitPattern::numberOfBadHits ( ) const
inline

Definition at line 935 of file HitPattern.h.

References reco::tau::countHits().

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

Definition at line 945 of file HitPattern.h.

945  {
947  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool muonCSCHitFilter(uint16_t pattern)
Definition: HitPattern.h:633
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:770
int reco::HitPattern::numberOfBadMuonDTHits ( ) const
inline

Definition at line 941 of file HitPattern.h.

941  {
943  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:770
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:625
int reco::HitPattern::numberOfBadMuonGEMHits ( ) const
inline

Definition at line 953 of file HitPattern.h.

953  {
955  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:770
static bool muonGEMHitFilter(uint16_t pattern)
Definition: HitPattern.h:649
int reco::HitPattern::numberOfBadMuonHits ( ) const
inline

Definition at line 937 of file HitPattern.h.

937  {
939  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:770
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
int reco::HitPattern::numberOfBadMuonME0Hits ( ) const
inline

Definition at line 957 of file HitPattern.h.

957  {
959  }
static bool muonME0HitFilter(uint16_t pattern)
Definition: HitPattern.h:657
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:770
int reco::HitPattern::numberOfBadMuonRPCHits ( ) const
inline

Definition at line 949 of file HitPattern.h.

949  {
951  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:770
static bool muonRPCHitFilter(uint16_t pattern)
Definition: HitPattern.h:641
int HitPattern::numberOfDTStationsWithBothViews ( ) const

Definition at line 942 of file HitPattern.cc.

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

942  {
943  int stations[4][2] = {{0, 0}, {0, 0}, {0, 0}, {0, 0}};
944  for (int i = beginTrackHits; i < endTrackHits; ++i) {
946  if (muonDTHitFilter(pattern) && validHitFilter(pattern)) {
947  stations[getMuonStation(pattern) - 1][getDTSuperLayer(pattern) == 2] = 1;
948  }
949  }
950 
951  return stations[0][0] * stations[0][1] + stations[1][0] * stations[1][1] + stations[2][0] * stations[2][1] +
952  stations[3][0] * stations[3][1];
953 }
static uint16_t getDTSuperLayer(uint16_t pattern)
DT superlayer (1-3). Where the "hit" was a DT segment, superlayer is 0. Only valid for muon DT patter...
Definition: HitPattern.h:735
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:625
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:733
int HitPattern::numberOfDTStationsWithRPhiView ( ) const

Definition at line 919 of file HitPattern.cc.

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

919  {
920  int stations[4] = {0, 0, 0, 0};
921  for (int i = beginTrackHits; i < endTrackHits; ++i) {
923 
924  if (muonDTHitFilter(pattern) && validHitFilter(pattern) && getDTSuperLayer(pattern) != 2) {
925  stations[getMuonStation(pattern) - 1] = 1;
926  }
927  }
928  return stations[0] + stations[1] + stations[2] + stations[3];
929 }
static uint16_t getDTSuperLayer(uint16_t pattern)
DT superlayer (1-3). Where the "hit" was a DT segment, superlayer is 0. Only valid for muon DT patter...
Definition: HitPattern.h:735
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:625
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:733
int HitPattern::numberOfDTStationsWithRZView ( ) const

Definition at line 931 of file HitPattern.cc.

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

931  {
932  int stations[4] = {0, 0, 0, 0};
933  for (int i = beginTrackHits; i < endTrackHits; ++i) {
935  if (muonDTHitFilter(pattern) && validHitFilter(pattern) && getDTSuperLayer(pattern) == 2) {
936  stations[getMuonStation(pattern) - 1] = 1;
937  }
938  }
939  return stations[0] + stations[1] + stations[2] + stations[3];
940 }
static uint16_t getDTSuperLayer(uint16_t pattern)
DT superlayer (1-3). Where the "hit" was a DT segment, superlayer is 0. Only valid for muon DT patter...
Definition: HitPattern.h:735
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:625
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:733
int reco::HitPattern::numberOfInactiveHits ( ) const
inline

Definition at line 961 of file HitPattern.h.

References reco::tau::countHits().

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

Definition at line 963 of file HitPattern.h.

963  {
965  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool inactiveHitFilter(uint16_t pattern)
Definition: HitPattern.h:770
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:664
int reco::HitPattern::numberOfLostHits ( HitCategory  category) const
inline
int reco::HitPattern::numberOfLostMuonCSCHits ( ) const
inline

Definition at line 919 of file HitPattern.h.

Referenced by MuonBadTrackFilter::trackInfo().

919  {
921  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool muonCSCHitFilter(uint16_t pattern)
Definition: HitPattern.h:633
int reco::HitPattern::numberOfLostMuonDTHits ( ) const
inline

Definition at line 915 of file HitPattern.h.

Referenced by MuonBadTrackFilter::trackInfo().

915  {
917  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:625
int reco::HitPattern::numberOfLostMuonGEMHits ( ) const
inline

Definition at line 927 of file HitPattern.h.

927  {
929  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool muonGEMHitFilter(uint16_t pattern)
Definition: HitPattern.h:649
int reco::HitPattern::numberOfLostMuonHits ( ) const
inline

Definition at line 867 of file HitPattern.h.

Referenced by MuonBadTrackFilter::trackInfo().

867  {
869  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
int reco::HitPattern::numberOfLostMuonME0Hits ( ) const
inline

Definition at line 931 of file HitPattern.h.

931  {
933  }
static bool muonME0HitFilter(uint16_t pattern)
Definition: HitPattern.h:657
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
int reco::HitPattern::numberOfLostMuonRPCHits ( ) const
inline

Definition at line 923 of file HitPattern.h.

Referenced by MuonBadTrackFilter::trackInfo().

923  {
925  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool muonRPCHitFilter(uint16_t pattern)
Definition: HitPattern.h:641
int reco::HitPattern::numberOfLostPixelBarrelHits ( HitCategory  category) const
inline

Definition at line 887 of file HitPattern.h.

887  {
889  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool pixelBarrelHitFilter(uint16_t pattern)
Definition: HitPattern.h:582
int reco::HitPattern::numberOfLostPixelEndcapHits ( HitCategory  category) const
inline

Definition at line 891 of file HitPattern.h.

891  {
893  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool pixelEndcapHitFilter(uint16_t pattern)
Definition: HitPattern.h:590
int reco::HitPattern::numberOfLostPixelHits ( HitCategory  category) const
inline

Definition at line 883 of file HitPattern.h.

883  {
885  }
static bool pixelHitFilter(uint16_t pattern)
Definition: HitPattern.h:574
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
int reco::HitPattern::numberOfLostStripHits ( HitCategory  category) const
inline

Definition at line 895 of file HitPattern.h.

895  {
897  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool stripHitFilter(uint16_t pattern)
Definition: HitPattern.h:598
int reco::HitPattern::numberOfLostStripTECHits ( HitCategory  category) const
inline

Definition at line 911 of file HitPattern.h.

911  {
913  }
static bool stripTECHitFilter(uint16_t pattern)
Definition: HitPattern.h:621
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
int reco::HitPattern::numberOfLostStripTIBHits ( HitCategory  category) const
inline

Definition at line 899 of file HitPattern.h.

899  {
901  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool stripTIBHitFilter(uint16_t pattern)
Definition: HitPattern.h:609
int reco::HitPattern::numberOfLostStripTIDHits ( HitCategory  category) const
inline

Definition at line 903 of file HitPattern.h.

903  {
905  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool stripTIDHitFilter(uint16_t pattern)
Definition: HitPattern.h:613
int reco::HitPattern::numberOfLostStripTOBHits ( HitCategory  category) const
inline

Definition at line 907 of file HitPattern.h.

907  {
909  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool stripTOBHitFilter(uint16_t pattern)
Definition: HitPattern.h:617
int reco::HitPattern::numberOfLostTimingBTLHits ( ) const
inline

Definition at line 875 of file HitPattern.h.

875  {
877  }
static bool timingBTLHitFilter(uint16_t pattern)
Definition: HitPattern.h:675
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
int reco::HitPattern::numberOfLostTimingETLHits ( ) const
inline

Definition at line 879 of file HitPattern.h.

879  {
881  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
static bool timingETLHitFilter(uint16_t pattern)
Definition: HitPattern.h:682
int reco::HitPattern::numberOfLostTimingHits ( ) const
inline

Definition at line 871 of file HitPattern.h.

871  {
873  }
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:689
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:768
int reco::HitPattern::numberOfLostTrackerHits ( HitCategory  category) const
inline
int reco::HitPattern::numberOfMuonHits ( ) const
inline

Definition at line 783 of file HitPattern.h.

References reco::tau::countHits().

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

Definition at line 785 of file HitPattern.h.

References reco::tau::countHits().

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

Definition at line 837 of file HitPattern.h.

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

837  {
839  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
static bool muonCSCHitFilter(uint16_t pattern)
Definition: HitPattern.h:633
int reco::HitPattern::numberOfValidMuonDTHits ( ) const
inline

Definition at line 833 of file HitPattern.h.

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

833  {
835  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:625
int reco::HitPattern::numberOfValidMuonGEMHits ( ) const
inline

Definition at line 845 of file HitPattern.h.

Referenced by MuonTrackValidator::analyze().

845  {
847  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
static bool muonGEMHitFilter(uint16_t pattern)
Definition: HitPattern.h:649
int reco::HitPattern::numberOfValidMuonHits ( ) const
inline
int reco::HitPattern::numberOfValidMuonME0Hits ( ) const
inline

Definition at line 849 of file HitPattern.h.

Referenced by MuonTrackValidator::analyze().

849  {
851  }
static bool muonME0HitFilter(uint16_t pattern)
Definition: HitPattern.h:657
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
int reco::HitPattern::numberOfValidMuonRPCHits ( ) const
inline

Definition at line 841 of file HitPattern.h.

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

841  {
843  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
static bool muonRPCHitFilter(uint16_t pattern)
Definition: HitPattern.h:641
int reco::HitPattern::numberOfValidPixelBarrelHits ( ) const
inline
int reco::HitPattern::numberOfValidPixelEndcapHits ( ) const
inline
int reco::HitPattern::numberOfValidPixelHits ( ) const
inline

Definition at line 801 of file HitPattern.h.

Referenced by TrackTypeMonitor::analyze(), StandaloneTrackMonitor::analyze(), MuonRecoAnalyzer::analyze(), BDHadronTrackMonitoringAnalyzer::analyze(), PackedCandidateTrackValidator::analyze(), IPTagPlotter< Container, Base >::analyzeTag(), PFRecoTauDiscriminationByHPSSelection::discriminate(), 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()(), pat::PATLostTracks::passTrkCuts(), EleTkIsolFromCands::passTrkSel(), TrackListMerger::produce(), pat::PATPackedCandidateProducer::produce(), IPProducer< Container, Base, Helper >::produce(), pat::PackedCandidate::setHits(), reco::IPTagInfo< Container, Base >::taggingVariables(), TrackWithVertexSelector::testTrack(), TrackVertexArbitration< VTX >::trackFilterArbitrator(), MuonBadTrackFilter::trackInfo(), reco::TrackSelector::trackSelection(), reco::tau::qcuts::trkPixelHits(), and QuickTrackAssociatorByHitsImpl::weightedNumberOfTrackClusters().

801  {
803  }
static bool pixelHitFilter(uint16_t pattern)
Definition: HitPattern.h:574
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
int reco::HitPattern::numberOfValidStripHits ( ) const
inline
int HitPattern::numberOfValidStripLayersWithMonoAndStereo ( uint16_t  stripdet,
uint16_t  layer 
) const

Definition at line 348 of file HitPattern.cc.

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

Referenced by 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().

348  {
349  bool hasMono[SubstrMask + 1][LayerMask + 1];
350  bool hasStereo[SubstrMask + 1][LayerMask + 1];
351  memset(hasMono, 0, sizeof(hasMono));
352  memset(hasStereo, 0, sizeof(hasStereo));
353 
354  // mark which layers have mono/stereo hits
355  for (int i = beginTrackHits; i < endTrackHits; ++i) {
357  uint16_t subStructure = getSubStructure(pattern);
358 
359  if (validHitFilter(pattern) && stripHitFilter(pattern)) {
360  if (stripdet != 0 && subStructure != stripdet) {
361  continue;
362  }
363 
364  if (layer != 0 && getSubSubStructure(pattern) != layer) {
365  continue;
366  }
367 
368  switch (getSide(pattern)) {
369  case 0: // mono
370  hasMono[subStructure][getLayer(pattern)] = true;
371  break;
372  case 1: // stereo
373  hasStereo[subStructure][getLayer(pattern)] = true;
374  break;
375  default:;
376  break;
377  }
378  }
379  }
380 
381  // count how many layers have mono and stereo hits
382  int count = 0;
383  for (int i = 0; i < SubstrMask + 1; ++i) {
384  for (int j = 0; j < LayerMask + 1; ++j) {
385  if (hasMono[i][j] && hasStereo[i][j]) {
386  count++;
387  }
388  }
389  }
390  return count;
391 }
static uint32_t getLayer(uint16_t pattern)
Definition: HitPattern.h:703
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
static bool stripHitFilter(uint16_t pattern)
Definition: HitPattern.h:598
uint8_t beginTrackHits
Definition: HitPattern.h:494
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
uint8_t endTrackHits
Definition: HitPattern.h:495
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static uint32_t getSide(uint16_t pattern)
Definition: HitPattern.h:719
static const unsigned short SubstrMask
Definition: HitPattern.h:454
static uint32_t getSubSubStructure(uint16_t pattern)
Definition: HitPattern.h:705
static const unsigned short LayerMask
Definition: HitPattern.h:450
int HitPattern::numberOfValidStripLayersWithMonoAndStereo ( ) const

Definition at line 393 of file HitPattern.cc.

References taus_updatedMVAIds_cff::category, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), getSide(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerOffset, maxTrackerWord, minStripWord, minTrackerWord, topSingleLeptonDQM_PU_cfi::pattern, FastTimerService_cff::range, and TRACK_HITS.

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

393  {
394  auto category = TRACK_HITS;
395  std::bitset<128> side[2];
396  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
397  for (int i = range.first; i < range.second; ++i) {
399  if (pattern > maxTrackerWord)
400  continue;
401  if (pattern < minStripWord)
402  continue;
403  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
404  if (hitType != HIT_TYPE::VALID)
405  continue;
406  auto apattern = (pattern - minTrackerWord) >> LayerOffset;
407  // assert(apattern<128);
408  side[getSide(pattern)].set(apattern);
409  }
410  // assert(numberOfValidStripLayersWithMonoAndStereo(0, 0)==int((side[0]&side[1]).count()));
411  return (side[0] & side[1]).count();
412 }
static const unsigned short maxTrackerWord
Definition: HitPattern.h:461
static const unsigned short HitTypeMask
Definition: HitPattern.h:442
static const unsigned short minTrackerWord
Definition: HitPattern.h:460
static const unsigned short HitTypeOffset
Definition: HitPattern.h:441
static const unsigned short minStripWord
Definition: HitPattern.h:463
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static uint32_t getSide(uint16_t pattern)
Definition: HitPattern.h:719
static const unsigned short LayerOffset
Definition: HitPattern.h:449
int reco::HitPattern::numberOfValidStripTECHits ( ) const
inline

Definition at line 829 of file HitPattern.h.

Referenced by PatTrackAnalyzer::analyze(), PrimaryVertexValidation::analyze(), MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(), TrackAnalyzer::fillHistosForTrackerSpecific(), and HIPAlignmentAlgorithm::run().

829  {
831  }
static bool stripTECHitFilter(uint16_t pattern)
Definition: HitPattern.h:621
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
int reco::HitPattern::numberOfValidStripTIBHits ( ) const
inline

Definition at line 817 of file HitPattern.h.

Referenced by PatTrackAnalyzer::analyze(), PrimaryVertexValidation::analyze(), MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(), TrackAnalyzer::fillHistosForTrackerSpecific(), CheckHitPattern::operator()(), and HIPAlignmentAlgorithm::run().

817  {
819  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
static bool stripTIBHitFilter(uint16_t pattern)
Definition: HitPattern.h:609
int reco::HitPattern::numberOfValidStripTIDHits ( ) const
inline

Definition at line 821 of file HitPattern.h.

Referenced by PatTrackAnalyzer::analyze(), PrimaryVertexValidation::analyze(), MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(), TrackAnalyzer::fillHistosForTrackerSpecific(), and HIPAlignmentAlgorithm::run().

821  {
823  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
static bool stripTIDHitFilter(uint16_t pattern)
Definition: HitPattern.h:613
int reco::HitPattern::numberOfValidStripTOBHits ( ) const
inline

Definition at line 825 of file HitPattern.h.

Referenced by PatTrackAnalyzer::analyze(), PrimaryVertexValidation::analyze(), MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(), TrackAnalyzer::fillHistosForTrackerSpecific(), CheckHitPattern::operator()(), and HIPAlignmentAlgorithm::run().

825  {
827  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
static bool stripTOBHitFilter(uint16_t pattern)
Definition: HitPattern.h:617
int HitPattern::numberOfValidTECLayersWithMonoAndStereo ( uint32_t  layer = 0) const

Definition at line 426 of file HitPattern.cc.

References numberOfValidStripLayersWithMonoAndStereo(), and StripSubdetector::TEC.

426  {
428 }
static constexpr auto TEC
int numberOfValidStripLayersWithMonoAndStereo() const
Definition: HitPattern.cc:393
int HitPattern::numberOfValidTIBLayersWithMonoAndStereo ( uint32_t  layer = 0) const

Definition at line 418 of file HitPattern.cc.

References numberOfValidStripLayersWithMonoAndStereo(), and StripSubdetector::TIB.

418  {
420 }
int numberOfValidStripLayersWithMonoAndStereo() const
Definition: HitPattern.cc:393
static constexpr auto TIB
int HitPattern::numberOfValidTIDLayersWithMonoAndStereo ( uint32_t  layer = 0) const

Definition at line 422 of file HitPattern.cc.

References numberOfValidStripLayersWithMonoAndStereo(), and StripSubdetector::TID.

422  {
424 }
int numberOfValidStripLayersWithMonoAndStereo() const
Definition: HitPattern.cc:393
static constexpr auto TID
int reco::HitPattern::numberOfValidTimingBTLHits ( ) const
inline

Definition at line 853 of file HitPattern.h.

Referenced by MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos().

853  {
855  }
static bool timingBTLHitFilter(uint16_t pattern)
Definition: HitPattern.h:675
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
int reco::HitPattern::numberOfValidTimingETLHits ( ) const
inline

Definition at line 857 of file HitPattern.h.

Referenced by MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos().

857  {
859  }
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
static bool timingETLHitFilter(uint16_t pattern)
Definition: HitPattern.h:682
int reco::HitPattern::numberOfValidTimingHits ( ) const
inline

Definition at line 797 of file HitPattern.h.

797  {
799  }
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:689
int countTypedHits(HitCategory category, filterType typeFilter, filterType filter) const
Definition: HitPattern.h:562
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:766
int HitPattern::numberOfValidTOBLayersWithMonoAndStereo ( uint32_t  layer = 0) const

Definition at line 414 of file HitPattern.cc.

References numberOfValidStripLayersWithMonoAndStereo(), and StripSubdetector::TOB.

414  {
416 }
int numberOfValidStripLayersWithMonoAndStereo() const
Definition: HitPattern.cc:393
static constexpr auto TOB
int reco::HitPattern::numberOfValidTrackerHits ( ) const
inline
HitPattern & HitPattern::operator= ( const HitPattern other)

Definition at line 37 of file HitPattern.cc.

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

37  {
38  if (this == &other) {
39  return *this;
40  }
41 
42  this->hitCount = other.hitCount;
43 
44  this->beginTrackHits = other.beginTrackHits;
45  this->endTrackHits = other.endTrackHits;
46 
47  this->beginInner = other.beginInner;
48  this->endInner = other.endInner;
49 
50  this->beginOuter = other.beginOuter;
51  this->endOuter = other.endOuter;
52 
53  memcpy(this->hitPattern, other.hitPattern, sizeof(uint16_t) * HitPattern::ARRAY_LENGTH);
54 
55  return *this;
56 }
static const unsigned short ARRAY_LENGTH
Definition: HitPattern.h:157
uint8_t endInner
Definition: HitPattern.h:497
uint16_t hitPattern[ARRAY_LENGTH]
Definition: HitPattern.h:491
uint8_t beginInner
Definition: HitPattern.h:496
uint8_t beginTrackHits
Definition: HitPattern.h:494
uint8_t endTrackHits
Definition: HitPattern.h:495
uint8_t hitCount
Definition: HitPattern.h:492
uint8_t beginOuter
Definition: HitPattern.h:498
uint8_t endOuter
Definition: HitPattern.h:499
int reco::HitPattern::outermostMuonStationWithAnyHits ( ) const
inline

Definition at line 1060 of file HitPattern.h.

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

Definition at line 1058 of file HitPattern.h.

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

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

Definition at line 905 of file HitPattern.cc.

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

905  {
906  int ret = 0;
907  for (int i = beginTrackHits; i < endTrackHits; ++i) {
909  if (muonHitFilter(pattern) && (hitType == -1 || int(getHitType(pattern)) == hitType)) {
910  int stat = getMuonStation(pattern);
911  if (ret == 0 || stat > ret) {
912  ret = stat;
913  }
914  }
915  }
916  return ret;
917 }
ret
prodAgent to be discontinued
static uint32_t getHitType(uint16_t pattern)
Definition: HitPattern.h:726
uint8_t beginTrackHits
Definition: HitPattern.h:494
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
uint8_t endTrackHits
Definition: HitPattern.h:495
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
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:733
int reco::HitPattern::outermostMuonStationWithValidHits ( ) const
inline

Definition at line 1056 of file HitPattern.h.

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

Definition at line 582 of file HitPattern.h.

References PixelSubdetector::PixelBarrel, and UNLIKELY.

Referenced by PrimaryVertexValidation::hasFirstLayerPixelHits(), and hasValidHitInPixelLayer().

582  {
583  if
584  UNLIKELY(!trackerHitFilter(pattern)) { return false; }
585 
586  uint32_t substructure = getSubStructure(pattern);
587  return (substructure == PixelSubdetector::PixelBarrel);
588  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:664
#define UNLIKELY(x)
Definition: Likely.h:21
int HitPattern::pixelBarrelLayersNull ( ) const

Definition at line 741 of file HitPattern.cc.

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

741  {
742  int count = 0;
743  uint16_t NPixBarrel = 4;
744  for (uint16_t layer = 1; layer <= NPixBarrel; layer++) {
746  count++;
747  }
748  }
749  return count;
750 }
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:430
int HitPattern::pixelBarrelLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 679 of file HitPattern.cc.

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

679  {
680  int count = 0;
681  uint16_t NPixBarrel = 4;
682  for (uint16_t layer = 1; layer <= NPixBarrel; layer++) {
683  if (getTrackerLayerCase(category, PixelSubdetector::PixelBarrel, layer) == HIT_TYPE::INACTIVE) {
684  count++;
685  }
686  }
687  return count;
688 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
int HitPattern::pixelBarrelLayersWithMeasurement ( ) const

Definition at line 555 of file HitPattern.cc.

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

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

555  {
556  int count = 0;
557  uint16_t NPixBarrel = 4;
558  for (uint16_t layer = 1; layer <= NPixBarrel; layer++) {
559  if (getTrackerLayerCase(TRACK_HITS, PixelSubdetector::PixelBarrel, layer) == HIT_TYPE::VALID) {
560  count++;
561  }
562  }
563  return count;
564 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
int HitPattern::pixelBarrelLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 617 of file HitPattern.cc.

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

617  {
618  int count = 0;
619  uint16_t NPixBarrel = 4;
620  for (uint16_t layer = 1; layer <= NPixBarrel; layer++) {
621  if (getTrackerLayerCase(category, PixelSubdetector::PixelBarrel, layer) == HIT_TYPE::MISSING) {
622  count++;
623  }
624  }
625  return count;
626 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
bool reco::HitPattern::pixelEndcapHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 590 of file HitPattern.h.

References PixelSubdetector::PixelEndcap, and UNLIKELY.

Referenced by PrimaryVertexValidation::hasFirstLayerPixelHits(), and hasValidHitInPixelLayer().

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

Definition at line 752 of file HitPattern.cc.

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

752  {
753  int count = 0;
754  uint16_t NPixForward = 3;
755  for (uint16_t layer = 1; layer <= NPixForward; layer++) {
757  count++;
758  }
759  }
760  return count;
761 }
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:430
int HitPattern::pixelEndcapLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 690 of file HitPattern.cc.

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

690  {
691  int count = 0;
692  uint16_t NPixForward = 3;
693  for (uint16_t layer = 1; layer <= NPixForward; layer++) {
694  if (getTrackerLayerCase(category, PixelSubdetector::PixelEndcap, layer) == HIT_TYPE::INACTIVE) {
695  count++;
696  }
697  }
698  return count;
699 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
int HitPattern::pixelEndcapLayersWithMeasurement ( ) const

Definition at line 566 of file HitPattern.cc.

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

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

566  {
567  int count = 0;
568  uint16_t NPixForward = 3;
569  for (uint16_t layer = 1; layer <= NPixForward; layer++) {
570  if (getTrackerLayerCase(TRACK_HITS, PixelSubdetector::PixelEndcap, layer) == HIT_TYPE::VALID) {
571  count++;
572  }
573  }
574  return count;
575 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
int HitPattern::pixelEndcapLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 628 of file HitPattern.cc.

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

628  {
629  int count = 0;
630  uint16_t NPixForward = 3;
631  for (uint16_t layer = 1; layer <= NPixForward; layer++) {
632  if (getTrackerLayerCase(category, PixelSubdetector::PixelEndcap, layer) == HIT_TYPE::MISSING) {
633  count++;
634  }
635  }
636  return count;
637 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
bool reco::HitPattern::pixelHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 574 of file HitPattern.h.

References PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, and UNLIKELY.

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

574  {
575  if
576  UNLIKELY(!trackerHitFilter(pattern)) { return false; }
577 
578  uint32_t substructure = getSubStructure(pattern);
579  return (substructure == PixelSubdetector::PixelBarrel || substructure == PixelSubdetector::PixelEndcap);
580  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:664
#define UNLIKELY(x)
Definition: Likely.h:21
int reco::HitPattern::pixelLayersNull ( ) const
inline

Definition at line 1008 of file HitPattern.h.

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

Definition at line 997 of file HitPattern.h.

997  {
999  }
int pixelBarrelLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:679
int pixelEndcapLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:690
int HitPattern::pixelLayersWithMeasurement ( ) const

Definition at line 492 of file HitPattern.cc.

References taus_updatedMVAIds_cff::category, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerOffset, minStripWord, minTrackerWord, topSingleLeptonDQM_PU_cfi::pattern, FastTimerService_cff::range, TRACK_HITS, trackerHitFilter(), and UNLIKELY.

Referenced by StandaloneTrackMonitor::analyze(), TrackAnalyzer::analyze(), MuonTrackValidator::analyze(), PackedCandidateTrackValidator::analyze(), MTVHistoProducerAlgoForTracker::fill_generic_recoTrack_histos(), MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(), PrimaryVertexValidation::fillTrackHistos(), TrackingNtuple::fillTracks(), TrackFilterForPVFinding::operator()(), GhostTrackComputer::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(), and QcdUeDQM::trackSelection().

492  {
493  auto category = TRACK_HITS;
494  std::bitset<128> layerOk;
495  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
496  for (int i = range.first; i < range.second; ++i) {
498  if
499  UNLIKELY(!trackerHitFilter(pattern)) continue;
500  if (pattern > minStripWord)
501  continue;
502  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
503  if (hitType != HIT_TYPE::VALID)
504  continue;
506  // assert(pattern<128);
507  layerOk.set(pattern);
508  }
509  // assert(pixelLayersWithMeasurementOld()==int(layerOk.count()));
510  return layerOk.count();
511 }
static const unsigned short HitTypeMask
Definition: HitPattern.h:442
return((rh^lh)&mask)
static const unsigned short minTrackerWord
Definition: HitPattern.h:460
static const unsigned short HitTypeOffset
Definition: HitPattern.h:441
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:664
static const unsigned short minStripWord
Definition: HitPattern.h:463
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static const unsigned short LayerOffset
Definition: HitPattern.h:449
#define UNLIKELY(x)
Definition: Likely.h:21
int reco::HitPattern::pixelLayersWithMeasurementOld ( ) const
inline

Definition at line 971 of file HitPattern.h.

971  {
973  }
int pixelEndcapLayersWithMeasurement() const
Definition: HitPattern.cc:566
int pixelBarrelLayersWithMeasurement() const
Definition: HitPattern.cc:555
int reco::HitPattern::pixelLayersWithoutMeasurement ( HitCategory  category) const
inline

Definition at line 984 of file HitPattern.h.

984  {
986  }
int pixelBarrelLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:617
int pixelEndcapLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:628
void HitPattern::print ( HitCategory  category,
std::ostream &  stream = std::cout 
) const

Definition at line 839 of file HitPattern.cc.

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

839  {
840  stream << "HitPattern" << std::endl;
841  for (int i = 0; i < numberOfAllHits(category); ++i) {
842  printHitPattern(category, i, stream);
843  }
844  std::ios_base::fmtflags flags = stream.flags();
845  stream.setf(std::ios_base::hex, std::ios_base::basefield);
846  stream.setf(std::ios_base::showbase);
847 
848  for (int i = 0; i < this->numberOfAllHits(category); ++i) {
849  stream << getHitPattern(category, i) << std::endl;
850  }
851 
852  stream.flags(flags);
853 }
void printHitPattern(HitCategory category, int position, std::ostream &stream) const
Definition: HitPattern.cc:803
int numberOfAllHits(HitCategory category) const
Definition: HitPattern.h:774
uint16_t getHitPattern(HitCategory category, int position) const
Definition: HitPattern.h:531
void HitPattern::printHitPattern ( HitCategory  category,
int  position,
std::ostream &  stream 
) const

Definition at line 803 of file HitPattern.cc.

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

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

803  {
804  uint16_t pattern = getHitPattern(category, position);
805  stream << "\t";
806  if (muonHitFilter(pattern)) {
807  stream << "muon";
808  } else if (trackerHitFilter(pattern)) {
809  stream << "tracker";
810  } else if (timingHitFilter(pattern)) {
811  stream << "timing";
812  }
813 
814  stream << "\tsubstructure " << getSubStructure(pattern);
815  if (muonHitFilter(pattern)) {
816  stream << "\tstation " << getMuonStation(pattern);
817  if (muonDTHitFilter(pattern)) {
818  stream << "\tdt superlayer " << getDTSuperLayer(pattern);
819  } else if (muonCSCHitFilter(pattern)) {
820  stream << "\tcsc ring " << getCSCRing(pattern);
821  } else if (muonRPCHitFilter(pattern)) {
822  stream << "\trpc " << (getRPCregion(pattern) ? "endcaps" : "barrel") << ", layer " << getRPCLayer(pattern);
823  } else if (muonGEMHitFilter(pattern)) {
824  stream << "\tgem " << (getGEMLayer(pattern) ? "layer1" : "layer2") << ", station " << getGEMStation(pattern);
825  } else if (muonME0HitFilter(pattern)) {
826  stream << "\tme0 ";
827  } else {
828  stream << "(UNKNOWN Muon SubStructure!) \tsubsubstructure " << getSubStructure(pattern);
829  }
830  } else if (timingHitFilter(pattern)) {
831  stream << "\tdetector " << getSubStructure(pattern);
832  } else {
833  stream << "\tlayer " << getLayer(pattern);
834  }
835  stream << "\thit type " << getHitType(pattern);
836  stream << std::endl;
837 }
static uint16_t getCSCRing(uint16_t pattern)
CSC ring (1-4). Only valid for muon CSC patterns, of course.
Definition: HitPattern.h:737
static uint32_t getLayer(uint16_t pattern)
Definition: HitPattern.h:703
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:689
static uint16_t getDTSuperLayer(uint16_t pattern)
DT superlayer (1-3). Where the "hit" was a DT segment, superlayer is 0. Only valid for muon DT patter...
Definition: HitPattern.h:735
static bool muonME0HitFilter(uint16_t pattern)
Definition: HitPattern.h:657
static uint16_t getGEMLayer(uint16_t pattern)
GEM layer: 1,2. Only valid for muon GEM patterns, of course.
Definition: HitPattern.h:764
static bool muonCSCHitFilter(uint16_t pattern)
Definition: HitPattern.h:633
static uint32_t getHitType(uint16_t pattern)
Definition: HitPattern.h:726
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static uint16_t getRPCregion(uint16_t pattern)
RPC region: 0 = barrel, 1 = endcap. Only valid for muon RPC patterns, of course.
Definition: HitPattern.h:749
static bool muonGEMHitFilter(uint16_t pattern)
Definition: HitPattern.h:649
static uint16_t getGEMStation(uint16_t pattern)
GEM station: 1,2. Only valid for muon GEM patterns, of course.
Definition: HitPattern.h:752
static bool muonHitFilter(uint16_t pattern)
Definition: HitPattern.h:668
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:664
static bool muonDTHitFilter(uint16_t pattern)
Definition: HitPattern.h:625
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:739
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:733
uint16_t getHitPattern(HitCategory category, int position) const
Definition: HitPattern.h:531
static bool muonRPCHitFilter(uint16_t pattern)
Definition: HitPattern.h:641
int reco::HitPattern::rpcStationsWithAnyHits ( ) const
inline

Definition at line 1036 of file HitPattern.h.

1036 { 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:877
int reco::HitPattern::rpcStationsWithBadHits ( ) const
inline

Definition at line 1034 of file HitPattern.h.

1034 { 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:877
int reco::HitPattern::rpcStationsWithValidHits ( ) const
inline

Definition at line 1032 of file HitPattern.h.

1032 { 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:877
bool reco::HitPattern::stripHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 598 of file HitPattern.h.

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

598  {
600  }
static const unsigned short maxTrackerWord
Definition: HitPattern.h:461
static const unsigned short minStripWord
Definition: HitPattern.h:463
int reco::HitPattern::stripLayersNull ( ) const
inline

Definition at line 1010 of file HitPattern.h.

1010  {
1012  }
int stripTIBLayersNull() const
Definition: HitPattern.cc:763
int stripTECLayersNull() const
Definition: HitPattern.cc:793
int stripTIDLayersNull() const
Definition: HitPattern.cc:773
int stripTOBLayersNull() const
Definition: HitPattern.cc:783
int reco::HitPattern::stripLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const
inline

Definition at line 1001 of file HitPattern.h.

1001  {
1004  }
int stripTOBLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:721
int stripTIBLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:701
int stripTIDLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:711
int stripTECLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.cc:731
int reco::HitPattern::stripLayersWithMeasurement ( ) const
inline
int reco::HitPattern::stripLayersWithoutMeasurement ( HitCategory  category) const
inline

Definition at line 988 of file HitPattern.h.

988  {
991  }
int stripTOBLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:659
int stripTIDLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:649
int stripTECLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:669
int stripTIBLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.cc:639
bool reco::HitPattern::stripSubdetectorHitFilter ( uint16_t  pattern,
StripSubdetector::SubDetector  substructure 
)
inlinestaticprivate

Definition at line 602 of file HitPattern.h.

References UNLIKELY.

602  {
603  if
604  UNLIKELY(!trackerHitFilter(pattern)) { return false; }
605 
606  return substructure == getSubStructure(pattern);
607  }
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:664
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::stripTECHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 621 of file HitPattern.h.

References StripSubdetector::TEC.

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

Definition at line 793 of file HitPattern.cc.

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

793  {
794  int count = 0;
795  for (uint16_t layer = 1; layer <= 9; layer++) {
797  count++;
798  }
799  }
800  return count;
801 }
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:430
int HitPattern::stripTECLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 731 of file HitPattern.cc.

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

731  {
732  int count = 0;
733  for (uint16_t layer = 1; layer <= 9; layer++) {
734  if (getTrackerLayerCase(category, StripSubdetector::TEC, layer) == HIT_TYPE::INACTIVE) {
735  count++;
736  }
737  }
738  return count;
739 }
static constexpr auto TEC
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
int HitPattern::stripTECLayersWithMeasurement ( ) const

Definition at line 607 of file HitPattern.cc.

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

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

607  {
608  int count = 0;
609  for (uint16_t layer = 1; layer <= 9; layer++) {
610  if (getTrackerLayerCase(TRACK_HITS, StripSubdetector::TEC, layer) == HIT_TYPE::VALID) {
611  count++;
612  }
613  }
614  return count;
615 }
static constexpr auto TEC
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
int HitPattern::stripTECLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 669 of file HitPattern.cc.

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

Referenced by IsolatedTracksNxN::analyze().

669  {
670  int count = 0;
671  for (uint16_t layer = 1; layer <= 9; layer++) {
672  if (getTrackerLayerCase(category, StripSubdetector::TEC, layer) == HIT_TYPE::MISSING) {
673  count++;
674  }
675  }
676  return count;
677 }
static constexpr auto TEC
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
bool reco::HitPattern::stripTIBHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 609 of file HitPattern.h.

References StripSubdetector::TIB.

Referenced by egamma::getClosestCtfToGsf().

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

Definition at line 763 of file HitPattern.cc.

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

763  {
764  int count = 0;
765  for (uint16_t layer = 1; layer <= 4; 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:430
static constexpr auto TIB
int HitPattern::stripTIBLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 701 of file HitPattern.cc.

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

701  {
702  int count = 0;
703  for (uint16_t layer = 1; layer <= 4; layer++) {
704  if (getTrackerLayerCase(category, StripSubdetector::TIB, layer) == HIT_TYPE::INACTIVE) {
705  count++;
706  }
707  }
708  return count;
709 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
static constexpr auto TIB
int HitPattern::stripTIBLayersWithMeasurement ( ) const

Definition at line 577 of file HitPattern.cc.

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

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

577  {
578  int count = 0;
579  for (uint16_t layer = 1; layer <= 4; layer++) {
580  if (getTrackerLayerCase(TRACK_HITS, StripSubdetector::TIB, layer) == HIT_TYPE::VALID) {
581  count++;
582  }
583  }
584  return count;
585 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
static constexpr auto TIB
int HitPattern::stripTIBLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 639 of file HitPattern.cc.

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

Referenced by IsolatedTracksNxN::analyze().

639  {
640  int count = 0;
641  for (uint16_t layer = 1; layer <= 4; layer++) {
642  if (getTrackerLayerCase(category, StripSubdetector::TIB, layer) == HIT_TYPE::MISSING) {
643  count++;
644  }
645  }
646  return count;
647 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
static constexpr auto TIB
bool reco::HitPattern::stripTIDHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 613 of file HitPattern.h.

References StripSubdetector::TID.

Referenced by egamma::getClosestCtfToGsf().

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

Definition at line 773 of file HitPattern.cc.

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

773  {
774  int count = 0;
775  for (uint16_t layer = 1; layer <= 3; layer++) {
777  count++;
778  }
779  }
780  return count;
781 }
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:430
static constexpr auto TID
int HitPattern::stripTIDLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 711 of file HitPattern.cc.

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

711  {
712  int count = 0;
713  for (uint16_t layer = 1; layer <= 3; layer++) {
714  if (getTrackerLayerCase(category, StripSubdetector::TID, layer) == HIT_TYPE::INACTIVE) {
715  count++;
716  }
717  }
718  return count;
719 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
static constexpr auto TID
int HitPattern::stripTIDLayersWithMeasurement ( ) const

Definition at line 587 of file HitPattern.cc.

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

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

587  {
588  int count = 0;
589  for (uint16_t layer = 1; layer <= 3; layer++) {
590  if (getTrackerLayerCase(TRACK_HITS, StripSubdetector::TID, layer) == HIT_TYPE::VALID) {
591  count++;
592  }
593  }
594  return count;
595 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
static constexpr auto TID
int HitPattern::stripTIDLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 649 of file HitPattern.cc.

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

Referenced by IsolatedTracksNxN::analyze().

649  {
650  int count = 0;
651  for (uint16_t layer = 1; layer <= 3; layer++) {
652  if (getTrackerLayerCase(category, StripSubdetector::TID, layer) == HIT_TYPE::MISSING) {
653  count++;
654  }
655  }
656  return count;
657 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
static constexpr auto TID
bool reco::HitPattern::stripTOBHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 617 of file HitPattern.h.

References StripSubdetector::TOB.

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

Definition at line 783 of file HitPattern.cc.

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

783  {
784  int count = 0;
785  for (uint16_t layer = 1; layer <= 6; layer++) {
787  count++;
788  }
789  }
790  return count;
791 }
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:430
static constexpr auto TOB
int HitPattern::stripTOBLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const

Definition at line 721 of file HitPattern.cc.

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

721  {
722  int count = 0;
723  for (uint16_t layer = 1; layer <= 6; layer++) {
724  if (getTrackerLayerCase(category, StripSubdetector::TOB, layer) == HIT_TYPE::INACTIVE) {
725  count++;
726  }
727  }
728  return count;
729 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
static constexpr auto TOB
int HitPattern::stripTOBLayersWithMeasurement ( ) const

Definition at line 597 of file HitPattern.cc.

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

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

597  {
598  int count = 0;
599  for (uint16_t layer = 1; layer <= 6; layer++) {
600  if (getTrackerLayerCase(TRACK_HITS, StripSubdetector::TOB, layer) == HIT_TYPE::VALID) {
601  count++;
602  }
603  }
604  return count;
605 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
static constexpr auto TOB
int HitPattern::stripTOBLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 659 of file HitPattern.cc.

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

Referenced by IsolatedTracksNxN::analyze().

659  {
660  int count = 0;
661  for (uint16_t layer = 1; layer <= 6; layer++) {
662  if (getTrackerLayerCase(category, StripSubdetector::TOB, layer) == HIT_TYPE::MISSING) {
663  count++;
664  }
665  }
666  return count;
667 }
uint32_t getTrackerLayerCase(HitCategory category, uint16_t substr, uint16_t layer) const
Definition: HitPattern.cc:430
static constexpr auto TOB
bool reco::HitPattern::timingBTLHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 675 of file HitPattern.h.

References MTDDetId::BTL, and UNLIKELY.

675  {
676  if
678  uint16_t substructure = getSubStructure(pattern);
679  return (substructure == (uint16_t)MTDDetId::BTL);
680  }
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:689
Detector identifier base class for the MIP Timing Layer.
Definition: MTDDetId.h:21
return((rh^lh)&mask)
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::timingETLHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 682 of file HitPattern.h.

References MTDDetId::ETL, and UNLIKELY.

682  {
683  if
685  uint16_t substructure = getSubStructure(pattern);
686  return (substructure == (uint16_t)MTDDetId::ETL);
687  }
static bool timingHitFilter(uint16_t pattern)
Definition: HitPattern.h:689
Detector identifier base class for the MIP Timing Layer.
Definition: MTDDetId.h:21
return((rh^lh)&mask)
static uint32_t getSubStructure(uint16_t pattern)
Definition: HitPattern.h:696
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::timingHitFilter ( uint16_t  pattern)
inlinestatic

Definition at line 689 of file HitPattern.h.

References UNLIKELY.

Referenced by printHitPattern().

689  {
690  if
691  UNLIKELY(pattern == HitPattern::EMPTY_PATTERN) { return false; }
692 
693  return (((pattern >> SubDetectorOffset) & SubDetectorMask) == 2);
694  }
static const uint16_t EMPTY_PATTERN
Definition: HitPattern.h:162
static const unsigned short SubDetectorMask
Definition: HitPattern.h:458
static const unsigned short SubDetectorOffset
Definition: HitPattern.h:457
#define UNLIKELY(x)
Definition: Likely.h:21
bool reco::HitPattern::trackerHitFilter ( uint16_t  pattern)
inlinestatic
int reco::HitPattern::trackerLayersNull ( ) const
inline

Definition at line 1006 of file HitPattern.h.

1006 { return pixelLayersNull() + stripLayersNull(); }
int pixelLayersNull() const
Definition: HitPattern.h:1008
int stripLayersNull() const
Definition: HitPattern.h:1010
int reco::HitPattern::trackerLayersTotallyOffOrBad ( HitCategory  category = TRACK_HITS) const
inline

Definition at line 993 of file HitPattern.h.

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

993  {
995  }
int pixelLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.h:997
int stripLayersTotallyOffOrBad(HitCategory category=TRACK_HITS) const
Definition: HitPattern.h:1001
int HitPattern::trackerLayersWithMeasurement ( ) const

Definition at line 513 of file HitPattern.cc.

References taus_updatedMVAIds_cff::category, getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerOffset, minTrackerWord, topSingleLeptonDQM_PU_cfi::pattern, FastTimerService_cff::range, TRACK_HITS, trackerHitFilter(), and UNLIKELY.

Referenced by StandaloneTrackMonitor::analyze(), TrackAnalyzer::analyze(), MuonRecoAnalyzer::analyze(), IsolatedTracksCone::analyze(), MuonTrackValidator::analyze(), IsolatedTracksNxN::analyze(), PackedCandidateTrackValidator::analyze(), spr::coneChargeIsolation(), MTVHistoProducerAlgoForTracker::fill_generic_recoTrack_histos(), MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos(), TrackAnalyzer::fillHistosForState(), PrimaryVertexValidation::fillTrackHistos(), HcalHBHEMuonHighEtaAnalyzer::fillTrackParameters(), HLTMuonPointingFilter::filter(), spr::goodTrack(), cms::MuonTCMETValueMapProducer::nLayers(), TrackFilterForPVFinding::operator()(), GhostTrackComputer::operator()(), RecoTrackSelectorBase::operator()(), IsolatedTracksNxN::printTrack(), MultiTrackSelector::processMVA(), HIMultiTrackSelector::processMVA(), FastTrackerRecHitMaskProducer::produce(), BeamFitter::readEvent(), CosmicTrackSelector::select(), MultiTrackSelector::select(), HIMultiTrackSelector::select(), TrackVertexArbitration< VTX >::trackFilterArbitrator(), 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) {
519  if
520  UNLIKELY(!trackerHitFilter(pattern)) continue;
521  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
522  if (hitType != HIT_TYPE::VALID)
523  continue;
525  // assert(pattern<128);
526  layerOk.set(pattern);
527  }
528  // assert(trackerLayersWithMeasurementOld()==int(layerOk.count()));
529  return layerOk.count();
530 }
static const unsigned short HitTypeMask
Definition: HitPattern.h:442
return((rh^lh)&mask)
static const unsigned short minTrackerWord
Definition: HitPattern.h:460
static const unsigned short HitTypeOffset
Definition: HitPattern.h:441
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:664
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static const unsigned short LayerOffset
Definition: HitPattern.h:449
#define UNLIKELY(x)
Definition: Likely.h:21
int reco::HitPattern::trackerLayersWithMeasurementOld ( ) const
inline

Definition at line 967 of file HitPattern.h.

967  {
969  }
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:492
int stripLayersWithMeasurement() const
Definition: HitPattern.h:975
int HitPattern::trackerLayersWithoutMeasurement ( HitCategory  category) const

Definition at line 532 of file HitPattern.cc.

References getCategoryIndexRange(), getHitPatternByAbsoluteIndex(), HitTypeMask, HitTypeOffset, mps_fire::i, LayerOffset, minTrackerWord, topSingleLeptonDQM_PU_cfi::pattern, FastTimerService_cff::range, trackerHitFilter(), and UNLIKELY.

Referenced by TrackAnalyzer::analyze(), HcalHBHEMuonHighEtaAnalyzer::fillTrackParameters(), TrackingNtuple::fillTracks(), spr::goodTrack(), MultiTrackSelector::processMVA(), HIMultiTrackSelector::processMVA(), CosmicTrackSelector::select(), MultiTrackSelector::select(), and HIMultiTrackSelector::select().

532  {
533  std::bitset<128> layerOk;
534  std::bitset<128> layerMissed;
535  std::pair<uint8_t, uint8_t> range = getCategoryIndexRange(category);
536  for (int i = range.first; i < range.second; ++i) {
538  if
539  UNLIKELY(!trackerHitFilter(pattern)) continue;
540  uint16_t hitType = (pattern >> HitTypeOffset) & HitTypeMask;
542  // assert(pattern<128);
543  if (hitType == HIT_TYPE::VALID)
544  layerOk.set(pattern);
545  if (hitType == HIT_TYPE::MISSING)
546  layerMissed.set(pattern);
547  }
548  layerMissed &= ~layerOk;
549 
550  // assert(trackerLayersWithoutMeasurementOld(category)==int(layerMissed.count()));
551 
552  return layerMissed.count();
553 }
static const unsigned short HitTypeMask
Definition: HitPattern.h:442
return((rh^lh)&mask)
static const unsigned short minTrackerWord
Definition: HitPattern.h:460
static const unsigned short HitTypeOffset
Definition: HitPattern.h:441
static bool trackerHitFilter(uint16_t pattern)
Definition: HitPattern.h:664
std::pair< uint8_t, uint8_t > getCategoryIndexRange(HitCategory category) const
Definition: HitPattern.h:507
uint16_t getHitPatternByAbsoluteIndex(int position) const
Definition: HitPattern.cc:297
static const unsigned short LayerOffset
Definition: HitPattern.h:449
#define UNLIKELY(x)
Definition: Likely.h:21
int reco::HitPattern::trackerLayersWithoutMeasurementOld ( HitCategory  category) const
inline

Definition at line 980 of file HitPattern.h.

980  {
982  }
int pixelLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.h:984
int stripLayersWithoutMeasurement(HitCategory category) const
Definition: HitPattern.h:988
bool reco::HitPattern::validHitFilter ( uint16_t  pattern)
inlinestatic

Friends And Related Function Documentation

template<int N>
friend struct PatternSet
friend

Definition at line 504 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(), and operator=().

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

Definition at line 162 of file HitPattern.h.

Referenced by clear(), encode(), getHitPatternByAbsoluteIndex(), and HitPattern().

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

Definition at line 461 of file HitPattern.h.

Referenced by numberOfValidStripLayersWithMonoAndStereo().

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

Definition at line 462 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 446 of file HitPattern.h.

Referenced by encode().

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

Definition at line 445 of file HitPattern.h.

Referenced by encode().

const unsigned short reco::HitPattern::SubDetectorMask = 0x3
staticprivate

Definition at line 458 of file HitPattern.h.

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

const unsigned short reco::HitPattern::SubDetectorOffset = 10
staticprivate

Definition at line 457 of file HitPattern.h.

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

const unsigned short reco::HitPattern::SubstrMask = 0x7
staticprivate
const unsigned short reco::HitPattern::SubstrOffset = 7
staticprivate

Definition at line 453 of file HitPattern.h.

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