ATLAS Offline Software
Loading...
Searching...
No Matches
MuonGM::DriftTube Class Reference

#include <DriftTube.h>

Inheritance diagram for MuonGM::DriftTube:
Collaboration diagram for MuonGM::DriftTube:

Public Member Functions

GeoVPhysVol * build (StoredMaterialManager &matManager)
virtual void print () const override
 DriftTube (const MYSQL &mysql, const std::string &s)
void setLogVolName (const std::string &str)

Public Attributes

std::string gasMaterial {}
std::string tubeMaterial {}
std::string plugMaterial {}
std::string wireMaterial {}
double length {0.}
double outerRadius {0.}
double gasRadius {0.}
double plugLength {0.}
std::string name {}
std::string logVolName {}

Detailed Description

Definition at line 17 of file DriftTube.h.

Constructor & Destructor Documentation

◆ DriftTube()

MuonGM::DriftTube::DriftTube ( const MYSQL & mysql,
const std::string & s )

Definition at line 27 of file DriftTube.cxx.

28 : DetectorElement(n),
29 gasMaterial ("muo::ArCO2"),
30 tubeMaterial ("std::Aluminium"),
31 plugMaterial ("std::Bakelite"),
32 wireMaterial ("std::Aluminium"),
33 length(0.) // length is set in MultiLayer.cxx
34 {
35 const MDT *md = dynamic_cast<const MDT*>(mysql.GetTechnology(name.substr(0, 5)));
36 gasRadius = md->innerRadius;
37 outerRadius = gasRadius + md->tubeWallThickness;
38 plugLength = md->tubeEndPlugLength;
39 }
@ MDT
Definition RegSelEnums.h:31
Technology * GetTechnology(const std::string &name)
Definition MYSQL.cxx:105
DetectorElement(const std::string &n)
std::string gasMaterial
Definition DriftTube.h:19
std::string plugMaterial
Definition DriftTube.h:21
std::string wireMaterial
Definition DriftTube.h:22
std::string tubeMaterial
Definition DriftTube.h:20

Member Function Documentation

◆ build()

GeoVPhysVol * MuonGM::DriftTube::build ( StoredMaterialManager & matManager)

Definition at line 41 of file DriftTube.cxx.

41 {
42 const GeoTube *stube = new GeoTube(0.0, outerRadius, length / 2.0);
43 const GeoMaterial *mtube = matManager.getMaterial(tubeMaterial);
44 const GeoLogVol *ltube = new GeoLogVol("MDTDriftWall", stube, mtube);
45 GeoPhysVol *ptube = new GeoPhysVol(ltube);
46
47 const GeoTube *splug = new GeoTube(0.0, outerRadius, plugLength / 2.0);
48 const GeoMaterial *mplug = matManager.getMaterial(plugMaterial);
49 const GeoLogVol *lplug = new GeoLogVol("Endplug", splug, mplug);
50 GeoPhysVol *pplug = new GeoPhysVol(lplug);
51
52 const GeoTube *sgas = new GeoTube(0, gasRadius, length / 2.0 - plugLength);
53 const GeoMaterial *mgas = matManager.getMaterial(gasMaterial);
54 const GeoLogVol *lgas = new GeoLogVol("SensitiveGas", sgas, mgas);
55 GeoPhysVol *pgas = new GeoPhysVol(lgas);
56
57 GeoSerialDenominator *plugDenominator = new GeoSerialDenominator("Tube Endplug");
58 GeoTransform *ec0X = new GeoTransform(GeoTrf::TranslateZ3D(+(length - plugLength) / 2));
59 GeoTransform *ec1X = new GeoTransform(GeoTrf::TranslateZ3D(-(length - plugLength) / 2));
60 std::string sGasName = "SensitiveGas";
61 GeoNameTag *gasDenominator = new GeoNameTag(sGasName);
62
63 ptube->add(plugDenominator);
64 ptube->add(ec0X);
65 ptube->add(pplug);
66 ptube->add(ec1X);
67 ptube->add(pplug);
68 ptube->add(gasDenominator);
69 ptube->add(pgas);
70
71 return ptube;
72 }
virtual const GeoMaterial * getMaterial(const std::string &name)=0

◆ print()

void MuonGM::DriftTube::print ( ) const
overridevirtual

Implements MuonGM::DetectorElement.

Definition at line 74 of file DriftTube.cxx.

74 {
75 MsgStream log(Athena::getMessageSvc(), "MuonGM::DriftTube");
76
77 log << MSG::INFO << "Drift tube " << name.c_str() << " :" << std::endl
78 << " Tube material : " << tubeMaterial.c_str() << std::endl
79 << " Radius : " << outerRadius << std::endl
80 << " Length : " << length << std::endl
81 << " Thickness : " << outerRadius - gasRadius << " mm" << std::endl
82 << " Gas material : " << gasMaterial.c_str() << std::endl
83 << " EP length : " << plugLength << endmsg;
84 }
#define endmsg
IMessageSvc * getMessageSvc(bool quiet=false)

◆ setLogVolName()

void MuonGM::DetectorElement::setLogVolName ( const std::string & str)
inlineinherited

Member Data Documentation

◆ gasMaterial

std::string MuonGM::DriftTube::gasMaterial {}

Definition at line 19 of file DriftTube.h.

19{};

◆ gasRadius

double MuonGM::DriftTube::gasRadius {0.}

Definition at line 25 of file DriftTube.h.

25{0.};

◆ length

double MuonGM::DriftTube::length {0.}

Definition at line 23 of file DriftTube.h.

23{0.};

◆ logVolName

std::string MuonGM::DetectorElement::logVolName {}
inherited

Definition at line 18 of file DetectorElement.h.

18{};

◆ name

std::string MuonGM::DetectorElement::name {}
inherited

Definition at line 17 of file DetectorElement.h.

17{};

◆ outerRadius

double MuonGM::DriftTube::outerRadius {0.}

Definition at line 24 of file DriftTube.h.

24{0.};

◆ plugLength

double MuonGM::DriftTube::plugLength {0.}

Definition at line 26 of file DriftTube.h.

26{0.};

◆ plugMaterial

std::string MuonGM::DriftTube::plugMaterial {}

Definition at line 21 of file DriftTube.h.

21{};

◆ tubeMaterial

std::string MuonGM::DriftTube::tubeMaterial {}

Definition at line 20 of file DriftTube.h.

20{};

◆ wireMaterial

std::string MuonGM::DriftTube::wireMaterial {}

Definition at line 22 of file DriftTube.h.

22{};

The documentation for this class was generated from the following files: