19#include "FairGeoBuilder.h"
20#include "FairGeoInterface.h"
21#include "FairGeoLoader.h"
22#include "FairGeoMedia.h"
23#include "FairGeoMedium.h"
24#include "FairGeoNode.h"
25#include "FairGeoTransform.h"
26#include "FairGeoVolume.h"
29#include "FairRuntimeDb.h"
30#include "FairRuntimeDb.h"
31#include "FairVolume.h"
38#include "TGeoCompositeShape.h"
39#include "TGeoManager.h"
40#include "TGeoMaterial.h"
41#include "TGeoMedium.h"
44#include "TGeoUniformMagField.h"
48#include "TParticleClassPDG.h"
49#include "TParticlePDG.h"
52#include "TVirtualMC.h"
53#include "TVirtualMCStack.h"
61 Double_t TTZ, Bool_t Active,
const char* )
62 : Detector(name, Active,
ktauTT) {
69 Double_t scifimat_hor_,
70 Double_t scifimat_vert_, Double_t scifimat_z_,
71 Double_t support_z_, Double_t honeycomb_z_) {
102 TGeoMedium* vacuum = gGeoManager->GetMedium(
"vacuum");
105 TGeoMedium* CarbonComposite = gGeoManager->GetMedium(
"CarbonComposite");
108 TGeoMedium* SciFiMat = gGeoManager->GetMedium(
"SciFiMat");
111 TGeoMedium* Airex = gGeoManager->GetMedium(
"Airex");
114 TGeoVolume* volTarget = gGeoManager->GetVolume(
"volTarget");
118 TGeoVolume* TT_volume =
new TGeoVolume(
"TT", TT_box, vacuum);
119 TT_volume->SetLineColor(kBlue - 1);
121 TT_volume->SetVisibility(1);
122 TT_volume->SetVisDaughters(1);
125 TGeoBBox* TT_support_box =
new TGeoBBox(
"TT_support_box",
TTrackerX / 2,
127 TGeoVolume* TT_support_volume =
128 new TGeoVolume(
"TT_support", TT_support_box, CarbonComposite);
129 TT_support_volume->SetLineColor(kGray - 2);
130 TT_support_volume->SetVisibility(1);
133 TGeoBBox* TT_honeycomb_box =
new TGeoBBox(
"TT_honeycomb_box",
TTrackerX / 2,
135 TGeoVolume* TT_honeycomb_volume =
136 new TGeoVolume(
"TT_honeycomb", TT_honeycomb_box, Airex);
137 TT_honeycomb_volume->SetLineColor(kYellow);
138 TT_honeycomb_volume->SetVisibility(1);
141 TGeoBBox* TT_scifi_plane_hor_box =
new TGeoBBox(
143 TGeoVolume* TT_scifi_plane_hor_volume =
144 new TGeoVolume(
"TT_scifi_plane_hor", TT_scifi_plane_hor_box, SciFiMat);
145 TT_scifi_plane_hor_volume->SetVisibility(1);
147 TGeoBBox* TT_scifi_plane_vert_box =
new TGeoBBox(
149 TGeoVolume* TT_scifi_plane_vert_volume =
150 new TGeoVolume(
"TT_scifi_plane_vert", TT_scifi_plane_vert_box, SciFiMat);
151 TT_scifi_plane_vert_volume->SetVisibility(1);
154 TGeoBBox* TT_scifimat_hor_box =
157 TGeoVolume* TT_scifimat_hor_volume =
158 new TGeoVolume(
"TT_scifimat_hor", TT_scifimat_hor_box, SciFiMat);
159 TT_scifimat_hor_volume->SetLineColor(kCyan - 9);
161 TGeoBBox* TT_scifimat_vert_box =
164 TGeoVolume* TT_scifimat_vert_volume =
165 new TGeoVolume(
"TT_scifimat_vert", TT_scifimat_vert_box, SciFiMat);
166 TT_scifimat_vert_volume->SetLineColor(kGreen - 7);
169 AddSensitiveVolume(TT_scifimat_hor_volume);
170 AddSensitiveVolume(TT_scifimat_vert_volume);
174 TT_scifi_plane_hor_volume->AddNode(
175 TT_scifimat_hor_volume, i + 1,
180 TT_scifi_plane_vert_volume->AddNode(
181 TT_scifimat_vert_volume, 100 + i + 1,
186 TT_volume->AddNode(TT_support_volume, 0,
189 TT_scifi_plane_hor_volume, 0,
192 TT_scifi_plane_vert_volume, 0,
196 TT_honeycomb_volume, 0,
200 TT_support_volume, 1,
201 new TGeoTranslation(0, 0,
208 for (
int l = 0; l <
fNTT; ++l) {
210 TT_volume, 1000 * (l + 1),
211 new TGeoTranslation(0, 0,
219 if (gMC->IsTrackEntering()) {
221 fTime = gMC->TrackTime() * 1.0e09;
223 gMC->TrackPosition(
fPos);
224 gMC->TrackMomentum(
fMom);
230 if (gMC->IsTrackExiting() || gMC->IsTrackStop() ||
231 gMC->IsTrackDisappeared()) {
235 TParticle* p = gMC->GetStack()->GetCurrentTrack();
236 Int_t pdgCode = p->GetPdgCode();
237 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
242 gMC->CurrentVolOffID(2, TTstationID);
246 gMC->TrackPosition(Pos);
247 Double_t xmean = (
fPos.X() + Pos.X()) / 2.;
248 Double_t ymean = (
fPos.Y() + Pos.Y()) / 2.;
249 Double_t zmean = (
fPos.Z() + Pos.Z()) / 2.;
266 int idir = (detID - NTT * 1000) / 100;
273 nplane = (detID - NTT * 1000 - idir * 100);
Int_t fTrackID
event index
Int_t fVolumeID
track index
TLorentzVector fPos
volume id
Double_t fTime
momentum at entrance
TTPoint * AddHit(Args &&... args)
TLorentzVector fMom
position at entrance
void SetNumberTT(Int_t n)
Bool_t ProcessHits(FairVolume *v=0) override
void DecodeTTID(Int_t detID, Int_t &NTT, int &nplane, Bool_t &ishor)
void SetTotZDimension(Double_t Zdim)
void SetNumberSciFi(Int_t n_hor_planes_, Int_t n_vert_planes_)
void SetSciFiParam(Double_t scifimat_width_, Double_t scifimat_hor_, Double_t scifimat_vert_, Double_t scifimat_z_, Double_t support_z_, Double_t honeycomb_z_)
void ConstructGeometry() override
void SetDesign(Int_t Design)
void SetBrickParam(Double_t CellW)
void SetTargetTrackerParam(Double_t TTX, Double_t TTY, Double_t TTZ)
Int_t InitMedium(const char *name)