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

#include <LUCID_HitHelper.h>

Inheritance diagram for LUCID_HitHelper:
Collaboration diagram for LUCID_HitHelper:

Public Member Functions

 LUCID_HitHelper ()
 
 ~LUCID_HitHelper ()
 
G4ThreeVector GetPreStepPoint (G4Step *aStep) const
 
G4ThreeVector GetPostStepPoint (G4Step *aStep) const
 
float GetPreStepTime (G4Step *aStep) const
 
float GetPostStepTime (G4Step *aStep) const
 
double GetWaveLength (double energy) const
 
double GetEnergy (double lambda) const
 
int GetTubNumber (G4Step *) const
 

Static Public Member Functions

static int GetVolNumber (const G4String &)
 

Private Member Functions

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 24 of file LUCID_HitHelper.h.

Constructor & Destructor Documentation

◆ LUCID_HitHelper()

LUCID_HitHelper::LUCID_HitHelper ( )
inline

Definition at line 28 of file LUCID_HitHelper.h.

28 {}

◆ ~LUCID_HitHelper()

LUCID_HitHelper::~LUCID_HitHelper ( )
inline

Definition at line 29 of file LUCID_HitHelper.h.

29 {}

Member Function Documentation

◆ GetEnergy()

double LUCID_HitHelper::GetEnergy ( double  lambda) const
inline

Definition at line 37 of file LUCID_HitHelper.h.

37 { return 2.*M_PI*CLHEP::hbarc/(CLHEP::eV*CLHEP::nm)/lambda; }

◆ 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 }

◆ GetPostStepPoint()

G4ThreeVector LUCID_HitHelper::GetPostStepPoint ( G4Step *  aStep) const
inline

Definition at line 32 of file LUCID_HitHelper.h.

32 { return aStep->GetPostStepPoint()->GetPosition(); }

◆ GetPostStepTime()

float LUCID_HitHelper::GetPostStepTime ( G4Step *  aStep) const
inline

Definition at line 34 of file LUCID_HitHelper.h.

34 { return aStep->GetPostStepPoint()->GetGlobalTime(); }

◆ GetPreStepPoint()

G4ThreeVector LUCID_HitHelper::GetPreStepPoint ( G4Step *  aStep) const
inline

Definition at line 31 of file LUCID_HitHelper.h.

31 { return aStep->GetPreStepPoint()->GetPosition(); }

◆ GetPreStepTime()

float LUCID_HitHelper::GetPreStepTime ( G4Step *  aStep) const
inline

Definition at line 33 of file LUCID_HitHelper.h.

33 { return aStep->GetPreStepPoint()->GetGlobalTime(); }

◆ GetTubNumber()

int LUCID_HitHelper::GetTubNumber ( G4Step *  aStep) const

Definition at line 20 of file LUCID_HitHelper.cxx.

20  {
21 
22  G4String volName = aStep->GetTrack()->GetVolume()->GetName();
23 
24  int tubNumber = 100;
25 
26  if (!strcmp(volName.substr(5, 9).c_str(), "VesselGas")) tubNumber = -1;
27  else if (!strcmp(volName.substr(5, 7).c_str(), "TubeGas" )) tubNumber = atoi(volName.substr(12, 2).c_str());
28  else if (!strcmp(volName.substr(5, 3).c_str(), "Pmt" )) tubNumber = atoi(volName.substr( 8, 2).c_str());
29 
30  if (GetPreStepPoint(aStep).z() < 0) tubNumber += 20;
31 
32  return tubNumber;
33 }

◆ GetVolNumber()

int LUCID_HitHelper::GetVolNumber ( const G4String &  volName)
static

Definition at line 9 of file LUCID_HitHelper.cxx.

9  {
10 
11  int volNumber = 100;
12 
13  if (!strcmp(volName.substr(9, 9).c_str(), "VesselGas")) volNumber = GASVES;
14  else if (!strcmp(volName.substr(9, 7).c_str(), "TubeGas" )) volNumber = GASTUB;
15  else if (!strcmp(volName.substr(9, 3).c_str(), "Pmt" )) volNumber = QUARTZ;
16 
17  return volNumber;
18 }

◆ GetWaveLength()

double LUCID_HitHelper::GetWaveLength ( double  energy) const
inline

Definition at line 36 of file LUCID_HitHelper.h.

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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:
HitIdHelper::m_IDs
IdFields m_IDs
Definition: HitIdHelper.h:34
IdField
Definition: HitIdHelper.h:13
M_PI
#define M_PI
Definition: ActiveFraction.h:11
athena.value
value
Definition: athena.py:124
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:157
HitIdHelper::SetBit
static void SetBit(int &i, int bitpos)
Definition: HitIdHelper.cxx:82
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
LUCID_HitHelper::GetPreStepPoint
G4ThreeVector GetPreStepPoint(G4Step *aStep) const
Definition: LUCID_HitHelper.h:31
GASTUB
#define GASTUB
Definition: LUCID_Constants.h:9
python.SystemOfUnits.eV
float eV
Definition: SystemOfUnits.py:173
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
python.PhysicalConstants.hbarc
float hbarc
Definition: PhysicalConstants.py:83
lumiFormat.i
int i
Definition: lumiFormat.py:85
z
#define z
HitIdHelper::Store
static void Store(int &id, int value, int first, int field)
Definition: HitIdHelper.cxx:96
beamspotman.n
n
Definition: beamspotman.py:727
QUARTZ
#define QUARTZ
Definition: LUCID_Constants.h:10
HitIdHelper::UnsetBit
static void UnsetBit(int &i, int bitpos)
Definition: HitIdHelper.cxx:88
HitIdHelper::Retrieve
static int Retrieve(int id, int first, int field)
Definition: HitIdHelper.cxx:105
taskman.fieldName
fieldName
Definition: taskman.py:489
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
GASVES
#define GASVES
Definition: LUCID_Constants.h:8
CalibCoolCompareRT.nm
nm
Definition: CalibCoolCompareRT.py:109
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
DeMoScan.first
bool first
Definition: DeMoScan.py:534
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
HitIdHelper::m_currentStorage
int m_currentStorage
Definition: HitIdHelper.h:35
hotSpotInTAG.nb
nb
Definition: hotSpotInTAG.py:163
fitman.k
k
Definition: fitman.py:528