HerdSoftware  0.1.1
TrackingDetectorGeoParams.h
Go to the documentation of this file.
1 /*
2  * TrackingDetectorGeoParams.h
3  *
4  * Created on: 22 May 2020
5  * Author: Valerio Formato
6  */
7 
10 #ifndef HERD_TRACKINGDETECTORGEOPARAMS_H_
11 #define HERD_TRACKINGDETECTORGEOPARAMS_H_
12 
13 // HERD headers
14 #include "common/AxesArray.h"
15 #include "common/DefaultValues.h"
16 #include "common/SidesArray.h"
17 #include "dataobjects/Point.h"
18 
19 #ifdef HS_USE_ROOT
20 #include "Rtypes.h"
21 #endif
22 
23 namespace Herd {
24 
29 private:
30  /* data */
31 public:
39 
41  virtual ~TrackingDetectorGeoParams() = default;
42 
48  virtual const RefFrame::Side &Side() const { return _side; }
49 
55  virtual size_t LayerNumber() const { return _layerNumber; }
56 
61  virtual bool HasTungsten() const { return _hasTungsten; }
62 
68  float TungstenThickness() const { return _tungstenThickness; }
69 
75  virtual float ElementPitch() const { return _elementPitch; }
76 
84  virtual unsigned int ElementID(const Point &position) const = 0;
85 
92  virtual Point ElementPosition(unsigned int volID) const = 0;
93 
99  virtual RefFrame::Direction NormalDirection() const { return _normalDir; };
100 
111  virtual std::pair<RefFrame::Direction, RefFrame::Direction> SegmentationDirections() const {
112  return std::make_pair(_mainSegmDir, _secSegmDir);
113  };
114 
121  virtual void SetSideAndMainSegmDir(RefFrame::Side dside, RefFrame::Direction segmDir) = 0;
122 
128  virtual void SetHasTungsten(bool value) { _hasTungsten = value; }
129 
135  virtual void SetTungstenThickness(float value) { _tungstenThickness = value; }
136 
137 protected:
139  size_t _layerNumber;
146 
147 #ifdef HS_USE_ROOT
148  ClassDef(TrackingDetectorGeoParams, 2)
149 #endif
150 };
151 
152 } // namespace Herd
153 
154 #endif
virtual std::pair< RefFrame::Direction, RefFrame::Direction > SegmentationDirections() const
Return the segmentation directions of the tracking elements.
Definition: TrackingDetectorGeoParams.h:111
virtual size_t LayerNumber() const
Return the layer number for this layer in its detector.
Definition: TrackingDetectorGeoParams.h:55
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:24
virtual Point ElementPosition(unsigned int volID) const =0
Get position of a given element.
virtual unsigned int ElementID(const Point &position) const =0
Utility function to get volumeID from a set of coordinates. Reimplemented in derived classes...
bool _hasTungsten
Element pitch.
Definition: TrackingDetectorGeoParams.h:144
#define DEFAULT_INIT(x)
Definition: DefaultValues.h:23
TrackingDetectorGeoParams()
Default constructor.
Definition: TrackingDetectorGeoParams.h:36
virtual bool HasTungsten() const
Check if layer is preceded by tungsten plane.
Definition: TrackingDetectorGeoParams.h:61
Side
Aliases for the five sides. RefFrame.h common/RefFrame.h.
Definition: RefFrame.h:104
size_t _layerNumber
Detector side.
Definition: TrackingDetectorGeoParams.h:139
RefFrame::Direction _normalDir
Layer number.
Definition: TrackingDetectorGeoParams.h:140
virtual ~TrackingDetectorGeoParams()=default
Virtual destructor.
RefFrame::Direction _mainSegmDir
Normal direction.
Definition: TrackingDetectorGeoParams.h:141
float TungstenThickness() const
Get the tungsten layer thickness.
Definition: TrackingDetectorGeoParams.h:68
A class describing a vector in 3D space.
Definition: Vec3D.h:33
virtual void SetHasTungsten(bool value)
Set the tungsten flag.
Definition: TrackingDetectorGeoParams.h:128
virtual float ElementPitch() const
Get element pitch.
Definition: TrackingDetectorGeoParams.h:75
RefFrame::Side _side
Definition: TrackingDetectorGeoParams.h:138
virtual const RefFrame::Side & Side() const
Return the detector side this layer is in.
Definition: TrackingDetectorGeoParams.h:48
virtual RefFrame::Direction NormalDirection() const
Get the normal direction to the detector.
Definition: TrackingDetectorGeoParams.h:99
virtual void SetTungstenThickness(float value)
Set the tungsten plane thickness.
Definition: TrackingDetectorGeoParams.h:135
float _elementPitch
Secondary segmentation direction for elements.
Definition: TrackingDetectorGeoParams.h:143
Base data structure for single tracking detector layer geometry parameters.
Definition: TrackingDetectorGeoParams.h:28
RefFrame::Direction _secSegmDir
Main segmentation direction for elements.
Definition: TrackingDetectorGeoParams.h:142
Direction
Aliases for the six axis directions. RefFrame.h common/RefFrame.h.
Definition: RefFrame.h:52
virtual void SetSideAndMainSegmDir(RefFrame::Side dside, RefFrame::Direction segmDir)=0
Set the detector side and the main segmentation direction for elements.
float _tungstenThickness
True if layer is preceded by a tungsten plane.
Definition: TrackingDetectorGeoParams.h:145