16#include "TGeoMatrix.h"
17#include "TGeoManager.h"
20#include <fairlogger/Logger.h>
39 : TNamed(), mPCBSupport(nullptr), mSupport(nullptr), mHeatExchanger(nullptr), mHalfDiskVolume(nullptr), mSegmentation(nullptr)
47 : TNamed(segmentation->GetName(), segmentation->GetName()),
50 mHeatExchanger(nullptr),
51 mSegmentation(segmentation)
54 SetUniqueID(mSegmentation->GetUniqueID());
57 LOG(debug1) <<
"HalfDisk " << Form(
"creating half-disk: %s Unique ID = %d ", GetName(), mSegmentation->GetUniqueID());
59 mHalfDiskVolume =
new TGeoVolumeAssembly(GetName());
62 if (mftBaseParam.buildHeatExchanger) {
64 mHalfDiskVolume->AddNode(heatExchangerVol, 1);
67 if (!mftBaseParam.minimal && mftBaseParam.buildPCBSupports) {
70 mHalfDiskVolume->AddNode(supportVol, 1);
73 if (!mftBaseParam.minimal && mftBaseParam.buildPCBs) {
76 mHalfDiskVolume->AddNode(PCBVol, 1);
87 delete mHeatExchanger;
101 TGeoVolumeAssembly* vol =
115 TGeoVolumeAssembly* vol =
129 TGeoVolumeAssembly* vol =
141 LOG(debug1) <<
"CreateLadders: start building ladders";
142 for (Int_t iLadder = 0; iLadder < mSegmentation->
getNLadders(); iLadder++) {
146 Fatal(
"CreateLadders", Form(
"No Segmentation found for ladder %d ", iLadder), 0, 0);
148 auto* ladder =
new Ladder(ladderSeg);
149 TGeoVolume* ladVol = ladder->createVolume();
152 TGeoBBox* shape = (TGeoBBox*)ladVol->GetShape();
154 center[0] = shape->GetDX();
155 center[1] = shape->GetDY();
156 center[2] = shape->GetDZ();
162 mHalfDiskVolume->AddNode(ladVol, ladderId,
new TGeoCombiTrans(master[0], master[1], master[2], ladderSeg->
getTransformation()->GetRotation()));
Class for the description of the structure of a half-disk.
ClassImp(o2::mft::HalfDisk)
Class building geometry of one half of an MFT disk.
MFT heat exchanger builder.
Class handling both virtual segmentation and real volumes.
Class building the Ladder geometry.
Class describing geometry of one MFT half-disk PCBsupport.
Class describing geometry of one MFT half-disk support.
static const MFTBaseParam & Instance()
Int_t getDiskID(UInt_t uniqueID) const
Returns Half-Disk ID based on Unique ID provided.
Int_t getLadderID(UInt_t uniqueID) const
Returns Ladder ID based on Unique ID provided.
Int_t getHalfID(UInt_t uniqueID) const
Returns Half-MFT ID based on Unique ID provided.
static Geometry * instance()
Singleton access.
Int_t getNLadders() const
Get the number of Ladder on the Half-Disk.
LadderSegmentation * getLadder(Int_t iLadder)
Returns pointer to the ladder segmentation object.
HalfDisk()
Default constructor.
TGeoVolumeAssembly * createSupport()
void createLadders()
Build Ladders on the Half-disk.
TGeoVolumeAssembly * createHeatExchanger()
Build Heat exchanger.
TGeoVolumeAssembly * createPCBSupport()
TGeoVolumeAssembly * create(Int_t kHalf, Int_t disk)
TGeoVolumeAssembly * create(Int_t kHalf, Int_t disk)
TGeoVolumeAssembly * create(Int_t kHalf, Int_t disk)
TGeoCombiTrans * getTransformation() const
Returns the Transformation Combining a Rotation followed by a Translation.
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"