Analysis Software
Documentation for sPHENIX simulation 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/Core/include/Acts/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 Vector3 &position) const final
 
 
DigitizationCell cell (const Vector2 &position) const final
 
 
Vector2 cellPosition (const DigitizationCell &dCell) const final
 
 
DigitizationStep digitizationStep (const Vector3 &start, const Vector3 &end, double halfThickness, int readoutDirection=1, double lorentzAngle=0.) const final
 
 
const PlanarBoundsmoduleBounds () const final
 
const BinUtilitybinUtility () const final
 
std::pair< double, doublepitch () 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.

Segmentation 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 within 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 44 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 44 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 24 of file CartesianSegmentation.cpp.

View newest version in sPHENIX GitHub at line 24 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 consistency

Definition at line 37 of file CartesianSegmentation.cpp.

View newest version in sPHENIX GitHub at line 37 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 122 of file CartesianSegmentation.hpp.

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

References m_binUtility.

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

Get the digitization cell from 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 132 of file CartesianSegmentation.hpp.

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

References position.

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

Get the digitization cell from 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 137 of file CartesianSegmentation.hpp.

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

References position.

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

Calculate the cell Position from the Id

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

Implements Acts::Segmentation.

Definition at line 216 of file CartesianSegmentation.cpp.

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

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

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

Definition at line 127 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 127 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 49 of file CartesianSegmentation.cpp.

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

References Acts::Test::moduleBounds, and physmon_ckf_tracking::u.

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

+ Here is the caller graph for this function:

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

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

Fill the associated digitization 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 position

Implements Acts::Segmentation.

Definition at line 229 of file CartesianSegmentation.cpp.

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

References norm.

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

return the surface bounds by reference specialization for Rectangle Bounds

Implements Acts::Segmentation.

Definition at line 118 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 118 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 142 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 142 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 114 of file CartesianSegmentation.hpp.

View newest version in sPHENIX GitHub at line 114 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 115 of file CartesianSegmentation.hpp.

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

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


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