CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
dtbayesam::CandidateGroup Class Reference

#include <CandidateGroup.h>

Public Member Functions

void addHit (DTPrimitive dthit, int lay, bool isGood)
 
DTPrimitivePtrs candHits () const
 
int candId () const
 
 CandidateGroup ()
 
 CandidateGroup (DTPatternPtr p)
 
int nhits () const
 
int nisGood () const
 
int nLayerDown () const
 
int nLayerhits () const
 
int nLayerUp () const
 
bool operator== (const CandidateGroup &cOther) const
 
bool operator> (const CandidateGroup &cOther) const
 
const DTPatternPtr pattern () const
 
qualitybits quality () const
 
void removeHit (DTPrimitive dthit)
 
void setCandId (int cId)
 
 ~CandidateGroup ()
 

Private Attributes

DTPrimitivePtrs candHits_
 
int candId_
 
int nhits_
 
int nisGood_
 
int nLayerDown_
 
int nLayerhits_
 
int nLayerUp_
 
DTPatternPtr pattern_
 
qualitybits quality_
 

Detailed Description

Definition at line 20 of file CandidateGroup.h.

Constructor & Destructor Documentation

◆ CandidateGroup() [1/2]

CandidateGroup::CandidateGroup ( )

Definition at line 20 of file CandidateGroup.cc.

20 {}

◆ CandidateGroup() [2/2]

CandidateGroup::CandidateGroup ( DTPatternPtr  p)

Definition at line 11 of file CandidateGroup.cc.

11  {
12  nhits_ = 0;
13  nLayerhits_ = 0;
14  nisGood_ = 0;
15  nLayerDown_ = 0;
16  nLayerUp_ = 0;
17  pattern_ = p;
18 }

References nhits_, nisGood_, nLayerDown_, nLayerhits_, nLayerUp_, AlCaHLTBitMon_ParallelJobs::p, and pattern_.

◆ ~CandidateGroup()

CandidateGroup::~CandidateGroup ( )

Definition at line 22 of file CandidateGroup.cc.

22 {}

Member Function Documentation

◆ addHit()

void CandidateGroup::addHit ( DTPrimitive  dthit,
int  lay,
bool  isGood 
)

Definition at line 24 of file CandidateGroup.cc.

24  {
25  //Add a hit, check if the hits layer was fired and if it wasn't add it to the fired layers
26  candHits_.push_back(std::make_shared<DTPrimitive>(dthit));
27  if (quality_ != (quality_ | qualitybits(std::pow(2, lay))))
28  nLayerhits_++;
29  if (isGood)
30  nisGood_++;
32  nhits_++;
33  if (lay <= 3)
34  nLayerDown_++;
35  if (lay >= 4)
36  nLayerUp_++;
37 }

References candHits_, nhits_, nisGood_, nLayerDown_, nLayerhits_, nLayerUp_, funct::pow(), and quality_.

◆ candHits()

DTPrimitivePtrs dtbayesam::CandidateGroup::candHits ( ) const
inline

Definition at line 38 of file CandidateGroup.h.

38 { return candHits_; };

References candHits_.

◆ candId()

int dtbayesam::CandidateGroup::candId ( ) const
inline

Definition at line 32 of file CandidateGroup.h.

32 { return candId_; };

References candId_.

Referenced by operator>().

◆ nhits()

int dtbayesam::CandidateGroup::nhits ( ) const
inline

Definition at line 33 of file CandidateGroup.h.

33 { return nhits_; };

References nhits_.

Referenced by operator==(), and operator>().

◆ nisGood()

int dtbayesam::CandidateGroup::nisGood ( ) const
inline

Definition at line 34 of file CandidateGroup.h.

34 { return nisGood_; };

References nisGood_.

Referenced by operator==(), and operator>().

◆ nLayerDown()

int dtbayesam::CandidateGroup::nLayerDown ( ) const
inline

Definition at line 37 of file CandidateGroup.h.

37 { return nLayerDown_; };

References nLayerDown_.

Referenced by operator==(), and operator>().

◆ nLayerhits()

int dtbayesam::CandidateGroup::nLayerhits ( ) const
inline

Definition at line 35 of file CandidateGroup.h.

35 { return nLayerhits_; };

References nLayerhits_.

Referenced by operator==(), and operator>().

◆ nLayerUp()

int dtbayesam::CandidateGroup::nLayerUp ( ) const
inline

Definition at line 36 of file CandidateGroup.h.

36 { return nLayerUp_; };

References nLayerUp_.

Referenced by operator==(), and operator>().

◆ operator==()

bool CandidateGroup::operator== ( const CandidateGroup cOther) const

Definition at line 103 of file CandidateGroup.cc.

103  {
104  //First number of good hits
105  if (nisGood_ != cOther.nisGood())
106  return false;
107  //First quality_ is number of layers fired
108  else if (nLayerhits_ != cOther.nLayerhits())
109  return false;
110  //Then number of matched hits (if multiple hits in a layer is better)
111  else if (nhits_ != cOther.nhits())
112  return false;
113  //Balanced quality_, prefer 3+2 over 4+1 for example
114  else if ((nLayerUp_ - nLayerDown_) != (cOther.nLayerUp() - cOther.nLayerDown()))
115  return false;
116  //Last, patterns with less gen hits are better matched
117  return true;
118 }

References nhits(), nhits_, nisGood(), nisGood_, nLayerDown(), nLayerDown_, nLayerhits(), nLayerhits_, nLayerUp(), and nLayerUp_.

◆ operator>()

bool CandidateGroup::operator> ( const CandidateGroup cOther) const

Definition at line 67 of file CandidateGroup.cc.

67  {
68  //First number of good (in pattern) matched hits
69  if (nisGood_ > cOther.nisGood())
70  return true;
71  else if (nisGood_ < cOther.nisGood())
72  return false;
73  //Tehn quality_ is number of layers fired
74  else if (nLayerhits_ > cOther.nLayerhits())
75  return true;
76  else if (nLayerhits_ < cOther.nLayerhits())
77  return false;
78  //Then number of matched hits (if multiple hits in a layer is better)
79  else if (nhits_ > cOther.nhits())
80  return true;
81  else if (nhits_ < cOther.nhits())
82  return false;
83  //Balanced quality_, prefer 3+2 over 4+1 for example
84  else if ((nLayerUp_ - nLayerDown_) > (cOther.nLayerUp() - cOther.nLayerDown()))
85  return true;
86  else if ((nLayerUp_ - nLayerDown_) < (cOther.nLayerUp() - cOther.nLayerDown()))
87  return false;
88  //Last, patterns with less gen hits are better matched
89  else if (pattern_->genHits().size() < (cOther.pattern()->genHits().size()))
90  return true;
91  else if (pattern_->genHits().size() > (cOther.pattern()->genHits().size()))
92  return false;
93  //For a total order relation we need this additional dummy
94  else if (candId_ < cOther.candId())
95  return true;
96  else if (candId_ > cOther.candId())
97  return false;
98 
99  //If we are here, they are basically equal so it doesn't matter who goes first
100  return true;
101 }

References candId(), candId_, nhits(), nhits_, nisGood(), nisGood_, nLayerDown(), nLayerDown_, nLayerhits(), nLayerhits_, nLayerUp(), nLayerUp_, pattern(), and pattern_.

◆ pattern()

const DTPatternPtr dtbayesam::CandidateGroup::pattern ( void  ) const
inline

Definition at line 40 of file CandidateGroup.h.

40 { return pattern_; };

References pattern_.

Referenced by operator>().

◆ quality()

qualitybits dtbayesam::CandidateGroup::quality ( void  ) const
inline

Definition at line 39 of file CandidateGroup.h.

39 { return quality_; };

References quality_.

◆ removeHit()

void CandidateGroup::removeHit ( DTPrimitive  dthit)

Definition at line 39 of file CandidateGroup.cc.

39  {
40  //Add a hit, check if the hits layer was fired and if it wasn't add it to the fired layers
41  DTPrimitivePtrs tempHits;
42  nhits_ = 0;
43  nLayerDown_ = 0;
44  nLayerUp_ = 0;
45  nLayerhits_ = 0;
46  nisGood_ = 0;
47  quality_ = qualitybits("00000000");
48  for (auto dt_it = candHits_.begin(); dt_it != candHits_.end(); dt_it++) {
49  if (dthit.layerId() == (*dt_it)->layerId() && dthit.channelId() == (*dt_it)->channelId()) {
50  } else {
51  if (pattern_->latHitIn((*dt_it)->layerId(), (*dt_it)->channelId(), 0) > -5)
52  nisGood_++;
53  if (quality_ != (quality_ | qualitybits(std::pow(2, (*dt_it)->layerId()))))
54  nLayerhits_++;
55  quality_ = quality_ | qualitybits(std::pow(2, (*dt_it)->layerId()));
56  nhits_++;
57  if ((*dt_it)->layerId() <= 3)
58  nLayerDown_++;
59  else if ((*dt_it)->layerId() >= 4)
60  nLayerUp_++;
61  tempHits.push_back(*dt_it);
62  }
63  }
64  candHits_ = tempHits;
65 }

References candHits_, DTPrimitive::channelId(), DTPrimitive::layerId(), nhits_, nisGood_, nLayerDown_, nLayerhits_, nLayerUp_, pattern_, funct::pow(), and quality_.

◆ setCandId()

void dtbayesam::CandidateGroup::setCandId ( int  cId)
inline

Definition at line 43 of file CandidateGroup.h.

43 { candId_ = cId; };

References candId_.

Member Data Documentation

◆ candHits_

DTPrimitivePtrs dtbayesam::CandidateGroup::candHits_
private

Definition at line 50 of file CandidateGroup.h.

Referenced by addHit(), candHits(), and removeHit().

◆ candId_

int dtbayesam::CandidateGroup::candId_
private

Definition at line 58 of file CandidateGroup.h.

Referenced by candId(), operator>(), and setCandId().

◆ nhits_

int dtbayesam::CandidateGroup::nhits_
private

Definition at line 52 of file CandidateGroup.h.

Referenced by addHit(), CandidateGroup(), nhits(), operator==(), operator>(), and removeHit().

◆ nisGood_

int dtbayesam::CandidateGroup::nisGood_
private

Definition at line 56 of file CandidateGroup.h.

Referenced by addHit(), CandidateGroup(), nisGood(), operator==(), operator>(), and removeHit().

◆ nLayerDown_

int dtbayesam::CandidateGroup::nLayerDown_
private

Definition at line 55 of file CandidateGroup.h.

Referenced by addHit(), CandidateGroup(), nLayerDown(), operator==(), operator>(), and removeHit().

◆ nLayerhits_

int dtbayesam::CandidateGroup::nLayerhits_
private

Definition at line 53 of file CandidateGroup.h.

Referenced by addHit(), CandidateGroup(), nLayerhits(), operator==(), operator>(), and removeHit().

◆ nLayerUp_

int dtbayesam::CandidateGroup::nLayerUp_
private

Definition at line 54 of file CandidateGroup.h.

Referenced by addHit(), CandidateGroup(), nLayerUp(), operator==(), operator>(), and removeHit().

◆ pattern_

DTPatternPtr dtbayesam::CandidateGroup::pattern_
private

Definition at line 57 of file CandidateGroup.h.

Referenced by CandidateGroup(), operator>(), pattern(), and removeHit().

◆ quality_

qualitybits dtbayesam::CandidateGroup::quality_
private

Definition at line 51 of file CandidateGroup.h.

Referenced by addHit(), quality(), and removeHit().

dtbayesam::CandidateGroup::candHits_
DTPrimitivePtrs candHits_
Definition: CandidateGroup.h:50
dtbayesam::qualitybits
std::bitset< 8 > qualitybits
Definition: CandidateGroup.h:15
dtbayesam::CandidateGroup::pattern_
DTPatternPtr pattern_
Definition: CandidateGroup.h:57
dtbayesam::CandidateGroup::nhits_
int nhits_
Definition: CandidateGroup.h:52
DTPrimitive::channelId
const int channelId() const
Definition: DTprimitive.h:34
dtbayesam::CandidateGroup::nLayerDown
int nLayerDown() const
Definition: CandidateGroup.h:37
dtbayesam::CandidateGroup::nLayerUp
int nLayerUp() const
Definition: CandidateGroup.h:36
dtbayesam::CandidateGroup::pattern
const DTPatternPtr pattern() const
Definition: CandidateGroup.h:40
dtbayesam::CandidateGroup::nhits
int nhits() const
Definition: CandidateGroup.h:33
DTPrimitive::layerId
const int layerId() const
Definition: DTprimitive.h:35
dtbayesam::CandidateGroup::nLayerDown_
int nLayerDown_
Definition: CandidateGroup.h:55
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
dtbayesam::CandidateGroup::candId_
int candId_
Definition: CandidateGroup.h:58
dtbayesam::CandidateGroup::quality_
qualitybits quality_
Definition: CandidateGroup.h:51
dtbayesam::CandidateGroup::candId
int candId() const
Definition: CandidateGroup.h:32
dtbayesam::CandidateGroup::nisGood
int nisGood() const
Definition: CandidateGroup.h:34
dtbayesam::CandidateGroup::nLayerhits
int nLayerhits() const
Definition: CandidateGroup.h:35
dtbayesam::CandidateGroup::nisGood_
int nisGood_
Definition: CandidateGroup.h:56
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
dtbayesam::CandidateGroup::nLayerhits_
int nLayerhits_
Definition: CandidateGroup.h:53
DTPrimitivePtrs
std::vector< DTPrimitivePtr > DTPrimitivePtrs
Definition: DTprimitive.h:55
dtbayesam::CandidateGroup::nLayerUp_
int nLayerUp_
Definition: CandidateGroup.h:54