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.
 
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
47
50
51 };
@ c_Gearbox
Gearbox (XML).
Definition: GeometryData.h:46

Constructor & Destructor Documentation

◆ GeometryData()

GeometryData ( enum DataSource  dataSource,
const GearDir gearDir 
)
explicitprivate

Constructor.

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

Definition at line 605 of file GeometryData.cc.

607{
608 m_Geometry = nullptr;
609 switch (dataSource) {
610 case c_Gearbox:
611 initializeFromGearbox(gearDir);
612 break;
613 case c_Database:
615 break;
616 }
624}
double getZ() const
Get Z coordinate.
Definition: EKLMGeometry.h:197
double getLength() const
Get length.
Definition: EKLMGeometry.h:146
ElementPosition m_SectionPosition
Position data for sections.
double m_SolenoidZ
Solenoid center Z coordinate.
void fillStripIndexArrays()
Fill strip index arrays.
void calculateSectorSupportGeometry()
Calculate sector support geometry data.
void initializeFromGearbox(const GearDir *gearDir)
Initialize from Gearbox (XML).
void calculateShieldGeometry()
Calculate shield geometry data.
double m_MaxZBackward
Maximal z coordinate of the backward section.
Definition: GeometryData.h:242
EKLMGeometry * m_Geometry
Copy of data in this class used to write it to database.
Definition: GeometryData.h:227
double m_MinZForward
Minimal z coordinate of the forward section.
Definition: GeometryData.h:239
void initializeFromDatabase()
Initialize from database.

◆ ~GeometryData()

~GeometryData ( )
private

Destructor.

Definition at line 626 of file GeometryData.cc.

627{
628 if (m_Geometry != nullptr)
629 delete m_Geometry;
630 free(m_StripLenToAll);
631 free(m_StripAllToLen);
632}
int * m_StripLenToAll
Number of strip in position-based array.
Definition: GeometryData.h:236
int * m_StripAllToLen
Number of strip in length-based array.
Definition: GeometryData.h:233

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 }
bool m_BeamBackgroundStudy
ROOT streamer.

◆ calculateSectorSupportGeometry()

void calculateSectorSupportGeometry ( )
private

Calculate sector support geometry data.

Definition at line 117 of file GeometryData.cc.

118{
120 Line2D line23Outer(0, m_SectorSupportPosition.getY(), 1, 0);
121 Line2D line23Inner(0, m_SectorSupportPosition.getY() +
123 Line2D line23Prism(0, m_SectorSupportPosition.getY() +
126 Line2D line41Outer(m_SectorSupportPosition.getX(), 0, 0, 1);
127 Line2D line41Inner(m_SectorSupportPosition.getX() +
129 Line2D line41Prism(m_SectorSupportPosition.getX() +
132 Line2D line41Corner1B(m_SectorSupportPosition.getX() +
134 Circle2D circleInnerOuter(0, 0, m_SectorSupportPosition.getInnerR());
135 Circle2D circleInnerInner(0, 0, m_SectorSupportPosition.getInnerR() +
137 Circle2D circleOuterInner(0, 0, m_SectorSupportPosition.getOuterR() -
139 Circle2D circleOuterOuter(0, 0, m_SectorSupportPosition.getOuterR());
140 HepGeom::Point3D<double> intersections[2];
141 /* Corner 1. */
145 p.setZ(0);
147 line41Corner1B.findIntersection(circleOuterOuter, intersections);
148 m_SectorSupportGeometry.setCorner1B(intersections[1]);
153 m_SectorSupportGeometry.getCorner1A().x()) * CLHEP::rad);
160 p.setZ(0);
162 Line2D lineCorner1(m_SectorSupportGeometry.getCorner1AInner().x(),
168 lineCorner1.findIntersection(circleOuterInner, intersections);
170 /* Corner 2. */
171 line23Inner.findIntersection(circleOuterInner, intersections);
173 /* Corner 3. */
174 line23Outer.findIntersection(circleInnerOuter, intersections);
175 m_SectorSupportGeometry.setCorner3(intersections[1]);
176 line23Inner.findIntersection(circleInnerInner, intersections);
178 line23Prism.findIntersection(circleInnerInner, intersections);
179 p.setX(intersections[1].x());
182 p.setZ(0);
184 /* Corner 4. */
185 line41Outer.findIntersection(circleInnerOuter, intersections);
186 m_SectorSupportGeometry.setCorner4(intersections[1]);
187 line41Inner.findIntersection(circleInnerInner, intersections);
189 line41Prism.findIntersection(circleInnerInner, intersections);
192 p.setY(intersections[1].y());
193 p.setZ(0);
195}
double getX() const
Get X coordinate.
Definition: EKLMGeometry.h:163
double getOuterR() const
Get outer radius.
Definition: EKLMGeometry.h:129
double getInnerR() const
Get inner radius.
Definition: EKLMGeometry.h:112
double getY() const
Get Y coordinate.
Definition: EKLMGeometry.h:180
void setCorner3Prism(const HepGeom::Point3D< double > &corner3Prism)
Set coordinates of the corner of corner 3 prism.
Definition: EKLMGeometry.h:719
void setCorner1A(const HepGeom::Point3D< double > &corner1A)
Set corner 1A coordinates.
Definition: EKLMGeometry.h:600
double getCornerX() const
Get coordinate X of corner 1.
Definition: EKLMGeometry.h:285
double getCorner4LX() const
Get corner 4 X length.
Definition: EKLMGeometry.h:506
void setCorner1AInner(const HepGeom::Point3D< double > &corner1AInner)
Set corner 1A coordinates (inner side).
Definition: EKLMGeometry.h:617
void setCorner3Inner(const HepGeom::Point3D< double > &corner3Inner)
Set corner 3 coordinates (inner side).
Definition: EKLMGeometry.h:702
void setCornerAngle(double cornerAngle)
Set corner 1 angle.
Definition: EKLMGeometry.h:583
void setCorner1BInner(const HepGeom::Point3D< double > &corner1BInner)
Set corner 1B coordinates (inner side).
Definition: EKLMGeometry.h:651
const HepGeom::Point3D< double > & getCorner1B() const
Get corner 1B coordinates.
Definition: EKLMGeometry.h:625
double getCornerAngle() const
Get corner 1 angle.
Definition: EKLMGeometry.h:574
void setCorner1B(const HepGeom::Point3D< double > &corner1B)
Set corner 1B coordinates.
Definition: EKLMGeometry.h:634
void setCorner4(const HepGeom::Point3D< double > &corner4)
Set corner 4 coordinates.
Definition: EKLMGeometry.h:736
double getThickness() const
Get thickness.
Definition: EKLMGeometry.h:251
void setCorner3(const HepGeom::Point3D< double > &corner3)
Set corner 3 coordinates.
Definition: EKLMGeometry.h:685
const HepGeom::Point3D< double > & getCorner1A() const
Get corner 1A coordinates.
Definition: EKLMGeometry.h:591
void setCorner4Inner(const HepGeom::Point3D< double > &corner4Inner)
Set corner 4 coordinates (inner side).
Definition: EKLMGeometry.h:753
void setCorner2Inner(const HepGeom::Point3D< double > &corner2Inner)
Set corner 2 coordinates (inner side).
Definition: EKLMGeometry.h:668
void setCorner4Prism(const HepGeom::Point3D< double > &corner4Prism)
Set coordinates of the corner of corner 4 prism.
Definition: EKLMGeometry.h:770
double getDeltaLY() const
Get outerR - Y of upper edge of BoxY.
Definition: EKLMGeometry.h:268
const HepGeom::Point3D< double > & getCorner1AInner() const
Get corner 1A coordinates (inner side).
Definition: EKLMGeometry.h:608
double getCorner3LY() const
Get corner 3 Y length.
Definition: EKLMGeometry.h:455
SectorSupportGeometry m_SectorSupportGeometry
Sector support geometry data.
ElementPosition m_SectorSupportPosition
Position data for sector support structure.

◆ calculateShieldGeometry()

void calculateShieldGeometry ( )
private

Calculate shield geometry data.

Definition at line 385 of file GeometryData.cc.

386{
387 int i;
388 double r, l, dx, dy, xCenter, yCenter;
389 const double asqrt2 = 1.0 / sqrt(2.0);
390 HepGeom::Point3D<double> points[8];
391 const ShieldDetailGeometry* detailA = m_ShieldGeometry.getDetailA();
392 const ShieldDetailGeometry* detailB = m_ShieldGeometry.getDetailB();
393 const ShieldDetailGeometry* detailC = m_ShieldGeometry.getDetailC();
394 const ShieldDetailGeometry* detailD = m_ShieldGeometry.getDetailD();
397 /* Detail A. */
398 EKLMPointToCLHEP(detailA->getPoint(0), points[0]);
399 EKLMPointToCLHEP(detailA->getPoint(1), points[1]);
400 EKLMPointToCLHEP(detailA->getPoint(2), points[2]);
401 EKLMPointToCLHEP(detailA->getPoint(3), points[3]);
402 EKLMPointToCLHEP(detailA->getPoint(4), points[4]);
403 points[5].setX(detailA->getLengthX());
404 points[5].setY(detailA->getLengthY());
405 points[5].setZ(0);
406 EKLMPointToCLHEP(detailA->getPoint(5), points[6]);
407 EKLMPointToCLHEP(detailA->getPoint(6), points[7]);
408 l = 0.5 * (detailA->getLengthX() + detailB->getLengthX());
409 xCenter = -asqrt2 * l;
410 yCenter = asqrt2 * l;
411 for (i = 0; i < 8; i++)
412 points[i] = HepGeom::Translate3D(xCenter, yCenter, 0) *
413 HepGeom::RotateZ3D(-45.0 * CLHEP::deg) *
414 HepGeom::Translate3D(-detailA->getLengthX() / 2,
415 -detailA->getLengthY() / 2, 0) *
416 points[i];
417 getDetailDxDy(points, 8, r, 1, 1, dx, dy);
418 m_ShieldGeometry.setDetailACenter(xCenter + dx, yCenter + dy);
419 /* Details B, D, E. */
420 points[0].setX(0);
421 points[0].setY(-detailD->getLengthY());
422 points[0].setZ(0);
423 points[1].setX(detailD->getLengthX());
424 points[1].setY(0);
425 points[1].setZ(0);
426 points[2].setX(detailB->getLengthX() - detailD->getLengthX());
427 points[2].setY(0);
428 points[2].setZ(0);
429 points[3].setX(detailB->getLengthX());
430 points[3].setY(-detailD->getLengthY());
431 points[3].setZ(0);
432 EKLMPointToCLHEP(detailB->getPoint(0), points[4]);
433 EKLMPointToCLHEP(detailB->getPoint(1), points[5]);
434 EKLMPointToCLHEP(detailB->getPoint(2), points[6]);
435 EKLMPointToCLHEP(detailB->getPoint(3), points[7]);
436 /* Detail B center coordinates before its shift are (0, 0). */
437 for (i = 0; i < 8; i++)
438 points[i] = HepGeom::RotateZ3D(-45.0 * CLHEP::deg) *
439 HepGeom::Translate3D(-detailB->getLengthX() / 2,
440 -detailB->getLengthY() / 2, 0) *
441 points[i];
442 getDetailDxDy(points, 8, r, 1, 1, dx, dy);
444 /* Detail C. */
445 EKLMPointToCLHEP(detailC->getPoint(0), points[0]);
446 EKLMPointToCLHEP(detailC->getPoint(1), points[1]);
447 EKLMPointToCLHEP(detailC->getPoint(2), points[2]);
448 EKLMPointToCLHEP(detailC->getPoint(3), points[3]);
449 EKLMPointToCLHEP(detailC->getPoint(4), points[4]);
450 points[5].setX(detailC->getLengthX());
451 points[5].setY(detailC->getLengthY());
452 points[5].setZ(0);
453 EKLMPointToCLHEP(detailC->getPoint(5), points[6]);
454 EKLMPointToCLHEP(detailC->getPoint(6), points[7]);
455 l = 0.5 * (detailB->getLengthX() + detailC->getLengthX());
456 xCenter = asqrt2 * l;
457 yCenter = -asqrt2 * l;
458 for (i = 0; i < 8; i++)
459 points[i] = HepGeom::Translate3D(xCenter, yCenter, 0) *
460 HepGeom::RotateZ3D(-45.0 * CLHEP::deg) *
461 HepGeom::RotateY3D(180.0 * CLHEP::deg) *
462 HepGeom::Translate3D(-detailC->getLengthX() / 2,
463 -detailC->getLengthY() / 2, 0) *
464 points[i];
465 getDetailDxDy(points, 8, r, 1, 1, dx, dy);
466 m_ShieldGeometry.setDetailCCenter(xCenter + dx, yCenter + dy);
467}
const ShieldDetailGeometry * getDetailA() const
Get detail A geometry.
const ShieldDetailGeometry * getDetailB() const
Get detail B geometry.
void setDetailACenter(double x, double y)
Set detail A center.
void setDetailCCenter(double x, double y)
Set detail C center.
const ShieldDetailGeometry * getDetailD() const
Get detail D geometry.
void setDetailBCenter(double x, double y)
Set detail B center.
const ShieldDetailGeometry * getDetailC() const
Get detail C geometry.
ShieldGeometry m_ShieldGeometry
Shield layer details geometry data.
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 ||
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 getMaximalDetectorLayerNumber(int section) const
Get maximal detector layer number.
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 " <<
327}
static constexpr int getMaximalSegmentNumber()
Get maximal segment number.

◆ 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 " <<
334}
static constexpr int getNStripsSegment()
Get number of strips in a segment.

◆ fillStripIndexArrays()

void fillStripIndexArrays ( )
private

Fill strip index arrays.

Definition at line 202 of file GeometryData.cc.

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

◆ getEndcapStructureGeometry()

const EndcapStructureGeometry * getEndcapStructureGeometry ( ) const
inlineinherited

Get endcap structure geometry data.

Definition at line 1783 of file EKLMGeometry.h.

1784 {
1786 }
EndcapStructureGeometry m_EndcapStructureGeometry
Section structure geometry data.

◆ 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 }
ElementPosition m_LayerPosition
Position data for layers.

◆ 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 }
double m_LayerShiftZ
Z distance between two layers.

◆ 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 662 of file GeometryData.cc.

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

◆ getMaximalStripLength()

double getMaximalStripLength ( ) const
inline

Get maximal strip length.

Definition at line 79 of file GeometryData.h.

80 {
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{
296 return m_NDetectorLayers[section - 1];
297}
bool checkSection(int section, bool fatalError=true) const
Check if section number is correct.

◆ 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 }
int m_NPlanes
Number of planes in one sector.

◆ getNSections()

int getNSections ( ) const
inlineinherited

Get number of sections.

Definition at line 1685 of file EKLMGeometry.h.

1686 {
1687 return m_NSections;
1688 }
int m_NSections
Number of sections.

◆ getNSectors()

int getNSectors ( ) const
inlineinherited

Get number of sectors.

Definition at line 1707 of file EKLMGeometry.h.

1708 {
1709 return m_NSectors;
1710 }
int m_NSectors
Number of sectors in one layer.

◆ getNSegments()

int getNSegments ( ) const
inlineinherited

Get number of segments.

Definition at line 1723 of file EKLMGeometry.h.

1724 {
1725 return m_NSegments;
1726 }
int m_NSegments
Number of segments in one plane.

◆ getNSegmentSupportElementsSector()

int getNSegmentSupportElementsSector ( ) const
inlineinherited

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

Definition at line 1731 of file EKLMGeometry.h.

1732 {
1734 }
int m_NSegmentSupportElementsSector
Number of segment support elements in one sector.

◆ 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 }
ElementPosition m_PlanePosition
Position data for planes.

◆ 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 690 of file GeometryData.cc.

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

◆ 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 }
PlasticSheetGeometry m_PlasticSheetGeometry
Plastic sheet geometry data.

◆ 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 650 of file GeometryData.cc.

651{
652 if (n == 0)
653 *t = HepGeom::Translate3D(m_SectionPosition.getX(), m_SectionPosition.getY(),
655 else
656 *t = HepGeom::Translate3D(m_SectionPosition.getX(), m_SectionPosition.getY(),
658 HepGeom::RotateY3D(180.*CLHEP::deg);
659}

◆ 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 }
ElementPosition m_SectorPosition
Position data for sectors.

◆ getSectorSupportGeometry()

const SectorSupportGeometry * getSectorSupportGeometry ( ) const
inlineinherited

Get sector support geometry data.

Definition at line 1831 of file EKLMGeometry.h.

1832 {
1834 }

◆ getSectorSupportPosition()

const ElementPosition * getSectorSupportPosition ( ) const
inlineinherited

Get position data for sector support structure.

Definition at line 1823 of file EKLMGeometry.h.

1824 {
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 670 of file GeometryData.cc.

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

◆ getSegmentSupportGeometry()

const SegmentSupportGeometry * getSegmentSupportGeometry ( ) const
inlineinherited

Get segment support geometry data.

Definition at line 1855 of file EKLMGeometry.h.

1856 {
1858 }
SegmentSupportGeometry m_SegmentSupportGeometry
Segment support geometry data.

◆ 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{
342 checkSegmentSupport(support);
343 return &m_SegmentSupportPosition[(plane - 1) * (m_NSegments + 1) +
344 support - 1];
345}
bool checkPlane(int plane, bool fatalError=true) const
Check if plane number is correct (fatal error if not).
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 710 of file GeometryData.cc.

711{
712 double y;
713 y = m_StripPosition[n].getY();
714 if (n % m_ElementNumbers->getNStripsSegment() == 0)
715 y = y + 0.5 * m_PlasticSheetGeometry.getDeltaL();
716 else if (n % m_ElementNumbers->getNStripsSegment() ==
718 y = y - 0.5 * m_PlasticSheetGeometry.getDeltaL();
719 *t = HepGeom::Translate3D(m_StripPosition[n].getX(), y, 0.0);
720}
double getDeltaL() const
Get Delta L (edge of last strip - edge of plastic sheet distance).
Definition: EKLMGeometry.h:909

◆ 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 }
StripGeometry m_StripGeometry
Strip geometry data.

◆ 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{
351 return &m_StripPosition[strip - 1];
352}
bool checkStrip(int strip, bool fatalError=true) const
Check if strip number is correct (fatal error if not).

◆ 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 703 of file GeometryData.cc.

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

◆ 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 639 of file GeometryData.cc.

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

◆ initializeFromDatabase()

void initializeFromDatabase ( )
private

Initialize from database.

Definition at line 596 of file GeometryData.cc.

597{
598 DBObjPtr<EKLMGeometry> eklmGeometry;
599 if (!eklmGeometry.isValid())
600 B2FATAL("No EKLM geometry data in the database.");
601 EKLMGeometry::operator=(*eklmGeometry);
602 m_Geometry = new EKLMGeometry(*this);
603}
bool isValid() const
Check whether a valid object was obtained from the database.
Class for accessing objects in the database.
Definition: DBObjPtr.h:21
EKLMGeometry()
Constructor.
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 477 of file GeometryData.cc.

478{
479 int i, j, k;
480 std::string name;
481 ShieldDetailGeometry shieldDetailGeometry;
482 GearDir gd(*gearDir);
483 gd.append("/EKLM");
484 /* Beam-background study. */
485 m_BeamBackgroundStudy = gd.getBool("BeamBackgroundStudy");
486 /* Numbers of elements. */
487 m_NSections = gd.getInt("NSections");
489 m_NLayers = gd.getInt("NLayers");
492 m_NDetectorLayers[0] = gd.getInt("NDetectorLayersBackward");
494 if (m_NSections == 2) {
495 m_NDetectorLayers[1] = gd.getInt("NDetectorLayersForward");
497 }
498 m_NSectors = gd.getInt("NSectors");
500 m_NPlanes = gd.getInt("NPlanes");
502 m_NSegments = gd.getInt("NSegments");
505 m_NStrips = gd.getInt("NStrips");
507 /* Geometry parameters. */
508 m_SolenoidZ = gd.getLength("SolenoidZ") * CLHEP::cm;
510 GearDir section(gd);
511 section.append("/Section");
512 readPositionData(&m_SectionPosition, &section);
513 readSizeData(&m_SectionPosition, &section);
514 GearDir layer(gd);
515 layer.append("/Layer");
516 readSizeData(&m_LayerPosition, &layer);
517 m_LayerShiftZ = layer.getLength("ShiftZ") * CLHEP::cm;
518 GearDir sector(gd);
519 sector.append("/Sector");
520 readSizeData(&m_SectorPosition, &sector);
521 GearDir sectorSupport(gd);
522 sectorSupport.append("/SectorSupport");
523 readPositionData(&m_SectorSupportPosition, &sectorSupport);
524 readSizeData(&m_SectorSupportPosition, &sectorSupport);
525 readSectorSupportGeometry(&m_SectorSupportGeometry, &sectorSupport);
526 GearDir plane(gd);
527 plane.append("/Plane");
528 readPositionData(&m_PlanePosition, &plane);
529 readSizeData(&m_PlanePosition, &plane);
530 GearDir plasticSheet(gd);
531 plasticSheet.append("/PlasticSheet");
532 m_PlasticSheetGeometry.setWidth(plasticSheet.getLength("Width") * CLHEP::cm);
533 m_PlasticSheetGeometry.setDeltaL(plasticSheet.getLength("DeltaL") *
534 CLHEP::cm);
535 GearDir segmentSupport(gd);
536 segmentSupport.append("/SegmentSupport");
538 segmentSupport.getLength("TopWidth") * CLHEP::cm);
540 segmentSupport.getLength("TopThickness") * CLHEP::cm);
542 segmentSupport.getLength("MiddleWidth") * CLHEP::cm);
544 segmentSupport.getLength("MiddleThickness") * CLHEP::cm);
545 try {
548 } catch (std::bad_alloc& ba) {
549 B2FATAL(c_MemErr);
550 }
551 for (j = 0; j < m_NPlanes; j++) {
552 for (i = 0; i <= m_NSegments; i++) {
553 k = j * (m_NSegments + 1) + i;
554 GearDir segmentSupport2(segmentSupport);
555 name = "/SegmentSupportPlane[" + std::to_string(j + 1) + "]";
556 segmentSupport2.append(name);
557 name = "/SegmentSupport[" + std::to_string(i + 1) + "]";
558 segmentSupport2.append(name);
560 segmentSupport2.getLength("Length") * CLHEP::cm);
562 segmentSupport2.getLength("X") * CLHEP::cm);
564 segmentSupport2.getLength("Y") * CLHEP::cm);
566 segmentSupport2.getLength("Z") * CLHEP::cm);
568 segmentSupport2.getLength("DeltaLRight") * CLHEP::cm);
570 segmentSupport2.getLength("DeltaLLeft") * CLHEP::cm);
571 }
572 }
574 GearDir shield(gd);
575 shield.append("/Shield");
576 m_ShieldGeometry.setThickness(shield.getLength("Thickness") * CLHEP::cm);
577 GearDir shieldDetailA(shield);
578 shieldDetailA.append("/Detail[@id=\"A\"]");
579 readShieldDetailGeometry(&shieldDetailGeometry, &shieldDetailA);
580 m_ShieldGeometry.setDetailA(shieldDetailGeometry);
581 GearDir shieldDetailB(shield);
582 shieldDetailB.append("/Detail[@id=\"B\"]");
583 readShieldDetailGeometry(&shieldDetailGeometry, &shieldDetailB);
584 m_ShieldGeometry.setDetailB(shieldDetailGeometry);
585 GearDir shieldDetailC(shield);
586 shieldDetailC.append("/Detail[@id=\"C\"]");
587 readShieldDetailGeometry(&shieldDetailGeometry, &shieldDetailC);
588 m_ShieldGeometry.setDetailC(shieldDetailGeometry);
589 GearDir shieldDetailD(shield);
590 shieldDetailD.append("/Detail[@id=\"D\"]");
591 readShieldDetailGeometry(&shieldDetailGeometry, &shieldDetailD);
592 m_ShieldGeometry.setDetailD(shieldDetailGeometry);
593 m_Geometry = new EKLMGeometry(*this);
594}
bool checkLayer(int layer, bool fatalError=true) const
Check if layer number is correct.
bool checkSegment(int segment, bool fatalError=true) const
Check if segment number is correct (fatal error if not).
bool checkSector(int sector, bool fatalError=true) const
Check if sector number is correct (fatal error if not).
void setDeltaL(double deltaL)
Set Delta L (edge of last strip - edge of plastic sheet distance).
Definition: EKLMGeometry.h:918
void setWidth(double width)
Set width.
Definition: EKLMGeometry.h:901
void setMiddleWidth(double middleWidth)
Set middle part width.
Definition: EKLMGeometry.h:994
void setMiddleThickness(double middleThickness)
Set middle part thickness.
void setTopWidth(double topWidth)
Set top part width.
Definition: EKLMGeometry.h:960
void setTopThickness(double topThickness)
Set top part thickness.
Definition: EKLMGeometry.h:977
void setZ(double z)
Set Z coordinate.
void setDeltaLLeft(double deltaLLeft)
Set left DeltaL.
void setDeltaLRight(double deltaLRight)
Set right Delta L.
void setLength(double length)
Set length.
void setY(double y)
Set Y coordinate.
void setX(double x)
Set X coordinate.
void setDetailA(const ShieldDetailGeometry &geometry)
Set detail A geometry.
void setDetailB(const ShieldDetailGeometry &geometry)
Set detail B geometry.
void setThickness(double thickness)
Set thickness.
void setDetailD(const ShieldDetailGeometry &geometry)
Set detail D geometry.
void setDetailC(const ShieldDetailGeometry &geometry)
Set detail C geometry.
void checkDetectorLayerNumber(int section, int layer) const
Check if number of detector layers is correct (fatal error if not).
void readEndcapStructureGeometry(const GearDir &gd)
Read section structure geometry data.
void readXMLDataStrips(const GearDir &gd)
Read strip parameters from XML database.
GearDir is the basic class used for accessing the parameter store.
Definition: GearDir.h:31

◆ 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}
EKLM geometry data.
Definition: GeometryData.h:38

◆ readEndcapStructureGeometry()

void readEndcapStructureGeometry ( const GearDir gd)
private

Read section structure geometry data.

Parameters
[in]gdCurrent GearDir.

Definition at line 469 of file GeometryData.cc.

470{
471 GearDir d(gd);
472 d.append("/EndcapStructure");
473 m_EndcapStructureGeometry.setPhi(d.getAngle("Phi") * CLHEP::rad);
474 m_EndcapStructureGeometry.setNSides(d.getInt("NSides"));
475}
void setPhi(double phi)
Set starting angle of the octagonal endcap structure shape.
Definition: EKLMGeometry.h:62
void setNSides(int nSides)
Set number of sides.
Definition: EKLMGeometry.h:79

◆ readXMLDataStrips()

void readXMLDataStrips ( const GearDir gd)
private

Read strip parameters from XML database.

Definition at line 258 of file GeometryData.cc.

259{
260 int i;
261 std::string name;
262 GearDir Strips(gd);
263 Strips.append("/Strip");
264 m_StripGeometry.setWidth(Strips.getLength("Width") * CLHEP::cm);
265 m_StripGeometry.setThickness(Strips.getLength("Thickness") * CLHEP::cm);
266 m_StripGeometry.setGrooveDepth(Strips.getLength("GrooveDepth") * CLHEP::cm);
267 m_StripGeometry.setGrooveWidth(Strips.getLength("GrooveWidth") * CLHEP::cm);
269 Strips.getLength("NoScintillationThickness") * CLHEP::cm);
270 m_StripGeometry.setRSSSize(Strips.getLength("RSSSize") * CLHEP::cm);
271 try {
273 } catch (std::bad_alloc& ba) {
274 B2FATAL(c_MemErr);
275 }
276 for (i = 0; i < m_NStrips; i++) {
277 GearDir StripContent(Strips);
278 name = "/Strip[" + std::to_string(i + 1) + "]";
279 StripContent.append(name);
280 m_StripPosition[i].setLength(StripContent.getLength("Length") * CLHEP::cm);
281 m_StripPosition[i].setX(StripContent.getLength("X") * CLHEP::cm);
282 m_StripPosition[i].setY(StripContent.getLength("Y") * CLHEP::cm);
283 m_StripPosition[i].setZ(StripContent.getLength("Z") * CLHEP::cm);
284 }
285}
Position information for the elements of detector.
Definition: EKLMGeometry.h:100
void setZ(double z)
Set Z coordinate.
Definition: EKLMGeometry.h:206
void setLength(double length)
Set length.
Definition: EKLMGeometry.h:155
void setY(double y)
Set Y coordinate.
Definition: EKLMGeometry.h:189
void setX(double x)
Set X coordinate.
Definition: EKLMGeometry.h:172
void setNoScintillationThickness(double thickness)
Set nonscintillating layer thickness.
void setThickness(double thickness)
Set thickness.
void setRSSSize(double rssSize)
Set "SiPM" size.
void setWidth(double width)
Set width.
void setGrooveDepth(double grooveDepth)
Set groove depth.
void setGrooveWidth(double grooveWidth)
Set groove width.

◆ saveToDatabase()

void saveToDatabase ( const IntervalOfValidity iov) const

Save geometry data to database.

Definition at line 634 of file GeometryData.cc.

635{
636 Database::Instance().storeData("EKLMGeometry", m_Geometry, iov);
637}
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 227 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 242 of file GeometryData.h.

◆ m_MinZForward

double m_MinZForward
private

Minimal z coordinate of the forward section.

Definition at line 239 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 230 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 233 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 236 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: