CMS 3D CMS Logo

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 
13 #include "CLHEP/Vector/ThreeVector.h"
14 #include "CLHEP/Vector/Rotation.h"
16 
17 #include <map>
18 #include <set>
19 
20 class DetId;
21 
40 {
41  public:
42  typedef std::map<unsigned int, DetGeomDesc* > mapType;
43  typedef std::map<int, DetGeomDesc* > RPDeviceMapType;
44  typedef std::map<unsigned int, std::set<unsigned int> > mapSetType;
45 
48 
51  {
52  Build(gd);
53  }
54 
56  char Build(const DetGeomDesc *);
57 
60  char AddDetector(unsigned int, const DetGeomDesc * &);
61 
63  char AddRPDevice(unsigned int id, const DetGeomDesc * &det_geom_desc);
64 
68  DetGeomDesc *GetDetector(unsigned int) const;
69 
70  const DetGeomDesc* GetDetector( const TotemRPDetId& id ) const
71  {
72  return GetDetector( id.rawId() );
73  }
74  const DetGeomDesc* GetDetector( const CTPPSDetId& id ) const
75  {
76  return GetDetector( id.rawId() );
77  }
78 
80  DetGeomDesc const *operator[] (unsigned int id) const
81  {
82  return GetDetector(id);
83  }
84 
86  CLHEP::Hep3Vector GetDetEdgePosition(unsigned int id) const;
87 
89  CLHEP::Hep3Vector GetDetEdgeNormalVector(unsigned int id) const;
90 
92  DetGeomDesc *GetRPDevice(unsigned int id) const;
93 
95  CLHEP::Hep3Vector GetRPThinFoilPosition(int copy_no) const;
96 
98  CLHEP::Hep3Vector GetRPThinFoilNormalVector(int copy_no) const;
99 
101  mapType::const_iterator beginDet() const
102  {
103  return theMap.begin();
104  }
105 
107  mapType::const_iterator endDet() const
108  {
109  return theMap.end();
110  }
111 
113  RPDeviceMapType::const_iterator beginRP() const
114  {
115  return theRomanPotMap.begin();
116  }
117 
119  RPDeviceMapType::const_iterator endRP() const
120  {
121  return theRomanPotMap.end();
122  }
123 
126  void BuildSets();
127 
129  std::set<unsigned int> StationsInArm(unsigned int) const;
130 
132  std::set<unsigned int> RPsInStation(unsigned int) const;
133 
136  std::set<unsigned int> DetsInRP(unsigned int) const;
137 
140  CLHEP::Hep3Vector LocalToGlobal(DetGeomDesc *gd, const CLHEP::Hep3Vector r) const;
141  CLHEP::Hep3Vector GlobalToLocal(DetGeomDesc *gd, const CLHEP::Hep3Vector r) const;
142  CLHEP::Hep3Vector LocalToGlobal(unsigned int id, const CLHEP::Hep3Vector r) const;
143  CLHEP::Hep3Vector GlobalToLocal(unsigned int id, const CLHEP::Hep3Vector r) const;
144 
147  CLHEP::Hep3Vector LocalToGlobalDirection(unsigned int id, const CLHEP::Hep3Vector dir) const;
148  CLHEP::Hep3Vector GlobalToLocalDirection(unsigned int id, const CLHEP::Hep3Vector dir) const;
149 
152  CLHEP::Hep3Vector GetDetTranslation(unsigned int id) const;
153 
156  void GetReadoutDirection(unsigned int id, double &dx, double &dy) const;
157 
159  CLHEP::Hep3Vector GetRPGlobalTranslation(int copy_no) const;
160  CLHEP::HepRotation GetRPGlobalRotation(int copy_no) const;
161 
163  unsigned int NumberOfDetsIncluded() const
164  {
165  return theMap.size();
166  }
167 
168  protected:
169  mapType theMap;
170  RPDeviceMapType theRomanPotMap;
171 
175 };
176 
177 #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 –> 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 ...
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
const DetGeomDesc * GetDetector(const TotemRPDetId &id) const
mapSetType stationsInArm
map: parent ID -> set of subelements E.g. stationsInArm is map of arm ID -> set of stations (in that ...
Geometrical description of a detector.
Definition: DetGeomDesc.h:40
mapType theMap
map: detectorID –> 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
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:32
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 –> DetGeomDesc
dbl *** dir
Definition: mlp_gen.cc:35
const DetGeomDesc * GetDetector(const CTPPSDetId &id) const
char AddDetector(unsigned int, const DetGeomDesc *&)
adds an item to the map (detector ID –> DetGeomDesc) performs necessary checks, returns 0 if succesf...
CLHEP::Hep3Vector GetRPThinFoilNormalVector(int copy_no) const
returns a normal vector for the thin foil of a RP box
mapSetType detsInRP