SND@LHC Software
Loading...
Searching...
No Matches
DriftTubeHit Class Reference

#include <DriftTubeHit.h>

Inheritance diagram for DriftTubeHit:
Collaboration diagram for DriftTubeHit:

Public Member Functions

 DriftTubeHit ()
 
 DriftTubeHit (const DriftTubeHit &hit)=default
 
DriftTubeHitoperator= (const DriftTubeHit &hit)=default
 
 DriftTubeHit (Int_t detID)
 
 DriftTubeHit (Int_t detID, const Double_t &m_timestamp)
 
 DriftTubeHit (int detID, std::vector< DriftTubePoint * >, std::vector< Float_t >)
 
virtual ~DriftTubeHit ()
 
void Print ()
 
void setInvalid ()
 
bool isValid () const
 
Double_t GetTimestamp ()
 
Int_t GetSystem ()
 
Int_t GetStation ()
 
Int_t GetPlane ()
 
Int_t GetLayer ()
 
Int_t GetCell ()
 
bool isVertical ()
 
TVector3 GetPosition ()
 
void setLaterality (const int &lat)
 
int GetLaterality ()
 
int GetClusterID ()
 
void setClusterID (const int &ID)
 
int GetDetectorID ()
 

Private Member Functions

 ClassDef (DriftTubeHit, 1)
 

Private Attributes

Float_t flag
 flag
 
Int_t fDetectorID
 Detector unique identifier.
 
Double_t timestamp
 
Int_t laterality = 0
 
Int_t clusterID = -1
 

Detailed Description

Definition at line 9 of file DriftTubeHit.h.

Constructor & Destructor Documentation

◆ DriftTubeHit() [1/5]

DriftTubeHit::DriftTubeHit ( )

Default constructor

Definition at line 13 of file DriftTubeHit.cxx.

14 : TObject(),
15 fDetectorID(-1)
16{
17}
Int_t fDetectorID
Detector unique identifier.

◆ DriftTubeHit() [2/5]

DriftTubeHit::DriftTubeHit ( const DriftTubeHit hit)
default

Copy constructor

◆ DriftTubeHit() [3/5]

DriftTubeHit::DriftTubeHit ( Int_t  detID)
explicit

Definition at line 19 of file DriftTubeHit.cxx.

20 : TObject(),
21 fDetectorID(detID)
22{
23 flag = true;
24}
Float_t flag
flag

◆ DriftTubeHit() [4/5]

DriftTubeHit::DriftTubeHit ( Int_t  detID,
const Double_t &  m_timestamp 
)
explicit

Definition at line 25 of file DriftTubeHit.cxx.

25 : TObject(), fDetectorID(detID), timestamp(m_timestamp)
26{
27 flag = true;
28}
Double_t timestamp

◆ DriftTubeHit() [5/5]

DriftTubeHit::DriftTubeHit ( int  detID,
std::vector< DriftTubePoint * >  V,
std::vector< Float_t >  W 
)

Definition at line 31 of file DriftTubeHit.cxx.

32{
33 DriftTube *DriftTubeDet = dynamic_cast<DriftTube *>(gROOT->GetListOfGlobals()->FindObject("DriftTube"));
34 Float_t timeResol = DriftTubeDet->GetConfParF("DriftTube/timeResol"); // example
35
36 for (auto p = std::begin(V); p != std::end(V); ++p) {
37
38 Double_t signal = (*p)->GetEnergyLoss();
39 // Find the distance from MCPoint to the center of cell (the anode)
40 TVector3 vLeft, vRight;
41 TVector3 impact((*p)->GetX(), (*p)->GetY(), (*p)->GetZ());
42 DriftTubeDet->GetPosition(detID, vLeft, vRight);
43 Double_t distance = (vLeft - impact).Perp(); // transverse component
44
45 // for the timing - what to do?
46 Double_t ptime = (*p)->GetTime();
47 }
48 // what needs to be set: distance? time?
49
50 LOG(DEBUG) << "signal created";
51}

◆ ~DriftTubeHit()

DriftTubeHit::~DriftTubeHit ( )
virtual

Destructor

Definition at line 54 of file DriftTubeHit.cxx.

54{}

Member Function Documentation

◆ ClassDef()

DriftTubeHit::ClassDef ( DriftTubeHit  ,
 
)
private

◆ GetCell()

Int_t DriftTubeHit::GetCell ( )
inline

Definition at line 35 of file DriftTubeHit.h.

35{ return int(fDetectorID % 100); }

◆ GetClusterID()

int DriftTubeHit::GetClusterID ( )
inline

Definition at line 41 of file DriftTubeHit.h.

41{return clusterID;}

◆ GetDetectorID()

int DriftTubeHit::GetDetectorID ( )
inline

Definition at line 44 of file DriftTubeHit.h.

44{return fDetectorID;}

◆ GetLaterality()

int DriftTubeHit::GetLaterality ( )
inline

Definition at line 39 of file DriftTubeHit.h.

39{return laterality;};

◆ GetLayer()

Int_t DriftTubeHit::GetLayer ( )
inline

Definition at line 34 of file DriftTubeHit.h.

34{ return int(fDetectorID % 1000) / 100; }

◆ GetPlane()

Int_t DriftTubeHit::GetPlane ( )
inline

Definition at line 33 of file DriftTubeHit.h.

33{ return int(fDetectorID / 1000) % 10; }

◆ GetPosition()

TVector3 DriftTubeHit::GetPosition ( )

Definition at line 70 of file DriftTubeHit.cxx.

70 {
71 TVector3 position {};
72 std::string node = Form("/Detector_0/volDriftTubePlane_%d/volLayer_%d/volCell_%d/volAnode_2", GetPlane(), GetLayer(), GetDetectorID());
73 auto navigator = gGeoManager->GetCurrentNavigator();
74
75 DriftTube *DriftTubeDet = dynamic_cast<DriftTube *>(gROOT->GetListOfGlobals()->FindObject("DriftTube"));
76 const auto WCELL = static_cast<double>(DriftTubeDet->GetConfParF("DriftTube/cellWidth"));
77
78 if (gGeoManager->cd(node.c_str())) {
79 TGeoShape *shape = gGeoManager->GetCurrentNode()->GetVolume()->GetShape();
80 if (shape->InheritsFrom("TGeoBBox")) {
81 TGeoBBox *box = dynamic_cast<TGeoBBox *>(shape);
82 const Double_t *origin = box->GetOrigin();
83
84 navigator->cd(node.c_str());
85 Double_t localPosition[3] {origin[0] + std::min(static_cast<double>((timestamp - drifttube::tped) * drifttube::vdrift), WCELL * 0.5) * laterality, origin[1], origin[2]};
86 Double_t globalPosition[3] {};
87 navigator->LocalToMaster(localPosition, globalPosition);
88
89 position.SetXYZ(globalPosition[0], globalPosition[1], globalPosition[2]);
90 }
91 }
92
93 return position;
94}
Int_t GetPlane()
Int_t GetLayer()
int GetDetectorID()
localPosition(fibresSiPM)
origin(sTree, it)
constexpr double vdrift
constexpr double tped

◆ GetStation()

Int_t DriftTubeHit::GetStation ( )
inline

Definition at line 32 of file DriftTubeHit.h.

32{ return 1; } // do we need such a method? FIXME

◆ GetSystem()

Int_t DriftTubeHit::GetSystem ( )
inline

Definition at line 31 of file DriftTubeHit.h.

31{ return floor(fDetectorID / 10000); }

◆ GetTimestamp()

Double_t DriftTubeHit::GetTimestamp ( )
inline

Definition at line 30 of file DriftTubeHit.h.

30{return timestamp; }

◆ isValid()

bool DriftTubeHit::isValid ( ) const
inline

Definition at line 29 of file DriftTubeHit.h.

29{ return flag; }

◆ isVertical()

bool DriftTubeHit::isVertical ( )
inline

Definition at line 36 of file DriftTubeHit.h.

36{ return GetPlane() == 1; }

◆ operator=()

DriftTubeHit & DriftTubeHit::operator= ( const DriftTubeHit hit)
default

◆ Print()

void DriftTubeHit::Print ( )

Output to screen

Definition at line 58 of file DriftTubeHit.cxx.

59{
60 std::cout << "-I- DriftTubeHit: DriftTube hit " << " in station " << GetPlane();
61 if (isVertical()) {
62 std::cout << " vertical plane ";
63 } else {
64 std::cout << " horizontal plane ";
65 }
66 std::cout << "layer nr " << GetLayer() << " cell nr " << GetCell() << std::endl;
67}
Int_t GetCell()
bool isVertical()

◆ setClusterID()

void DriftTubeHit::setClusterID ( const int &  ID)
inline

Definition at line 42 of file DriftTubeHit.h.

42{ clusterID = ID;}

◆ setInvalid()

void DriftTubeHit::setInvalid ( )
inline

Definition at line 28 of file DriftTubeHit.h.

28{ flag = false; }

◆ setLaterality()

void DriftTubeHit::setLaterality ( const int &  lat)
inline

Definition at line 38 of file DriftTubeHit.h.

38{ laterality = lat; }

Member Data Documentation

◆ clusterID

Int_t DriftTubeHit::clusterID = -1
private

Definition at line 55 of file DriftTubeHit.h.

◆ fDetectorID

Int_t DriftTubeHit::fDetectorID
private

Detector unique identifier.

Definition at line 49 of file DriftTubeHit.h.

◆ flag

Float_t DriftTubeHit::flag
private

flag

Definition at line 47 of file DriftTubeHit.h.

◆ laterality

Int_t DriftTubeHit::laterality = 0
private

Definition at line 53 of file DriftTubeHit.h.

◆ timestamp

Double_t DriftTubeHit::timestamp
private

Definition at line 51 of file DriftTubeHit.h.


The documentation for this class was generated from the following files: