EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::CartesianSegmentation Class Reference

Segmentation Base class. More...

#include <acts/blob/sPHENIX/Plugins/Digitization/include/Acts/Plugins/Digitization/CartesianSegmentation.hpp>

+ Inheritance diagram for Acts::CartesianSegmentation:
+ Collaboration diagram for Acts::CartesianSegmentation:

Public Member Functions

 CartesianSegmentation (const std::shared_ptr< const PlanarBounds > &mBounds, size_t numCellsX, size_t numCellsY=1)
 
 CartesianSegmentation (std::shared_ptr< const BinUtility > bUtility, std::shared_ptr< const PlanarBounds > mBounds=nullptr)
 
 ~CartesianSegmentation () override
 Virtual Destructor.
 
void createSegmentationSurfaces (SurfacePtrVector &boundarySurfaces, SurfacePtrVector &segmentationSurfacesX, SurfacePtrVector &segmentationSurfacesY, double halfThickness, int readoutDirection=1., double lorentzAngle=0.) const final
 
 
DigitizationCell cell (const Vector3D &position) const final
 
 
DigitizationCell cell (const Vector2D &position) const final
 
 
Vector2D cellPosition (const DigitizationCell &dCell) const final
 
 
DigitizationStep digitizationStep (const Vector3D &startStep, const Vector3D &endStep, double halfThickness, int readoutDirection=1, double lorentzAngle=0.) const final
 
 
const PlanarBoundsmoduleBounds () const final
 
const BinUtilitybinUtility () const final
 
std::pair< double, double > pitch () const
 return the pitch sizes as a pair
 
- Public Member Functions inherited from Acts::Segmentation
virtual ~Segmentation ()=default
 Virtual Destructor.
 

Private Member Functions

template<class T >
DigitizationCell cellT (const T &position) const
 

Private Attributes

std::shared_ptr< const
PlanarBounds
m_activeBounds
 
std::shared_ptr< const BinUtilitym_binUtility
 active area size
 

Detailed Description

Segmentation Base class.

Segementation class for generic pixel, strixels and strip segmentations in a cartesian frame, this uses a cartesian X/Y local surface definition

The calculation can be done in full 3D, i.e. the segments of the path through the planar module are calculated in a 3D model - or in 2D, when the entire calculation is done on the projective surface. When the 2D option is used, segmentation surfaces are not created. The 2D calculation is faster and uses less memory, however, effects witin the sensor volume can not be easily integrated

Conventions:

  • 3D positions are within the 3D frame of the module
  • 2D positions are corrected to the readout surface they need to be corrected by the lorentzShift for the parameter surface in the center of the surface)

Definition at line 41 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 41 of file CartesianSegmentation.hpp

Constructor & Destructor Documentation

Acts::CartesianSegmentation::CartesianSegmentation ( const std::shared_ptr< const PlanarBounds > &  mBounds,
size_t  numCellsX,
size_t  numCellsY = 1 
)

Constructor for all same-size pixels or strips (in cas numCellsY is set to 1)

Parameters
mBoundsare the rectangle bounds of the sensitive volume
numCellsXis the number of cells in X
numCellsYis the number of cells in Y

Definition at line 21 of file CartesianSegmentation.cpp.

View newest version in sPHENIX GitHub at line 21 of file CartesianSegmentation.cpp

References Acts::binX, Acts::binY, boost::const_pointer_cast(), m_binUtility, and Acts::open.

+ Here is the call graph for this function:

Acts::CartesianSegmentation::CartesianSegmentation ( std::shared_ptr< const BinUtility bUtility,
std::shared_ptr< const PlanarBounds mBounds = nullptr 
)
Parameters
bUtilityis the bin Utility,
mBoundsare the rectangle bounds if provided for memory optimisation
Note
if both RectangleBounds and BinUtility are provided, no check is done for consitency

Definition at line 34 of file CartesianSegmentation.cpp.

View newest version in sPHENIX GitHub at line 34 of file CartesianSegmentation.cpp

References m_activeBounds, and m_binUtility.

Acts::CartesianSegmentation::~CartesianSegmentation ( )
overridedefault

Virtual Destructor.

Member Function Documentation

const BinUtility & Acts::CartesianSegmentation::binUtility ( ) const
inlinefinalvirtual

return the bin utility that defines the readout segmentation

Implements Acts::Segmentation.

Definition at line 120 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 120 of file CartesianSegmentation.hpp

References m_binUtility.

Referenced by Acts::detail::findLocalTopAndBottomEnd().

+ Here is the caller graph for this function:

DigitizationCell Acts::CartesianSegmentation::cell ( const Vector3D position) const
inlinefinalvirtual

Get the digitization cell fropm a 3D position

  • ignores the shift, i.e. assumenes in to be in cell frame
Parameters
positionis the position for which the cell is requested
Returns
is a cell with cell ids

Implements Acts::Segmentation.

Definition at line 130 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 130 of file CartesianSegmentation.hpp

References Acts::VectorHelpers::position().

+ Here is the call graph for this function:

DigitizationCell Acts::CartesianSegmentation::cell ( const Vector2D position) const
inlinefinalvirtual

Get the digitization cell fropm a 3D position

  • ignores the shift, i.e. assumenes in to be in cell frame
Parameters
positionis the position for which the cell is requested
Returns
is a cell with cell ids

Implements Acts::Segmentation.

Definition at line 135 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 135 of file CartesianSegmentation.hpp

References Acts::VectorHelpers::position().

+ Here is the call graph for this function:

Acts::Vector2D Acts::CartesianSegmentation::cellPosition ( const DigitizationCell dCell) const
finalvirtual

Calculate the cell Position from the Id

Parameters
cIdis the digitization cell
Returns
the center position of the associated cell

Implements Acts::Segmentation.

Definition at line 214 of file CartesianSegmentation.cpp.

View newest version in sPHENIX GitHub at line 214 of file CartesianSegmentation.cpp

References Acts::DigitizationCell::channel0, and Acts::DigitizationCell::channel1.

template<class T >
DigitizationCell Acts::CartesianSegmentation::cellT ( const T position) const
private

Definition at line 125 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 125 of file CartesianSegmentation.hpp

References m_binUtility.

void Acts::CartesianSegmentation::createSegmentationSurfaces ( SurfacePtrVector boundarySurfaces,
SurfacePtrVector segmentationSurfacesX,
SurfacePtrVector segmentationSurfacesY,
double  halfThickness,
int  readoutDirection = 1.,
double  lorentzAngle = 0. 
) const
finalvirtual

Create the segmentation surfaces in XThis method is only used if the full 3D digitization is done

Parameters
boundarySurfacesvector to be filled
segmentationSurfacesXare the segmetation boundaries in X
segmentationSurfacesYare the segmetation boundaries in Y
halfThicknessis the half thickness in z of the module
readoutDirectionis the direction w.r.t normal vector where the readout is given : -1, 0, 1 possible
lorentzAngleis the lorentz angle measured from the local z towards x axis

Create the segmentation surfaces in X and Y for rectangular shapes These are needed for a full three dimensional module

Implements Acts::Segmentation.

Definition at line 46 of file CartesianSegmentation.cpp.

View newest version in sPHENIX GitHub at line 46 of file CartesianSegmentation.cpp

References kdfinder::abs(), cos(), Acts::Test::moduleBounds, and Acts::UnitConstants::u.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Acts::DigitizationStep Acts::CartesianSegmentation::digitizationStep ( const Vector3D startStep,
const Vector3D endStep,
double  halfThickness,
int  readoutDirection = 1,
double  lorentzAngle = 0. 
) const
finalvirtual

Fill the associated digitsation cell from this start and end position correct for lorentz effect if needed

Fill the associated digitsation cell from the start and end position in 3D correct for lorentz effect if needed

Parameters
startis the start position of the step
endis the end position of the step
halfThicknessis the half thickness in z
readoutDirectionis the readout direction with respect to local z
lorentzAngleis the lorentz angle measured from local z towards x
Returns
is a fully calculated digitzation step

Get the digitization cell from 3D position, it used the projection to the readout surface to estimate the 2D positon

Implements Acts::Segmentation.

Definition at line 227 of file CartesianSegmentation.cpp.

View newest version in sPHENIX GitHub at line 227 of file CartesianSegmentation.cpp

References cos().

+ Here is the call graph for this function:

const PlanarBounds & Acts::CartesianSegmentation::moduleBounds ( ) const
inlinefinalvirtual

return the surface bounds by reference specialization for Rectangle Bounds

Implements Acts::Segmentation.

Definition at line 116 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 116 of file CartesianSegmentation.hpp

References m_activeBounds.

std::pair< double, double > Acts::CartesianSegmentation::pitch ( ) const
inline

return the pitch sizes as a pair

Definition at line 140 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 140 of file CartesianSegmentation.hpp

References m_activeBounds, m_binUtility, and Acts::Test::values.

Member Data Documentation

std::shared_ptr<const PlanarBounds> Acts::CartesianSegmentation::m_activeBounds
private

Definition at line 112 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 112 of file CartesianSegmentation.hpp

Referenced by CartesianSegmentation(), moduleBounds(), and pitch().

std::shared_ptr<const BinUtility> Acts::CartesianSegmentation::m_binUtility
private

active area size

Definition at line 113 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 113 of file CartesianSegmentation.hpp

Referenced by binUtility(), CartesianSegmentation(), cellT(), and pitch().


The documentation for this class was generated from the following files: