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