ATLAS Offline Software
Loading...
Searching...
No Matches
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}
void SetFieldValue(const std::string &name, int n, HitID &targetID) const

◆ GetFieldValue()

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

Definition at line 47 of file HitIdHelper.cxx.

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

◆ GetHelper()

const TRTHitIdHelper * TRTHitIdHelper::GetHelper ( )
static

Definition at line 13 of file TRTHitIdHelper.cxx.

◆ getLayerPlane()

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

Definition at line 60 of file TRTHitIdHelper.cxx.

60 {
61 return this->GetFieldValue("LayerPlane", hid);
62}
int GetFieldValue(const std::string &name, HitID targetID) const

◆ 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}
void InitializeField(const std::string &n, int vmn, int vmx)

◆ InitializeField() [1/2]

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

Definition at line 20 of file HitIdHelper.cxx.

21{
22 int vmn=0;
23 int vmx = (1 << nb) - 1;
24 IdField id={n,vmn,vmx,nb,m_currentStorage+1};
25 m_IDs.push_back(std::move(id));
27 assert (m_currentStorage<33);
28}
int m_currentStorage
Definition HitIdHelper.h:35

◆ 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 = std::bit_width(static_cast<unsigned>(field - 1));
14 IdField id={n,vmn,vmx,nb,m_currentStorage+1};
15 m_IDs.push_back(std::move(id));
17 assert (m_currentStorage<33);
18}

◆ 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 72 of file HitIdHelper.cxx.

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

◆ PrintFields()

void HitIdHelper::PrintFields ( )
inherited

Definition at line 62 of file HitIdHelper.cxx.

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

◆ Retrieve()

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

Definition at line 105 of file HitIdHelper.cxx.

106{
107 int j=0;
108 for (int i=0;i<field;i++)
109 SetBit(j,(i+first));
110 int l=id&j;
111 return l>>(first-1);
112}
static void SetBit(int &i, int bitpos)
bool first
Definition DeMoScan.py:534
l
Printing final latex table to .tex output file.

◆ SetBit()

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

Definition at line 82 of file HitIdHelper.cxx.

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

◆ SetFieldValue()

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

Definition at line 30 of file HitIdHelper.cxx.

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

◆ Store()

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

Definition at line 96 of file HitIdHelper.cxx.

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

◆ UnsetBit()

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

Definition at line 88 of file HitIdHelper.cxx.

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

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: