CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes
magneticfield::BaseVolumeHandle Class Referenceabstract

#include <BaseVolumeHandle.h>

Inheritance diagram for magneticfield::BaseVolumeHandle:
MagGeoBuilderFromDDD::volumeHandle magneticfield::volumeHandle

Public Types

typedef Surface::GlobalPoint GlobalPoint
 
typedef Surface::LocalPoint LocalPoint
 
typedef Surface::LocalVector LocalVector
 
typedef SurfaceOrientation::GlobalFace Sides
 

Public Member Functions

 BaseVolumeHandle (bool expand2Pi=false, bool debugVal=false)
 
 BaseVolumeHandle (const BaseVolumeHandle &v)=delete
 
const GlobalPointcenter () const
 Return the center of the volume. More...
 
bool isIron () const
 Temporary hack to pass information on material. Will eventually be replaced! More...
 
bool isPlaneMatched (int which_side) const
 if the specified surface has been matched. More...
 
Geom::Phi< float > maxPhi () const
 Maximum value of phi covered by the volume. More...
 
double maxZ () const
 
Geom::Phi< float > minPhi () const
 Minimum value of phi covered by the volume. More...
 
double minR () const
 Minimum R for any point within the volume. More...
 
double minZ () const
 Z limits. More...
 
const GloballyPositioned< float > * placement () const
 Position and rotation. More...
 
int references (int which_side) const
 
const double RN () const
 Distance of (x,y) plane from origin. More...
 
bool sameSurface (const Surface &s1, Sides which_side, float tolerance=0.01)
 Find out if two surfaces are the same physical surface. More...
 
bool setSurface (const Surface &s1, Sides which_side)
 Assign a shared surface perorming sanity checks. More...
 
virtual DDSolidShape shape () const =0
 Shape of the solid. More...
 
virtual std::vector< VolumeSidesides () const =0
 The surfaces and they orientation, as required to build a MagVolume. More...
 
const Surfacesurface (int which_side) const
 Get the current surface on specified side. More...
 
const Surfacesurface (Sides which_side) const
 
bool toExpand () const
 
virtual ~BaseVolumeHandle ()
 

Public Attributes

unsigned short copyno
 copy number More...
 
std::string magFile
 Name of magnetic field table file. More...
 
MagVolume6FacesmagVolume
 Pointer to the final MagVolume (must be set from outside) More...
 
int masterSector
 The sector for which an interpolator for this class of volumes should be built. More...
 
std::string name
 Name of the volume. More...
 
unsigned short volumeno
 volume number More...
 

Protected Types

typedef ConstReferenceCountingPointer< SurfaceRCPS
 

Protected Member Functions

void buildPhiZSurf (double startPhi, double deltaPhi, double zhalf, double rCentr)
 

Protected Attributes

GlobalPoint center_
 
const bool debug
 
bool expand
 
bool isAssigned [6]
 
bool isIronFlag
 
GloballyPositioned< float > * refPlane
 
RCPS surfaces [6]
 
Geom::Phi< float > thePhiMin
 
double theRMax
 
double theRMin
 
double theRN
 

Detailed Description

Definition at line 22 of file BaseVolumeHandle.h.

Member Typedef Documentation

◆ GlobalPoint

Definition at line 24 of file BaseVolumeHandle.h.

◆ LocalPoint

Definition at line 25 of file BaseVolumeHandle.h.

◆ LocalVector

Definition at line 26 of file BaseVolumeHandle.h.

◆ RCPS

Definition at line 117 of file BaseVolumeHandle.h.

◆ Sides

Definition at line 27 of file BaseVolumeHandle.h.

Constructor & Destructor Documentation

◆ BaseVolumeHandle() [1/2]

BaseVolumeHandle::BaseVolumeHandle ( bool  expand2Pi = false,
bool  debugVal = false 
)

Definition at line 24 of file BaseVolumeHandle.cc.

25  : magVolume(nullptr),
26  masterSector(1),
27  theRN(0.),
28  theRMin(0.),
29  theRMax(0.),
30  refPlane(nullptr),
31  expand(expand2Pi),
32  isIronFlag(false),
33  debug(debugVal) {}
GloballyPositioned< float > * refPlane
int masterSector
The sector for which an interpolator for this class of volumes should be built.
MagVolume6Faces * magVolume
Pointer to the final MagVolume (must be set from outside)

◆ BaseVolumeHandle() [2/2]

magneticfield::BaseVolumeHandle::BaseVolumeHandle ( const BaseVolumeHandle v)
delete

◆ ~BaseVolumeHandle()

BaseVolumeHandle::~BaseVolumeHandle ( )
virtual

Definition at line 35 of file BaseVolumeHandle.cc.

References refPlane.

35  {
36  if (refPlane != nullptr) {
37  delete refPlane;
38  refPlane = nullptr;
39  }
40 }
GloballyPositioned< float > * refPlane

Member Function Documentation

◆ buildPhiZSurf()

void BaseVolumeHandle::buildPhiZSurf ( double  startPhi,
double  deltaPhi,
double  zhalf,
double  rCentr 
)
protected

Definition at line 44 of file BaseVolumeHandle.cc.

References center_, funct::cos(), gather_cfg::cout, debug, srCondWrite_cfg::deltaPhi, PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), SurfaceOrientation::phiminus, SurfaceOrientation::phiplus, refPlane, funct::sin(), surfaces, theRN, GloballyPositioned< T >::toGlobal(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PV3DBase< T, PVType, FrameType >::z(), SurfaceOrientation::zminus, and SurfaceOrientation::zplus.

44  {
45  // This is 100% equal for cons and tubs!!!
46 
47  GlobalVector planeXAxis = refPlane->toGlobal(LocalVector(1, 0, 0));
48  GlobalVector planeYAxis = refPlane->toGlobal(LocalVector(0, 1, 0));
49  GlobalVector planeZAxis = refPlane->toGlobal(LocalVector(0, 0, 1));
50 
51  // Local Y axis of the faces at +-phi.
52  GlobalVector y_phiplus = refPlane->toGlobal(LocalVector(cos(startPhi + deltaPhi), sin(startPhi + deltaPhi), 0.));
53  GlobalVector y_phiminus = refPlane->toGlobal(LocalVector(cos(startPhi), sin(startPhi), 0.));
54 
55  Surface::RotationType rot_Z(planeXAxis, planeYAxis);
56  Surface::RotationType rot_phiplus(planeZAxis, y_phiplus);
57  Surface::RotationType rot_phiminus(planeZAxis, y_phiminus);
58 
59  GlobalPoint pos_zplus(center_.x(), center_.y(), center_.z() + zhalf);
60  GlobalPoint pos_zminus(center_.x(), center_.y(), center_.z() - zhalf);
61  // BEWARE: in this case, the origin for phiplus,phiminus surfaces is
62  // at radius R and not on a plane passing by center_ orthogonal to the radius.
63  GlobalPoint pos_phiplus(
64  refPlane->toGlobal(LocalPoint(rCentr * cos(startPhi + deltaPhi), rCentr * sin(startPhi + deltaPhi), 0.)));
65  GlobalPoint pos_phiminus(refPlane->toGlobal(LocalPoint(rCentr * cos(startPhi), rCentr * sin(startPhi), 0.)));
66  surfaces[zplus] = new Plane(pos_zplus, rot_Z);
67  surfaces[zminus] = new Plane(pos_zminus, rot_Z);
68  surfaces[phiplus] = new Plane(pos_phiplus, rot_phiplus);
69  surfaces[phiminus] = new Plane(pos_phiminus, rot_phiminus);
70 
71  if (debug) {
72  cout << "Actual Center at: " << center_ << " R " << center_.perp() << " phi " << center_.phi() << endl;
73  cout << "RN " << theRN << endl;
74 
75  cout << "pos_zplus " << pos_zplus << " " << pos_zplus.perp() << " " << pos_zplus.phi() << endl
76  << "pos_zminus " << pos_zminus << " " << pos_zminus.perp() << " " << pos_zminus.phi() << endl
77  << "pos_phiplus " << pos_phiplus << " " << pos_phiplus.perp() << " " << pos_phiplus.phi() << endl
78  << "pos_phiminus " << pos_phiminus << " " << pos_phiminus.perp() << " " << pos_phiminus.phi() << endl;
79 
80  cout << "y_phiplus " << y_phiplus << endl;
81  cout << "y_phiminus " << y_phiminus << endl;
82 
83  cout << "rot_Z " << surfaces[zplus]->toGlobal(LocalVector(0., 0., 1.)) << endl
84  << "rot_phi+ " << surfaces[phiplus]->toGlobal(LocalVector(0., 0., 1.)) << " phi "
85  << surfaces[phiplus]->toGlobal(LocalVector(0., 0., 1.)).phi() << endl
86  << "rot_phi- " << surfaces[phiminus]->toGlobal(LocalVector(0., 0., 1.)) << " phi "
87  << surfaces[phiminus]->toGlobal(LocalVector(0., 0., 1.)).phi() << endl;
88  }
89 
90  // // Check ordering.
91  if (debug) {
92  if (pos_zplus.z() < pos_zminus.z()) {
93  cout << "*** WARNING: pos_zplus < pos_zminus " << endl;
94  }
95  if (Geom::Phi<float>(pos_phiplus.phi() - pos_phiminus.phi()) < 0.) {
96  cout << "*** WARNING: pos_phiplus < pos_phiminus " << endl;
97  }
98  }
99 }
GlobalPoint toGlobal(const LocalPoint &lp) const
T perp() const
Definition: PV3DBase.h:69
Surface::LocalVector LocalVector
T z() const
Definition: PV3DBase.h:61
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Definition: Plane.h:16
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
GloballyPositioned< float > * refPlane
Cos< T >::type cos(const T &t)
Definition: Cos.h:22

◆ center()

const Surface::GlobalPoint & BaseVolumeHandle::center ( ) const

◆ isIron()

bool magneticfield::BaseVolumeHandle::isIron ( ) const
inline

Temporary hack to pass information on material. Will eventually be replaced!

Definition at line 108 of file BaseVolumeHandle.h.

References isIronFlag.

◆ isPlaneMatched()

bool magneticfield::BaseVolumeHandle::isPlaneMatched ( int  which_side) const
inline

if the specified surface has been matched.

Definition at line 55 of file BaseVolumeHandle.h.

References isAssigned.

55 { return isAssigned[which_side]; }

◆ maxPhi()

Geom::Phi<float> magneticfield::BaseVolumeHandle::maxPhi ( ) const
inline

Maximum value of phi covered by the volume.

Definition at line 85 of file BaseVolumeHandle.h.

References PV3DBase< T, PVType, FrameType >::phi(), SurfaceOrientation::phiplus, GloballyPositioned< T >::position(), and surface().

Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
const Surface & surface(int which_side) const
Get the current surface on specified side.
const PositionType & position() const

◆ maxZ()

double magneticfield::BaseVolumeHandle::maxZ ( ) const
inline

Definition at line 91 of file BaseVolumeHandle.h.

References GloballyPositioned< T >::position(), surface(), PV3DBase< T, PVType, FrameType >::z(), and SurfaceOrientation::zplus.

T z() const
Definition: PV3DBase.h:61
const Surface & surface(int which_side) const
Get the current surface on specified side.
const PositionType & position() const

◆ minPhi()

Geom::Phi<float> magneticfield::BaseVolumeHandle::minPhi ( ) const
inline

Minimum value of phi covered by the volume.

Definition at line 80 of file BaseVolumeHandle.h.

References thePhiMin.

80 { return thePhiMin; }

◆ minR()

double magneticfield::BaseVolumeHandle::minR ( ) const
inline

Minimum R for any point within the volume.

Definition at line 94 of file BaseVolumeHandle.h.

References theRMin.

◆ minZ()

double magneticfield::BaseVolumeHandle::minZ ( ) const
inline

Z limits.

Definition at line 90 of file BaseVolumeHandle.h.

References GloballyPositioned< T >::position(), surface(), PV3DBase< T, PVType, FrameType >::z(), and SurfaceOrientation::zminus.

T z() const
Definition: PV3DBase.h:61
const Surface & surface(int which_side) const
Get the current surface on specified side.
const PositionType & position() const

◆ placement()

const GloballyPositioned<float>* magneticfield::BaseVolumeHandle::placement ( ) const
inline

Position and rotation.

Definition at line 97 of file BaseVolumeHandle.h.

References refPlane.

Referenced by magneticfield::InterpolatorBuilder::build(), magneticfield::MagGeoBuilder::buildInterpolator(), and MagGeoBuilderFromDDD::buildInterpolator().

97 { return refPlane; }
GloballyPositioned< float > * refPlane

◆ references()

int magneticfield::BaseVolumeHandle::references ( int  which_side) const
inline

Definition at line 57 of file BaseVolumeHandle.h.

57  { // FIXME!
58  /* return surfaces[which_side]->references(); */
59  return 0;
60  }

◆ RN()

const double magneticfield::BaseVolumeHandle::RN ( ) const
inline

Distance of (x,y) plane from origin.

Definition at line 41 of file BaseVolumeHandle.h.

References theRN.

◆ sameSurface()

bool BaseVolumeHandle::sameSurface ( const Surface s1,
Sides  which_side,
float  tolerance = 0.01 
)

Find out if two surfaces are the same physical surface.

Definition at line 101 of file BaseVolumeHandle.cc.

References gather_cfg::cout, debug, mag(), Cone::openingAngle(), LaserDQM_cfg::p1, SiStripOfflineCRack_cfg::p2, Cylinder::radius(), surfaces, tolerance, and Cone::vertex().

Referenced by setSurface().

101  {
102  //Check for null comparison
103  if (&s1 == (surfaces[which_side]).get()) {
104  if (debug)
105  cout << " sameSurface: OK (same ptr)" << endl;
106  return true;
107  }
108 
109  const float maxtilt = 0.999;
110 
111  const Surface &s2 = *(surfaces[which_side]);
112  // Try with a plane.
113  const Plane *p1 = dynamic_cast<const Plane *>(&s1);
114  if (p1 != nullptr) {
115  const Plane *p2 = dynamic_cast<const Plane *>(&s2);
116  if (p2 == nullptr) {
117  if (debug)
118  cout << " sameSurface: different types" << endl;
119  return false;
120  }
121 
122  if ((fabs(p1->normalVector().dot(p2->normalVector())) > maxtilt) &&
123  (fabs((p1->toLocal(p2->position())).z()) < tolerance)) {
124  if (debug)
125  cout << " sameSurface: OK " << fabs(p1->normalVector().dot(p2->normalVector())) << " "
126  << fabs((p1->toLocal(p2->position())).z()) << endl;
127  return true;
128  } else {
129  if (debug)
130  cout << " sameSurface: not the same: " << p1->normalVector() << p1->position() << endl
131  << " " << p2->normalVector() << p2->position() << endl
132  << fabs(p1->normalVector().dot(p2->normalVector())) << " " << (p1->toLocal(p2->position())).z() << endl;
133  return false;
134  }
135  }
136 
137  // Try with a cylinder.
138  const Cylinder *cy1 = dynamic_cast<const Cylinder *>(&s1);
139  if (cy1 != nullptr) {
140  const Cylinder *cy2 = dynamic_cast<const Cylinder *>(&s2);
141  if (cy2 == nullptr) {
142  if (debug)
143  cout << " sameSurface: different types" << endl;
144  return false;
145  }
146  // Assume axis is the same!
147  if (fabs(cy1->radius() - cy2->radius()) < tolerance) {
148  return true;
149  } else {
150  return false;
151  }
152  }
153 
154  // Try with a cone.
155  const Cone *co1 = dynamic_cast<const Cone *>(&s1);
156  if (co1 != nullptr) {
157  const Cone *co2 = dynamic_cast<const Cone *>(&s2);
158  if (co2 == nullptr) {
159  if (debug)
160  cout << " sameSurface: different types" << endl;
161  return false;
162  }
163  // FIXME
164  if (fabs(co1->openingAngle() - co2->openingAngle()) < maxtilt &&
165  (co1->vertex() - co2->vertex()).mag() < tolerance) {
166  return true;
167  } else {
168  return false;
169  }
170  }
171 
172  if (debug)
173  cout << " sameSurface: unknown surfaces..." << endl;
174  return false;
175 }
Definition: Cone.h:17
const double tolerance
Definition: Plane.h:16
Geom::Theta< float > openingAngle() const
Angle of the cone.
Definition: Cone.h:50
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Scalar radius() const
Radius of the cylinder.
Definition: Cylinder.h:64
GlobalPoint vertex() const
Global position of the cone vertex.
Definition: Cone.h:47

◆ setSurface()

bool BaseVolumeHandle::setSurface ( const Surface s1,
Sides  which_side 
)

Assign a shared surface perorming sanity checks.

Definition at line 177 of file BaseVolumeHandle.cc.

References copyno, gather_cfg::cout, debug, createfilelist::int, isAssigned, name, LaserDQM_cfg::p1, SiStripOfflineCRack_cfg::p2, sameSurface(), and surfaces.

177  {
178  //Check for null assignment
179  if (&s1 == (surfaces[which_side]).get()) {
180  isAssigned[which_side] = true;
181  return true;
182  }
183 
184  if (!sameSurface(s1, which_side)) {
185  cout << "***ERROR: setSurface: trying to assign a surface that does not match destination surface. Skipping."
186  << endl;
187  const Surface &s2 = *(surfaces[which_side]);
188  //FIXME: Just planes for the time being!!!
189  const Plane *p1 = dynamic_cast<const Plane *>(&s1);
190  const Plane *p2 = dynamic_cast<const Plane *>(&s2);
191  if (p1 != nullptr && p2 != nullptr)
192  cout << p1->normalVector() << p1->position() << endl << p2->normalVector() << p2->position() << endl;
193  return false;
194  }
195 
196  if (isAssigned[which_side]) {
197  if (&s1 != (surfaces[which_side]).get()) {
198  cout << "*** WARNING BaseVolumeHandle::setSurface: trying to reassign a surface to a different surface instance"
199  << endl;
200  return false;
201  }
202  } else {
203  surfaces[which_side] = &s1;
204  isAssigned[which_side] = true;
205  if (debug)
206  cout << " Volume " << name << " # " << copyno << " Assigned: " << (int)which_side << endl;
207  return true;
208  }
209 
210  return false; // let the compiler be happy
211 }
Definition: Plane.h:16
unsigned short copyno
copy number
std::string name
Name of the volume.
bool sameSurface(const Surface &s1, Sides which_side, float tolerance=0.01)
Find out if two surfaces are the same physical surface.

◆ shape()

virtual DDSolidShape magneticfield::BaseVolumeHandle::shape ( ) const
pure virtual

◆ sides()

virtual std::vector<VolumeSide> magneticfield::BaseVolumeHandle::sides ( ) const
pure virtual

The surfaces and they orientation, as required to build a MagVolume.

Implemented in magneticfield::volumeHandle, and MagGeoBuilderFromDDD::volumeHandle.

◆ surface() [1/2]

const Surface & BaseVolumeHandle::surface ( int  which_side) const

Get the current surface on specified side.

Definition at line 215 of file BaseVolumeHandle.cc.

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

Referenced by maxPhi(), maxZ(), and minZ().

215  {
216  assert(which_side >= 0 && which_side < 6);
217  return *(surfaces[which_side]);
218 }
assert(be >=bs)

◆ surface() [2/2]

const Surface & BaseVolumeHandle::surface ( Sides  which_side) const

Definition at line 213 of file BaseVolumeHandle.cc.

References surfaces.

213 { return *(surfaces[which_side]); }

◆ toExpand()

bool magneticfield::BaseVolumeHandle::toExpand ( ) const
inline

Definition at line 105 of file BaseVolumeHandle.h.

References expand.

Referenced by MagGeoBuilderFromDDD::buildInterpolator().

Member Data Documentation

◆ center_

GlobalPoint magneticfield::BaseVolumeHandle::center_
protected

◆ copyno

unsigned short magneticfield::BaseVolumeHandle::copyno

◆ debug

const bool magneticfield::BaseVolumeHandle::debug
protected

◆ expand

bool magneticfield::BaseVolumeHandle::expand
protected

Definition at line 146 of file BaseVolumeHandle.h.

Referenced by magneticfield::volumeHandle::sides(), and toExpand().

◆ isAssigned

bool magneticfield::BaseVolumeHandle::isAssigned[6]
protected

◆ isIronFlag

bool magneticfield::BaseVolumeHandle::isIronFlag
protected

◆ magFile

std::string magneticfield::BaseVolumeHandle::magFile

◆ magVolume

MagVolume6Faces* magneticfield::BaseVolumeHandle::magVolume

Pointer to the final MagVolume (must be set from outside)

Definition at line 103 of file BaseVolumeHandle.h.

◆ masterSector

int magneticfield::BaseVolumeHandle::masterSector

◆ name

std::string magneticfield::BaseVolumeHandle::name

Name of the volume.

Definition at line 63 of file BaseVolumeHandle.h.

Referenced by ElectronMVAID.ElectronMVAID::__call__(), FWLite.ElectronMVAID::__call__(), dirstructure.Directory::__create_pie_image(), DisplayManager.DisplayManager::__del__(), dqm_interfaces.DirID::__eq__(), dirstructure.Directory::__get_full_path(), dirstructure.Comparison::__get_img_name(), dirstructure.Comparison::__make_image(), core.autovars.NTupleVariable::__repr__(), core.autovars.NTupleObjectType::__repr__(), core.autovars.NTupleObject::__repr__(), core.autovars.NTupleCollection::__repr__(), dirstructure.Directory::__repr__(), dqm_interfaces.DirID::__repr__(), dirstructure.Comparison::__repr__(), config.Service::__setattr__(), config.CFG::__str__(), counter.Counter::__str__(), average.Average::__str__(), FWLite.WorkingPoints::_reformat_cut_definitions(), core.autovars.NTupleObjectType::addSubObjects(), core.autovars.NTupleObjectType::addVariables(), core.autovars.NTupleObjectType::allVars(), dataset.CMSDataset::buildListOfFiles(), dataset.LocalDataset::buildListOfFiles(), dataset.CMSDataset::buildListOfFilesDBS(), dirstructure.Directory::calcStats(), validation.Sample::digest(), python.rootplot.utilities.Hist::divide(), python.rootplot.utilities.Hist::divide_wilson(), DisplayManager.DisplayManager::Draw(), core.autovars.NTupleVariable::fillBranch(), core.autovars.NTupleObject::fillBranches(), core.autovars.NTupleCollection::fillBranchesScalar(), core.autovars.NTupleCollection::fillBranchesVector(), core.autovars.NTupleCollection::get_cpp_declaration(), core.autovars.NTupleCollection::get_cpp_wrapper_class(), core.autovars.NTupleCollection::get_py_wrapper_class(), utils.StatisticalTest::get_status(), production_tasks.Task::getname(), dataset.CMSDataset::getPrimaryDatasetEntries(), dataset.PrivateDataset::getPrimaryDatasetEntries(), VIDSelectorBase.VIDSelectorBase::initialize(), core.autovars.NTupleVariable::makeBranch(), core.autovars.NTupleObject::makeBranches(), core.autovars.NTupleCollection::makeBranchesScalar(), core.autovars.NTupleCollection::makeBranchesVector(), dirstructure.Directory::print_report(), dataset.BaseDataset::printInfo(), dataset.Dataset::printInfo(), production_tasks.MonitorJobs::run(), setSurface(), python.rootplot.utilities.Hist::TGraph(), python.rootplot.utilities.Hist::TH1F(), magneticfield::volumeHandle::volumeHandle(), MagGeoBuilderFromDDD::volumeHandle::volumeHandle(), counter.Counter::write(), and average.Average::write().

◆ refPlane

GloballyPositioned<float>* magneticfield::BaseVolumeHandle::refPlane
protected

◆ surfaces

RCPS magneticfield::BaseVolumeHandle::surfaces[6]
protected

◆ thePhiMin

Geom::Phi<float> magneticfield::BaseVolumeHandle::thePhiMin
protected

Definition at line 134 of file BaseVolumeHandle.h.

Referenced by minPhi().

◆ theRMax

double magneticfield::BaseVolumeHandle::theRMax
protected

◆ theRMin

double magneticfield::BaseVolumeHandle::theRMin
protected

◆ theRN

double magneticfield::BaseVolumeHandle::theRN
protected

◆ volumeno

unsigned short magneticfield::BaseVolumeHandle::volumeno