Go to the documentation of this file.
10 #ifndef HERD_SCDGEOPARAMS_H_
11 #define HERD_SCDGEOPARAMS_H_
305 [[nodiscard]] std::optional<unsigned int>
WaferID(
const Point &position)
const;
314 [[nodiscard]] std::optional<unsigned int>
ElementID(
const Point &position)
const override;
497 std::array<size_t, 2>
509 const std::vector<unsigned int> &
WaferIDsAtPos(std::array<float, 2> position);
514 void UpdateSurface(std::array<float, 2> newOrigin, std::array<float, 2> newSizes);
515 void UpdateInternals(std::vector<Point> waferPositions, std::array<float, 2> waferSizes,
516 std::pair<RefFrame::Direction, RefFrame::Direction> segmDirections);
const AxesArray< int > & NBondedLadders() const
Get the number of ladders that make up a layer.
Definition: ScdGeoParams.h:149
Rectangle surface
Definition: ScdGeoParams.h:503
bool _bbIsValid
Position of all the Si wafers.
Definition: ScdGeoParams.h:475
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.
Definition: ScdGeoParams.cpp:235
virtual float ElementPitch() const
Get element pitch.
Definition: TrackingDetectorGeoParams.h:78
Base data structure for single tracking detector layer geometry parameters.
Definition: TrackingDetectorGeoParams.h:31
@ STRAIGHT
No bonding has been applied.
float FirstStripPosition() const
Get distance of first strip from wafer edge.
Definition: ScdGeoParams.h:122
std::optional< unsigned int > WaferID(const Point &position) const
Utility function to get waferID from a set of coordinates.
Definition: ScdGeoParams.cpp:256
AxesArray< int > _nWafersPerPhysLadder
true if the strips are normal to the ladder
Definition: ScdGeoParams.h:479
A class describing a vector in 3D space.
Definition: Vec3D.h:33
void SetLaddersHelper(const AxesArray< int > &nLadders, const AxesArray< int > &nWafersPerLadder, int type)
Definition: ScdGeoParams.cpp:60
size_t PosToCellID(std::array< float, 2 > position)
Definition: ScdGeoParams.cpp:516
AxesArray< int > _nWafersPerBondedLadder
Dimensions of a Si wafer along the three axes.
Definition: ScdGeoParams.h:472
A rectangle in 3D space.
Definition: Rectangle.h:26
std::array< float, 2 > cellDimension
Total size of the lookup table [primary strip segm dir, secondary strip segm dir].
Definition: ScdGeoParams.h:500
bool m_ladderNormalToStrips
Type of bonding applied to wafer strips of a ladder.
Definition: ScdGeoParams.h:478
void UpdateNCells(std::array< size_t, 2 > newNcells)
Definition: ScdGeoParams.cpp:503
#define DEFAULT_INIT(x)
Definition: DefaultValues.h:23
const AxesArray< int > & NPhysLadders() const
Get the number of physical ladders that make up a layer.
Definition: ScdGeoParams.h:172
std::optional< unsigned int > StripID(const Point &position) const
Utility function to get stripID from a set of coordinates. Calls ElementID.
Definition: ScdGeoParams.h:325
struct Herd::ScdGeoParams::WaferLookupTable m_waferLUT
! ROOT-transient
@ ZIGZAG
Strips are aligned along the ladder and bonded straightly.
const AxesArray< int > & NWafersPerBondedLadder() const
Get the number of wafers that make up a ladder.
Definition: ScdGeoParams.h:136
const AxesArray< int > & NWafersPerPhysLadder() const
Get the number of wafers that make up a physical ladder.
Definition: ScdGeoParams.h:160
void ComputeBoundingBox() const
Number of physical ladders along the three axes.
Definition: ScdGeoParams.cpp:434
Direction
Aliases for the six axis directions.
Definition: RefFrame.h:55
void SetLadderNormalToStrips(bool value=true)
Sets a flag for ladders normal to strips.
Definition: ScdGeoParams.h:466
virtual std::pair< RefFrame::Direction, RefFrame::Direction > SegmentationDirections() const
Return the segmentation directions of the tracking elements.
Definition: TrackingDetectorGeoParams.h:114
std::array< float, 2 > sizes
Number of cells in the lookup table [primary strip segm dir, secondary strip segm dir].
Definition: ScdGeoParams.h:499
std::array< size_t, 2 > ncells
Definition: ScdGeoParams.h:498
int NStripsPerPhysLadder() const
Number of strips for each physical ladder.
Definition: ScdGeoParams.h:109
Side
Aliases for the five sides.
Definition: RefFrame.h:111
BondingType
Enum class for the different bonding types.
Definition: ScdGeoParams.h:338
void SetSideAndStripMainSegmDir(RefFrame::Side dside, RefFrame::Direction segmDir)
Set the detector side and the main segmentation direction for strips. Calls SetSideAndMainSegmDir....
Definition: ScdGeoParams.h:353
float _firstStripPos
Definition: ScdGeoParams.h:466
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:22
BondingType m_ladderBonding
Bounding box for this layer, to use for quick intersection checks.
Definition: ScdGeoParams.h:477
Point LadderPosition(unsigned int ladderID) const
Get position of a given ladder.
Definition: ScdGeoParams.cpp:186
std::vector< Point > _waferPos
Number of bonded ladders along the three axes.
Definition: ScdGeoParams.h:474
void SetStripPitch(float pitch)
Set the strip pitch.
Definition: ScdGeoParams.cpp:28
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.
Definition: ScdGeoParams.cpp:210
const std::vector< unsigned int > & WaferIDsAtPos(std::array< float, 2 > position)
Definition: ScdGeoParams.cpp:569
std::optional< unsigned int > ElementID(const Point &position) const override
Utility function to get volumeID from a set of coordinates. Reimplemented in derived classes.
Definition: ScdGeoParams.cpp:281
Point StripPosition(unsigned int volID) const
Get position of a given strip.
Definition: ScdGeoParams.h:195
Parallelepiped ElementShape(size_t volID) const
Utility function to get the shape in space of a particular strip.
Definition: ScdGeoParams.cpp:472
int NStripsPerWafer() const
Number of strips for each wafer.
Definition: ScdGeoParams.h:89
void SetWaferPosition(size_t waferID, Point position)
Set the wafer position for a given wafer.
Definition: ScdGeoParams.h:449
float StripPitch() const
Get strip pitch.Calls ChannelPitch. Kept for backwards compatibility.
Definition: ScdGeoParams.h:82
bool isValid
Definition: ScdGeoParams.h:496
void SetWaferSize(const AxesArray< float > &sizes)
Set the wafer sizes along the three axes.
Definition: ScdGeoParams.h:436
AxesArray< float > _waferSize
Number of strips in each wafer.
Definition: ScdGeoParams.h:471
const Point & WaferPosition(unsigned int volID) const
Get position of a given wafer in layer.
Definition: ScdGeoParams.h:203
std::pair< RefFrame::Direction, RefFrame::Direction > StripSegmentationDirections() const
Return the segmentation directions of the silicon strips.
Definition: ScdGeoParams.h:223
BondingType LadderBonding() const
Definition: ScdGeoParams.h:344
unsigned int LadderIDFromStripID(unsigned int stripID) const
Retrieves the volume ID of the ladder containing the strip with the given volumeID.
Definition: ScdGeoParams.cpp:191
WaferLookupTable()
map of all the waferIDs covered by each cell.
Definition: ScdGeoParams.h:507
AxesArray< int > _nPhysLadders
Number of wafers in each physical ladder along the three axes.
Definition: ScdGeoParams.h:480
void SetSideAndMainSegmDir(RefFrame::Side dside, RefFrame::Direction segmDir) override
Set the detector side and the main segmentation direction for channels.
Definition: ScdGeoParams.cpp:314
Internal lookup table used to speedup WaferID queries as function of position.
Definition: ScdGeoParams.h:495
void SetBondedLadders(const AxesArray< int > &nLadders, const AxesArray< int > &nWafersPerLadder, BondingType bType)
Set the ladders bonding.
Definition: ScdGeoParams.cpp:105
size_t NWafers() const
Get the total number of wafers in a single la_boundingBoxyer.
Definition: ScdGeoParams.h:68
constexpr Axis ToAxis(Coo coo)
Associates an axis to a coordinate .
Definition: RefFrame.h:189
unsigned int LadderIDFromWaferID(unsigned int waferID) const
Retrieves the volume ID of the ladder containing the wafer with the given volumeID.
Definition: ScdGeoParams.cpp:206
void UpdateInternals(std::vector< Point > waferPositions, std::array< float, 2 > waferSizes, std::pair< RefFrame::Direction, RefFrame::Direction > segmDirections)
Definition: ScdGeoParams.cpp:531
AxesArray< int > _nBondedLadders
Number of wafers in each bonded ladder along the three axes.
Definition: ScdGeoParams.h:473
Point ElementPosition(unsigned int volID) const override
Get position of a given strip.
Definition: ScdGeoParams.cpp:152
unsigned int WaferIDFromStripID(unsigned int stripID) const
Retrieves the ID of the wafer containing the given unbonded strip.
Definition: ScdGeoParams.cpp:218
~ScdGeoParams() override=default
Virtual destructor
int NStripsPerBondedLadder() const
Number of strips for each bonded ladder.
Definition: ScdGeoParams.h:96
std::vector< std::vector< unsigned int > > waferIDs
Definition: ScdGeoParams.h:505
int _nStripsPerWafer
Position of the first strip w.r.t the left border of the wafer [cm];.
Definition: ScdGeoParams.h:470
std::pair< RefFrame::Direction, RefFrame::Direction > LadderSegmentationDirections() const
Return the segmentation directions of the silicon Ladders.
Definition: ScdGeoParams.cpp:144
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.
Definition: ScdGeoParams.h:425
void UpdateSurface(std::array< float, 2 > newOrigin, std::array< float, 2 > newSizes)
Definition: ScdGeoParams.cpp:508
void SetNStripsPerWafer(int nStrips)
Set the number of strips per wafer.
Definition: ScdGeoParams.cpp:44
std::pair< RefFrame::Direction, RefFrame::Direction > WaferSegmentationDirections() const
Return the segmentation directions of the silicon Wafers.
Definition: ScdGeoParams.cpp:139
A parallelepiped in 3D space.
Definition: Parallelepiped.h:25
Data structure for single silicon layer geometry parameters.
Definition: ScdGeoParams.h:35
Parallelepiped _boundingBox
Flag to signal Bounding box must be recomputed.
Definition: ScdGeoParams.h:476
size_t NTotElements() const
Get the total number of strips (sensitive elements) in a single layer.
Definition: ScdGeoParams.cpp:493
void UpdateLUT() const
Definition: ScdGeoParams.cpp:398
unsigned int StripIDOnLadder(unsigned int stripID) const
Returns the strip ID on ladder.
Definition: ScdGeoParams.cpp:252
ScdGeoParams()
Default constructor.
Definition: ScdGeoParams.cpp:12
const Parallelepiped & BoundingBox() const
Get the layer bounding box for quick geometric checks (intersections and such).
Definition: ScdGeoParams.cpp:427
const AxesArray< float > & WaferSize() const
Get the dimensions of the single wafer.
Definition: ScdGeoParams.h:179