ATLAS Offline Software
Loading...
Searching...
No Matches
Station.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef Station_H
6#define Station_H
7
12#include "GeoModelKernel/GeoDefinitions.h"
15#include "MuonGeoModel/Cutout.h"
17
18#include <atomic>
19#include <map>
20#include <memory>
21#include <string>
22#include <vector>
23
24/*
25 This class holds an std::map of Position, AlignPos and an std::vector of
26 Comonents* and Cutouts*
27 It is used only to build the geometry - can be deleted as soon as the job
28 is done (in MYSQL).
29 It is responsible for releasing the memory allocated by Components and Cutouts
30*/
31
32namespace MuonGM {
33 class MYSQL;
34
35 typedef std::map<int, Position, std::less<int>> PositionMap;
36 typedef std::multimap<int, AlignPos, std::less<int>> AlignPosMap;
37 typedef std::map<int, Position, std::less<int>>::const_iterator PositionIterator;
38 typedef std::multimap<int, AlignPos, std::less<int>>::const_iterator AlignPosIterator;
39
40 class Station : public AthMessaging {
41 public:
42 Station();
43 ~Station() = default;
44 Station(const Station &s) = delete;
45 Station& operator= (const Station &s) = delete;
46
47 Station(MYSQL& mysql, std::string name);
48 void SetComponent(Component *c);
49 void SetCutout(Cutout *c);
50 Component *GetComponent(int i) const;
51 Cutout *GetCutout(int i) const;
52 int GetNrOfComponents() const;
53 int GetNrOfCutouts() const;
54 void SetPosition(Position p);
55 void SetAlignPos(const AlignPos &p);
56 // Position GetPosition(int i) const;
57 PositionIterator begin() const;
58 PositionIterator end() const;
60 AlignPosIterator aend() const;
61 PositionIterator FindPosition(int iz, int iphi) const;
62 AlignPosIterator FindAlignPos(int iz, int iphi) const;
63 int CountAlignPos(int iz, int iphi) const;
64 AlignPosIterator getFirstAlignPosInRange(int iz, int iphi, AlignPosIterator &lastAlignPosInRange) const;
65 int Npositions() const;
66
67 GeoTrf::Transform3D native_to_tsz_frame(const MYSQL& mysql, const Position &p) const;
68 GeoTrf::Transform3D tsz_to_native_frame(const MYSQL& mysql, const Position &p) const;
69 GeoTrf::Transform3D tsz_to_global_frame(const MYSQL& mysql, const Position &p) const;
70 GeoTrf::Transform3D global_to_tsz_frame(const MYSQL& mysql, const Position &p) const;
71 GeoTrf::Transform3D getNominalTransform(const MYSQL& mysql, const Position &p) const;
72 GeoTrf::Transform3D getDeltaTransform_tszFrame(const MYSQL& mysql, const AlignPos &ap) const;
73 GeoTrf::Transform3D getDeltaTransform(const MYSQL& mysql,
74 const AlignPos &ap, const Position &p) const;
75 GeoTrf::Transform3D getAlignedTransform(const MYSQL& mysql,
76 const AlignPos &ap, const Position &p) const;
77
78 friend std::ostream &operator<<(std::ostream &os, const Station &s);
79 const std::string& GetName() const;
80 double GetThickness(const MYSQL& mysql) const;
81 double GetExtraBottomThickness() const;
82 double GetExtraTopThickness() const;
83 double GetLength() const;
84 double GetWidth1() const;
85 double GetWidth2() const;
86 double getAmdbOrigine_along_length() const;
87 double getAmdbOrigine_along_thickness(const MYSQL& mysql) const;
88 bool hasMdts() const { return m_hasMdts; }
89 void setHasMdts(bool x) { m_hasMdts = x; }
90
91 double mdtHalfPitch(const MYSQL& mysql) const;
92
93 private:
94 double getYMin() const;
95 mutable std::atomic<double> m_amdbOrigine_along_length;
96 mutable std::atomic<double> m_amdbOrigine_along_thickness;
97 std::string m_name{};
98 bool m_hasMdts{false};
99 std::vector<std::unique_ptr<Component>> m_components{};
100 std::vector< std::unique_ptr<Cutout>> m_cutouts{};
103 }; // class Station
104
105} // namespace MuonGM
106
107#endif
macros to associate a CLID to a type
#define x
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
double GetExtraTopThickness() const
Definition Station.cxx:151
std::vector< std::unique_ptr< Component > > m_components
Definition Station.h:99
GeoTrf::Transform3D native_to_tsz_frame(const MYSQL &mysql, const Position &p) const
Definition Station.cxx:371
int CountAlignPos(int iz, int iphi) const
Definition Station.cxx:69
GeoTrf::Transform3D global_to_tsz_frame(const MYSQL &mysql, const Position &p) const
Definition Station.cxx:508
const std::string & GetName() const
Definition Station.cxx:110
double getAmdbOrigine_along_length() const
Definition Station.cxx:553
int GetNrOfComponents() const
Definition Station.cxx:322
void SetAlignPos(const AlignPos &p)
Definition Station.cxx:42
GeoTrf::Transform3D getDeltaTransform_tszFrame(const MYSQL &mysql, const AlignPos &ap) const
Definition Station.cxx:519
void SetCutout(Cutout *c)
Definition Station.cxx:81
AlignPosIterator abegin() const
Definition Station.cxx:76
AlignPosIterator FindAlignPos(int iz, int iphi) const
Definition Station.cxx:62
int GetNrOfCutouts() const
Definition Station.cxx:324
std::string m_name
Definition Station.h:97
AlignPosIterator aend() const
Definition Station.cxx:77
Station & operator=(const Station &s)=delete
double GetWidth1() const
Definition Station.cxx:227
PositionIterator FindPosition(int iz, int iphi) const
Definition Station.cxx:99
AlignPosIterator getFirstAlignPosInRange(int iz, int iphi, AlignPosIterator &lastAlignPosInRange) const
Definition Station.cxx:55
Station(const Station &s)=delete
std::atomic< double > m_amdbOrigine_along_length
Definition Station.h:95
PositionIterator end() const
Definition Station.cxx:108
friend std::ostream & operator<<(std::ostream &os, const Station &s)
Definition Station.cxx:326
void SetPosition(Position p)
Definition Station.cxx:87
void setHasMdts(bool x)
Definition Station.h:89
AlignPosMap m_alignpositions
Definition Station.h:102
GeoTrf::Transform3D getDeltaTransform(const MYSQL &mysql, const AlignPos &ap, const Position &p) const
Definition Station.cxx:546
GeoTrf::Transform3D getNominalTransform(const MYSQL &mysql, const Position &p) const
Definition Station.cxx:511
double GetThickness(const MYSQL &mysql) const
Definition Station.cxx:112
PositionMap m_positions
Definition Station.h:101
~Station()=default
void SetComponent(Component *c)
Definition Station.cxx:79
GeoTrf::Transform3D tsz_to_global_frame(const MYSQL &mysql, const Position &p) const
Definition Station.cxx:430
bool hasMdts() const
Definition Station.h:88
double GetLength() const
Definition Station.cxx:160
GeoTrf::Transform3D tsz_to_native_frame(const MYSQL &mysql, const Position &p) const
Definition Station.cxx:426
int Npositions() const
Definition Station.cxx:104
double getAmdbOrigine_along_thickness(const MYSQL &mysql) const
Definition Station.cxx:558
PositionIterator begin() const
Definition Station.cxx:106
double getYMin() const
Definition Station.cxx:209
GeoTrf::Transform3D getAlignedTransform(const MYSQL &mysql, const AlignPos &ap, const Position &p) const
Definition Station.cxx:514
Component * GetComponent(int i) const
Definition Station.cxx:83
double GetWidth2() const
Definition Station.cxx:275
double GetExtraBottomThickness() const
Definition Station.cxx:155
std::vector< std::unique_ptr< Cutout > > m_cutouts
Definition Station.h:100
Cutout * GetCutout(int i) const
Definition Station.cxx:85
std::atomic< double > m_amdbOrigine_along_thickness
Definition Station.h:96
double mdtHalfPitch(const MYSQL &mysql) const
Definition Station.cxx:343
Ensure that the Athena extensions are properly loaded.
Definition GeoMuonHits.h:27
std::multimap< int, AlignPos, std::less< int > > AlignPosMap
Definition Station.h:36
std::multimap< int, AlignPos, std::less< int > >::const_iterator AlignPosIterator
Definition Station.h:38
std::map< int, Position, std::less< int > >::const_iterator PositionIterator
Definition Station.h:37
std::map< int, Position, std::less< int > > PositionMap
Definition Station.h:35