Belle II Software development
GeometryData Class Reference

EKLM geometry data. More...

#include <GeometryData.h>

Inheritance diagram for GeometryData:
EKLMGeometry

Public Types

enum  DataSource {
  c_Gearbox ,
  c_Database
}
 Geometry data source. More...
 

Public Member Functions

void saveToDatabase (const IntervalOfValidity &iov) const
 Save geometry data to database.
 
double getStripLength (int strip) const
 Get strip length.
 
double getMaximalStripLength () const
 Get maximal strip length.
 
int getNStripsDifferentLength () const
 Get number of strips with different lengths.
 
int getStripLengthIndex (int positionIndex) const
 Get index in length-based array.
 
int getStripPositionIndex (int lengthIndex) const
 Get index in position-based array.
 
bool hitInEKLM (double z) const
 Check if z coordinate may be in EKLM.
 
void getSectionTransform (HepGeom::Transform3D *t, int n) const
 Get section transformation.
 
void getLayerTransform (HepGeom::Transform3D *t, int n) const
 Get layer transformation.
 
void getSectorTransform (HepGeom::Transform3D *t, int n) const
 Get sector transformation.
 
void getPlaneTransform (HepGeom::Transform3D *t, int n) const
 Get plane transformation.
 
double getEKLMLayerArea () const
 Get EKLM layer area (same for all layers).
 
void getStripTransform (HepGeom::Transform3D *t, int n) const
 Get strip transformation.
 
void getSheetTransform (HepGeom::Transform3D *t, int n) const
 Get plastic sheet element transformation.
 
bool beamBackgroundStudy () const
 Whether to perform beam-background study.
 
int getNSections () const
 Get number of sections.
 
int getNLayers () const
 Get number of layers.
 
int getNDetectorLayers (int section) const
 Get number of detector layers.
 
int getNSectors () const
 Get number of sectors.
 
int getNPlanes () const
 Get number of planes.
 
int getNSegments () const
 Get number of segments.
 
int getNSegmentSupportElementsSector () const
 Get number of segment support elements *in one sector).
 
int getNStrips () const
 Get number of strips.
 
void checkDetectorLayerNumber (int section, int layer) const
 Check if number of detector layers is correct (fatal error if not).
 
void checkDetectorLayer (int section, int layer) const
 Check if detector layer number is correct (fatal error if not).
 
void checkSegmentSupport (int support) const
 Check if segment support number is correct (fatal error if not).
 
void checkStripSegment (int strip) const
 Check if number of strip in a segment is correct (fatal error if not).
 
double getSolenoidZ () const
 Get solenoid center Z coordinate.
 
const EndcapStructureGeometrygetEndcapStructureGeometry () const
 Get endcap structure geometry data.
 
const ElementPositiongetSectionPosition () const
 Get position data for sections.
 
const ElementPositiongetLayerPosition () const
 Get position data for layers.
 
double getLayerShiftZ () const
 Get Z distance between two layers.
 
const ElementPositiongetSectorPosition () const
 Get position data for sectors.
 
const ElementPositiongetSectorSupportPosition () const
 Get position data for sector support structure.
 
const SectorSupportGeometrygetSectorSupportGeometry () const
 Get sector support geometry data.
 
const ElementPositiongetPlanePosition () const
 Get position data for planes.
 
const PlasticSheetGeometrygetPlasticSheetGeometry () const
 Get plastic sheet geometry data.
 
const SegmentSupportGeometrygetSegmentSupportGeometry () const
 Get segment support geometry data.
 
const SegmentSupportPositiongetSegmentSupportPosition (int plane, int support) const
 Get position data for segment support structure.
 
const StripGeometrygetStripGeometry () const
 Get strip geometry data.
 
const ElementPositiongetStripPosition (int strip) const
 Get position data for strips.
 
const ShieldGeometrygetShieldGeometry () const
 Get shield layer details geometry data.
 

Static Public Member Functions

static const GeometryDataInstance (enum DataSource dataSource=c_Database, const GearDir *gearDir=nullptr)
 Instantiation.
 

Protected Member Functions

 ClassDef (Belle2::EKLMGeometry, 6)
 Class version.
 

Protected Attributes

const EKLMElementNumbersm_ElementNumbers
 Element numbers.
 
bool m_BeamBackgroundStudy = false
 ROOT streamer.
 
int m_NSections
 Number of sections.
 
int m_NLayers
 Number of layers in one section.
 
int * m_NDetectorLayers
 Number of detector layers.
 
int m_NSectors
 Number of sectors in one layer.
 
int m_NPlanes
 Number of planes in one sector.
 
int m_NSegments
 Number of segments in one plane.
 
int m_NSegmentSupportElementsSector
 Number of segment support elements in one sector.
 
int m_NStrips
 Number of strips in one plane.
 
double m_SolenoidZ
 Solenoid center Z coordinate.
 
EndcapStructureGeometry m_EndcapStructureGeometry
 Section structure geometry data.
 
ElementPosition m_SectionPosition
 Position data for sections.
 
ElementPosition m_LayerPosition
 Position data for layers.
 
double m_LayerShiftZ
 Z distance between two layers.
 
ElementPosition m_SectorPosition
 Position data for sectors.
 
ElementPosition m_SectorSupportPosition
 Position data for sector support structure.
 
SectorSupportGeometry m_SectorSupportGeometry
 Sector support geometry data.
 
ElementPosition m_PlanePosition
 Position data for planes.
 
PlasticSheetGeometry m_PlasticSheetGeometry
 Plastic sheet geometry data.
 
SegmentSupportGeometry m_SegmentSupportGeometry
 Segment support geometry data.
 
SegmentSupportPositionm_SegmentSupportPosition
 Position data for segment support structure.
 
StripGeometry m_StripGeometry
 Strip geometry data.
 
ElementPositionm_StripPosition
 Position data for strips.
 
ShieldGeometry m_ShieldGeometry
 Shield layer details geometry data.
 

Private Member Functions

 GeometryData (enum DataSource dataSource, const GearDir *gearDir)
 Constructor.
 
 ~GeometryData ()
 Destructor.
 
void readEndcapStructureGeometry (const GearDir &gd)
 Read section structure geometry data.
 
void initializeFromGearbox (const GearDir *gearDir)
 Initialize from Gearbox (XML).
 
void initializeFromDatabase ()
 Initialize from database.
 
void calculateSectorSupportGeometry ()
 Calculate sector support geometry data.
 
void fillStripIndexArrays ()
 Fill strip index arrays.
 
void readXMLDataStrips (const GearDir &gd)
 Read strip parameters from XML database.
 
void calculateShieldGeometry ()
 Calculate shield geometry data.
 

Private Attributes

EKLMGeometrym_Geometry
 Copy of data in this class used to write it to database.
 
int m_nStripDifferent
 Number of strips with different lengths in one plane.
 
int * m_StripAllToLen
 Number of strip in length-based array.
 
int * m_StripLenToAll
 Number of strip in position-based array.
 
double m_MinZForward
 Minimal z coordinate of the forward section.
 
double m_MaxZBackward
 Maximal z coordinate of the backward section.
 

Detailed Description

EKLM geometry data.

All data and function results are in CLHEP units unless noted otherwise.

Definition at line 38 of file GeometryData.h.

Member Enumeration Documentation

◆ DataSource

enum DataSource

Geometry data source.

Enumerator
c_Gearbox 

Gearbox (XML).

c_Database 

Database.

Definition at line 43 of file GeometryData.h.

43 {
44
46 c_Gearbox,
47
49 c_Database,
50
51 };

Constructor & Destructor Documentation

◆ GeometryData()

GeometryData ( enum DataSource dataSource,
const GearDir * gearDir )
explicitprivate

Constructor.

Parameters
[in]dataSourceData source.
[in]gearDirXML data directory.

Definition at line 603 of file GeometryData.cc.

605{
606 m_Geometry = nullptr;
607 switch (dataSource) {
608 case c_Gearbox:
609 initializeFromGearbox(gearDir);
610 break;
611 case c_Database:
612 initializeFromDatabase();
613 break;
614 }
615 m_MinZForward = m_SolenoidZ + m_SectionPosition.getZ() -
616 0.5 * m_SectionPosition.getLength();
617 m_MaxZBackward = m_SolenoidZ - m_SectionPosition.getZ() +
618 0.5 * m_SectionPosition.getLength();
619 calculateSectorSupportGeometry();
620 fillStripIndexArrays();
621 calculateShieldGeometry();
622}

◆ ~GeometryData()

~GeometryData ( )
private

Destructor.

Definition at line 624 of file GeometryData.cc.

625{
626 if (m_Geometry != nullptr)
627 delete m_Geometry;
628 free(m_StripLenToAll);
629 free(m_StripAllToLen);
630}

Member Function Documentation

◆ beamBackgroundStudy()

bool beamBackgroundStudy ( ) const
inlineinherited

Whether to perform beam-background study.

Definition at line 1677 of file EKLMGeometry.h.

1678 {
1679 return m_BeamBackgroundStudy;
1680 }

◆ calculateSectorSupportGeometry()

void calculateSectorSupportGeometry ( )
private

Calculate sector support geometry data.

Definition at line 116 of file GeometryData.cc.

117{
118 HepGeom::Point3D<double> p;
119 Line2D line23Outer(0, m_SectorSupportPosition.getY(), 1, 0);
120 Line2D line23Inner(0, m_SectorSupportPosition.getY() +
121 m_SectorSupportGeometry.getThickness(), 1, 0);
122 Line2D line23Prism(0, m_SectorSupportPosition.getY() +
123 m_SectorSupportGeometry.getThickness() +
124 m_SectorSupportGeometry.getCorner3LY(), 1, 0);
125 Line2D line41Outer(m_SectorSupportPosition.getX(), 0, 0, 1);
126 Line2D line41Inner(m_SectorSupportPosition.getX() +
127 m_SectorSupportGeometry.getThickness(), 0, 0, 1);
128 Line2D line41Prism(m_SectorSupportPosition.getX() +
129 m_SectorSupportGeometry.getThickness() +
130 m_SectorSupportGeometry.getCorner4LX(), 0, 0, 1);
131 Line2D line41Corner1B(m_SectorSupportPosition.getX() +
132 m_SectorSupportGeometry.getCornerX(), 0, 0, 1);
133 Circle2D circleInnerOuter(0, 0, m_SectorSupportPosition.getInnerR());
134 Circle2D circleInnerInner(0, 0, m_SectorSupportPosition.getInnerR() +
135 m_SectorSupportGeometry.getThickness());
136 Circle2D circleOuterInner(0, 0, m_SectorSupportPosition.getOuterR() -
137 m_SectorSupportGeometry.getThickness());
138 Circle2D circleOuterOuter(0, 0, m_SectorSupportPosition.getOuterR());
139 HepGeom::Point3D<double> intersections[2];
140 /* Corner 1. */
141 p.setX(m_SectorSupportPosition.getX());
142 p.setY(m_SectorSupportPosition.getOuterR() -
143 m_SectorSupportGeometry.getDeltaLY());
144 p.setZ(0);
145 m_SectorSupportGeometry.setCorner1A(p);
146 line41Corner1B.findIntersection(circleOuterOuter, intersections);
147 m_SectorSupportGeometry.setCorner1B(intersections[1]);
148 m_SectorSupportGeometry.setCornerAngle(
149 atan2(m_SectorSupportGeometry.getCorner1B().y() -
150 m_SectorSupportGeometry.getCorner1A().y(),
151 m_SectorSupportGeometry.getCorner1B().x() -
152 m_SectorSupportGeometry.getCorner1A().x()) * CLHEP::rad);
153 p.setX(m_SectorSupportPosition.getX() +
154 m_SectorSupportGeometry.getThickness());
155 p.setY(m_SectorSupportGeometry.getCorner1A().y() -
156 m_SectorSupportGeometry.getThickness() *
157 (1.0 / cos(m_SectorSupportGeometry.getCornerAngle()) -
158 tan(m_SectorSupportGeometry.getCornerAngle())));
159 p.setZ(0);
160 m_SectorSupportGeometry.setCorner1AInner(p);
161 Line2D lineCorner1(m_SectorSupportGeometry.getCorner1AInner().x(),
162 m_SectorSupportGeometry.getCorner1AInner().y(),
163 m_SectorSupportGeometry.getCorner1B().x() -
164 m_SectorSupportGeometry.getCorner1A().x(),
165 m_SectorSupportGeometry.getCorner1B().y() -
166 m_SectorSupportGeometry.getCorner1A().y());
167 lineCorner1.findIntersection(circleOuterInner, intersections);
168 m_SectorSupportGeometry.setCorner1BInner(intersections[1]);
169 /* Corner 2. */
170 line23Inner.findIntersection(circleOuterInner, intersections);
171 m_SectorSupportGeometry.setCorner2Inner(intersections[1]);
172 /* Corner 3. */
173 line23Outer.findIntersection(circleInnerOuter, intersections);
174 m_SectorSupportGeometry.setCorner3(intersections[1]);
175 line23Inner.findIntersection(circleInnerInner, intersections);
176 m_SectorSupportGeometry.setCorner3Inner(intersections[1]);
177 line23Prism.findIntersection(circleInnerInner, intersections);
178 p.setX(intersections[1].x());
179 p.setY(m_SectorSupportPosition.getY() +
180 m_SectorSupportGeometry.getThickness());
181 p.setZ(0);
182 m_SectorSupportGeometry.setCorner3Prism(p);
183 /* Corner 4. */
184 line41Outer.findIntersection(circleInnerOuter, intersections);
185 m_SectorSupportGeometry.setCorner4(intersections[1]);
186 line41Inner.findIntersection(circleInnerInner, intersections);
187 m_SectorSupportGeometry.setCorner4Inner(intersections[1]);
188 line41Prism.findIntersection(circleInnerInner, intersections);
189 p.setX(m_SectorSupportPosition.getX() +
190 m_SectorSupportGeometry.getThickness());
191 p.setY(intersections[1].y());
192 p.setZ(0);
193 m_SectorSupportGeometry.setCorner4Prism(p);
194}
double tan(double a)
tan for double
Definition beamHelpers.h:31

◆ calculateShieldGeometry()

void calculateShieldGeometry ( )
private

Calculate shield geometry data.

Definition at line 383 of file GeometryData.cc.

384{
385 int i;
386 double r, l, dx, dy, xCenter, yCenter;
387 const double asqrt2 = 1.0 / sqrt(2.0);
388 HepGeom::Point3D<double> points[8];
389 const ShieldDetailGeometry* detailA = m_ShieldGeometry.getDetailA();
390 const ShieldDetailGeometry* detailB = m_ShieldGeometry.getDetailB();
391 const ShieldDetailGeometry* detailC = m_ShieldGeometry.getDetailC();
392 const ShieldDetailGeometry* detailD = m_ShieldGeometry.getDetailD();
393 r = m_SectorSupportPosition.getInnerR() +
394 m_SectorSupportGeometry.getThickness();
395 /* Detail A. */
396 EKLMPointToCLHEP(detailA->getPoint(0), points[0]);
397 EKLMPointToCLHEP(detailA->getPoint(1), points[1]);
398 EKLMPointToCLHEP(detailA->getPoint(2), points[2]);
399 EKLMPointToCLHEP(detailA->getPoint(3), points[3]);
400 EKLMPointToCLHEP(detailA->getPoint(4), points[4]);
401 points[5].setX(detailA->getLengthX());
402 points[5].setY(detailA->getLengthY());
403 points[5].setZ(0);
404 EKLMPointToCLHEP(detailA->getPoint(5), points[6]);
405 EKLMPointToCLHEP(detailA->getPoint(6), points[7]);
406 l = 0.5 * (detailA->getLengthX() + detailB->getLengthX());
407 xCenter = -asqrt2 * l;
408 yCenter = asqrt2 * l;
409 for (i = 0; i < 8; i++)
410 points[i] = HepGeom::Translate3D(xCenter, yCenter, 0) *
411 HepGeom::RotateZ3D(-45.0 * CLHEP::deg) *
412 HepGeom::Translate3D(-detailA->getLengthX() / 2,
413 -detailA->getLengthY() / 2, 0) *
414 points[i];
415 getDetailDxDy(points, 8, r, 1, 1, dx, dy);
416 m_ShieldGeometry.setDetailACenter(xCenter + dx, yCenter + dy);
417 /* Details B, D, E. */
418 points[0].setX(0);
419 points[0].setY(-detailD->getLengthY());
420 points[0].setZ(0);
421 points[1].setX(detailD->getLengthX());
422 points[1].setY(0);
423 points[1].setZ(0);
424 points[2].setX(detailB->getLengthX() - detailD->getLengthX());
425 points[2].setY(0);
426 points[2].setZ(0);
427 points[3].setX(detailB->getLengthX());
428 points[3].setY(-detailD->getLengthY());
429 points[3].setZ(0);
430 EKLMPointToCLHEP(detailB->getPoint(0), points[4]);
431 EKLMPointToCLHEP(detailB->getPoint(1), points[5]);
432 EKLMPointToCLHEP(detailB->getPoint(2), points[6]);
433 EKLMPointToCLHEP(detailB->getPoint(3), points[7]);
434 /* Detail B center coordinates before its shift are (0, 0). */
435 for (i = 0; i < 8; i++)
436 points[i] = HepGeom::RotateZ3D(-45.0 * CLHEP::deg) *
437 HepGeom::Translate3D(-detailB->getLengthX() / 2,
438 -detailB->getLengthY() / 2, 0) *
439 points[i];
440 getDetailDxDy(points, 8, r, 1, 1, dx, dy);
441 m_ShieldGeometry.setDetailBCenter(dx, dy);
442 /* Detail C. */
443 EKLMPointToCLHEP(detailC->getPoint(0), points[0]);
444 EKLMPointToCLHEP(detailC->getPoint(1), points[1]);
445 EKLMPointToCLHEP(detailC->getPoint(2), points[2]);
446 EKLMPointToCLHEP(detailC->getPoint(3), points[3]);
447 EKLMPointToCLHEP(detailC->getPoint(4), points[4]);
448 points[5].setX(detailC->getLengthX());
449 points[5].setY(detailC->getLengthY());
450 points[5].setZ(0);
451 EKLMPointToCLHEP(detailC->getPoint(5), points[6]);
452 EKLMPointToCLHEP(detailC->getPoint(6), points[7]);
453 l = 0.5 * (detailB->getLengthX() + detailC->getLengthX());
454 xCenter = asqrt2 * l;
455 yCenter = -asqrt2 * l;
456 for (i = 0; i < 8; i++)
457 points[i] = HepGeom::Translate3D(xCenter, yCenter, 0) *
458 HepGeom::RotateZ3D(-45.0 * CLHEP::deg) *
459 HepGeom::RotateY3D(180.0 * CLHEP::deg) *
460 HepGeom::Translate3D(-detailC->getLengthX() / 2,
461 -detailC->getLengthY() / 2, 0) *
462 points[i];
463 getDetailDxDy(points, 8, r, 1, 1, dx, dy);
464 m_ShieldGeometry.setDetailCCenter(xCenter + dx, yCenter + dy);
465}
double sqrt(double a)
sqrt for double
Definition beamHelpers.h:28

◆ checkDetectorLayer()

void checkDetectorLayer ( int section,
int layer ) const
inherited

Check if detector layer number is correct (fatal error if not).

Section number must be checked separately.

Parameters
[in]sectionSection number.
[in]layerLayer number.

Definition at line 312 of file EKLMGeometry.cc.

313{
314 /* cppcheck-suppress variableScope */
315 const char* sectionName[2] = {"backward", "forward"};
316 if (layer < 0 || layer > m_NDetectorLayers[section - 1])
317 B2FATAL("Number of layer must be less from 1 to the number of "
318 "detector layers in the " << sectionName[section - 1] << " section ("
319 << m_NDetectorLayers[section - 1] << ").");
320}
int * m_NDetectorLayers
Number of detector layers.

◆ checkDetectorLayerNumber()

void checkDetectorLayerNumber ( int section,
int layer ) const
inherited

Check if number of detector layers is correct (fatal error if not).

Section number must be checked separately.

Parameters
[in]sectionSection number.
[in]layerLayer number.

Definition at line 301 of file EKLMGeometry.cc.

302{
303 /* cppcheck-suppress variableScope */
304 const char* sectionName[2] = {"backward", "forward"};
305 if (layer < 0 || layer > m_NLayers ||
306 layer > m_ElementNumbers->getMaximalDetectorLayerNumber(section))
307 B2FATAL("Number of detector layers in the " << sectionName[section - 1] <<
308 " section must be from 0 to the number of layers ( " <<
309 m_NLayers << ").");
310}
int m_NLayers
Number of layers in one section.
const EKLMElementNumbers * m_ElementNumbers
Element numbers.

◆ checkSegmentSupport()

void checkSegmentSupport ( int support) const
inherited

Check if segment support number is correct (fatal error if not).

Parameters
[in]supportSegment support element number.

Definition at line 322 of file EKLMGeometry.cc.

323{
324 if (support <= 0 || support > m_ElementNumbers->getMaximalSegmentNumber() + 1)
325 B2FATAL("Number of segment support element must be from 1 to " <<
326 m_ElementNumbers->getMaximalSegmentNumber() + 1 << ".");
327}

◆ checkStripSegment()

void checkStripSegment ( int strip) const
inherited

Check if number of strip in a segment is correct (fatal error if not).

Parameters
[in]stripStrip number.

Definition at line 329 of file EKLMGeometry.cc.

330{
331 if (strip <= 0 || strip > m_ElementNumbers->getNStripsSegment())
332 B2FATAL("Number of strip in a segment must be from 1 to " <<
333 m_ElementNumbers->getNStripsSegment() << ".");
334}

◆ fillStripIndexArrays()

void fillStripIndexArrays ( )
private

Fill strip index arrays.

Definition at line 201 of file GeometryData.cc.

202{
203 const char err[] = "Strip sorting algorithm error.";
204 int i;
205 double l;
206 std::vector<double> strips;
207 std::vector<double>::iterator it;
208 std::map<double, int> mapLengthStrip;
209 std::map<double, int> mapLengthStrip2;
210 std::map<double, int>::iterator itm;
211 for (i = 0; i < m_NStrips; i++) {
212 strips.push_back(m_StripPosition[i].getLength());
213 mapLengthStrip.insert(
214 std::pair<double, int>(m_StripPosition[i].getLength(), i));
215 }
216 sort(strips.begin(), strips.end(), compareLength);
217 l = strips[0];
218 m_nStripDifferent = 1;
219 for (it = strips.begin(); it != strips.end(); ++it) {
220 if ((*it) != l) {
221 l = (*it);
222 m_nStripDifferent++;
223 }
224 }
225 m_StripLenToAll = static_cast<int*>(malloc(m_nStripDifferent * sizeof(int)));
226 if (m_StripLenToAll == nullptr)
227 B2FATAL(c_MemErr);
228 i = 0;
229 l = strips[0];
230 itm = mapLengthStrip.find(l);
231 if (itm == mapLengthStrip.end())
232 B2FATAL(err);
233 m_StripLenToAll[i] = itm->second;
234 mapLengthStrip2.insert(std::pair<double, int>(l, i));
235 for (it = strips.begin(); it != strips.end(); ++it) {
236 if ((*it) != l) {
237 l = (*it);
238 i++;
239 itm = mapLengthStrip.find(l);
240 if (itm == mapLengthStrip.end())
241 B2FATAL(err);
242 m_StripLenToAll[i] = itm->second;
243 mapLengthStrip2.insert(std::pair<double, int>(l, i));
244 }
245 }
246 m_StripAllToLen = static_cast<int*>(malloc(m_NStrips * sizeof(int)));
247 if (m_StripAllToLen == nullptr)
248 B2FATAL(c_MemErr);
249 for (i = 0; i < m_NStrips; i++) {
250 itm = mapLengthStrip2.find(m_StripPosition[i].getLength());
251 if (itm == mapLengthStrip2.end())
252 B2FATAL(err);
253 m_StripAllToLen[i] = itm->second;
254 }
255}

◆ getEKLMLayerArea()

double getEKLMLayerArea ( ) const

Get EKLM layer area (same for all layers).

Returns
Area in cm^2

Definition at line 721 of file GeometryData.cc.

722{
723 // EKLM: all layers have the same area per sector
724 // Read strip parameters from EKLMGeometry (inherited)
725 const EKLMGeometry::StripGeometry* stripGeom = getStripGeometry();
726 double stripWidth = stripGeom->getWidth() / 10.0; // Convert mm to cm
727 int nStrips = getNStrips();
728
729 // Calculate total area per sector by summing strip areas
730 double layerArea = 0.0;
731 for (int stripId = 1; stripId <= nStrips; ++stripId) {
732 double stripLength = getStripLength(stripId) / 10.0; // Convert mm to cm
733 layerArea += stripLength * stripWidth;
734 }
735
736 return layerArea;
737}
double getWidth() const
Get width.

◆ getEndcapStructureGeometry()

const EndcapStructureGeometry * getEndcapStructureGeometry ( ) const
inlineinherited

Get endcap structure geometry data.

Definition at line 1783 of file EKLMGeometry.h.

1784 {
1785 return &m_EndcapStructureGeometry;
1786 }

◆ getLayerPosition()

const ElementPosition * getLayerPosition ( ) const
inlineinherited

Get position data for layers.

Definition at line 1799 of file EKLMGeometry.h.

1800 {
1801 return &m_LayerPosition;
1802 }

◆ getLayerShiftZ()

double getLayerShiftZ ( ) const
inlineinherited

Get Z distance between two layers.

Definition at line 1807 of file EKLMGeometry.h.

1808 {
1809 return m_LayerShiftZ;
1810 }

◆ getLayerTransform()

void getLayerTransform ( HepGeom::Transform3D * t,
int n ) const

Get layer transformation.

Parameters
[out]tTransformation.
[in]nNumber of layer.

Numbers start from 0.

Definition at line 660 of file GeometryData.cc.

661{
662 *t = HepGeom::Translate3D(0.0, 0.0, m_SectionPosition.getLength() / 2.0 -
663 (n + 1) * m_LayerShiftZ +
664 0.5 * m_LayerPosition.getLength());
665}

◆ getMaximalStripLength()

double getMaximalStripLength ( ) const
inline

Get maximal strip length.

Definition at line 79 of file GeometryData.h.

80 {
81 return m_StripPosition[m_StripLenToAll[
82 m_nStripDifferent - 1]].getLength();
83 }

◆ getNDetectorLayers()

int getNDetectorLayers ( int section) const
inherited

Get number of detector layers.

Parameters
[in]sectionSection number (1 - backward, 2 - forward).

Definition at line 293 of file EKLMGeometry.cc.

294{
295 m_ElementNumbers->checkSection(section);
296 return m_NDetectorLayers[section - 1];
297}

◆ getNLayers()

int getNLayers ( ) const
inlineinherited

Get number of layers.

Definition at line 1693 of file EKLMGeometry.h.

1694 {
1695 return m_NLayers;
1696 }

◆ getNPlanes()

int getNPlanes ( ) const
inlineinherited

Get number of planes.

Definition at line 1715 of file EKLMGeometry.h.

1716 {
1717 return m_NPlanes;
1718 }

◆ getNSections()

int getNSections ( ) const
inlineinherited

Get number of sections.

Definition at line 1685 of file EKLMGeometry.h.

1686 {
1687 return m_NSections;
1688 }

◆ getNSectors()

int getNSectors ( ) const
inlineinherited

Get number of sectors.

Definition at line 1707 of file EKLMGeometry.h.

1708 {
1709 return m_NSectors;
1710 }

◆ getNSegments()

int getNSegments ( ) const
inlineinherited

Get number of segments.

Definition at line 1723 of file EKLMGeometry.h.

1724 {
1725 return m_NSegments;
1726 }

◆ getNSegmentSupportElementsSector()

int getNSegmentSupportElementsSector ( ) const
inlineinherited

Get number of segment support elements *in one sector).

Definition at line 1731 of file EKLMGeometry.h.

1732 {
1733 return m_NSegmentSupportElementsSector;
1734 }

◆ getNStrips()

int getNStrips ( ) const
inlineinherited

Get number of strips.

Definition at line 1739 of file EKLMGeometry.h.

1740 {
1741 return m_NStrips;
1742 }

◆ getNStripsDifferentLength()

int getNStripsDifferentLength ( ) const
inline

Get number of strips with different lengths.

Definition at line 88 of file GeometryData.h.

89 {
90 return m_nStripDifferent;
91 }

◆ getPlanePosition()

const ElementPosition * getPlanePosition ( ) const
inlineinherited

Get position data for planes.

Definition at line 1839 of file EKLMGeometry.h.

1840 {
1841 return &m_PlanePosition;
1842 }

◆ getPlaneTransform()

void getPlaneTransform ( HepGeom::Transform3D * t,
int n ) const

Get plane transformation.

Parameters
[out]tTransformation.
[in]nNumber of plane.

Numbers start from 0.

Definition at line 688 of file GeometryData.cc.

689{
690 if (n == 0)
691 *t = HepGeom::Translate3D(m_PlanePosition.getX(), m_PlanePosition.getY(),
692 m_PlanePosition.getZ()) *
693 HepGeom::Rotate3D(180. * CLHEP::deg,
694 HepGeom::Vector3D<double>(1., 1., 0.));
695 else
696 *t = HepGeom::Translate3D(m_PlanePosition.getX(), m_PlanePosition.getY(),
697 -m_PlanePosition.getZ());
698}

◆ getPlasticSheetGeometry()

const PlasticSheetGeometry * getPlasticSheetGeometry ( ) const
inlineinherited

Get plastic sheet geometry data.

Definition at line 1847 of file EKLMGeometry.h.

1848 {
1849 return &m_PlasticSheetGeometry;
1850 }

◆ getSectionPosition()

const ElementPosition * getSectionPosition ( ) const
inlineinherited

Get position data for sections.

Definition at line 1791 of file EKLMGeometry.h.

1792 {
1793 return &m_SectionPosition;
1794 }

◆ getSectionTransform()

void getSectionTransform ( HepGeom::Transform3D * t,
int n ) const

Get section transformation.

Parameters
[out]tTransformation.
[in]nNumber of section.

Numbers start from 0.

Definition at line 648 of file GeometryData.cc.

649{
650 if (n == 0)
651 *t = HepGeom::Translate3D(m_SectionPosition.getX(), m_SectionPosition.getY(),
652 -m_SectionPosition.getZ() + m_SolenoidZ);
653 else
654 *t = HepGeom::Translate3D(m_SectionPosition.getX(), m_SectionPosition.getY(),
655 m_SectionPosition.getZ() + m_SolenoidZ) *
656 HepGeom::RotateY3D(180.*CLHEP::deg);
657}

◆ getSectorPosition()

const ElementPosition * getSectorPosition ( ) const
inlineinherited

Get position data for sectors.

Definition at line 1815 of file EKLMGeometry.h.

1816 {
1817 return &m_SectorPosition;
1818 }

◆ getSectorSupportGeometry()

const SectorSupportGeometry * getSectorSupportGeometry ( ) const
inlineinherited

Get sector support geometry data.

Definition at line 1831 of file EKLMGeometry.h.

1832 {
1833 return &m_SectorSupportGeometry;
1834 }

◆ getSectorSupportPosition()

const ElementPosition * getSectorSupportPosition ( ) const
inlineinherited

Get position data for sector support structure.

Definition at line 1823 of file EKLMGeometry.h.

1824 {
1825 return &m_SectorSupportPosition;
1826 }

◆ getSectorTransform()

void getSectorTransform ( HepGeom::Transform3D * t,
int n ) const

Get sector transformation.

Parameters
[out]tTransformation.
[in]nNumber of sector.

Numbers start from 0.

Definition at line 668 of file GeometryData.cc.

669{
670 switch (n) {
671 case 0:
672 *t = HepGeom::Translate3D(0., 0., 0.);
673 break;
674 case 1:
675 *t = HepGeom::RotateY3D(180.0 * CLHEP::deg);
676 break;
677 case 2:
678 *t = HepGeom::RotateZ3D(90.0 * CLHEP::deg) *
679 HepGeom::RotateY3D(180.0 * CLHEP::deg);
680 break;
681 case 3:
682 *t = HepGeom::RotateZ3D(-90.0 * CLHEP::deg);
683 break;
684 }
685}

◆ getSegmentSupportGeometry()

const SegmentSupportGeometry * getSegmentSupportGeometry ( ) const
inlineinherited

Get segment support geometry data.

Definition at line 1855 of file EKLMGeometry.h.

1856 {
1857 return &m_SegmentSupportGeometry;
1858 }

◆ getSegmentSupportPosition()

const EKLMGeometry::SegmentSupportPosition * getSegmentSupportPosition ( int plane,
int support ) const
inherited

Get position data for segment support structure.

Parameters
[in]planePlane number.
[in]supportSegment support element number.

Definition at line 339 of file EKLMGeometry.cc.

340{
341 m_ElementNumbers->checkPlane(plane);
342 checkSegmentSupport(support);
343 return &m_SegmentSupportPosition[(plane - 1) * (m_NSegments + 1) +
344 support - 1];
345}
int m_NSegments
Number of segments in one plane.
void checkSegmentSupport(int support) const
Check if segment support number is correct (fatal error if not).
SegmentSupportPosition * m_SegmentSupportPosition
Position data for segment support structure.

◆ getSheetTransform()

void getSheetTransform ( HepGeom::Transform3D * t,
int n ) const

Get plastic sheet element transformation.

Parameters
[out]tTransformation.
[in]nNumber of list.

Numbers start from 0. This function is intended for construction of the list solids, so the transformation does not include z shift.

Definition at line 708 of file GeometryData.cc.

709{
710 double y;
711 y = m_StripPosition[n].getY();
712 if (n % m_ElementNumbers->getNStripsSegment() == 0)
713 y = y + 0.5 * m_PlasticSheetGeometry.getDeltaL();
714 else if (n % m_ElementNumbers->getNStripsSegment() ==
715 m_ElementNumbers->getNStripsSegment() - 1)
716 y = y - 0.5 * m_PlasticSheetGeometry.getDeltaL();
717 *t = HepGeom::Translate3D(m_StripPosition[n].getX(), y, 0.0);
718}

◆ getShieldGeometry()

const ShieldGeometry * getShieldGeometry ( ) const
inlineinherited

Get shield layer details geometry data.

Definition at line 1885 of file EKLMGeometry.h.

1886 {
1887 return &m_ShieldGeometry;
1888 }

◆ getSolenoidZ()

double getSolenoidZ ( ) const
inlineinherited

Get solenoid center Z coordinate.

Definition at line 1775 of file EKLMGeometry.h.

1776 {
1777 return m_SolenoidZ;
1778 }

◆ getStripGeometry()

const StripGeometry * getStripGeometry ( ) const
inlineinherited

Get strip geometry data.

Definition at line 1871 of file EKLMGeometry.h.

1872 {
1873 return &m_StripGeometry;
1874 }

◆ getStripLength()

double getStripLength ( int strip) const
inline

Get strip length.

Parameters
[in]stripStrip number.

Definition at line 71 of file GeometryData.h.

72 {
73 return m_StripPosition[strip - 1].getLength();
74 }

◆ getStripLengthIndex()

int getStripLengthIndex ( int positionIndex) const
inline

Get index in length-based array.

Parameters
[in]positionIndexindex in position-based array.

Definition at line 97 of file GeometryData.h.

98 {
99 return m_StripAllToLen[positionIndex];
100 }

◆ getStripPosition()

const EKLMGeometry::ElementPosition * getStripPosition ( int strip) const
inherited

Get position data for strips.

Parameters
[in]stripStrip number.

Definition at line 348 of file EKLMGeometry.cc.

349{
350 m_ElementNumbers->checkStrip(strip);
351 return &m_StripPosition[strip - 1];
352}
ElementPosition * m_StripPosition
Position data for strips.

◆ getStripPositionIndex()

int getStripPositionIndex ( int lengthIndex) const
inline

Get index in position-based array.

Parameters
[in]lengthIndexindex in length-based array.

Definition at line 106 of file GeometryData.h.

107 {
108 return m_StripLenToAll[lengthIndex];
109 }

◆ getStripTransform()

void getStripTransform ( HepGeom::Transform3D * t,
int n ) const

Get strip transformation.

Parameters
[out]tTransformation.
[in]nNumber of strip.

Numbers start from 0.

Definition at line 701 of file GeometryData.cc.

702{
703 *t = HepGeom::Translate3D(m_StripPosition[n].getX(),
704 m_StripPosition[n].getY(), 0.0);
705}

◆ hitInEKLM()

bool hitInEKLM ( double z) const

Check if z coordinate may be in EKLM.

Parameters
[in]zZ coordinate (cm).

Warning: this is not a complete check!

Definition at line 637 of file GeometryData.cc.

638{
639 double zMm;
640 zMm = z / Unit::cm * CLHEP::cm;
641 return (zMm > m_MinZForward) || (zMm < m_MaxZBackward);
642}
static const double cm
Standard units with the value = 1.
Definition Unit.h:47

◆ initializeFromDatabase()

void initializeFromDatabase ( )
private

Initialize from database.

Definition at line 594 of file GeometryData.cc.

595{
596 DBObjPtr<EKLMGeometry> eklmGeometry;
597 if (!eklmGeometry.isValid())
598 B2FATAL("No EKLM geometry data in the database.");
599 EKLMGeometry::operator=(*eklmGeometry);
600 m_Geometry = new EKLMGeometry(*this);
601}
bool isValid() const
Check whether a valid object was obtained from the database.
EKLMGeometry & operator=(const EKLMGeometry &geometry)
Operator =.

◆ initializeFromGearbox()

void initializeFromGearbox ( const GearDir * gearDir)
private

Initialize from Gearbox (XML).

Parameters
[in]gearDirXML data directory.

Definition at line 475 of file GeometryData.cc.

476{
477 int i, j, k;
478 std::string name;
479 ShieldDetailGeometry shieldDetailGeometry;
480 GearDir gd(*gearDir);
481 gd.append("/EKLM");
482 /* Beam-background study. */
483 m_BeamBackgroundStudy = gd.getBool("BeamBackgroundStudy");
484 /* Numbers of elements. */
485 m_NSections = gd.getInt("NSections");
486 m_ElementNumbers->checkSection(m_NSections);
487 m_NLayers = gd.getInt("NLayers");
488 m_ElementNumbers->checkLayer(m_NLayers);
489 m_NDetectorLayers = new int[m_NSections];
490 m_NDetectorLayers[0] = gd.getInt("NDetectorLayersBackward");
491 checkDetectorLayerNumber(1, m_NDetectorLayers[0]);
492 if (m_NSections == 2) {
493 m_NDetectorLayers[1] = gd.getInt("NDetectorLayersForward");
494 checkDetectorLayerNumber(2, m_NDetectorLayers[1]);
495 }
496 m_NSectors = gd.getInt("NSectors");
497 m_ElementNumbers->checkSector(m_NSectors);
498 m_NPlanes = gd.getInt("NPlanes");
499 m_ElementNumbers->checkPlane(m_NPlanes);
500 m_NSegments = gd.getInt("NSegments");
501 m_ElementNumbers->checkSegment(m_NSegments);
502 m_NSegmentSupportElementsSector = (m_NSegments + 1) * m_NPlanes;
503 m_NStrips = gd.getInt("NStrips");
504 m_ElementNumbers->checkStrip(m_NStrips);
505 /* Geometry parameters. */
506 m_SolenoidZ = gd.getLength("SolenoidZ") * CLHEP::cm;
507 readEndcapStructureGeometry(gd);
508 GearDir section(gd);
509 section.append("/Section");
510 readPositionData(&m_SectionPosition, &section);
511 readSizeData(&m_SectionPosition, &section);
512 GearDir layer(gd);
513 layer.append("/Layer");
514 readSizeData(&m_LayerPosition, &layer);
515 m_LayerShiftZ = layer.getLength("ShiftZ") * CLHEP::cm;
516 GearDir sector(gd);
517 sector.append("/Sector");
518 readSizeData(&m_SectorPosition, &sector);
519 GearDir sectorSupport(gd);
520 sectorSupport.append("/SectorSupport");
521 readPositionData(&m_SectorSupportPosition, &sectorSupport);
522 readSizeData(&m_SectorSupportPosition, &sectorSupport);
523 readSectorSupportGeometry(&m_SectorSupportGeometry, &sectorSupport);
524 GearDir plane(gd);
525 plane.append("/Plane");
526 readPositionData(&m_PlanePosition, &plane);
527 readSizeData(&m_PlanePosition, &plane);
528 GearDir plasticSheet(gd);
529 plasticSheet.append("/PlasticSheet");
530 m_PlasticSheetGeometry.setWidth(plasticSheet.getLength("Width") * CLHEP::cm);
531 m_PlasticSheetGeometry.setDeltaL(plasticSheet.getLength("DeltaL") *
532 CLHEP::cm);
533 GearDir segmentSupport(gd);
534 segmentSupport.append("/SegmentSupport");
535 m_SegmentSupportGeometry.setTopWidth(
536 segmentSupport.getLength("TopWidth") * CLHEP::cm);
537 m_SegmentSupportGeometry.setTopThickness(
538 segmentSupport.getLength("TopThickness") * CLHEP::cm);
539 m_SegmentSupportGeometry.setMiddleWidth(
540 segmentSupport.getLength("MiddleWidth") * CLHEP::cm);
541 m_SegmentSupportGeometry.setMiddleThickness(
542 segmentSupport.getLength("MiddleThickness") * CLHEP::cm);
543 try {
544 m_SegmentSupportPosition =
545 new EKLMGeometry::SegmentSupportPosition[m_NSegmentSupportElementsSector];
546 } catch (std::bad_alloc& ba) {
547 B2FATAL(c_MemErr);
548 }
549 for (j = 0; j < m_NPlanes; j++) {
550 for (i = 0; i <= m_NSegments; i++) {
551 k = j * (m_NSegments + 1) + i;
552 GearDir segmentSupport2(segmentSupport);
553 name = "/SegmentSupportPlane[" + std::to_string(j + 1) + "]";
554 segmentSupport2.append(name);
555 name = "/SegmentSupport[" + std::to_string(i + 1) + "]";
556 segmentSupport2.append(name);
557 m_SegmentSupportPosition[k].setLength(
558 segmentSupport2.getLength("Length") * CLHEP::cm);
559 m_SegmentSupportPosition[k].setX(
560 segmentSupport2.getLength("X") * CLHEP::cm);
561 m_SegmentSupportPosition[k].setY(
562 segmentSupport2.getLength("Y") * CLHEP::cm);
563 m_SegmentSupportPosition[k].setZ(
564 segmentSupport2.getLength("Z") * CLHEP::cm);
565 m_SegmentSupportPosition[k].setDeltaLRight(
566 segmentSupport2.getLength("DeltaLRight") * CLHEP::cm);
567 m_SegmentSupportPosition[k].setDeltaLLeft(
568 segmentSupport2.getLength("DeltaLLeft") * CLHEP::cm);
569 }
570 }
571 readXMLDataStrips(gd);
572 GearDir shield(gd);
573 shield.append("/Shield");
574 m_ShieldGeometry.setThickness(shield.getLength("Thickness") * CLHEP::cm);
575 GearDir shieldDetailA(shield);
576 shieldDetailA.append("/Detail[@id=\"A\"]");
577 readShieldDetailGeometry(&shieldDetailGeometry, &shieldDetailA);
578 m_ShieldGeometry.setDetailA(shieldDetailGeometry);
579 GearDir shieldDetailB(shield);
580 shieldDetailB.append("/Detail[@id=\"B\"]");
581 readShieldDetailGeometry(&shieldDetailGeometry, &shieldDetailB);
582 m_ShieldGeometry.setDetailB(shieldDetailGeometry);
583 GearDir shieldDetailC(shield);
584 shieldDetailC.append("/Detail[@id=\"C\"]");
585 readShieldDetailGeometry(&shieldDetailGeometry, &shieldDetailC);
586 m_ShieldGeometry.setDetailC(shieldDetailGeometry);
587 GearDir shieldDetailD(shield);
588 shieldDetailD.append("/Detail[@id=\"D\"]");
589 readShieldDetailGeometry(&shieldDetailGeometry, &shieldDetailD);
590 m_ShieldGeometry.setDetailD(shieldDetailGeometry);
591 m_Geometry = new EKLMGeometry(*this);
592}

◆ Instance()

const EKLM::GeometryData & Instance ( enum DataSource dataSource = c_Database,
const GearDir * gearDir = nullptr )
static

Instantiation.

Parameters
[in]dataSourceData source.
[in]gearDirXML data directory.

Definition at line 33 of file GeometryData.cc.

34{
35 static EKLM::GeometryData gd(dataSource, gearDir);
36 return gd;
37}

◆ readEndcapStructureGeometry()

void readEndcapStructureGeometry ( const GearDir & gd)
private

Read section structure geometry data.

Parameters
[in]gdCurrent GearDir.

Definition at line 467 of file GeometryData.cc.

468{
469 GearDir d(gd);
470 d.append("/EndcapStructure");
471 m_EndcapStructureGeometry.setPhi(d.getAngle("Phi") * CLHEP::rad);
472 m_EndcapStructureGeometry.setNSides(d.getInt("NSides"));
473}

◆ readXMLDataStrips()

void readXMLDataStrips ( const GearDir & gd)
private

Read strip parameters from XML database.

Definition at line 257 of file GeometryData.cc.

258{
259 int i;
260 GearDir Strips(gd);
261 Strips.append("/Strip");
262 m_StripGeometry.setWidth(Strips.getLength("Width") * CLHEP::cm);
263 m_StripGeometry.setThickness(Strips.getLength("Thickness") * CLHEP::cm);
264 m_StripGeometry.setGrooveDepth(Strips.getLength("GrooveDepth") * CLHEP::cm);
265 m_StripGeometry.setGrooveWidth(Strips.getLength("GrooveWidth") * CLHEP::cm);
266 m_StripGeometry.setNoScintillationThickness(
267 Strips.getLength("NoScintillationThickness") * CLHEP::cm);
268 m_StripGeometry.setRSSSize(Strips.getLength("RSSSize") * CLHEP::cm);
269 try {
270 m_StripPosition = new EKLMGeometry::ElementPosition[m_NStrips];
271 } catch (std::bad_alloc& ba) {
272 B2FATAL(c_MemErr);
273 }
274 for (i = 0; i < m_NStrips; i++) {
275 GearDir StripContent(Strips);
276 std::string name = "/Strip[" + std::to_string(i + 1) + "]";
277 StripContent.append(name);
278 m_StripPosition[i].setLength(StripContent.getLength("Length") * CLHEP::cm);
279 m_StripPosition[i].setX(StripContent.getLength("X") * CLHEP::cm);
280 m_StripPosition[i].setY(StripContent.getLength("Y") * CLHEP::cm);
281 m_StripPosition[i].setZ(StripContent.getLength("Z") * CLHEP::cm);
282 }
283}

◆ saveToDatabase()

void saveToDatabase ( const IntervalOfValidity & iov) const

Save geometry data to database.

Definition at line 632 of file GeometryData.cc.

633{
634 Database::Instance().storeData("EKLMGeometry", m_Geometry, iov);
635}
static Database & Instance()
Instance of a singleton Database.
Definition Database.cc:42
bool storeData(const std::string &name, TObject *object, const IntervalOfValidity &iov)
Store an object in the database.
Definition Database.cc:141

Member Data Documentation

◆ m_BeamBackgroundStudy

bool m_BeamBackgroundStudy = false
protectedinherited

ROOT streamer.

Whether to perform beam-background study.

Definition at line 1896 of file EKLMGeometry.h.

◆ m_ElementNumbers

const EKLMElementNumbers* m_ElementNumbers
protectedinherited

Element numbers.

Definition at line 1893 of file EKLMGeometry.h.

◆ m_EndcapStructureGeometry

EndcapStructureGeometry m_EndcapStructureGeometry
protectedinherited

Section structure geometry data.

Definition at line 1926 of file EKLMGeometry.h.

◆ m_Geometry

EKLMGeometry* m_Geometry
private

Copy of data in this class used to write it to database.

Definition at line 233 of file GeometryData.h.

◆ m_LayerPosition

ElementPosition m_LayerPosition
protectedinherited

Position data for layers.

Definition at line 1932 of file EKLMGeometry.h.

◆ m_LayerShiftZ

double m_LayerShiftZ
protectedinherited

Z distance between two layers.

Definition at line 1935 of file EKLMGeometry.h.

◆ m_MaxZBackward

double m_MaxZBackward
private

Maximal z coordinate of the backward section.

Definition at line 248 of file GeometryData.h.

◆ m_MinZForward

double m_MinZForward
private

Minimal z coordinate of the forward section.

Definition at line 245 of file GeometryData.h.

◆ m_NDetectorLayers

int* m_NDetectorLayers
protectedinherited

Number of detector layers.

Definition at line 1905 of file EKLMGeometry.h.

◆ m_NLayers

int m_NLayers
protectedinherited

Number of layers in one section.

Definition at line 1902 of file EKLMGeometry.h.

◆ m_NPlanes

int m_NPlanes
protectedinherited

Number of planes in one sector.

Definition at line 1911 of file EKLMGeometry.h.

◆ m_NSections

int m_NSections
protectedinherited

Number of sections.

Definition at line 1899 of file EKLMGeometry.h.

◆ m_NSectors

int m_NSectors
protectedinherited

Number of sectors in one layer.

Definition at line 1908 of file EKLMGeometry.h.

◆ m_NSegments

int m_NSegments
protectedinherited

Number of segments in one plane.

Definition at line 1914 of file EKLMGeometry.h.

◆ m_NSegmentSupportElementsSector

int m_NSegmentSupportElementsSector
protectedinherited

Number of segment support elements in one sector.

Definition at line 1917 of file EKLMGeometry.h.

◆ m_nStripDifferent

int m_nStripDifferent
private

Number of strips with different lengths in one plane.

Definition at line 236 of file GeometryData.h.

◆ m_NStrips

int m_NStrips
protectedinherited

Number of strips in one plane.

Definition at line 1920 of file EKLMGeometry.h.

◆ m_PlanePosition

ElementPosition m_PlanePosition
protectedinherited

Position data for planes.

Definition at line 1947 of file EKLMGeometry.h.

◆ m_PlasticSheetGeometry

PlasticSheetGeometry m_PlasticSheetGeometry
protectedinherited

Plastic sheet geometry data.

Definition at line 1950 of file EKLMGeometry.h.

◆ m_SectionPosition

ElementPosition m_SectionPosition
protectedinherited

Position data for sections.

Definition at line 1929 of file EKLMGeometry.h.

◆ m_SectorPosition

ElementPosition m_SectorPosition
protectedinherited

Position data for sectors.

Definition at line 1938 of file EKLMGeometry.h.

◆ m_SectorSupportGeometry

SectorSupportGeometry m_SectorSupportGeometry
protectedinherited

Sector support geometry data.

Definition at line 1944 of file EKLMGeometry.h.

◆ m_SectorSupportPosition

ElementPosition m_SectorSupportPosition
protectedinherited

Position data for sector support structure.

Definition at line 1941 of file EKLMGeometry.h.

◆ m_SegmentSupportGeometry

SegmentSupportGeometry m_SegmentSupportGeometry
protectedinherited

Segment support geometry data.

Definition at line 1953 of file EKLMGeometry.h.

◆ m_SegmentSupportPosition

SegmentSupportPosition* m_SegmentSupportPosition
protectedinherited

Position data for segment support structure.

Definition at line 1956 of file EKLMGeometry.h.

◆ m_ShieldGeometry

ShieldGeometry m_ShieldGeometry
protectedinherited

Shield layer details geometry data.

Definition at line 1965 of file EKLMGeometry.h.

◆ m_SolenoidZ

double m_SolenoidZ
protectedinherited

Solenoid center Z coordinate.

Definition at line 1923 of file EKLMGeometry.h.

◆ m_StripAllToLen

int* m_StripAllToLen
private

Number of strip in length-based array.

Definition at line 239 of file GeometryData.h.

◆ m_StripGeometry

StripGeometry m_StripGeometry
protectedinherited

Strip geometry data.

Definition at line 1959 of file EKLMGeometry.h.

◆ m_StripLenToAll

int* m_StripLenToAll
private

Number of strip in position-based array.

Definition at line 242 of file GeometryData.h.

◆ m_StripPosition

ElementPosition* m_StripPosition
protectedinherited

Position data for strips.

Definition at line 1962 of file EKLMGeometry.h.


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