47 mDirection = layerDirection;
48 mLayerNumber = layerNumber;
49 mLayerName = layerName;
50 mZ = layerDirection ? std::abs(
z) : -std::abs(
z);
55 mChipThickness = Layerx2X0 * Si_X0;
57 LOG(info) <<
"Creating FT3 Layer " << mLayerNumber <<
" ; direction " << mDirection;
58 LOG(info) <<
" Using silicon X0 = " << Si_X0 <<
" to emulate layer radiation length.";
59 LOG(info) <<
" Layer z = " << mZ <<
" ; R_in = " << mInnerRadius <<
" ; R_out = " << mOuterRadius <<
" ; x2X0 = " << mx2X0 <<
" ; ChipThickness = " << mChipThickness;
64 if (mLayerNumber >= 0) {
69 TGeoTube* sensor =
new TGeoTube(mInnerRadius, mOuterRadius, mChipThickness / 2);
70 TGeoTube* chip =
new TGeoTube(mInnerRadius, mOuterRadius, mChipThickness / 2);
71 TGeoTube*
layer =
new TGeoTube(mInnerRadius, mOuterRadius, mChipThickness / 2);
73 TGeoMedium* medSi = gGeoManager->GetMedium(
"FT3_SILICON$");
74 TGeoMedium* medAir = gGeoManager->GetMedium(
"FT3_AIR$");
76 TGeoVolume* sensVol =
new TGeoVolume(sensName.c_str(), sensor, medSi);
77 sensVol->SetLineColor(kYellow);
78 TGeoVolume* chipVol =
new TGeoVolume(chipName.c_str(), chip, medSi);
79 chipVol->SetLineColor(kYellow);
80 TGeoVolume* layerVol =
new TGeoVolume(mLayerName.c_str(),
layer, medAir);
81 layerVol->SetLineColor(kYellow);
83 LOG(info) <<
"Inserting " << sensVol->GetName() <<
" inside " << chipVol->GetName();
84 chipVol->AddNode(sensVol, 1,
nullptr);
86 LOG(info) <<
"Inserting " << chipVol->GetName() <<
" inside " << layerVol->GetName();
87 layerVol->AddNode(chipVol, 1,
nullptr);
90 auto* FwdDiskRotation =
new TGeoRotation(
"FwdDiskRotation", 0, 0, 180);
91 auto* FwdDiskCombiTrans =
new TGeoCombiTrans(0, 0, mZ, FwdDiskRotation);
93 LOG(info) <<
"Inserting " << layerVol->GetName() <<
" inside " << motherVolume->GetName();
94 motherVolume->AddNode(layerVol, 1, FwdDiskCombiTrans);