HerdSoftware  0.4.0
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
Herd::ScdGeoParams Class Reference

Data structure for single silicon layer geometry parameters. More...

#include <dataobjects/ScdGeoParams.h>

Inheritance diagram for Herd::ScdGeoParams:
Herd::TrackingDetectorGeoParams

Classes

struct  WaferLookupTable
 Internal lookup table used to speedup WaferID queries as function of position. More...
 

Public Types

enum  BondingType { BondingType::NONE, BondingType::STRAIGHT, BondingType::ZIGZAG }
 Enum class for the different bonding types. More...
 

Public Member Functions

 ScdGeoParams ()
 Default constructor. More...
 
 ScdGeoParams (RefFrame::Side dside, size_t layerNumber, RefFrame::Direction stripMainSegm)
 Construct a new ScdGeoParams object. More...
 
 ~ScdGeoParams () override=default
 Virtual destructor
More...
 
const ParallelepipedBoundingBox () const
 Get the layer bounding box for quick geometric checks (intersections and such). More...
 
size_t NWafers () const
 Get the total number of wafers in a single la_boundingBoxyer. More...
 
size_t NTotElements () const
 Get the total number of strips (sensitive elements) in a single layer. More...
 
float StripPitch () const
 Get strip pitch.Calls ChannelPitch. Kept for backwards compatibility. More...
 
int NStripsPerWafer () const
 Number of strips for each wafer. More...
 
int NStripsPerBondedLadder () const
 Number of strips for each bonded ladder. More...
 
int NStripsPerPhysLadder () const
 Number of strips for each physical ladder. More...
 
float FirstStripPosition () const
 Get distance of first strip from wafer edge. More...
 
const AxesArray< int > & NWafersPerBondedLadder () const
 Get the number of wafers that make up a ladder. More...
 
const AxesArray< int > & NBondedLadders () const
 Get the number of ladders that make up a layer. More...
 
const AxesArray< int > & NWafersPerPhysLadder () const
 Get the number of wafers that make up a physical ladder. More...
 
const AxesArray< int > & NPhysLadders () const
 Get the number of physical ladders that make up a layer. More...
 
const AxesArray< float > & WaferSize () const
 Get the dimensions of the single wafer. More...
 
Point ElementPosition (unsigned int volID) const override
 Get position of a given strip. More...
 
Point StripPosition (unsigned int volID) const
 Get position of a given strip. More...
 
const PointWaferPosition (unsigned int volID) const
 Get position of a given wafer in layer. More...
 
Point LadderPosition (unsigned int ladderID) const
 Get position of a given ladder. More...
 
std::pair< RefFrame::Direction, RefFrame::DirectionStripSegmentationDirections () const
 Return the segmentation directions of the silicon strips. More...
 
std::pair< RefFrame::Direction, RefFrame::DirectionWaferSegmentationDirections () const
 Return the segmentation directions of the silicon Wafers. More...
 
std::pair< RefFrame::Direction, RefFrame::DirectionLadderSegmentationDirections () const
 Return the segmentation directions of the silicon Ladders. More...
 
unsigned int LadderIDFromStripID (unsigned int stripID) const
 Retrieves the volume ID of the ladder containing the strip with the given volumeID. More...
 
unsigned int LadderIDFromWaferID (unsigned int waferID) const
 Retrieves the volume ID of the ladder containing the wafer with the given volumeID. More...
 
std::pair< unsigned int, unsigned int > WaferIDsFromLadderID (unsigned int ladderID) const
 Retrieves the volume ID of the first and last wafers contained in the ladder with the given volumeID. More...
 
unsigned int WaferIDFromStripID (unsigned int stripID) const
 Retrieves the ID of the wafer containing the given unbonded strip. More...
 
std::pair< unsigned int, unsigned int > StripIDsFromLadderID (unsigned int ladderID) const
 Retrieves the volume ID of the first and last strip contained in the ladder with the given volumeID. More...
 
unsigned int StripIDOnLadder (unsigned int stripID) const
 Returns the strip ID on ladder. More...
 
std::optional< unsigned int > WaferID (const Point &position) const
 Utility function to get waferID from a set of coordinates. More...
 
std::optional< unsigned int > ElementID (const Point &position) const override
 Utility function to get volumeID from a set of coordinates. Reimplemented in derived classes. More...
 
std::optional< unsigned int > StripID (const Point &position) const
 Utility function to get stripID from a set of coordinates. Calls ElementID. More...
 
Parallelepiped ElementShape (size_t volID) const
 Utility function to get the shape in space of a particular strip. More...
 
BondingType LadderBonding () const
 
void SetSideAndStripMainSegmDir (RefFrame::Side dside, RefFrame::Direction segmDir)
 Set the detector side and the main segmentation direction for strips. Calls SetSideAndMainSegmDir. Kept for backwards compatibility. More...
 
void SetSideAndMainSegmDir (RefFrame::Side dside, RefFrame::Direction segmDir) override
 Set the detector side and the main segmentation direction for channels. More...
 
void SetStripPitch (float pitch)
 Set the strip pitch. More...
 
void SetNStripsPerWafer (int nStrips)
 Set the number of strips per wafer. More...
 
void SetBondedLadders (const AxesArray< int > &nLadders, const AxesArray< int > &nWafersPerLadder, BondingType bType)
 Set the ladders bonding. More...
 
void SetPhysLadders (const AxesArray< int > &nLadders, const AxesArray< int > &nWafersPerLadder)
 Set the number of physical ladders and of wafers per physical ladder along each axis. More...
 
void SetWaferSize (const AxesArray< float > &sizes)
 Set the wafer sizes along the three axes. More...
 
void SetWaferPosition (size_t waferID, Point position)
 Set the wafer position for a given wafer. More...
 
void SetLadderNormalToStrips (bool value=true)
 Sets a flag for ladders normal to strips. More...
 
- Public Member Functions inherited from Herd::TrackingDetectorGeoParams
 TrackingDetectorGeoParams ()
 Default constructor. More...
 
virtual ~TrackingDetectorGeoParams ()=default
 Virtual destructor
More...
 
virtual const RefFrame::SideSide () const
 Return the detector side this layer is in. More...
 
virtual size_t LayerNumber () const
 Return the layer number for this layer in its detector. More...
 
virtual bool HasTungsten () const
 Check if layer is preceded by tungsten plane. More...
 
float TungstenThickness () const
 Get the tungsten layer thickness. More...
 
virtual float ElementPitch () const
 Get element pitch. More...
 
virtual RefFrame::Direction NormalDirection () const
 Get the normal direction to the detector. More...
 
virtual std::pair< RefFrame::Direction, RefFrame::DirectionSegmentationDirections () const
 Return the segmentation directions of the tracking elements. More...
 
virtual void SetHasTungsten (bool value)
 Set the tungsten flag. More...
 
virtual void SetTungstenThickness (float value)
 Set the tungsten plane thickness. More...
 

Protected Member Functions

void UpdateLUT () const
 

Protected Attributes

struct Herd::ScdGeoParams::WaferLookupTable m_waferLUT
 ! ROOT-transient More...
 
- Protected Attributes inherited from Herd::TrackingDetectorGeoParams
RefFrame::Side _side
 
size_t _layerNumber
 Detector side. More...
 
RefFrame::Direction _normalDir
 Layer number. More...
 
RefFrame::Direction _mainSegmDir
 Normal direction. More...
 
RefFrame::Direction _secSegmDir
 Main segmentation direction for elements. More...
 
float _elementPitch
 Secondary segmentation direction for elements. More...
 
bool _hasTungsten
 Element pitch. More...
 
float _tungstenThickness
 True if layer is preceded by a tungsten plane. More...
 

Private Member Functions

void ComputeBoundingBox () const
 Number of physical ladders along the three axes. More...
 
void SetLaddersHelper (const AxesArray< int > &nLadders, const AxesArray< int > &nWafersPerLadder, int type)
 

Private Attributes

float _firstStripPos
 
int _nStripsPerWafer
 Position of the first strip w.r.t the left border of the wafer [cm];. More...
 
AxesArray< float > _waferSize
 Number of strips in each wafer. More...
 
AxesArray< int > _nWafersPerBondedLadder
 Dimensions of a Si wafer along the three axes. More...
 
AxesArray< int > _nBondedLadders
 Number of wafers in each bonded ladder along the three axes. More...
 
std::vector< Point_waferPos
 Number of bonded ladders along the three axes. More...
 
bool _bbIsValid {false}
 Position of all the Si wafers. More...
 
Parallelepiped _boundingBox
 Flag to signal Bounding box must be recomputed. More...
 
BondingType m_ladderBonding
 Bounding box for this layer, to use for quick intersection checks. More...
 
bool m_ladderNormalToStrips
 Type of bonding applied to wafer strips of a ladder. More...
 
AxesArray< int > _nWafersPerPhysLadder
 true if the strips are normal to the ladder More...
 
AxesArray< int > _nPhysLadders
 Number of wafers in each physical ladder along the three axes. More...
 

Detailed Description

Data structure for single silicon layer geometry parameters.

Member Enumeration Documentation

◆ BondingType

Enum class for the different bonding types.

Enumerator
NONE 
STRAIGHT 

No bonding has been applied.

ZIGZAG 

Strips are aligned along the ladder and bonded straightly.

Strips are orthogonal to the ladder and zigzag-bonded.

Constructor & Destructor Documentation

◆ ScdGeoParams() [1/2]

Herd::ScdGeoParams::ScdGeoParams ( )

Default constructor.

◆ ScdGeoParams() [2/2]

Herd::ScdGeoParams::ScdGeoParams ( RefFrame::Side  dside,
size_t  layerNumber,
RefFrame::Direction  stripMainSegm 
)

Construct a new ScdGeoParams object.

Parameters
dsideThe detector side.
layerNumberThe number of layers.
stripMainSegmThe main segmentation direction for strips.

◆ ~ScdGeoParams()

Herd::ScdGeoParams::~ScdGeoParams ( )
overridedefault

Virtual destructor

Member Function Documentation

◆ BoundingBox()

const Parallelepiped & Herd::ScdGeoParams::BoundingBox ( ) const

Get the layer bounding box for quick geometric checks (intersections and such).

Returns
a Parallelepiped object approximating the layer volume.

◆ ComputeBoundingBox()

void Herd::ScdGeoParams::ComputeBoundingBox ( ) const
private

Number of physical ladders along the three axes.

◆ ElementID()

std::optional< unsigned int > Herd::ScdGeoParams::ElementID ( const Point position) const
overridevirtual

Utility function to get volumeID from a set of coordinates. Reimplemented in derived classes.

Parameters
positionThe coordinates of the point (normal coordinate is ignored).
Returns
Optional: The ID of the element containing the point. If the position is not on any element, returns defaultValue<unsigned int>.

Implements Herd::TrackingDetectorGeoParams.

◆ ElementPosition()

Point Herd::ScdGeoParams::ElementPosition ( unsigned int  volID) const
overridevirtual

Get position of a given strip.

Parameters
volIDThe unique ID of the strip.
Returns
the strip position.

Implements Herd::TrackingDetectorGeoParams.

◆ ElementShape()

Parallelepiped Herd::ScdGeoParams::ElementShape ( size_t  volID) const

Utility function to get the shape in space of a particular strip.

Parameters
volIDThe volume ID of the requested strip.
Returns
A Parallelepiped describing the sensitive element and its position in 3D space.

◆ FirstStripPosition()

float Herd::ScdGeoParams::FirstStripPosition ( ) const
inline

Get distance of first strip from wafer edge.

Returns
first strip position

◆ LadderBonding()

BondingType Herd::ScdGeoParams::LadderBonding ( ) const
inline

◆ LadderIDFromStripID()

unsigned int Herd::ScdGeoParams::LadderIDFromStripID ( unsigned int  stripID) const

Retrieves the volume ID of the ladder containing the strip with the given volumeID.

Parameters
stripIDThe volumeID of the strip.
Returns
The volumeID of the ladder containing the strip.

◆ LadderIDFromWaferID()

unsigned int Herd::ScdGeoParams::LadderIDFromWaferID ( unsigned int  waferID) const

Retrieves the volume ID of the ladder containing the wafer with the given volumeID.

Parameters
waferIDThe volumeID of the wafer.
Returns
The volumeID of the ladder containing the wafer.

◆ LadderPosition()

Point Herd::ScdGeoParams::LadderPosition ( unsigned int  ladderID) const

Get position of a given ladder.

Parameters
ladderIDThe unique ID of the ladder.
Returns
the ladder position.

◆ LadderSegmentationDirections()

std::pair< RefFrame::Direction, RefFrame::Direction > Herd::ScdGeoParams::LadderSegmentationDirections ( ) const

Return the segmentation directions of the silicon Ladders.

The first element of the returned pair is the direction along which the volume ID increases by 1 (the so called "main segmentation direction"), the second element is the other segmentation direction (the "secondary segmentation direction"). For the silicon strip the main segmentation direction is the natural one defined by the strip orientation.

Returns
the two segmentation directions.
Exceptions
std::runtime_errorif the normal direction setting is not valid.

◆ NBondedLadders()

const AxesArray<int>& Herd::ScdGeoParams::NBondedLadders ( ) const
inline

Get the number of ladders that make up a layer.

This is intended as number of ladders along each direction. Here "ladder" means a set of bonded wafers, which might or might not coincide with a physical ladder (i.e. a set of wafers mounted in the same ladder support) depending on whether the wafers are bonded or not, on the bonding scheme etc. As a convention the number of ladders in the normal plane direction is 1. When the wafers are not bonded the returned number of ladders is equal to the number of wafers, or in other words, each ladder is made of a single wafer.

Returns
Number of ladders in each plane along each axis.

◆ NPhysLadders()

const AxesArray<int>& Herd::ScdGeoParams::NPhysLadders ( ) const
inline

Get the number of physical ladders that make up a layer.

This is intended as number of ladders along each direction. The difference with #NLadders() is that the latter returns the number of ladder made of bonded wafers (so for unbonded wafers it returns the number of wafers itself, and if a fancy bonding scheme is applied it might return a different value than this method).

Returns
Number of physical ladders in each plane along each axis.

◆ NStripsPerBondedLadder()

int Herd::ScdGeoParams::NStripsPerBondedLadder ( ) const
inline

Number of strips for each bonded ladder.

Returns
number of strips per bonded ladder.

◆ NStripsPerPhysLadder()

int Herd::ScdGeoParams::NStripsPerPhysLadder ( ) const
inline

Number of strips for each physical ladder.

Returns
number of strips per physical ladder.

◆ NStripsPerWafer()

int Herd::ScdGeoParams::NStripsPerWafer ( ) const
inline

Number of strips for each wafer.

Returns
number of strips per wafer.

◆ NTotElements()

size_t Herd::ScdGeoParams::NTotElements ( ) const

Get the total number of strips (sensitive elements) in a single layer.

Returns
const size_t nWafers

◆ NWafers()

size_t Herd::ScdGeoParams::NWafers ( ) const
inline

Get the total number of wafers in a single la_boundingBoxyer.

Returns
const size_t nWafers

◆ NWafersPerBondedLadder()

const AxesArray<int>& Herd::ScdGeoParams::NWafersPerBondedLadder ( ) const
inline

Get the number of wafers that make up a ladder.

This is intended as number of wafers along each direction, and basically defines the ladder orientation. Here "ladder" means a set of bonded wafers, which might or might not coincide with a physical ladder (i.e. a set of wafers mounted in the same ladder support) depending on whether the wafers are bonded or not, on the bonding scheme etc. As a convention the number of wafers in the normal plane direction is one. When the wafers are not bonded the returned number of wafers per ladder is 1 in every direction, or in other words, each ladder is made of a single wafer.

Returns
Number of wafers per ladder along each axis.

◆ NWafersPerPhysLadder()

const AxesArray<int>& Herd::ScdGeoParams::NWafersPerPhysLadder ( ) const
inline

Get the number of wafers that make up a physical ladder.

The returned values are the number of wafers which are physically present in a ladder. The difference with #NWafersPerLadder() is that the latter returns the number of wafers that are bonded into a ladder (so for unbonded wafers it returns 1, and if a fancy bonding scheme is applied it might return a different value than this method).

Returns
Number of wafers in each physical ladders along each axis.

◆ SetBondedLadders()

void Herd::ScdGeoParams::SetBondedLadders ( const AxesArray< int > &  nLadders,
const AxesArray< int > &  nWafersPerLadder,
BondingType  bType 
)

Set the ladders bonding.

Must be called after SetPhysLadders. The total number of wafers along each direction as computed from the given parameters must coincide with the same number computed from number of physical ladders and of wafers per physical ladder. The number of ladders must be 1 along the normal axis. The number of wafers must be 1 along the normal and along the strip main segmentation axis.

Parameters
nLaddersThe number of ladders along each axis.
nWafersThe number of wafers per ladder along each axis.
bTypeThe bonding type.
Exceptions
std::runtime_errorif this method is called before SetPhysLadders.
std::runtime_errorif BondingType::NONE is set with a number of wafers per ladder different from 1.
std::runtime_errorif the number of ladders along the orthogonal direction is not 1.
std::runtime_errorif the number of wafers along the orthogonal axis and along the strip main segmentation axis is not 1.
std::runtime_errorif the total number of wafers along each axis does not coincide with that computed from physical ladders parameters.

◆ SetLadderNormalToStrips()

void Herd::ScdGeoParams::SetLadderNormalToStrips ( bool  value = true)
inline

Sets a flag for ladders normal to strips.

wafer * The segmentation direction for the strips are set by SetSideAndMainSegmDir, and the segmentation directions for the wafers and ladders are derived from strip directions. In the standard case the wafer strips are aligned with the ladder direction, to be bonded straightly, so strip main direction is the wafer and ladder secondary direction, and vice-versa. By calling this method the ladder will be flagged to be orthogonal to the strips, to be then bonded in a crossed fashion, so the ladders and wafers segmentation directions will be equal to the strips segmentation directions.

Parameters
valueFlag for setting the strips orthogonal to the ladder.

◆ SetLaddersHelper()

void Herd::ScdGeoParams::SetLaddersHelper ( const AxesArray< int > &  nLadders,
const AxesArray< int > &  nWafersPerLadder,
int  type 
)
private

◆ SetNStripsPerWafer()

void Herd::ScdGeoParams::SetNStripsPerWafer ( int  nStrips)

Set the number of strips per wafer.

Must be called after SetSideAndStripMainSegmDir and SetWaferSize. This method computes and sets also the strip pitch.

Parameters
nStripsThe number of strips per wafer.
Exceptions
std::runtime_errorif this method is called before SetSideAndStripMainSegmDir or SetWaferSize.
See also
FirstStripPosition

◆ SetPhysLadders()

void Herd::ScdGeoParams::SetPhysLadders ( const AxesArray< int > &  nLadders,
const AxesArray< int > &  nWafersPerLadder 
)
inline

Set the number of physical ladders and of wafers per physical ladder along each axis.

Must be called after SetSideAndStripMainSegmDir. The number of ladders must be 1 along the normal axis. The number of wafers must be 1 along the normal and along the strip main segmentation axis. If the given parameters differ from the current values this method resets the information about ladder bonding, setting the bonding type to BondingType::NONE and the number of wafers per bonded ladder to 1.

Parameters
nLaddersThe number of ladders along each axis.
nWafersThe number of wafers per ladder along each axis.
Exceptions
std::runtime_errorif this method is called before SetSideAndStripMainSegmDir.
std::runtime_errorif the number of ladders along the orthogonal direction is not 1.
std::runtime_errorif the number of wafers along the orthogonal axis and along the strip main segmentation axis is not 1.

◆ SetSideAndMainSegmDir()

void Herd::ScdGeoParams::SetSideAndMainSegmDir ( RefFrame::Side  dside,
RefFrame::Direction  segmDir 
)
overridevirtual

Set the detector side and the main segmentation direction for channels.

Parameters
dsideThe side.
segmDirthe main segmentation direction for channels.

Implements Herd::TrackingDetectorGeoParams.

◆ SetSideAndStripMainSegmDir()

void Herd::ScdGeoParams::SetSideAndStripMainSegmDir ( RefFrame::Side  dside,
RefFrame::Direction  segmDir 
)
inline

Set the detector side and the main segmentation direction for strips. Calls SetSideAndMainSegmDir. Kept for backwards compatibility.

Parameters
dsideThe side.
segmDirthe main segmentation direction for strips.

◆ SetStripPitch()

void Herd::ScdGeoParams::SetStripPitch ( float  pitch)

Set the strip pitch.

Must be called after SetSideAndStripMainSegmDir and SetWaferSize. This method computes and sets also the position of the first strip.

Parameters
pitchthe strip pitch [cm].
Exceptions
std::runtime_errorif this method is called before SetSideAndStripMainSegmDir or SetWaferSize.
See also
FirstStripPosition

◆ SetWaferPosition()

void Herd::ScdGeoParams::SetWaferPosition ( size_t  waferID,
Point  position 
)
inline

Set the wafer position for a given wafer.

See the wiki page for the wafer numbering convention.

Parameters
waferID
position

◆ SetWaferSize()

void Herd::ScdGeoParams::SetWaferSize ( const AxesArray< float > &  sizes)
inline

Set the wafer sizes along the three axes.

Must be called before SetStripPitch and SetNStripsPerWafer.

Parameters
sizesthe size of the wafer along each axis [cm].

◆ StripID()

std::optional<unsigned int> Herd::ScdGeoParams::StripID ( const Point position) const
inline

Utility function to get stripID from a set of coordinates. Calls ElementID.

This method is just a more descriptive name for ElementID.

Parameters
positionThe coordinates of the point (normal coordinate is ignored).
Returns
Optional: The ID of the strip containing the point. If the position is not on any strip, returns defaultValue<unsigned int>.

◆ StripIDOnLadder()

unsigned int Herd::ScdGeoParams::StripIDOnLadder ( unsigned int  stripID) const

Returns the strip ID on ladder.

This method computes the relative strip ID on the ladder for the given strip. This will return 0 for the first strip of the ladder etc.

Parameters
stripIDThe absolute strip ID.
Returns
The strip ID relative to the ladder.

◆ StripIDsFromLadderID()

std::pair< unsigned int, unsigned int > Herd::ScdGeoParams::StripIDsFromLadderID ( unsigned int  ladderID) const

Retrieves the volume ID of the first and last strip contained in the ladder with the given volumeID.

Parameters
ladderIDThe volumeID of the ladder.
Returns
The volumeIDs of the first and last strip contained in the ladder.

◆ StripPitch()

float Herd::ScdGeoParams::StripPitch ( ) const
inline

Get strip pitch.Calls ChannelPitch. Kept for backwards compatibility.

Returns
strip pitch

◆ StripPosition()

Point Herd::ScdGeoParams::StripPosition ( unsigned int  volID) const
inline

Get position of a given strip.

Parameters
volIDThe unique ID of the strip.
Returns
the strip position.

◆ StripSegmentationDirections()

std::pair<RefFrame::Direction, RefFrame::Direction> Herd::ScdGeoParams::StripSegmentationDirections ( ) const
inline

Return the segmentation directions of the silicon strips.

The first element of the returned pair is the direction along which the volume ID increases by 1 (the so called "main segmentation direction"), the second element is the other segmentation direction (the "secondary segmentation direction"). For the silicon strip the main segmentation direction is the natural one defined by the strip orientation.

Returns
the two segmentation directions.
Exceptions
std::runtime_errorif the normal direction setting is not valid.

◆ UpdateLUT()

void Herd::ScdGeoParams::UpdateLUT ( ) const
protected

◆ WaferID()

std::optional< unsigned int > Herd::ScdGeoParams::WaferID ( const Point position) const

Utility function to get waferID from a set of coordinates.

Parameters
positionThe coordinates of the point (normal coordinate is ignored).
Returns
The ID of the wafer containing the point. If the position is not on any Wafer, returns defaultValue<unsigned int>.

◆ WaferIDFromStripID()

unsigned int Herd::ScdGeoParams::WaferIDFromStripID ( unsigned int  stripID) const

Retrieves the ID of the wafer containing the given unbonded strip.

The stripID argument must be the volume ID of a single wafer strip, not the volume ID of a bonded strip.

Parameters
stripIDThe volumeID of the unbonded strip.
Returns
The volumeID of the wafer containing the unbonded strip.

◆ WaferIDsFromLadderID()

std::pair< unsigned int, unsigned int > Herd::ScdGeoParams::WaferIDsFromLadderID ( unsigned int  ladderID) const

Retrieves the volume ID of the first and last wafers contained in the ladder with the given volumeID.

Parameters
ladderIDThe volumeID of the ladder.
Returns
The volumeIDs of the first and last wafer contained in the ladder.

◆ WaferPosition()

const Point& Herd::ScdGeoParams::WaferPosition ( unsigned int  volID) const
inline

Get position of a given wafer in layer.

Parameters
volIDThe wafer ID
Returns
const Point& position

◆ WaferSegmentationDirections()

std::pair< RefFrame::Direction, RefFrame::Direction > Herd::ScdGeoParams::WaferSegmentationDirections ( ) const

Return the segmentation directions of the silicon Wafers.

The first element of the returned pair is the direction along which the volume ID increases by 1 (the so called "main segmentation direction"), the second element is the other segmentation direction (the "secondary segmentation direction"). For the silicon strip the main segmentation direction is the natural one defined by the strip orientation.

Returns
the two segmentation directions.
Exceptions
std::runtime_errorif the normal direction setting is not valid.

◆ WaferSize()

const AxesArray<float>& Herd::ScdGeoParams::WaferSize ( ) const
inline

Get the dimensions of the single wafer.

Returns
wafer dimensions

Member Data Documentation

◆ _bbIsValid

bool Herd::ScdGeoParams::_bbIsValid {false}
mutableprivate

Position of all the Si wafers.

◆ _boundingBox

Parallelepiped Herd::ScdGeoParams::_boundingBox
mutableprivate

Flag to signal Bounding box must be recomputed.

◆ _firstStripPos

float Herd::ScdGeoParams::_firstStripPos
private

◆ _nBondedLadders

AxesArray<int> Herd::ScdGeoParams::_nBondedLadders
private

Number of wafers in each bonded ladder along the three axes.

◆ _nPhysLadders

AxesArray<int> Herd::ScdGeoParams::_nPhysLadders
private

Number of wafers in each physical ladder along the three axes.

◆ _nStripsPerWafer

int Herd::ScdGeoParams::_nStripsPerWafer
private

Position of the first strip w.r.t the left border of the wafer [cm];.

◆ _nWafersPerBondedLadder

AxesArray<int> Herd::ScdGeoParams::_nWafersPerBondedLadder
private

Dimensions of a Si wafer along the three axes.

◆ _nWafersPerPhysLadder

AxesArray<int> Herd::ScdGeoParams::_nWafersPerPhysLadder
private

true if the strips are normal to the ladder

◆ _waferPos

std::vector<Point> Herd::ScdGeoParams::_waferPos
private

Number of bonded ladders along the three axes.

◆ _waferSize

AxesArray<float> Herd::ScdGeoParams::_waferSize
private

Number of strips in each wafer.

◆ m_ladderBonding

BondingType Herd::ScdGeoParams::m_ladderBonding
private

Bounding box for this layer, to use for quick intersection checks.

◆ m_ladderNormalToStrips

bool Herd::ScdGeoParams::m_ladderNormalToStrips
private

Type of bonding applied to wafer strips of a ladder.

◆ m_waferLUT

struct Herd::ScdGeoParams::WaferLookupTable Herd::ScdGeoParams::m_waferLUT
protected

! ROOT-transient


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