CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes
EcalPreshowerGeometry Class Referencefinal

#include <EcalPreshowerGeometry.h>

Inheritance diagram for EcalPreshowerGeometry:
CaloSubdetectorGeometry

Public Types

enum  { k_NumberOfCellsForCorners = ESDetId::kSizeForDenseIndexing }
 
enum  { k_NumberOfShapes = 4 }
 
enum  { k_NumberOfParametersPerShape = 4 }
 
typedef EcalPreshowerGeometryRecord AlignedRecord
 
typedef ESAlignmentRcd AlignmentRecord
 
typedef CaloCellGeometry::CCGFloat CCGFloat
 
typedef std::vector< PreshowerStripCellVec
 
typedef ESDetId DetIdType
 
typedef IdealGeometryRecord IdealRecord
 
typedef EcalPreshowerNumberingScheme NumberingScheme
 
typedef CaloSubdetectorGeometry::ParVec ParVec
 
typedef CaloSubdetectorGeometry::ParVecVec ParVecVec
 
typedef PEcalPreshowerRcd PGeometryRecord
 
typedef CaloCellGeometry::Pt3D Pt3D
 
typedef CaloCellGeometry::Pt3DVec Pt3DVec
 
- Public Types inherited from CaloSubdetectorGeometry
typedef CaloCellGeometry::CCGFloat CCGFloat
 
typedef std::vector< std::shared_ptr< const CaloCellGeometry > > CellSet
 
typedef std::set< DetIdDetIdSet
 
typedef std::vector< CCGFloatDimVec
 
typedef std::vector< unsigned int > IVec
 
typedef CaloCellGeometry::ParMgr ParMgr
 
typedef CaloCellGeometry::ParVec ParVec
 
typedef CaloCellGeometry::ParVecVec ParVecVec
 
typedef std::vector< CCGFloatTrVec
 

Public Member Functions

 EcalPreshowerGeometry ()
 
DetId getClosestCell (const GlobalPoint &r) const override
 
virtual DetId getClosestCellInPlane (const GlobalPoint &r, int plane) const
 
void initializeParms () override
 
void newCell (const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId) override
 
unsigned int numberOfParametersPerShape () const override
 
unsigned int numberOfShapes () const override
 
unsigned int numberOfTransformParms () const override
 
bool present (const DetId &id) const override
 is this detid present in the geometry? More...
 
void setzPlanes (CCGFloat z1minus, CCGFloat z2minus, CCGFloat z1plus, CCGFloat z2plus)
 
 ~EcalPreshowerGeometry () override
 The EcalPreshowerGeometry will delete all its cell geometries at destruction time. More...
 
- Public Member Functions inherited from CaloSubdetectorGeometry
void allocateCorners (CaloCellGeometry::CornersVec::size_type n)
 
void allocatePar (ParVec::size_type n, unsigned int m)
 
 CaloSubdetectorGeometry ()
 
 CaloSubdetectorGeometry (const CaloSubdetectorGeometry &)=delete
 avoid copies More...
 
CaloCellGeometry::CornersMgrcornersMgr ()
 
CCGFloat deltaEta (const DetId &detId) const
 
CCGFloat deltaPhi (const DetId &detId) const
 
virtual void fillDefaultNamedParameters () const
 
virtual DetIdSet getCells (const GlobalPoint &r, double dR) const
 Get a list of all cells within a dR of the given cell. More...
 
virtual CellSet getCellSet (const GlobalPoint &r, double dR) const
 
virtual std::shared_ptr< const CaloCellGeometrygetGeometry (const DetId &id) const
 Get the cell geometry of a given detector id. Should return false if not found. More...
 
virtual void getSummary (TrVec &trVector, IVec &iVector, DimVec &dimVector, IVec &dinsVector) const
 
virtual const std::vector< DetId > & getValidDetIds (DetId::Detector det=DetId::Detector(0), int subdet=0) const
 Get a list of valid detector ids (for the given subdetector) More...
 
CaloSubdetectorGeometryoperator= (const CaloSubdetectorGeometry &)=delete
 
ParMgrparMgr ()
 
const ParMgrparMgrConst () const
 
ParVecVecparVecVec ()
 
const ParVecVecparVecVec () const
 
virtual ~CaloSubdetectorGeometry ()
 The base class DOES assume that it owns the CaloCellGeometry objects. More...
 

Static Public Member Functions

static unsigned int alignmentTransformIndexGlobal (const DetId &id)
 
static unsigned int alignmentTransformIndexLocal (const DetId &id)
 
static std::string dbString ()
 
static DetId detIdFromLocalAlignmentIndex (unsigned int iLoc)
 
static std::string hitString ()
 
static void localCorners (Pt3DVec &lc, const CCGFloat *pv, unsigned int i, Pt3D &ref)
 
static unsigned int numberOfAlignments ()
 
static std::string producerTag ()
 

Protected Member Functions

const CaloCellGeometrygetGeometryRawPtr (uint32_t index) const override
 
- Protected Member Functions inherited from CaloSubdetectorGeometry
void addValidID (const DetId &id)
 
virtual std::shared_ptr< const CaloCellGeometrycellGeomPtr (uint32_t index) const
 
virtual unsigned int indexFor (const DetId &id) const
 
virtual unsigned int sizeForDenseIndex (const DetId &id) const
 

Private Attributes

CellVec m_cellVec
 
const CCGFloat m_xInterLadGap
 
const CCGFloat m_xIntraLadGap
 
const CCGFloat m_xWidWaf
 
const CCGFloat m_yCtrOff
 
const CCGFloat m_yWidAct
 
CCGFloat m_zplane [4]
 

Additional Inherited Members

- Static Protected Member Functions inherited from CaloSubdetectorGeometry
static CCGFloat deltaR (const GlobalPoint &p1, const GlobalPoint &p2)
 
- Protected Attributes inherited from CaloSubdetectorGeometry
ParVecVec m_parVecVec
 
std::vector< DetIdm_validIds
 

Detailed Description

Definition at line 15 of file EcalPreshowerGeometry.h.

Member Typedef Documentation

◆ AlignedRecord

Definition at line 24 of file EcalPreshowerGeometry.h.

◆ AlignmentRecord

Definition at line 25 of file EcalPreshowerGeometry.h.

◆ CCGFloat

Definition at line 19 of file EcalPreshowerGeometry.h.

◆ CellVec

Definition at line 17 of file EcalPreshowerGeometry.h.

◆ DetIdType

Definition at line 31 of file EcalPreshowerGeometry.h.

◆ IdealRecord

Definition at line 23 of file EcalPreshowerGeometry.h.

◆ NumberingScheme

Definition at line 28 of file EcalPreshowerGeometry.h.

◆ ParVec

Definition at line 29 of file EcalPreshowerGeometry.h.

◆ ParVecVec

Definition at line 30 of file EcalPreshowerGeometry.h.

◆ PGeometryRecord

Definition at line 26 of file EcalPreshowerGeometry.h.

◆ Pt3D

Definition at line 20 of file EcalPreshowerGeometry.h.

◆ Pt3DVec

Definition at line 21 of file EcalPreshowerGeometry.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

◆ anonymous enum

anonymous enum
Enumerator
k_NumberOfShapes 

Definition at line 35 of file EcalPreshowerGeometry.h.

◆ anonymous enum

anonymous enum
Enumerator
k_NumberOfParametersPerShape 

Definition at line 37 of file EcalPreshowerGeometry.h.

Constructor & Destructor Documentation

◆ EcalPreshowerGeometry()

EcalPreshowerGeometry::EcalPreshowerGeometry ( )

Definition at line 16 of file EcalPreshowerGeometry.cc.

References m_zplane.

17  : m_xWidWaf(6.3),
18  m_xInterLadGap(0.05), // additional gap between wafers in adj ladders
19  m_xIntraLadGap(0.04), // gap between wafers in same ladder
20  m_yWidAct(6.1),
21  m_yCtrOff(0.05), // gap at center
23  m_zplane[0] = 0.;
24  m_zplane[1] = 0.;
25  m_zplane[2] = 0.;
26  m_zplane[3] = 0.;
27 #ifdef EDM_ML_DEBUG
28  edm::LogVerbatim("EcalGeom") << "EcalPreshowerGeometry::Creating an instance";
29 #endif
30 }
Log< level::Info, true > LogVerbatim

◆ ~EcalPreshowerGeometry()

EcalPreshowerGeometry::~EcalPreshowerGeometry ( )
override

The EcalPreshowerGeometry will delete all its cell geometries at destruction time.

Definition at line 32 of file EcalPreshowerGeometry.cc.

32 {}

Member Function Documentation

◆ alignmentTransformIndexGlobal()

unsigned int EcalPreshowerGeometry::alignmentTransformIndexGlobal ( const DetId id)
static

Definition at line 75 of file EcalPreshowerGeometry.cc.

References DetId::Ecal.

75  {
76  return (unsigned int)DetId::Ecal - 1;
77 }

◆ alignmentTransformIndexLocal()

unsigned int EcalPreshowerGeometry::alignmentTransformIndexLocal ( const DetId id)
static

Definition at line 34 of file EcalPreshowerGeometry.cc.

References cms::cuda::assert(), CaloGenericDetId::isES(), and edm::second().

34  {
35  const CaloGenericDetId gid(id);
36 
37  assert(gid.isES());
38 
39  // plane 2 is split into 2 dees along x=0 for both signs of z
40 
41  // plane 1 at zsign=-1 is split into 2 dees between six=19 and six=20 for siy<=20,
42  // and six=21 and 22 for siy>=21
43 
44  // plane 1 at zsign=+1 is split into 2 dees between six=20 and six=21 for siy<=20,
45  // and six=19 and 20 for siy>=21
46 
47  // Desired numbering
48  // LEFT RIGHT (as one faces the Dee from the IP)
49  // ES- pl=2 0 1
50  // pl=1 2 3 the reversal of pl=2 and pl=1 is intentional here (CM Kuo)
51  // ES+ pl=1 4 5
52  // pl=2 6 7
53 
54  const ESDetId esid(id);
55  const int jx(esid.six() - 1);
56  const int jy(esid.siy() - 1);
57  const int jz(esid.zside() + 1);
58  const int pl(esid.plane() - 1);
59  const bool second(1 == pl);
60  const bool top(19 < jy);
61  const bool negz(0 == jz);
62  const int lrl(19 > jx ? 0 : 1);
63  const int lrr(21 > jx ? 0 : 1);
64 
65  return (second ? jx / 20 + 3 * jz : // 2nd plane split along middle
66  (negz && !top ? lrl + 2 : // 1st plane at neg z and bottom half split at six=19&20
67  (negz && top ? lrr + 2 : // 1st plane at neg z and top half split at six=21&22
68  (!negz && !top ? lrr + 4 : lrl + 4)))); // opposite at positive z
69 }
assert(be >=bs)
U second(std::pair< T, U > const &p)

◆ dbString()

static std::string EcalPreshowerGeometry::dbString ( )
inlinestatic

Definition at line 39 of file EcalPreshowerGeometry.h.

39 { return "PEcalPreshowerRcd"; }

◆ detIdFromLocalAlignmentIndex()

DetId EcalPreshowerGeometry::detIdFromLocalAlignmentIndex ( unsigned int  iLoc)
static

Definition at line 71 of file EcalPreshowerGeometry.cc.

Referenced by WriteESAlignments::convert(), FakeCaloAlignmentEP::produceESAli(), and TestCaloAlignmentEP::produceESAli().

71  {
72  return ESDetId(1, 10 + 20 * (iLoc % 2), 10, 2 > iLoc || 5 < iLoc ? 2 : 1, 2 * (iLoc / 4) - 1);
73 }

◆ getClosestCell()

DetId EcalPreshowerGeometry::getClosestCell ( const GlobalPoint r) const
overridevirtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 137 of file EcalPreshowerGeometry.cc.

References getClosestCellInPlane(), and point.

137 { return getClosestCellInPlane(point, 2); }
virtual DetId getClosestCellInPlane(const GlobalPoint &r, int plane) const
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5

◆ getClosestCellInPlane()

DetId EcalPreshowerGeometry::getClosestCellInPlane ( const GlobalPoint r,
int  plane 
) const
virtual

Definition at line 139 of file EcalPreshowerGeometry.cc.

References cuy::col, CaloSubdetectorGeometry::getGeometry(), ESDetId::ISTRIP_MAX, ESDetId::ISTRIP_MIN, m_xInterLadGap, m_xIntraLadGap, m_xWidWaf, m_yCtrOff, m_yWidAct, m_zplane, AlCaHLTBitMon_ParallelJobs::p, point, present(), ESDetId::validDetId(), x, y, and z.

Referenced by PreshowerHitMaker::addHit(), getClosestCell(), and ReducedESRecHitCollectionProducer::produce().

139  {
140  const CCGFloat x(point.x());
141  const CCGFloat y(point.y());
142  const CCGFloat z(point.z());
143 
144  if (0 == z || 1 > plane || 2 < plane)
145  return DetId(0);
146 
147  const unsigned int iz((0 > z ? 0 : 2) + plane - 1);
148 
149  const CCGFloat ze(m_zplane[iz]);
150  const CCGFloat xe(x * ze / z);
151  const CCGFloat ye(y * ze / z);
152 
153  const CCGFloat x0(1 == plane ? xe : ye);
154  const CCGFloat y0(1 == plane ? ye : xe);
155 
156  static const CCGFloat xWid(m_xWidWaf + m_xIntraLadGap + m_xInterLadGap);
157 
158  const int row(1 + int(y0 + 20. * m_yWidAct - m_yCtrOff) / m_yWidAct);
159  const int col(1 + int((x0 + 20. * xWid) / xWid));
160 
161  CCGFloat closest(1e9);
162 
163  DetId detId(0);
164 
165  const int jz(0 > ze ? -1 : 1);
166 
167  // std::cout<<"** p="<<point<<", ("<<xe<<", "<<ye<<", "<<ze<<"), row="<<row<<", col="<<col<<std::endl;
168 
169  for (int ix(-1); ix != 2; ++ix) // search within +-1 in row and col
170  {
171  for (int iy(-1); iy != 2; ++iy) {
172  for (int jstrip(ESDetId::ISTRIP_MIN); jstrip <= ESDetId::ISTRIP_MAX; ++jstrip) {
173  const int jx(1 == plane ? col + ix : row + iy);
174  const int jy(1 == plane ? row + iy : col + ix);
175  if (ESDetId::validDetId(jstrip, jx, jy, plane, jz)) {
176  const ESDetId esId(jstrip, jx, jy, plane, jz);
177  auto cell = getGeometry(esId);
178  if (nullptr != cell) {
179  const GlobalPoint& p(cell->getPosition());
180  const CCGFloat dist2((p.x() - xe) * (p.x() - xe) + (p.y() - ye) * (p.y() - ye));
181  if (dist2 < closest && present(esId)) {
182  closest = dist2;
183  detId = esId;
184  }
185  }
186  }
187  }
188  }
189  }
190  return detId;
191 }
static const int ISTRIP_MAX
Definition: ESDetId.h:69
CaloCellGeometry::CCGFloat CCGFloat
bool present(const DetId &id) const override
is this detid present in the geometry?
virtual std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
Definition: DetId.h:17
static bool validDetId(int istrip, int ixs, int iys, int iplane, int iz)
check if a valid index combination
Definition: ESDetId.cc:15
col
Definition: cuy.py:1009
static const int ISTRIP_MIN
Definition: ESDetId.h:68
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5

◆ getGeometryRawPtr()

const CaloCellGeometry * EcalPreshowerGeometry::getGeometryRawPtr ( uint32_t  index) const
overrideprotectedvirtual

Implements CaloSubdetectorGeometry.

Definition at line 210 of file EcalPreshowerGeometry.cc.

References m_cellVec, and CaloCellGeometry::param().

210  {
211  // Modify the RawPtr class
212  const CaloCellGeometry* cell(&m_cellVec[index]);
213  return (m_cellVec.size() < index || nullptr == cell->param() ? nullptr : cell);
214 }

◆ hitString()

static std::string EcalPreshowerGeometry::hitString ( )
inlinestatic

Definition at line 60 of file EcalPreshowerGeometry.h.

60 { return "EcalHitsES"; }

◆ initializeParms()

void EcalPreshowerGeometry::initializeParms ( )
overridevirtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 79 of file EcalPreshowerGeometry.cc.

References cms::cuda::assert(), CaloSubdetectorGeometry::getGeometry(), CaloSubdetectorGeometry::getValidDetIds(), mps_fire::i, ESDetId::plane(), setzPlanes(), ESDetId::zside(), and geometryCSVtoXML::zz.

79  {
80  unsigned int n1minus(0);
81  unsigned int n2minus(0);
82  unsigned int n1plus(0);
83  unsigned int n2plus(0);
84  CCGFloat z1minus(0);
85  CCGFloat z2minus(0);
86  CCGFloat z1plus(0);
87  CCGFloat z2plus(0);
88  const std::vector<DetId>& esDetIds(getValidDetIds());
89 #ifdef EDM_ML_DEBUG
90  edm::LogVerbatim("EcalGeom") << "EcalPreshowerGeometry:: Get " << esDetIds.size() << " valid DetIds";
91 #endif
92 
93  for (unsigned int i(0); i != esDetIds.size(); ++i) {
94  const ESDetId esid(esDetIds[i]);
95  auto cell = getGeometry(esid);
96  if (nullptr != cell) {
97  const CCGFloat zz(cell->getPosition().z());
98  if (1 == esid.plane()) {
99  if (0 > esid.zside()) {
100  z1minus += zz;
101  ++n1minus;
102  } else {
103  z1plus += zz;
104  ++n1plus;
105  }
106  }
107  if (2 == esid.plane()) {
108  if (0 > esid.zside()) {
109  z2minus += zz;
110  ++n2minus;
111  } else {
112  z2plus += zz;
113  ++n2plus;
114  }
115  }
116  }
117  }
118  assert(0 != n1minus && 0 != n2minus && 0 != n1plus && 0 != n2plus);
119  z1minus /= (1. * n1minus);
120  z2minus /= (1. * n2minus);
121  z1plus /= (1. * n1plus);
122  z2plus /= (1. * n2plus);
123  assert(0 != z1minus && 0 != z2minus && 0 != z1plus && 0 != z2plus);
124  setzPlanes(z1minus, z2minus, z1plus, z2plus);
125 }
Log< level::Info, true > LogVerbatim
void setzPlanes(CCGFloat z1minus, CCGFloat z2minus, CCGFloat z1plus, CCGFloat z2plus)
assert(be >=bs)
CaloCellGeometry::CCGFloat CCGFloat
virtual const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const
Get a list of valid detector ids (for the given subdetector)
virtual std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.

◆ localCorners()

void EcalPreshowerGeometry::localCorners ( Pt3DVec lc,
const CCGFloat pv,
unsigned int  i,
Pt3D ref 
)
static

Definition at line 193 of file EcalPreshowerGeometry.cc.

References PreshowerStrip::localCorners(), and MetAnalyzer::pv().

193  {
195 }
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
def pv(vc)
Definition: MetAnalyzer.py:7

◆ newCell()

void EcalPreshowerGeometry::newCell ( const GlobalPoint f1,
const GlobalPoint f2,
const GlobalPoint f3,
const CCGFloat parm,
const DetId detId 
)
overridevirtual

Implements CaloSubdetectorGeometry.

Definition at line 197 of file EcalPreshowerGeometry.cc.

References CaloSubdetectorGeometry::addValidID(), CaloSubdetectorGeometry::cornersMgr(), DeadROC_duringRun::f1, and m_cellVec.

201  {
202  const unsigned int cellIndex(ESDetId(detId).denseIndex());
203  m_cellVec[cellIndex] = PreshowerStrip(f1, cornersMgr(), parm);
204  addValidID(detId);
205 #ifdef EDM_ML_DEBUG
206  edm::LogVerbatim("EcalGeom") << "EcalPreshowerGeometry::Add a new DetId " << ESDetId(detId);
207 #endif
208 }
Log< level::Info, true > LogVerbatim
A base class to handle the shape of preshower strips.
void addValidID(const DetId &id)
CaloCellGeometry::CornersMgr * cornersMgr()

◆ numberOfAlignments()

static unsigned int EcalPreshowerGeometry::numberOfAlignments ( )
inlinestatic

Definition at line 64 of file EcalPreshowerGeometry.h.

Referenced by FakeCaloAlignmentEP::produceESAli(), and TestCaloAlignmentEP::produceESAli().

64 { return 8; }

◆ numberOfParametersPerShape()

unsigned int EcalPreshowerGeometry::numberOfParametersPerShape ( ) const
inlineoverridevirtual

◆ numberOfShapes()

unsigned int EcalPreshowerGeometry::numberOfShapes ( ) const
inlineoverridevirtual

◆ numberOfTransformParms()

unsigned int EcalPreshowerGeometry::numberOfTransformParms ( ) const
inlineoverridevirtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 58 of file EcalPreshowerGeometry.h.

58 { return 3; }

◆ present()

bool EcalPreshowerGeometry::present ( const DetId id) const
inlineoverridevirtual

is this detid present in the geometry?

Reimplemented from CaloSubdetectorGeometry.

Definition at line 81 of file EcalPreshowerGeometry.h.

References CaloGenericDetId::denseIndex(), and m_cellVec.

Referenced by getClosestCellInPlane().

81  {
82  if (id == DetId(0))
83  return false;
84  // not needed???
85  auto index = CaloGenericDetId(id).denseIndex();
86  return index < m_cellVec.size();
87  }
uint32_t denseIndex() const
Definition: DetId.h:17

◆ producerTag()

static std::string EcalPreshowerGeometry::producerTag ( )
inlinestatic

◆ setzPlanes()

void EcalPreshowerGeometry::setzPlanes ( CCGFloat  z1minus,
CCGFloat  z2minus,
CCGFloat  z1plus,
CCGFloat  z2plus 
)

Definition at line 127 of file EcalPreshowerGeometry.cc.

References cms::cuda::assert(), and m_zplane.

Referenced by initializeParms().

127  {
128  assert(0 > z1minus && 0 > z2minus && 0 < z1plus && 0 < z2plus);
129 
130  m_zplane[0] = z1minus;
131  m_zplane[1] = z2minus;
132  m_zplane[2] = z1plus;
133  m_zplane[3] = z2plus;
134 }
assert(be >=bs)

Member Data Documentation

◆ m_cellVec

CellVec EcalPreshowerGeometry::m_cellVec
private

Definition at line 103 of file EcalPreshowerGeometry.h.

Referenced by getGeometryRawPtr(), newCell(), and present().

◆ m_xInterLadGap

const CCGFloat EcalPreshowerGeometry::m_xInterLadGap
private

Definition at line 95 of file EcalPreshowerGeometry.h.

Referenced by getClosestCellInPlane().

◆ m_xIntraLadGap

const CCGFloat EcalPreshowerGeometry::m_xIntraLadGap
private

Definition at line 96 of file EcalPreshowerGeometry.h.

Referenced by getClosestCellInPlane().

◆ m_xWidWaf

const CCGFloat EcalPreshowerGeometry::m_xWidWaf
private

Definition at line 94 of file EcalPreshowerGeometry.h.

Referenced by getClosestCellInPlane().

◆ m_yCtrOff

const CCGFloat EcalPreshowerGeometry::m_yCtrOff
private

Definition at line 99 of file EcalPreshowerGeometry.h.

Referenced by getClosestCellInPlane().

◆ m_yWidAct

const CCGFloat EcalPreshowerGeometry::m_yWidAct
private

Definition at line 98 of file EcalPreshowerGeometry.h.

Referenced by getClosestCellInPlane().

◆ m_zplane

CCGFloat EcalPreshowerGeometry::m_zplane[4]
private