|
BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
|
#include "TGeoCompositeShape.h"#include "TGeoCone.h"#include "TGeoManager.h"#include "TGeoPara.h"#include "TGeoTrd2.h"#include "TGeoTube.h"#include <iomanip>#include <iostream>Go to the source code of this file.
Functions | |
| Int_t | CreateSensors () |
| ======================================================================= | |
| Int_t | CreateSectors () |
| ======================================================================= | |
| Int_t | CreateLadders () |
| ======================================================================= | |
| TGeoVolume * | ConstructModule (const char *name, TGeoVolume *sector, Double_t cableLength) |
| ======================================================================= | |
| TGeoVolume * | ConstructHalfLadder (const TString &name, Int_t nSectors, Int_t *sectorTypes, char align) |
| ======================================================================= | |
| TGeoVolume * | ConstructLadder (Int_t LadderIndex, TGeoVolume *halfLadderU, TGeoVolume *halfLadderD, Double_t gapY, Double_t shiftZ) |
| ======================================================================= | |
| TGeoVolume * | ConstructStation (Int_t iStation, Int_t nLadders, Int_t *ladderTypes, Double_t rHole) |
| ======================================================================= | |
| void | CheckVolume (TGeoVolume *volume) |
| ======================================================================= | |
| void | CheckVolume (TGeoVolume *volume, fstream &file) |
| ======================================================================= | |
| Double_t | BeamPipeRadius (Double_t z) |
| ======================================================================= | |
| TGeoVolume * | ConstructFrameElement (const TString &name, TGeoVolume *frameBoxVol, Double_t x) |
| ======================================================================= | |
| TGeoVolume * | ConstructSmallCone (Double_t coneDz) |
| ======================================================================= | |
| TGeoVolume * | ConstructBigCone (Double_t coneDz) |
| ======================================================================= | |
| void | create_rootgeom_SSD_v17a (const char *geoTag="v17a") |
| Int_t | CreateMedia () |
| =========================================================================== Create media | |
| void | AddCarbonLadder (Int_t LadderIndex, TGeoVolume *ladder, Double_t xu, Double_t ladderY, Double_t ladderZ) |
| ======================================================================= | |
Variables | |
| const Double_t | gkSensorThickness = 0.03 |
| const Double_t | gkChainGapY = 0.00 |
| const Double_t | gkCableThickness = 0.02 |
| const Double_t | gkSectorOverlapY = 0.27 |
| const Double_t | gkSectorGapZ = 0.02 |
| const Double_t | gkLadderOverlapX = 0.30 |
| const Double_t | gkLadderGapZ = 1.00 |
| const Double_t | gkSectorGapZFrame = 0.10 |
| const Bool_t | gkConstructCables = kTRUE |
| const Bool_t | gkConstructCones = kFALSE |
| const Bool_t | gkConstructFrames = kTRUE |
| const Bool_t | gkConstructSmallFrames = kTRUE |
| const Bool_t | gkCylindricalFrames = kTRUE |
| const Double_t | gkFrameThickness = 0.2 |
| const Double_t | gkThinFrameThickness = 0.05 |
| const Double_t | gkFrameStep = 4.0 |
| const Double_t | gkCylinderDiaInner |
| const Double_t | gkCylinderDiaOuter |
| const Double_t | gkPipeZ1 = 22.0 |
| const Double_t | gkPipeR1 = 1.8 |
| const Double_t | gkPipeZ2 = 50.0 |
| const Double_t | gkPipeR2 = 1.8 |
| const Double_t | gkPipeZ3 = 125.0 |
| const Double_t | gkPipeR3 = 5.5 |
| TGeoMedium * | gStsMedium = NULL |
| TGeoManager * | gGeoMan = NULL |
| void AddCarbonLadder | ( | Int_t | LadderIndex, |
| TGeoVolume * | ladder, | ||
| Double_t | xu, | ||
| Double_t | ladderY, | ||
| Double_t | ladderZ ) |
=========================================================================== Add a carbon support to a ladder
Arguments: LadderIndex ladder number ladder pointer to ladder xu size of halfladder ladderY height of ladder along y ladderZ thickness of ladder along z
Definition at line 1221 of file create_rootgeom_SSD_v17a.C.
References TGeoVolume::AddNode(), TGeoShape::ComputeBBox(), ConstructFrameElement(), TGeoVolume::GetShape(), gkFrameStep, gkFrameThickness, gStsMedium, i, and TGeoRotation::RotateY().
Referenced by ConstructLadder().
| void CheckVolume | ( | TGeoVolume * | volume | ) |
=========================================================================== Volume information for debugging
Definition at line 1495 of file create_rootgeom_SSD_v17a.C.
References TGeoBBox::GetDX(), TGeoBBox::GetDY(), TGeoBBox::GetDZ(), TGeoNode::GetMatrix(), TGeoVolume::GetMedium(), TNamed::GetName(), TGeoVolume::GetNdaughters(), TGeoVolume::GetNode(), TGeoVolume::GetShape(), TGeoMatrix::GetTranslation(), TGeoNode::GetVolume(), and TGeoVolume::IsAssembly().
Referenced by ConstructHalfLadder(), and create_rootgeom_SSD_v17a().
| void CheckVolume | ( | TGeoVolume * | volume, |
| fstream & | file ) |
=========================================================================== Volume information for output to file
Definition at line 1531 of file create_rootgeom_SSD_v17a.C.
References TGeoBBox::GetDX(), TGeoBBox::GetDY(), TGeoBBox::GetDZ(), TGeoVolume::GetMedium(), TNamed::GetName(), TGeoVolume::GetNdaughters(), TGeoVolume::GetNode(), TGeoVolume::GetShape(), TGeoNode::GetVolume(), and TGeoVolume::IsAssembly().
| TGeoVolume * ConstructBigCone | ( | Double_t | coneDz | ) |
=======================================================================
Definition at line 1732 of file create_rootgeom_SSD_v17a.C.
References TGeoVolume::AddNode(), gGeoMan, gStsMedium, TGeoCombiTrans::RegisterYourself(), TGeoCombiTrans::RotateX(), TGeoCombiTrans::SetDy(), TGeoCombiTrans::SetDz(), and TGeoVolume::SetLineColor().
Referenced by create_rootgeom_SSD_v17a().
| TGeoVolume * ConstructFrameElement | ( | const TString & | name, |
| TGeoVolume * | frameBoxVol, | ||
| Double_t | x ) |
=======================================================================
Definition at line 1571 of file create_rootgeom_SSD_v17a.C.
References TGeoVolume::AddNode(), TMath::Cos(), gGeoMan, gkConstructSmallFrames, gkCylinderDiaInner, gkCylinderDiaOuter, gkCylindricalFrames, gkFrameStep, gkFrameThickness, gkThinFrameThickness, TMath::Pi(), TGeoRotation::RotateX(), TGeoRotation::RotateY(), TGeoVolume::SetLineColor(), and x.
Referenced by AddCarbonLadder().
| TGeoVolume * ConstructHalfLadder | ( | const TString & | name, |
| Int_t | nSectors, | ||
| Int_t * | sectorTypes, | ||
| char | align ) |
=========================================================================== Construct a half ladder
A half ladder is a virtual volume (TGeoVolumeAssembly) consisting of several modules arranged on top of each other. The modules have a given overlap in y and a displacement in z to allow for the overlap.
The typ of sectors / modules to be placed must be specified: 1 = sensor01 2 = sensor02 3 = sensor03 4 = sensor04 5 = 2 x sensor04 (chained) 6 = 3 x sensor04 (chained) The cable is added automatically from the top of each sensor to the top of the half ladder. The alignment can be left (l) or right (r), which matters in the case of different x sizes of sensors (e.g. SensorType01).
Arguments: name volume name nSectors number of sectors sectorTypes array with sector types align horizontal alignment of sectors
Definition at line 1141 of file create_rootgeom_SSD_v17a.C.
References TGeoVolumeAssembly::AddNode(), align(), CheckVolume(), TGeoShape::ComputeBBox(), ConstructModule(), TString::Data(), TGeoBBox::GetDX(), TGeoBBox::GetDY(), TGeoBBox::GetDZ(), TGeoVolume::GetShape(), gGeoMan, gkSectorGapZ, gkSectorOverlapY, and TMath::Max().
Referenced by CreateLadders().
| TGeoVolume * ConstructLadder | ( | Int_t | LadderIndex, |
| TGeoVolume * | halfLadderU, | ||
| TGeoVolume * | halfLadderD, | ||
| Double_t | gapY, | ||
| Double_t | shiftZ ) |
=========================================================================== Construct a ladder out of two half ladders with vertical gap
The second half ladder will be rotated by 180 degrees in the x-y plane. The two half ladders will be put on top of each other with a vertical gap.
Arguments: name volume name halfLadderU pointer to upper half ladder halfLadderD pointer to lower half ladder gapY vertical gap shiftZ relative displacement along the z axis
Definition at line 1301 of file create_rootgeom_SSD_v17a.C.
References AddCarbonLadder(), TGeoVolumeAssembly::AddNode(), TGeoShape::ComputeBBox(), TGeoBBox::GetDX(), TGeoBBox::GetDY(), TGeoBBox::GetDZ(), TGeoVolume::GetShape(), gkConstructFrames, TMath::Max(), and TGeoRotation::RotateZ().
Referenced by CreateLadders().
| TGeoVolume * ConstructModule | ( | const char * | name, |
| TGeoVolume * | sector, | ||
| Double_t | cableLength ) |
=========================================================================== Construct a module
A module is a sector plus the readout cable extending from the top of the sector. The cable is made from passive silicon. The cable has the same x size as the sector. Its thickness is given by the global variable gkCableThickness. The cable length is a parameter. The sensor(s) of the sector is/are placed directly in the module; the sector is just auxiliary for the proper placement.
Arguments: name volume name sector pointer to sector volume cableLength length of cable
Definition at line 1044 of file create_rootgeom_SSD_v17a.C.
References TString::Data(), TGeoBBox::GetDX(), TGeoBBox::GetDY(), TGeoBBox::GetDZ(), TGeoNode::GetMatrix(), TGeoVolume::GetNdaughters(), TGeoVolume::GetNode(), TGeoVolume::GetShape(), TGeoMatrix::GetTranslation(), TGeoNode::GetVolume(), gGeoMan, gkCableThickness, gkConstructCables, gStsMedium, TMath::Max(), TGeoVolume::SetLineColor(), and TGeoVolume::SetTransparency().
Referenced by ConstructHalfLadder().
| TGeoVolume * ConstructSmallCone | ( | Double_t | coneDz | ) |
=======================================================================
Definition at line 1680 of file create_rootgeom_SSD_v17a.C.
References gGeoMan, and TGeoVolume::SetLineColor().
Referenced by create_rootgeom_SSD_v17a().
| TGeoVolume * ConstructStation | ( | Int_t | iStation, |
| Int_t | nLadders, | ||
| Int_t * | ladderTypes, | ||
| Double_t | rHole ) |
=========================================================================== Construct a station
The station volume is the minimal box comprising all ladders minus a tube accomodating the beam pipe.
The ladders are arranged horizontally from left to right with a given overlap in x. Every second ladder is slightly displaced upstream from the centre z plane and facing downstream, the others are slightly displaced downstream and facing upstream (rotated around the y axis).
Arguments: name volume name nLadders number of ladders ladderTypes array of ladder types rHole radius of inner hole
Definition at line 1375 of file create_rootgeom_SSD_v17a.C.
References TGeoVolume::AddNode(), TGeoShape::ComputeBBox(), TString::Data(), TGeoBBox::GetDX(), TGeoBBox::GetDY(), TGeoBBox::GetDZ(), TGeoVolume::GetShape(), gkConstructFrames, gkFrameThickness, gkLadderGapZ, gkLadderOverlapX, gStsMedium, TMath::Max(), and TGeoRotation::RotateY().
Referenced by create_rootgeom_SSD_v17a().
| void create_rootgeom_SSD_v17a | ( | const char * | geoTag = "v17a" | ) |
Definition at line 224 of file create_rootgeom_SSD_v17a.C.
References TGeoVolume::AddNode(), air, BeamPipeRadius, CheckVolume(), TFile::Close(), TGeoShape::ComputeBBox(), ConstructBigCone(), ConstructSmallCone(), ConstructStation(), CreateLadders(), CreateSectors(), CreateSensors(), TString::Data(), TGeoVolume::Draw(), TGeoVolume::Export(), TGeoBBox::GetDX(), TGeoBBox::GetDY(), TNamed::GetName(), TGeoVolume::GetNode(), TGeoVolume::GetShape(), TGeoNode::GetVolume(), gGeoMan, gkCableThickness, gkChainGapY, gkConstructCables, gkConstructCones, gkLadderGapZ, gkLadderOverlapX, gkPipeR1, gkPipeR2, gkPipeR3, gkPipeZ1, gkPipeZ2, gkPipeZ3, gkSectorGapZ, gkSectorOverlapY, gkSensorThickness, gStsMedium, i, TMath::Max(), TGeoMatrix::RegisterYourself(), TString::ReplaceAll(), TGeoRotation::RotateY(), TGeoRotation::RotateZ(), TGeoVolume::SetLineColor(), and TObject::Write().
| Int_t CreateLadders | ( | ) |
=========================================================================== Create ladders
Ladders are the building blocks of the stations. They contain several modules placed one after the other along the z axis such that the sectors are arranged vertically (with overlap).
A ladder is constructed out of two half ladders, the second of which is rotated in the x-y plane by 180 degrees and displaced in z direction.
Definition at line 902 of file create_rootgeom_SSD_v17a.C.
References align(), ConstructHalfLadder(), ConstructLadder(), TGeoBBox::GetDZ(), TGeoVolume::GetShape(), gGeoMan, gkSectorGapZ, gkSectorOverlapY, and i.
Referenced by create_rootgeom_SSD_v17a().
| Int_t CreateMedia | ( | ) |
Currently created: air, active silicon, passive silion
Not used for the time being
Definition at line 695 of file create_rootgeom_SSD_v17a.C.
References TGeoMixture::AddElement(), gGeoMan, and TGeoMedium::SetParam().
| Int_t CreateSectors | ( | ) |
=========================================================================== Create sectors
A sector is either a single sensor or several chained sensors. It is implemented as TGeoVolumeAssembly. Currently available:
Definition at line 819 of file create_rootgeom_SSD_v17a.C.
References TGeoVolumeAssembly::AddNode(), TGeoShape::ComputeBBox(), TGeoVolume::GetShape(), and gGeoMan.
Referenced by create_rootgeom_SSD_v17a().
| Int_t CreateSensors | ( | ) |
=========================================================================== Create sensors
Sensors are created as volumes with box shape and active silicon as medium. Four kinds of sensors: 3.2x2.2, 6.2x2.2, 6.2x4.2, 6.2x6.2
Definition at line 744 of file create_rootgeom_SSD_v17a.C.
References gGeoMan, and gkSensorThickness.
Referenced by create_rootgeom_SSD_v17a().
| TGeoManager* gGeoMan = NULL |
Definition at line 217 of file create_rootgeom_SSD_v17a.C.
| const Double_t gkCableThickness = 0.02 |
Definition at line 160 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructModule(), and create_rootgeom_SSD_v17a().
| const Double_t gkChainGapY = 0.00 |
Definition at line 157 of file create_rootgeom_SSD_v17a.C.
Referenced by create_rootgeom_SSD_v17a().
Definition at line 178 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructModule(), and create_rootgeom_SSD_v17a().
Definition at line 181 of file create_rootgeom_SSD_v17a.C.
Referenced by create_rootgeom_SSD_v17a().
Definition at line 182 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructLadder(), and ConstructStation().
Definition at line 183 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructFrameElement().
| const Double_t gkCylinderDiaInner |
Definition at line 191 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructFrameElement().
| const Double_t gkCylinderDiaOuter |
Definition at line 193 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructFrameElement().
Definition at line 184 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructFrameElement().
| const Double_t gkFrameStep = 4.0 |
Definition at line 189 of file create_rootgeom_SSD_v17a.C.
Referenced by AddCarbonLadder(), and ConstructFrameElement().
| const Double_t gkFrameThickness = 0.2 |
Definition at line 187 of file create_rootgeom_SSD_v17a.C.
Referenced by AddCarbonLadder(), ConstructFrameElement(), and ConstructStation().
| const Double_t gkLadderGapZ = 1.00 |
Definition at line 172 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructStation(), and create_rootgeom_SSD_v17a().
| const Double_t gkLadderOverlapX = 0.30 |
Definition at line 169 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructStation(), and create_rootgeom_SSD_v17a().
| const Double_t gkPipeR1 = 1.8 |
Definition at line 201 of file create_rootgeom_SSD_v17a.C.
Referenced by BeamPipeRadius(), and create_rootgeom_SSD_v17a().
| const Double_t gkPipeR2 = 1.8 |
Definition at line 203 of file create_rootgeom_SSD_v17a.C.
Referenced by BeamPipeRadius(), and create_rootgeom_SSD_v17a().
| const Double_t gkPipeR3 = 5.5 |
Definition at line 205 of file create_rootgeom_SSD_v17a.C.
Referenced by BeamPipeRadius(), and create_rootgeom_SSD_v17a().
| const Double_t gkPipeZ1 = 22.0 |
Definition at line 200 of file create_rootgeom_SSD_v17a.C.
Referenced by create_rootgeom_SSD_v17a().
| const Double_t gkPipeZ2 = 50.0 |
Definition at line 202 of file create_rootgeom_SSD_v17a.C.
Referenced by BeamPipeRadius(), and create_rootgeom_SSD_v17a().
| const Double_t gkPipeZ3 = 125.0 |
Definition at line 204 of file create_rootgeom_SSD_v17a.C.
Referenced by BeamPipeRadius(), and create_rootgeom_SSD_v17a().
| const Double_t gkSectorGapZ = 0.02 |
Definition at line 166 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructHalfLadder(), create_rootgeom_SSD_v17a(), and CreateLadders().
| const Double_t gkSectorGapZFrame = 0.10 |
Definition at line 175 of file create_rootgeom_SSD_v17a.C.
| const Double_t gkSectorOverlapY = 0.27 |
Definition at line 163 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructHalfLadder(), create_rootgeom_SSD_v17a(), and CreateLadders().
| const Double_t gkSensorThickness = 0.03 |
Definition at line 154 of file create_rootgeom_SSD_v17a.C.
Referenced by create_rootgeom_SSD_v17a(), and CreateSensors().
| const Double_t gkThinFrameThickness = 0.05 |
Definition at line 188 of file create_rootgeom_SSD_v17a.C.
Referenced by ConstructFrameElement().
| TGeoMedium* gStsMedium = NULL |
Definition at line 215 of file create_rootgeom_SSD_v17a.C.
Referenced by AddCarbonLadder(), ConstructBigCone(), ConstructModule(), ConstructStation(), and create_rootgeom_SSD_v17a().