ATLAS Offline Software
Loading...
Searching...
No Matches
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; }
#define M_PI

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

◆ 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}
#define z
G4ThreeVector GetPreStepPoint(G4Step *aStep) const
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...

◆ 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}
#define GASVES
#define QUARTZ
#define GASTUB

◆ GetWaveLength()

double LUCID_HitHelper::GetWaveLength ( double energy) const
inline

Definition at line 36 of file LUCID_HitHelper.h.

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

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

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