ATLAS Offline Software
DigitizationModule.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // DigitizationModule.h, ATLAS Detector software
8 
9 #ifndef TRKDIGEVENT_PLANARDIGITIZATIONMODULE_H
10 #define TRKDIGEVENT_PLANARDIGITIZATIONMODULE_H
11 
12 // GeoPrimitives
14 // Trk
17 // STL
18 #include <memory>
19 #include <vector>
20 
21 namespace Trk {
22 
23  class Surface;
24 
51  public :
53  DigitizationModule(std::shared_ptr<const Segmentation> moduleSegmentation,
54  double halfThickness,
55  int readoutDirection,
56  double lorentzAngle);
57 
59  virtual ~DigitizationModule(){}
60 
62  const std::vector< std::shared_ptr<const Surface> > segmentationSurfaces(const DigitizationCell& entryCids, const DigitizationCell& exitCids) const;
63 
65  const DigitizationCell cell(const Amg::Vector2D& position) const;
66 
68  double halfThickness() const;
69 
71  int readoutDirection() const;
72 
74  double lorentzAngle() const;
75 
77  const Segmentation& segmentation() const;
78 
80  const std::vector< std::shared_ptr<const Surface> > stepSurfaces(const Amg::Vector3D& start, const Amg::Vector3D& end) const;
81 
84 
86  const std::vector< std::shared_ptr<const Surface> >& boundarySurfaces() const;
87 
89  const std::vector< std::shared_ptr<const Surface> >& segmentationSurfacesX() const;
90 
92  const std::vector< std::shared_ptr<const Surface> >& segmentationSurfacesY() const;
93 
94  private:
95 
98  double m_lorentzAngle;
100 
101  std::shared_ptr<const Segmentation> m_segmentation;
102  std::vector< std::shared_ptr<const Surface> > m_boundarySurfaces;
103  std::vector< std::shared_ptr<const Surface> > m_segmentationSurfacesX;
104  std::vector< std::shared_ptr<const Surface> > m_segmentationSurfacesY;
105 
106  };
107 
108 
109  inline double DigitizationModule::halfThickness() const
110  { return m_halfThickness; }
111 
113  { return m_readoutDirection; }
114 
115  inline double DigitizationModule::lorentzAngle() const
116  { return m_lorentzAngle; }
117 
119  { return (*(m_segmentation.get())); }
120 
121  inline const std::vector< std::shared_ptr<const Surface> >& DigitizationModule::boundarySurfaces() const
122  { return m_boundarySurfaces; }
123 
124  inline const std::vector< std::shared_ptr<const Surface> >& DigitizationModule::segmentationSurfacesX() const
125  { return m_segmentationSurfacesX; }
126 
127  inline const std::vector< std::shared_ptr<const Surface> >& DigitizationModule::segmentationSurfacesY() const
128  { return m_segmentationSurfacesY; }
129 
132 
133 }
134 
135 #endif
Trk::DigitizationModule::lorentzAngle
double lorentzAngle() const
return the lorentz Angle
Definition: DigitizationModule.h:115
Trk::DigitizationModule::boundarySurfaces
const std::vector< std::shared_ptr< const Surface > > & boundarySurfaces() const
return the bounding surfaces at top and bottom
Definition: DigitizationModule.h:121
Trk::DigitizationModule::m_lorentzAngle
double m_lorentzAngle
the lorentz angle
Definition: DigitizationModule.h:98
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
Trk::DigitizationModule::readoutDirection
int readoutDirection() const
return the readout direction
Definition: DigitizationModule.h:112
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:7
Trk::DigitizationModule
Definition: DigitizationModule.h:50
Trk::DigitizationModule::segmentationSurfacesY
const std::vector< std::shared_ptr< const Surface > > & segmentationSurfacesY() const
return all surfaces in Y - excluding the boundaries
Definition: DigitizationModule.h:127
Trk::DigitizationModule::m_boundarySurfaces
std::vector< std::shared_ptr< const Surface > > m_boundarySurfaces
boundary surfaces, they are ordered: readout, opposite, x boundaries, y boundaries
Definition: DigitizationModule.h:102
Trk::DigitizationModule::stepSurfaces
const std::vector< std::shared_ptr< const Surface > > stepSurfaces(const Amg::Vector3D &start, const Amg::Vector3D &end) const
return the test surfaces between these points
Definition: DigitizationModule.cxx:58
Trk::DigitizationCell
std::pair< size_t, size_t > DigitizationCell
Definition: DigitizationCell.h:18
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
Trk::DigitizationModule::m_readoutDirection
int m_readoutDirection
defines if the readout is along (+1) / (-1) wrt the z axis
Definition: DigitizationModule.h:97
Trk::DigitizationModule::DigitizationModule
DigitizationModule(std::shared_ptr< const Segmentation > moduleSegmentation, double halfThickness, int readoutDirection, double lorentzAngle)
Constructor from a Segmentation descriptor.
Definition: DigitizationModule.cxx:11
GeoPrimitives.h
Trk::DigitizationModule::m_segmentationSurfacesX
std::vector< std::shared_ptr< const Surface > > m_segmentationSurfacesX
segmentation surfaces in X - without boundaries
Definition: DigitizationModule.h:103
Trk::DigitizationModule::segmentation
const Segmentation & segmentation() const
return the segmenation
Definition: DigitizationModule.h:118
Trk::DigitizationModule::m_segmentationSurfacesY
std::vector< std::shared_ptr< const Surface > > m_segmentationSurfacesY
segmentation surfaces in Y - without boundaries
Definition: DigitizationModule.h:104
Trk::DigitizationModule::segmentationSurfacesX
const std::vector< std::shared_ptr< const Surface > > & segmentationSurfacesX() const
return all surfaces in X - excluding the boundaries
Definition: DigitizationModule.h:124
Trk::DigitizationStep
Definition: DigitizationCell.h:21
Trk::DigitizationModule::cell
const DigitizationCell cell(const Amg::Vector2D &position) const
Get the digitization cell fropm a position.
Trk::DigitizationModule::m_segmentation
std::shared_ptr< const Segmentation > m_segmentation
segmentation descriptor
Definition: DigitizationModule.h:101
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::DigitizationModule::segmentationSurfaces
const std::vector< std::shared_ptr< const Surface > > segmentationSurfaces(const DigitizationCell &entryCids, const DigitizationCell &exitCids) const
Return the internal test segmentation surfaces to test between entry and exit given by their cell id'...
Definition: DigitizationModule.cxx:33
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
DigitizationCell.h
Trk::DigitizationModule::m_halfThickness
double m_halfThickness
Definition: DigitizationModule.h:96
Trk::DigitizationModule::m_tanLorentzAngle
double m_tanLorentzAngle
and the tangent of it
Definition: DigitizationModule.h:99
Trk::DigitizationModule::digitizationStep
const DigitizationStep digitizationStep(const Amg::Vector3D &start, const Amg::Vector3D &end) const
Fill the associated digitsation cell from this start and end position, correct for lorentz effect if ...
Definition: DigitizationModule.h:130
Trk::DigitizationModule::halfThickness
double halfThickness() const
module thickness
Definition: DigitizationModule.h:109
Segmentation.h
Trk::DigitizationModule::~DigitizationModule
virtual ~DigitizationModule()
Virtual Destructor.
Definition: DigitizationModule.h:59
Trk::Segmentation
Definition: Segmentation.h:39