File indexing completed on 2025-01-18 09:13:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 #ifndef DDSEGMENTATION_WAFERGRIDXY_H
0020 #define DDSEGMENTATION_WAFERGRIDXY_H
0021
0022 #include <DDSegmentation/CartesianGrid.h>
0023
0024 #define MAX_GROUPS 100
0025 #define MAX_WAFERS 100
0026
0027 namespace dd4hep {
0028 namespace DDSegmentation {
0029
0030
0031 class WaferGridXY: public CartesianGrid {
0032 public:
0033
0034 WaferGridXY(const std::string& cellEncoding = "");
0035
0036 WaferGridXY(const BitFieldCoder* decoder);
0037
0038 virtual ~WaferGridXY();
0039
0040
0041 virtual Vector3D position(const CellID& cellID) const;
0042
0043 virtual CellID cellID(const Vector3D& localPosition, const Vector3D& globalPosition, const VolumeID& volumeID) const;
0044
0045 double gridSizeX() const {
0046 return _gridSizeX;
0047 }
0048
0049 double gridSizeY() const {
0050 return _gridSizeY;
0051 }
0052
0053 double offsetX() const {
0054 return _offsetX;
0055 }
0056
0057 double offsetY() const {
0058 return _offsetY;
0059 }
0060
0061 double waferOffsetX(int inGroup, int inWafer) const {
0062 return _waferOffsetX[inGroup][inWafer];
0063 }
0064
0065 double waferOffsetY(int inGroup, int inWafer) const {
0066 return _waferOffsetY[inGroup][inWafer];
0067 }
0068
0069
0070 const std::string& fieldNameX() const {
0071 return _xId;
0072 }
0073
0074 const std::string& fieldNameY() const {
0075 return _yId;
0076 }
0077
0078 void setGridSizeX(double cellSize) {
0079 _gridSizeX = cellSize;
0080 }
0081
0082 void setGridSizeY(double cellSize) {
0083 _gridSizeY = cellSize;
0084 }
0085
0086 void setOffsetX(double offset) {
0087 _offsetX = offset;
0088 }
0089
0090 void setOffsetY(double offset) {
0091 _offsetY = offset;
0092 }
0093
0094 void setWaferOffsetX(int inGroup,int inWafer, double offset) {
0095 _waferOffsetX[inGroup][inWafer] = offset;
0096 }
0097
0098 void setWaferOffsetY(int inGroup,int inWafer, double offset) {
0099 _waferOffsetY[inGroup][inWafer] = offset;
0100 }
0101
0102
0103 void setFieldNameX(const std::string& fieldName) {
0104 _xId = fieldName;
0105 }
0106
0107 void setFieldNameY(const std::string& fieldName) {
0108 _yId = fieldName;
0109 }
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119 virtual std::vector<double> cellDimensions(const CellID& cellID) const;
0120
0121 protected:
0122
0123 double _gridSizeX;
0124
0125 double _offsetX;
0126
0127 double _gridSizeY;
0128
0129 double _offsetY;
0130
0131 double _waferOffsetX[MAX_GROUPS][MAX_WAFERS];
0132
0133 double _waferOffsetY[MAX_GROUPS][MAX_WAFERS];
0134
0135 std::string _xId;
0136
0137 std::string _yId;
0138
0139 std::string _identifierMGWaferGroup;
0140
0141 std::string _identifierWafer;
0142 };
0143
0144 }
0145 }
0146 #endif