ATLAS Offline Software
Loading...
Searching...
No Matches
Segmentation.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// Segmentation.h, ATLAS Detector software
8
9#ifndef TRKDIGEVENT_SEGMENTATION_H
10#define TRKDIGEVENT_SEGMENTATION_H
11
12// GeoPrimitives
14// Trk includes
16// STL
17#include <memory>
18#include <vector>
19
20namespace Trk {
21
22 class Surface;
23 class SurfaceBounds;
24
40 public:
42 virtual ~Segmentation() {}
43
45 virtual void createSegmenationSurfaces(std::vector< std::shared_ptr< const Surface> >& boundarySurfaces,
46 std::vector< std::shared_ptr< const Surface> >& segmentationSurfacesX,
47 std::vector< std::shared_ptr< const Surface> >& segmentationSurfacesY,
48 double halfThickness,
49 int readoutDirection,
50 double lorentzAngle) const = 0;
51
53 virtual const DigitizationCell cell(const Amg::Vector3D& position) const = 0;
54
56 virtual const DigitizationCell cell(const Amg::Vector2D& position) const = 0;
57
59 virtual const Amg::Vector2D cellPosition(const DigitizationCell& dCell) const = 0;
60
62 virtual const DigitizationStep digitizationStep(const Amg::Vector3D& start,
63 const Amg::Vector3D& end,
64 double halfThickness,
65 int readoutDirection,
66 double lorentzAngle) const =0;
67
69 virtual const SurfaceBounds& moduleBounds() const = 0;
70
71
72 };
73
74}
75
76#endif
77
Segementation class for generic pixel, strixels and strip segmentations on a rectangle shape.
virtual const DigitizationCell cell(const Amg::Vector3D &position) const =0
Get the digitization cell fropm a 3D position - ignores the shift.
virtual const SurfaceBounds & moduleBounds() const =0
return the surface bounds by reference
virtual const DigitizationStep digitizationStep(const Amg::Vector3D &start, const Amg::Vector3D &end, double halfThickness, int readoutDirection, double lorentzAngle) const =0
Fill the associated digitsation cell from the start and end position in 3D, correct for lorentz effec...
virtual const DigitizationCell cell(const Amg::Vector2D &position) const =0
Get the digitization cell fropm a 2D position.
virtual const Amg::Vector2D cellPosition(const DigitizationCell &dCell) const =0
calculate the cell Position from the Id
virtual void createSegmenationSurfaces(std::vector< std::shared_ptr< const Surface > > &boundarySurfaces, std::vector< std::shared_ptr< const Surface > > &segmentationSurfacesX, std::vector< std::shared_ptr< const Surface > > &segmentationSurfacesY, double halfThickness, int readoutDirection, double lorentzAngle) const =0
Create the segmentation surfaces in X.
virtual ~Segmentation()
Virtual Destructor.
Abstract base class for surface bounds to be specified.
Abstract Base Class for tracking surfaces.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
std::pair< size_t, size_t > DigitizationCell