Belle II Software  release-05-02-19
TransformData.h
Go to the documentation of this file.
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2012 Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Kirill Chilikin *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 /* KLM headers. */
14 #include <klm/eklm/geometry/GeometryData.h>
15 #include <klm/dataobjects/KLMDigit.h>
16 
17 /* CLHEP headers. */
18 #include <CLHEP/Geometry/Transform3D.h>
19 
25 namespace Belle2 {
31  namespace EKLM {
32 
37  class TransformData {
38 
39  public:
40 
44  enum Displacement {
48  };
49 
56  TransformData(bool global, Displacement displacementType);
57 
61  TransformData(const TransformData&) = delete;
62 
66  TransformData& operator=(const TransformData&) = delete;
67 
72 
77  const HepGeom::Transform3D* getSectionTransform(int section) const;
78 
84  const HepGeom::Transform3D*
85  getLayerTransform(int section, int layer) const;
86 
93  const HepGeom::Transform3D*
94  getSectorTransform(int section, int layer, int sector) const;
95 
103  const HepGeom::Transform3D*
104  getPlaneTransform(int section, int layer, int sector, int plane) const;
105 
113  const HepGeom::Transform3D*
114  getPlaneDisplacement(int section, int layer, int sector, int plane) const;
115 
124  const HepGeom::Transform3D*
125  getSegmentTransform(int section, int layer, int sector, int plane,
126  int segment) const;
127 
133  const HepGeom::Transform3D* getStripLocalToGlobal(KLMDigit* hit) const;
134 
140  const HepGeom::Transform3D* getStripGlobalToLocal(KLMDigit* hit) const;
141 
150  const HepGeom::Transform3D*
151  getStripTransform(int section, int layer, int sector, int plane,
152  int strip) const;
153 
163  const HepGeom::Transform3D*
164  getStripGlobalToLocal(int section, int layer, int sector, int plane,
165  int strip) const;
166 
181  bool intersection(KLMDigit* hit1, KLMDigit* hit2,
183  double* d1, double* d2, double* sd,
184  bool segments = true) const;
185 
191  int getSectorByPosition(int section,
192  const HepGeom::Point3D<double>& position) const;
193 
194 
203  int* strip1, int* strip2) const;
204 
205  private:
206 
211  void transformsToGlobal();
212 
215 
218 
220  HepGeom::Transform3D* m_Section;
221 
223  HepGeom::Transform3D** m_Layer;
224 
226  HepGeom::Transform3D*** m_Sector;
227 
229  HepGeom::Transform3D**** m_Plane;
230 
232  HepGeom::Transform3D**** m_PlaneDisplacement;
233 
235  HepGeom::Transform3D***** m_Segment;
236 
238  HepGeom::Transform3D***** m_Strip;
239 
241  HepGeom::Transform3D***** m_StripInverse;
242 
243  };
244 
245  }
246 
248 }
Belle2::EKLM::TransformData
Transformation data.
Definition: TransformData.h:37
Belle2::EKLM::TransformData::getSectorByPosition
int getSectorByPosition(int section, const HepGeom::Point3D< double > &position) const
Get sector by position.
Definition: TransformData.cc:418
Belle2::EKLMElementNumbers
EKLM element numbers.
Definition: EKLMElementNumbers.h:34
Belle2::EKLM::TransformData::m_Segment
HepGeom::Transform3D ***** m_Segment
Segment transformations.
Definition: TransformData.h:235
Belle2::EKLM::TransformData::c_Alignment
@ c_Alignment
Use alignment data (for everything else).
Definition: TransformData.h:47
Belle2::EKLM::TransformData::getSectorTransform
const HepGeom::Transform3D * getSectorTransform(int section, int layer, int sector) const
Get sector transformation.
Definition: TransformData.cc:298
Belle2::EKLM::TransformData::getStripGlobalToLocal
const HepGeom::Transform3D * getStripGlobalToLocal(KLMDigit *hit) const
Get strip global to local transformation by hit.
Definition: TransformData.cc:336
Belle2::EKLM::TransformData::getPlaneDisplacement
const HepGeom::Transform3D * getPlaneDisplacement(int section, int layer, int sector, int plane) const
Get additional displacement for plane internal volumes.
Definition: TransformData.cc:310
Belle2::EKLM::TransformData::getSegmentTransform
const HepGeom::Transform3D * getSegmentTransform(int section, int layer, int sector, int plane, int segment) const
Get segment transformation.
Definition: TransformData.cc:316
Belle2::EKLM::TransformData::getStripLocalToGlobal
const HepGeom::Transform3D * getStripLocalToGlobal(KLMDigit *hit) const
Get strip local to global transformation by hit.
Definition: TransformData.cc:329
Belle2::EKLM::TransformData::m_PlaneDisplacement
HepGeom::Transform3D **** m_PlaneDisplacement
Plane internal volumes displacements.
Definition: TransformData.h:232
Belle2::EKLM::TransformData::getPlaneTransform
const HepGeom::Transform3D * getPlaneTransform(int section, int layer, int sector, int plane) const
Get plane transformation.
Definition: TransformData.cc:304
Belle2::KLMDigit
KLM digit (class representing a digitized hit in RPCs or scintillators).
Definition: KLMDigit.h:40
Belle2::EKLM::TransformData::m_Layer
HepGeom::Transform3D ** m_Layer
Layer transformations.
Definition: TransformData.h:223
Belle2::EKLM::TransformData::getSectionTransform
const HepGeom::Transform3D * getSectionTransform(int section) const
Get section transformation.
Definition: TransformData.cc:286
Belle2::EKLM::TransformData::m_StripInverse
HepGeom::Transform3D ***** m_StripInverse
Inverse strip transformations.
Definition: TransformData.h:241
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::EKLM::TransformData::m_Section
HepGeom::Transform3D * m_Section
Section transformations.
Definition: TransformData.h:220
Belle2::EKLM::TransformData::getStripTransform
const HepGeom::Transform3D * getStripTransform(int section, int layer, int sector, int plane, int strip) const
Get strip transformation.
Definition: TransformData.cc:323
Belle2::EKLM::TransformData::getLayerTransform
const HepGeom::Transform3D * getLayerTransform(int section, int layer) const
Get layer transformation.
Definition: TransformData.cc:292
Belle2::EKLM::TransformData::operator=
TransformData & operator=(const TransformData &)=delete
Operator = (disabled).
Belle2::EKLM::GeometryData
EKLM geometry data.
Definition: GeometryData.h:40
Belle2::EKLM::TransformData::m_Strip
HepGeom::Transform3D ***** m_Strip
Strip transformations.
Definition: TransformData.h:238
Belle2::EKLM::TransformData::intersection
bool intersection(KLMDigit *hit1, KLMDigit *hit2, HepGeom::Point3D< double > *cross, double *d1, double *d2, double *sd, bool segments=true) const
Check if strips intersect, and find intersection point if yes.
Definition: TransformData.cc:350
Belle2::EKLM::TransformData::~TransformData
~TransformData()
Destructor.
Definition: TransformData.cc:190
Belle2::EKLM::TransformData::TransformData
TransformData(bool global, Displacement displacementType)
Constructor.
Definition: TransformData.cc:27
Belle2::EKLM::TransformData::m_GeoDat
const GeometryData * m_GeoDat
Geometry data.
Definition: TransformData.h:217
Belle2::EKLM::TransformData::m_Plane
HepGeom::Transform3D **** m_Plane
Plane transformations.
Definition: TransformData.h:229
Belle2::EKLM::TransformData::getStripsByIntersection
int getStripsByIntersection(const HepGeom::Point3D< double > &intersection, int *strip1, int *strip2) const
Find strips by intersection.
Definition: TransformData.cc:442
Belle2::EKLM::TransformData::m_ElementNumbers
const EKLMElementNumbers * m_ElementNumbers
Element numbers.
Definition: TransformData.h:214
Belle2::EKLM::TransformData::c_Displacement
@ c_Displacement
Use displacement data (for geometry).
Definition: TransformData.h:46
HepGeom::Point3D< double >
Belle2::EKLM::TransformData::m_Sector
HepGeom::Transform3D *** m_Sector
Sector transformations.
Definition: TransformData.h:226
Belle2::EKLM::TransformData::transformsToGlobal
void transformsToGlobal()
Make transformations global from local.
Definition: TransformData.cc:241
Belle2::EKLM::TransformData::c_None
@ c_None
Displacement is not used.
Definition: TransformData.h:45
Belle2::EKLM::TransformData::Displacement
Displacement
Source of displacement (alignment) data.
Definition: TransformData.h:44