CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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_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_NONE 

Definition at line 21 of file CaloID.h.

Constructor & Destructor Documentation

reco::CaloID::CaloID ( )
inline

default constructor. Sets energy and position to zero

Definition at line 36 of file CaloID.h.

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

Definition at line 38 of file CaloID.h.

References setDetector().

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

abstract class

Definition at line 41 of file CaloID.h.

41 {}

Member Function Documentation

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

Definition at line 21 of file CaloID.cc.

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

Definition at line 27 of file CaloID.cc.

27  {
28  if( ! isSingleDetector() ) return DET_NONE;
29 
31 
32  CaloID::Detectors det = static_cast<CaloID::Detectors>(pos);
33 
34  return det;
35 }
bool isSingleDetector() const
Definition: CaloID.h:53
unsigned detectors_
Definition: CaloID.h:77
int leastSignificantBitPosition(unsigned n) const
Definition: CaloID.cc:39
unsigned reco::CaloID::detectors ( ) const
inline
Returns
packed detector information

Definition at line 47 of file CaloID.h.

References detectors_.

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

Definition at line 53 of file CaloID.h.

References detectors_.

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

Definition at line 39 of file CaloID.cc.

39  {
40  if (n == 0)
41  return -1;
42 
43  int pos = 31;
44 
45  if (n & 0x000000000000FFFFLL) { pos -= 16; } else { n >>= 16; }
46  if (n & 0x00000000000000FFLL) { pos -= 8; } else { n >>= 8; }
47  if (n & 0x000000000000000FLL) { pos -= 4; } else { n >>= 4; }
48  if (n & 0x0000000000000003LL) { pos -= 2; } else { n >>= 2; }
49  if (n & 0x0000000000000001LL) { pos -= 1; }
50  return pos;
51 }
CaloID& reco::CaloID::operator= ( const CaloID rhs)
inline

Definition at line 62 of file CaloID.h.

References detectors_.

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

tells the CaloID that it describes a given detector

Definition at line 8 of file CaloID.cc.

Referenced by CaloID().

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

Friends And Related Function Documentation

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

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 77 of file CaloID.h.

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