ATLAS Offline Software
MultiLayer.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MultiLayer_H
6 #define MultiLayer_H
7 
9 
10 #include <string>
11 #include <utility>
12 #include <vector>
13 
14 class GeoFullPhysVol;
15 
16 namespace MuonGM {
17  class MYSQL;
18 
19  class MultiLayer : public DetectorElement {
20  public:
21  int nrOfLayers{0};
22  int nrOfTubes{0}; // tubes in a layer
23  double tubePitch{0.}; // tube pitch in a layer
24  double width{0.};
25  double length{0.};
26  double thickness{0.};
27  double mdtthickness{0.};
28  double longWidth{0.}; // for trapezoidal layers
29  int nrOfSteps{0}; // for trapezoidal layers,
30  // nr of steps in the staircase
31  MultiLayer(const MYSQL& mysql, const std::string& n);
32  GeoFullPhysVol *build(StoredMaterialManager& matManager,
33  const MYSQL& mysql);
34  std::array<double, 4> yy{};
35  std::array<double, 4> xx{};
36  virtual void print() const override;
37 
38  int cutoutNsteps{0}; // how many sub-multilayers there are along y-amdb
39  std::array<int, 5> cutoutNtubes{}; // how many tubes in the sub-multilayer [i]
40  std::array<double, 5> cutoutXtubes{}; // where is the centre of the tubes in sub-ml[i] along x-amdb
41  std::array<double, 5> cutoutYmax{}; // max Y(amdb) of this sub-multilayer
42  std::array<double, 5> cutoutTubeLength{}; // tube length
43  std::array<bool, 5> cutoutFullLength{}; // true if this region is outside the cutout
44  bool cutoutAtAngle{false}; // true if this station has cutouts at an angle; //EMS1,3 and BOS6
45 
46  // the same but for several cutouts along the amdb x (GeoModel y)
47  // gives the (x1,x2) and (y1,y2) tuples of rectangles which are NOT cutout
48  std::vector<std::pair<double, double>> m_nonCutoutXSteps{};
49  std::vector<std::pair<double, double>> m_nonCutoutYSteps{};
50  };
51 } // namespace MuonGM
52 
53 #endif
MuonGM::MultiLayer::MultiLayer
MultiLayer(const MYSQL &mysql, const std::string &n)
Definition: MultiLayer.cxx:57
DetectorElement.h
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
MuonGM::MultiLayer::length
double length
Definition: MultiLayer.h:25
MuonGM::MultiLayer::cutoutFullLength
std::array< bool, 5 > cutoutFullLength
Definition: MultiLayer.h:43
MuonGM::MultiLayer::cutoutTubeLength
std::array< double, 5 > cutoutTubeLength
Definition: MultiLayer.h:42
MuonGM::MultiLayer::tubePitch
double tubePitch
Definition: MultiLayer.h:23
MuonGM::MYSQL
Definition: MYSQL.h:43
MuonGM::MultiLayer::xx
std::array< double, 4 > xx
Definition: MultiLayer.h:35
MuonGM::MultiLayer
Definition: MultiLayer.h:19
MuonGM::MultiLayer::thickness
double thickness
Definition: MultiLayer.h:26
MuonGM::DetectorElement
Definition: DetectorElement.h:15
MuonGM::MultiLayer::yy
std::array< double, 4 > yy
Definition: MultiLayer.h:34
MuonGM::MultiLayer::nrOfSteps
int nrOfSteps
Definition: MultiLayer.h:29
MuonGM::MultiLayer::build
GeoFullPhysVol * build(StoredMaterialManager &matManager, const MYSQL &mysql)
Definition: MultiLayer.cxx:78
MuonGM::MultiLayer::width
double width
Definition: MultiLayer.h:24
MuonGM::MultiLayer::cutoutNsteps
int cutoutNsteps
Definition: MultiLayer.h:38
beamspotman.n
n
Definition: beamspotman.py:731
MuonGM::MultiLayer::cutoutNtubes
std::array< int, 5 > cutoutNtubes
Definition: MultiLayer.h:39
MuonGM::MultiLayer::m_nonCutoutYSteps
std::vector< std::pair< double, double > > m_nonCutoutYSteps
Definition: MultiLayer.h:49
MuonGM::MultiLayer::cutoutAtAngle
bool cutoutAtAngle
Definition: MultiLayer.h:44
MuonGM::MultiLayer::print
virtual void print() const override
Definition: MultiLayer.cxx:713
StoredMaterialManager
This class holds one or more material managers and makes them storeable, under StoreGate.
Definition: StoredMaterialManager.h:28
MuonGM::MultiLayer::nrOfLayers
int nrOfLayers
Definition: MultiLayer.h:21
MuonGM::MultiLayer::longWidth
double longWidth
Definition: MultiLayer.h:28
MuonGM::MultiLayer::mdtthickness
double mdtthickness
Definition: MultiLayer.h:27
MuonGM::MultiLayer::nrOfTubes
int nrOfTubes
Definition: MultiLayer.h:22
MuonGM::MultiLayer::cutoutYmax
std::array< double, 5 > cutoutYmax
Definition: MultiLayer.h:41
MuonGM::MultiLayer::cutoutXtubes
std::array< double, 5 > cutoutXtubes
Definition: MultiLayer.h:40
MuonGM::MultiLayer::m_nonCutoutXSteps
std::vector< std::pair< double, double > > m_nonCutoutXSteps
Definition: MultiLayer.h:48