BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
create_rootgeom_SSD_v17a.C File Reference
#include "TGeoCompositeShape.h"
#include "TGeoCone.h"
#include "TGeoManager.h"
#include "TGeoPara.h"
#include "TGeoTrd2.h"
#include "TGeoTube.h"
#include <iomanip>
#include <iostream>
Include dependency graph for create_rootgeom_SSD_v17a.C:

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

Function Documentation

◆ AddCarbonLadder()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ BeamPipeRadius()

Double_t BeamPipeRadius ( Double_t z)

=========================================================================== Calculate beam pipe outer radius for a given z

Definition at line 1561 of file create_rootgeom_SSD_v17a.C.

References gkPipeR1, gkPipeR2, gkPipeR3, gkPipeZ2, gkPipeZ3, and z.

◆ CheckVolume() [1/2]

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CheckVolume() [2/2]

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().

Here is the call graph for this function:

◆ ConstructBigCone()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructFrameElement()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructHalfLadder()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructLadder()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructModule()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructSmallCone()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructStation()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_rootgeom_SSD_v17a()

◆ CreateLadders()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateMedia()

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().

Here is the call graph for this function:

◆ CreateSectors()

Int_t CreateSectors ( )

=========================================================================== Create sectors

A sector is either a single sensor or several chained sensors. It is implemented as TGeoVolumeAssembly. Currently available:

  • single sensors of type 1 - 4
  • two chained sensors of type 4
  • three chained sensors of type 4

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateSensors()

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().

Here is the caller graph for this function:

Variable Documentation

◆ gGeoMan

TGeoManager* gGeoMan = NULL

Definition at line 217 of file create_rootgeom_SSD_v17a.C.

◆ gkCableThickness

const Double_t gkCableThickness = 0.02

Definition at line 160 of file create_rootgeom_SSD_v17a.C.

◆ gkChainGapY

const Double_t gkChainGapY = 0.00

Definition at line 157 of file create_rootgeom_SSD_v17a.C.

◆ gkConstructCables

const Bool_t gkConstructCables = kTRUE

Definition at line 178 of file create_rootgeom_SSD_v17a.C.

◆ gkConstructCones

const Bool_t gkConstructCones = kFALSE

Definition at line 181 of file create_rootgeom_SSD_v17a.C.

◆ gkConstructFrames

const Bool_t gkConstructFrames = kTRUE

Definition at line 182 of file create_rootgeom_SSD_v17a.C.

◆ gkConstructSmallFrames

const Bool_t gkConstructSmallFrames = kTRUE

Definition at line 183 of file create_rootgeom_SSD_v17a.C.

◆ gkCylinderDiaInner

const Double_t gkCylinderDiaInner
Initial value:
=
0.07

Definition at line 191 of file create_rootgeom_SSD_v17a.C.

◆ gkCylinderDiaOuter

const Double_t gkCylinderDiaOuter
Initial value:
=
0.15

Definition at line 193 of file create_rootgeom_SSD_v17a.C.

◆ gkCylindricalFrames

const Bool_t gkCylindricalFrames = kTRUE

Definition at line 184 of file create_rootgeom_SSD_v17a.C.

◆ gkFrameStep

const Double_t gkFrameStep = 4.0

Definition at line 189 of file create_rootgeom_SSD_v17a.C.

◆ gkFrameThickness

const Double_t gkFrameThickness = 0.2

Definition at line 187 of file create_rootgeom_SSD_v17a.C.

◆ gkLadderGapZ

const Double_t gkLadderGapZ = 1.00

Definition at line 172 of file create_rootgeom_SSD_v17a.C.

◆ gkLadderOverlapX

const Double_t gkLadderOverlapX = 0.30

Definition at line 169 of file create_rootgeom_SSD_v17a.C.

◆ gkPipeR1

const Double_t gkPipeR1 = 1.8

Definition at line 201 of file create_rootgeom_SSD_v17a.C.

◆ gkPipeR2

const Double_t gkPipeR2 = 1.8

Definition at line 203 of file create_rootgeom_SSD_v17a.C.

◆ gkPipeR3

const Double_t gkPipeR3 = 5.5

Definition at line 205 of file create_rootgeom_SSD_v17a.C.

◆ gkPipeZ1

const Double_t gkPipeZ1 = 22.0

Definition at line 200 of file create_rootgeom_SSD_v17a.C.

◆ gkPipeZ2

const Double_t gkPipeZ2 = 50.0

Definition at line 202 of file create_rootgeom_SSD_v17a.C.

◆ gkPipeZ3

const Double_t gkPipeZ3 = 125.0

Definition at line 204 of file create_rootgeom_SSD_v17a.C.

◆ gkSectorGapZ

const Double_t gkSectorGapZ = 0.02

Definition at line 166 of file create_rootgeom_SSD_v17a.C.

◆ gkSectorGapZFrame

const Double_t gkSectorGapZFrame = 0.10

Definition at line 175 of file create_rootgeom_SSD_v17a.C.

◆ gkSectorOverlapY

const Double_t gkSectorOverlapY = 0.27

Definition at line 163 of file create_rootgeom_SSD_v17a.C.

◆ gkSensorThickness

const Double_t gkSensorThickness = 0.03

Definition at line 154 of file create_rootgeom_SSD_v17a.C.

◆ gkThinFrameThickness

const Double_t gkThinFrameThickness = 0.05

Definition at line 188 of file create_rootgeom_SSD_v17a.C.

◆ gStsMedium

TGeoMedium* gStsMedium = NULL

Definition at line 215 of file create_rootgeom_SSD_v17a.C.