CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TotemRPGeometry.h
Go to the documentation of this file.
1 /****************************************************************************
2 *
3 * Authors:
4 * Jan Kašpar (jan.kaspar@gmail.com)
5 *
6 ****************************************************************************/
7 
8 #ifndef Geometry_VeryForwardGeometryBuilder_TotemRPGeometry
9 #define Geometry_VeryForwardGeometryBuilder_TotemRPGeometry
10 
12 #include "CLHEP/Vector/ThreeVector.h"
13 #include "CLHEP/Vector/Rotation.h"
15 
16 #include <map>
17 #include <set>
18 
19 class DetId;
20 
39 {
40  public:
41  typedef std::map<unsigned int, DetGeomDesc* > mapType;
42  typedef std::map<int, DetGeomDesc* > RPDeviceMapType;
43  typedef std::map<unsigned int, std::set<unsigned int> > mapSetType;
44 
47 
50  {
51  Build(gd);
52  }
53 
55  char Build(const DetGeomDesc *);
56 
59  char AddDetector(unsigned int, const DetGeomDesc * &);
60 
62  char AddRPDevice(unsigned int id, const DetGeomDesc * &det_geom_desc);
63 
67  DetGeomDesc *GetDetector(unsigned int) const;
68 
69  DetGeomDesc const *GetDetector(const TotemRPDetId & id) const
70  {
71  return GetDetector(id.rawId());
72  }
73 
75  DetGeomDesc const *operator[] (unsigned int id) const
76  {
77  return GetDetector(id);
78  }
79 
81  CLHEP::Hep3Vector GetDetEdgePosition(unsigned int id) const;
82 
84  CLHEP::Hep3Vector GetDetEdgeNormalVector(unsigned int id) const;
85 
87  DetGeomDesc *GetRPDevice(unsigned int id) const;
88 
90  CLHEP::Hep3Vector GetRPThinFoilPosition(int copy_no) const;
91 
93  CLHEP::Hep3Vector GetRPThinFoilNormalVector(int copy_no) const;
94 
96  mapType::const_iterator beginDet() const
97  {
98  return theMap.begin();
99  }
100 
102  mapType::const_iterator endDet() const
103  {
104  return theMap.end();
105  }
106 
108  RPDeviceMapType::const_iterator beginRP() const
109  {
110  return theRomanPotMap.begin();
111  }
112 
114  RPDeviceMapType::const_iterator endRP() const
115  {
116  return theRomanPotMap.end();
117  }
118 
121  void BuildSets();
122 
124  std::set<unsigned int> StationsInArm(unsigned int) const;
125 
127  std::set<unsigned int> RPsInStation(unsigned int) const;
128 
131  std::set<unsigned int> DetsInRP(unsigned int) const;
132 
135  CLHEP::Hep3Vector LocalToGlobal(DetGeomDesc *gd, const CLHEP::Hep3Vector r) const;
136  CLHEP::Hep3Vector GlobalToLocal(DetGeomDesc *gd, const CLHEP::Hep3Vector r) const;
137  CLHEP::Hep3Vector LocalToGlobal(unsigned int id, const CLHEP::Hep3Vector r) const;
138  CLHEP::Hep3Vector GlobalToLocal(unsigned int id, const CLHEP::Hep3Vector r) const;
139 
142  CLHEP::Hep3Vector LocalToGlobalDirection(unsigned int id, const CLHEP::Hep3Vector dir) const;
143  CLHEP::Hep3Vector GlobalToLocalDirection(unsigned int id, const CLHEP::Hep3Vector dir) const;
144 
147  CLHEP::Hep3Vector GetDetTranslation(unsigned int id) const;
148 
151  void GetReadoutDirection(unsigned int id, double &dx, double &dy) const;
152 
154  CLHEP::Hep3Vector GetRPGlobalTranslation(int copy_no) const;
155  CLHEP::HepRotation GetRPGlobalRotation(int copy_no) const;
156 
158  unsigned int NumberOfDetsIncluded() const
159  {
160  return theMap.size();
161  }
162 
163  protected:
166 
170 };
171 
172 #endif
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:30
TotemRPGeometry(const DetGeomDesc *gd)
build up from DetGeomDesc
DetGeomDesc * GetRPDevice(unsigned int id) const
returns geometry of a RP box
CLHEP::Hep3Vector GetDetEdgePosition(unsigned int id) const
returns the position of the edge of a detector
CLHEP::Hep3Vector GetRPGlobalTranslation(int copy_no) const
position of a RP package (translation z corresponds to the first plane - TODO check it) ...
CLHEP::Hep3Vector GetRPThinFoilPosition(int copy_no) const
returns the (outer) position of the thin foil of a RP box
char Build(const DetGeomDesc *)
build up from DetGeomDesc structure, return 0 = success
unsigned int NumberOfDetsIncluded() const
RPDeviceMapType::const_iterator endRP() const
end iterator over RPs
void BuildSets()
builds maps element ID –&gt; set of subelements (re)builds stationsInArm, rpsInStation, detsInRP out of theMap
DetGeomDesc * GetDetector(unsigned int) const
returns geometry of a detector performs necessary checks, returns NULL if fails input is raw ID ...
DetGeomDesc const * GetDetector(const TotemRPDetId &id) const
std::map< int, DetGeomDesc * > RPDeviceMapType
char AddRPDevice(unsigned int id, const DetGeomDesc *&det_geom_desc)
adds a RP package (primary vacuum) to a map
void GetReadoutDirection(unsigned int id, double &dx, double &dy) const
std::map< unsigned int, std::set< unsigned int > > mapSetType
std::set< unsigned int > RPsInStation(unsigned int) const
after checks returns set of RP corresponding to the given station ID
mapType::const_iterator endDet() const
end iterator over (silicon) detectors
std::set< unsigned int > DetsInRP(unsigned int) const
CLHEP::Hep3Vector GlobalToLocalDirection(unsigned int id, const CLHEP::Hep3Vector dir) const
RPDeviceMapType::const_iterator beginRP() const
begin iterator over RPs
CLHEP::Hep3Vector GetDetTranslation(unsigned int id) const
mapSetType stationsInArm
map: parent ID -&gt; set of subelements E.g. stationsInArm is map of arm ID -&gt; set of stations (in that ...
Geometrical description of a detector.
Definition: DetGeomDesc.h:40
mapType theMap
map: detectorID –&gt; DetGeomDesc
CLHEP::Hep3Vector GetDetEdgeNormalVector(unsigned int id) const
returns a normal vector for the edge of a detector
CLHEP::Hep3Vector GlobalToLocal(DetGeomDesc *gd, const CLHEP::Hep3Vector r) const
CLHEP::Hep3Vector LocalToGlobalDirection(unsigned int id, const CLHEP::Hep3Vector dir) const
Definition: DetId.h:18
CLHEP::HepRotation GetRPGlobalRotation(int copy_no) const
returns number of detectors in the geometry (size of theMap)
The manager class for TOTEM RP geometry.
CLHEP::Hep3Vector LocalToGlobal(DetGeomDesc *gd, const CLHEP::Hep3Vector r) const
DetGeomDesc const * operator[](unsigned int id) const
same as GetDetector
std::set< unsigned int > StationsInArm(unsigned int) const
after checks returns set of stations corresponding to the given arm ID
std::map< unsigned int, DetGeomDesc * > mapType
mapSetType rpsInStation
mapType::const_iterator beginDet() const
begin iterator over (silicon) detectors
RPDeviceMapType theRomanPotMap
map: RPID –&gt; DetGeomDesc
dbl *** dir
Definition: mlp_gen.cc:35
char AddDetector(unsigned int, const DetGeomDesc *&)
adds an item to the map (detector ID –&gt; DetGeomDesc) performs necessary checks, returns 0 if succesfu...
CLHEP::Hep3Vector GetRPThinFoilNormalVector(int copy_no) const
returns a normal vector for the thin foil of a RP box
mapSetType detsInRP