ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
TRTHitIdHelper Class Reference

#include <TRTHitIdHelper.h>

Inheritance diagram for TRTHitIdHelper:
Collaboration diagram for TRTHitIdHelper:

Public Member Functions

bool isBarrel (const int &hid) const
 
bool isEndcap (const int &hid) const
 
bool isPositive (const int &hid) const
 
bool isNegative (const int &hid) const
 
int getRingWheel (const int &hid) const
 
int getPhiSector (const int &hid) const
 
int getLayerPlane (const int &hid) const
 
int getStraw (const int &hid) const
 
int buildHitId (const int, const int, const int, const int, const int, const int) const
 

Static Public Member Functions

static const TRTHitIdHelperGetHelper ()
 

Private Member Functions

 TRTHitIdHelper ()
 
void Initialize ()
 
void InitializeField (const std::string &n, int vmn, int vmx)
 
void InitializeField (const std::string &n, int nb)
 
void SetFieldValue (const std::string &name, int n, HitID &targetID) const
 
int GetFieldValue (const std::string &name, HitID targetID) const
 
void PrintFields ()
 

Static Private Member Functions

static void Print (int id)
 
static void SetBit (int &i, int bitpos)
 
static void UnsetBit (int &i, int bitpos)
 
static void Store (int &id, int value, int first, int field)
 
static int Retrieve (int id, int first, int field)
 

Private Attributes

IdFields m_IDs
 
int m_currentStorage
 

Detailed Description

Definition at line 25 of file TRTHitIdHelper.h.

Constructor & Destructor Documentation

◆ TRTHitIdHelper()

TRTHitIdHelper::TRTHitIdHelper ( )
private

Definition at line 9 of file TRTHitIdHelper.cxx.

9  :HitIdHelper() {
10  Initialize();
11 }

Member Function Documentation

◆ buildHitId()

int TRTHitIdHelper::buildHitId ( const int  BrlECap,
const int  PosNeg,
const int  RingWheel,
const int  PhiS,
const int  LayerPlane,
const int  Straw 
) const

Definition at line 72 of file TRTHitIdHelper.cxx.

73  {
74  int theID(0);
75  this->SetFieldValue("BarrelEndcap", BrlECap, theID);
76  this->SetFieldValue("PositiveNegative", PosNeg, theID);
77  this->SetFieldValue("RingWheel", RingWheel, theID);
78  this->SetFieldValue("PhiSector", PhiS, theID);
79  this->SetFieldValue("LayerPlane", LayerPlane, theID);
80  this->SetFieldValue("Straw", Straw, theID);
81  return theID;
82 }

◆ GetFieldValue()

int HitIdHelper::GetFieldValue ( const std::string &  name,
HitID  targetID 
) const
inherited

Definition at line 48 of file HitIdHelper.cxx.

49 {
50  for (unsigned int i=0;i<m_IDs.size();i++)
51  {
52  if (m_IDs[i].fieldName==name)
53  {
54  int n=Retrieve(targetID,m_IDs[i].firstBit,m_IDs[i].nBits);
55  return n+m_IDs[i].vMin;
56  }
57  }
58  std::cout<<"HitIdHelper: field "<<name<<" not found: returning 0"<<
59  std::endl;
60  return 0;
61 }

◆ GetHelper()

const TRTHitIdHelper * TRTHitIdHelper::GetHelper ( )
static

Definition at line 13 of file TRTHitIdHelper.cxx.

13  {
14  static const TRTHitIdHelper helper;
15  return &helper;
16 }

◆ getLayerPlane()

int TRTHitIdHelper::getLayerPlane ( const int &  hid) const

Definition at line 60 of file TRTHitIdHelper.cxx.

60  {
61  return this->GetFieldValue("LayerPlane", hid);
62 }

◆ getPhiSector()

int TRTHitIdHelper::getPhiSector ( const int &  hid) const

Definition at line 55 of file TRTHitIdHelper.cxx.

55  {
56  return this->GetFieldValue("PhiSector", hid);
57 }

◆ getRingWheel()

int TRTHitIdHelper::getRingWheel ( const int &  hid) const

Definition at line 50 of file TRTHitIdHelper.cxx.

50  {
51  return this->GetFieldValue("RingWheel", hid);
52 }

◆ getStraw()

int TRTHitIdHelper::getStraw ( const int &  hid) const

Definition at line 65 of file TRTHitIdHelper.cxx.

65  {
66  return this->GetFieldValue("Straw", hid);
67 }

◆ Initialize()

void TRTHitIdHelper::Initialize ( )
private

Definition at line 18 of file TRTHitIdHelper.cxx.

18  {
19  InitializeField("Straw",0,31);
20  InitializeField("LayerPlane",0,31);
21  InitializeField("PhiSector",0,31);
22  InitializeField("RingWheel",0,31);
23  InitializeField("PositiveNegative",0,1);
24  InitializeField("BarrelEndcap",0,1);
25 }

◆ InitializeField() [1/2]

void HitIdHelper::InitializeField ( const std::string &  n,
int  nb 
)
inherited

Definition at line 21 of file HitIdHelper.cxx.

22 {
23  int vmn=0;
24  int vmx=int(pow(2,nb))-1;
25  IdField id={n,vmn,vmx,nb,m_currentStorage+1};
26  m_IDs.push_back(id);
28  assert (m_currentStorage<33);
29 }

◆ InitializeField() [2/2]

void HitIdHelper::InitializeField ( const std::string &  n,
int  vmn,
int  vmx 
)
inherited

Definition at line 10 of file HitIdHelper.cxx.

11 {
12  int field = vmx -vmn+1;
13  int nb=1;
14  while (field>pow(2,nb)) nb++;
15  IdField id={n,vmn,vmx,nb,m_currentStorage+1};
16  m_IDs.push_back(id);
18  assert (m_currentStorage<33);
19 }

◆ isBarrel()

bool TRTHitIdHelper::isBarrel ( const int &  hid) const

Definition at line 29 of file TRTHitIdHelper.cxx.

29  {
30  int ps = this->GetFieldValue("BarrelEndcap", hid);
31  return ps ==0;
32 }

◆ isEndcap()

bool TRTHitIdHelper::isEndcap ( const int &  hid) const

Definition at line 34 of file TRTHitIdHelper.cxx.

34  {
35  int ps = this->GetFieldValue("BarrelEndcap", hid);
36  return ps != 0;
37 }

◆ isNegative()

bool TRTHitIdHelper::isNegative ( const int &  hid) const

Definition at line 44 of file TRTHitIdHelper.cxx.

44  {
45  int ps = this->GetFieldValue("PositiveNegative", hid);
46  return ps != 0;
47 }

◆ isPositive()

bool TRTHitIdHelper::isPositive ( const int &  hid) const

Definition at line 40 of file TRTHitIdHelper.cxx.

40  {
41  int ps = this->GetFieldValue("PositiveNegative", hid);
42  return ps ==0;
43 }

◆ Print()

void HitIdHelper::Print ( int  id)
staticinherited

Definition at line 73 of file HitIdHelper.cxx.

74 {
75  for (unsigned int i=0;i<8*sizeof(int);i++)
76  {
77  if ((id & (1u<<i))) std::cout<<"1";
78  else std::cout<<"0";
79  }
80  std::cout<<std::endl;
81 }

◆ PrintFields()

void HitIdHelper::PrintFields ( )
inherited

Definition at line 63 of file HitIdHelper.cxx.

64 {
65  for (unsigned int i=0;i<m_IDs.size();i++)
66  {
67  std::cout<<"-- Field "<<m_IDs[i].fieldName<<"\t["<<m_IDs[i].vMin
68  <<","<<m_IDs[i].vMax<<"]\tnBits "<<m_IDs[i].nBits
69  <<"\tfirst Bit "<<m_IDs[i].firstBit<<std::endl;
70  }
71 }

◆ Retrieve()

int HitIdHelper::Retrieve ( int  id,
int  first,
int  field 
)
staticprotectedinherited

Definition at line 106 of file HitIdHelper.cxx.

107 {
108  int j=0;
109  for (int i=0;i<field;i++)
110  SetBit(j,(i+first));
111  int l=id&j;
112  return l>>(first-1);
113 }

◆ SetBit()

void HitIdHelper::SetBit ( int &  i,
int  bitpos 
)
staticprotectedinherited

Definition at line 83 of file HitIdHelper.cxx.

84 {
85  int l=1;
86  l<<=(bitpos-1);
87  i|=l;
88 }

◆ SetFieldValue()

void HitIdHelper::SetFieldValue ( const std::string &  name,
int  n,
HitID targetID 
) const
inherited

Definition at line 31 of file HitIdHelper.cxx.

32 {
33  for (unsigned int i=0;i<m_IDs.size();i++)
34  {
35  if (m_IDs[i].fieldName==name)
36  {
37  if (n<m_IDs[i].vMin || n>m_IDs[i].vMax)
38  std::cout<<"HitIdHelper: field "<<name<<": supplied value "<<n<<
39  " is not within the allowed range ["<<m_IDs[i].vMin<<","<<m_IDs[i].vMax
40  <<"] : the result of this action is unpredictable "<<std::endl;
41  n-=m_IDs[i].vMin;
42  Store(targetID,n,m_IDs[i].firstBit,m_IDs[i].nBits);
43  break;
44  }
45  }
46 }

◆ Store()

void HitIdHelper::Store ( int &  id,
int  value,
int  first,
int  field 
)
staticprotectedinherited

Definition at line 97 of file HitIdHelper.cxx.

98 {
99  int l=0;
100  for (int i=0;i<field;i++)
101  UnsetBit(id,i+firstbit);
102  l=value<<(firstbit-1);
103  id |= l;
104 }

◆ UnsetBit()

void HitIdHelper::UnsetBit ( int &  i,
int  bitpos 
)
staticprotectedinherited

Definition at line 89 of file HitIdHelper.cxx.

90 {
91  int l=0;
92  SetBit(l,bitpos);
93  int k=~l;
94  i&=k;
95 }

Member Data Documentation

◆ m_currentStorage

int HitIdHelper::m_currentStorage
protectedinherited

Definition at line 35 of file HitIdHelper.h.

◆ m_IDs

IdFields HitIdHelper::m_IDs
protectedinherited

Definition at line 34 of file HitIdHelper.h.


The documentation for this class was generated from the following files:
HitIdHelper::m_IDs
IdFields m_IDs
Definition: HitIdHelper.h:34
IdField
Definition: HitIdHelper.h:13
HitIdHelper::SetFieldValue
void SetFieldValue(const std::string &name, int n, HitID &targetID) const
Definition: HitIdHelper.cxx:31
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
HitIdHelper::InitializeField
void InitializeField(const std::string &n, int vmn, int vmx)
Definition: HitIdHelper.cxx:10
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
TRTHitIdHelper::Initialize
void Initialize()
Definition: TRTHitIdHelper.cxx:18
athena.value
value
Definition: athena.py:122
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
HitIdHelper::SetBit
static void SetBit(int &i, int bitpos)
Definition: HitIdHelper.cxx:83
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
runBeamSpotCalibration.helper
helper
Definition: runBeamSpotCalibration.py:112
HitIdHelper::GetFieldValue
int GetFieldValue(const std::string &name, HitID targetID) const
Definition: HitIdHelper.cxx:48
python.CaloInfoD3PDObject.PosNeg
PosNeg
Definition: CaloInfoD3PDObject.py:15
lumiFormat.i
int i
Definition: lumiFormat.py:92
HitIdHelper::Store
static void Store(int &id, int value, int first, int field)
Definition: HitIdHelper.cxx:97
beamspotman.n
n
Definition: beamspotman.py:731
HitIdHelper::UnsetBit
static void UnsetBit(int &i, int bitpos)
Definition: HitIdHelper.cxx:89
HitIdHelper::Retrieve
static int Retrieve(int id, int first, int field)
Definition: HitIdHelper.cxx:106
taskman.fieldName
fieldName
Definition: taskman.py:492
xAOD::Straw
@ Straw
Definition: TrackingPrimitives.h:557
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
HitIdHelper::HitIdHelper
HitIdHelper()
Definition: HitIdHelper.h:25
DeMoScan.first
bool first
Definition: DeMoScan.py:534
HitIdHelper::m_currentStorage
int m_currentStorage
Definition: HitIdHelper.h:35
hotSpotInTAG.nb
nb
Definition: hotSpotInTAG.py:164
TRTHitIdHelper
Definition: TRTHitIdHelper.h:25
fitman.k
k
Definition: fitman.py:528