CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends
reco::CaloID Class Reference

#include <CaloID.h>

Public Types

enum  Detectors {
  DET_ECAL_BARREL = 0, DET_ECAL_ENDCAP, DET_PS1, DET_PS2,
  DET_HCAL_BARREL, DET_HCAL_ENDCAP, DET_HF, DET_HF_EM,
  DET_HF_HAD, DET_HO, DET_HGCAL_ENDCAP, DET_NONE
}
 

Public Member Functions

 CaloID ()
 default constructor. Sets energy and position to zero More...
 
 CaloID (Detectors det)
 
bool detector (CaloID::Detectors theDetector) const
 
Detectors detector () const
 
unsigned detectors () const
 
bool isSingleDetector () const
 
CaloIDoperator= (const CaloID &rhs)
 
void setDetector (CaloID::Detectors theDetector, bool value)
 tells the CaloID that it describes a given detector More...
 
virtual ~CaloID ()
 abstract class More...
 

Private Member Functions

int leastSignificantBitPosition (unsigned n) const
 

Private Attributes

unsigned detectors_
 

Friends

std::ostream & operator<< (std::ostream &out, const CaloID &id)
 

Detailed Description

ID information for all calorimeters.

Author
Colin Bernet, LLR

Definition at line 17 of file CaloID.h.

Member Enumeration Documentation

Enumerator
DET_ECAL_BARREL 
DET_ECAL_ENDCAP 
DET_PS1 
DET_PS2 
DET_HCAL_BARREL 
DET_HCAL_ENDCAP 
DET_HF 
DET_HF_EM 
DET_HF_HAD 
DET_HO 
DET_HGCAL_ENDCAP 
DET_NONE 

Definition at line 19 of file CaloID.h.

Constructor & Destructor Documentation

reco::CaloID::CaloID ( )
inline

default constructor. Sets energy and position to zero

Definition at line 35 of file CaloID.h.

35 : detectors_(0) {}
unsigned detectors_
Definition: CaloID.h:74
reco::CaloID::CaloID ( Detectors  det)
inline

Definition at line 37 of file CaloID.h.

References setDetector().

37 : detectors_(0) { setDetector(det, true); }
unsigned detectors_
Definition: CaloID.h:74
void setDetector(CaloID::Detectors theDetector, bool value)
tells the CaloID that it describes a given detector
Definition: CaloID.cc:7
virtual reco::CaloID::~CaloID ( )
inlinevirtual

abstract class

Definition at line 40 of file CaloID.h.

References setDetector().

40 {}

Member Function Documentation

bool CaloID::detector ( CaloID::Detectors  theDetector) const
Returns
true if this CaloID is in a given detector

Definition at line 17 of file CaloID.cc.

17 { return (detectors_ >> theDetector) & 1; }
unsigned detectors_
Definition: CaloID.h:74
CaloID::Detectors CaloID::detector ( ) const
Returns
the described detector if isSingleDetector(), and DET_NONE otherwise.

Definition at line 19 of file CaloID.cc.

Referenced by detectors(), and isSingleDetector().

19  {
20  if (!isSingleDetector())
21  return DET_NONE;
22 
24 
25  CaloID::Detectors det = static_cast<CaloID::Detectors>(pos);
26 
27  return det;
28 }
bool isSingleDetector() const
Definition: CaloID.h:52
unsigned detectors_
Definition: CaloID.h:74
int leastSignificantBitPosition(unsigned n) const
Definition: CaloID.cc:30
unsigned reco::CaloID::detectors ( ) const
inline
Returns
packed detector information

Definition at line 46 of file CaloID.h.

References detector(), and detectors_.

46 { return detectors_; }
unsigned detectors_
Definition: CaloID.h:74
bool reco::CaloID::isSingleDetector ( ) const
inline
Returns
true if this CaloID describes a single detector

Definition at line 52 of file CaloID.h.

References detector(), and detectors_.

52  {
53  // check that detectors_ is a power of 2
54  return static_cast<bool>(detectors_ && !((detectors_ - 1) & detectors_));
55  }
unsigned detectors_
Definition: CaloID.h:74
int CaloID::leastSignificantBitPosition ( unsigned  n) const
private
Returns
lsb position in an integer

Definition at line 30 of file CaloID.cc.

Referenced by operator=().

30  {
31  if (n == 0)
32  return -1;
33 
34  int pos = 31;
35 
36  if (n & 0x000000000000FFFFLL) {
37  pos -= 16;
38  } else {
39  n >>= 16;
40  }
41  if (n & 0x00000000000000FFLL) {
42  pos -= 8;
43  } else {
44  n >>= 8;
45  }
46  if (n & 0x000000000000000FLL) {
47  pos -= 4;
48  } else {
49  n >>= 4;
50  }
51  if (n & 0x0000000000000003LL) {
52  pos -= 2;
53  } else {
54  n >>= 2;
55  }
56  if (n & 0x0000000000000001LL) {
57  pos -= 1;
58  }
59  return pos;
60 }
CaloID& reco::CaloID::operator= ( const CaloID rhs)
inline

Definition at line 61 of file CaloID.h.

References detectors_, leastSignificantBitPosition(), dqmiodumpmetadata::n, operator<<, and MillePedeFileConverter_cfg::out.

61  {
62  detectors_ = rhs.detectors_;
63  return *this;
64  }
unsigned detectors_
Definition: CaloID.h:74
void CaloID::setDetector ( CaloID::Detectors  theDetector,
bool  value 
)

tells the CaloID that it describes a given detector

Definition at line 7 of file CaloID.cc.

Referenced by CaloID(), and ~CaloID().

7  {
8  // cout<<"CaloID::setDetector "<<theDetector<<" "<<(1<<theDetector)<<endl;
9  if (value)
10  detectors_ = detectors_ | (1 << theDetector);
11  else
12  detectors_ = detectors_ ^ (1 << theDetector);
13 
14  // cout<<detectors_<<endl;
15 }
Definition: value.py:1
unsigned detectors_
Definition: CaloID.h:74

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  out,
const CaloID id 
)
friend

Referenced by operator=().

Member Data Documentation

unsigned reco::CaloID::detectors_
private

packs the detector information into a bitmask. a CaloID can describe several detectors (bit or)

Definition at line 74 of file CaloID.h.

Referenced by detectors(), isSingleDetector(), and operator=().