11#include "TGeoManager.h"
33 LOG(error) <<
"TimeDetHit: null TimeDetPoint pointer";
38 Dist(p->GetX(), lpos, lneg);
39 Double_t sigma =
Resol(lneg);
40 t_1 = gRandom->Gaus(0, sigma) + lneg /
v_drift + t0 + p->GetTime();
42 t_2 = gRandom->Gaus(0, sigma) + lpos /
v_drift + t0 + p->GetTime();
50 Double_t r =
Resol(lneg);
51 Double_t w1 = 1. / (r * r);
53 Double_t w2 = 1. / (r * r);
54 Double_t dt = 1. / TMath::Sqrt(w1 + w2);
62 dynamic_cast<TGeoBBox*
>(gGeoManager->GetVolume(
"TimeDet")->GetShape());
67 Float_t r1 =
Resol(lneg);
68 Float_t r2 =
Resol(lpos);
69 Double_t dt = TMath::Sqrt(r1 * r1 + r2 * r2);
74 return par[0] * TMath::Exp((x -
par[2]) /
par[1]) +
par[3];
82 auto shape =
dynamic_cast<TGeoBBox*
>(node->GetVolume()->GetShape());
84 lpos = TMath::Abs(pos.X() + shape->GetDX() - x);
85 lneg = TMath::Abs(pos.X() - shape->GetDX() - x);
89 TGeoNavigator* nav = gGeoManager->GetCurrentNavigator();
91 auto shape =
dynamic_cast<TGeoBBox*
>(node->GetVolume()->GetShape());
92 Double_t origin[3] = {shape->GetOrigin()[0], shape->GetOrigin()[1],
93 shape->GetOrigin()[2]};
94 Double_t master[3] = {0, 0, 0};
95 nav->LocalToMaster(origin, master);
96 TVector3 pos = TVector3(master[0], master[1], master[2]);
116 TGeoNavigator* nav = gGeoManager->GetCurrentNavigator();
117 TString path =
"/Timing Detector_1/TimeDet_";
120 return nav->GetCurrentNode();
125 cout <<
"-I- TimeDetHit: TimeDet hit " <<
" in detector " <<
fDetectorID
127 cout <<
" TDC left " <<
t_1 <<
" ns TDC right " <<
t_2 <<
" ns" << endl;
Int_t fDetectorID
Detector unique identifier.
std::vector< double > GetMeasurements() const
static constexpr Double_t v_drift
std::vector< double > GetTime() const
Double_t Resol(Double_t x) const
TGeoNode * GetNode() const
static constexpr Double_t par[4]
void Dist(Float_t x, Float_t &lpos, Float_t &lneg) const
Float_t t_2
TDC on both sides.