CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Attributes
DDHGCalModule Class Reference

#include <DDHGCalModule.h>

Inheritance diagram for DDHGCalModule:

Public Member Functions

 DDHGCalModule ()
 
void execute (DDCompactView &cpv) override
 
void initialize (const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
 
 ~DDHGCalModule () override
 

Protected Member Functions

void constructLayers (const DDLogicalPart &, DDCompactView &cpv)
 
void positionSensitive (DDLogicalPart &glog, double rin, double rout, DDCompactView &cpv)
 
double rMax (double z)
 

Private Attributes

std::unordered_set< int > copies
 
std::vector< int > copyNumber
 
std::string idName
 
std::string idNameSpace
 
std::vector< int > layers
 
std::vector< int > layerSense
 
std::vector< double > layerThick
 
std::vector< int > layerType
 
std::vector< std::string > materials
 
std::vector< std::string > names
 
double rMaxFine
 
std::vector< double > rMaxFront
 
int sectors
 
std::vector< double > slopeB
 
std::vector< double > slopeT
 
std::vector< double > thick
 
std::vector< std::string > wafer
 
double waferW
 
std::vector< double > zFront
 
double zMinBlock
 

Detailed Description

Definition at line 11 of file DDHGCalModule.h.

Constructor & Destructor Documentation

DDHGCalModule::DDHGCalModule ( )

Definition at line 24 of file DDHGCalModule.cc.

References gather_cfg::cout.

24  {
25 #ifdef EDM_ML_DEBUG
26  std::cout << "DDHGCalModule info: Creating an instance" << std::endl;
27 #endif
28 }
DDHGCalModule::~DDHGCalModule ( )
override

Definition at line 30 of file DDHGCalModule.cc.

30 {}

Member Function Documentation

void DDHGCalModule::constructLayers ( const DDLogicalPart module,
DDCompactView cpv 
)
protected

Definition at line 130 of file DDHGCalModule.cc.

References alpha, popcon2dropbox::copy(), copyNumber, funct::cos(), gather_cfg::cout, DDBase< N, C >::ddname(), DDSplit(), plotBeamSpotDB::first, mps_fire::i, idNameSpace, cuy::ii, gen::k, layers, layerSense, layerThick, layerType, materials, dataset::name, DDBase< N, C >::name(), names, pi, DDSolidFactory::polyhedra(), DDCompactView::position(), positionSensitive(), diffTwoXMLs::r1, rMax(), makeMuonMisalignmentScenario::rot, edm::second(), sectors, slopeB, AlCaHLTBitMon_QueryRunRegistry::string, thick, DDSolidFactory::tubs(), zMinBlock, and geometryCSVtoXML::zz.

Referenced by execute().

131  {
132 
133 #ifdef EDM_ML_DEBUG
134  std::cout << "DDHGCalModule test: \t\tInside Layers" << std::endl;
135 #endif
136  double zi(zMinBlock);
137  int laymin(0);
138  const double tol(0.01);
139  for (unsigned int i=0; i<layers.size(); i++) {
140  double zo = zi + layerThick[i];
141  double routF = rMax(zi);
142  int laymax = laymin+layers[i];
143  double zz = zi;
144  double thickTot(0);
145  for (int ly=laymin; ly<laymax; ++ly) {
146  int ii = layerType[ly];
147  int copy = copyNumber[ii];
148  double rinB = (layerSense[ly] == 0) ? (zo*slopeB[0]) : (zo*slopeB[1]);
149  zz += (0.5*thick[ii]);
150  thickTot += thick[ii];
151 
152  std::string name = "HGCal"+names[ii]+std::to_string(copy);
153 #ifdef EDM_ML_DEBUG
154  std::cout << "DDHGCalModule test: Layer " << ly << ":" << ii
155  << " Front " << zi << ", " << routF << " Back " << zo << ", "
156  << rinB << " superlayer thickness " << layerThick[i]
157  << std::endl;
158 #endif
159  DDName matName(DDSplit(materials[ii]).first,
160  DDSplit(materials[ii]).second);
161  DDMaterial matter(matName);
162  DDLogicalPart glog;
163  if (layerSense[ly] == 0) {
164  double alpha = CLHEP::pi/sectors;
165  double rmax = routF*cos(alpha) - tol;
166  std::vector<double> pgonZ, pgonRin, pgonRout;
167  pgonZ.emplace_back(-0.5*thick[ii]); pgonZ.emplace_back(0.5*thick[ii]);
168  pgonRin.emplace_back(rinB); pgonRin.emplace_back(rinB);
169  pgonRout.emplace_back(rmax); pgonRout.emplace_back(rmax);
171  sectors, -alpha, CLHEP::twopi,
172  pgonZ, pgonRin, pgonRout);
173  glog = DDLogicalPart(solid.ddname(), matter, solid);
174 #ifdef EDM_ML_DEBUG
175  std::cout << "DDHGCalModule test: " << solid.name()
176  << " polyhedra of " << sectors << " sectors covering "
177  << -alpha/CLHEP::deg << ":"
178  << (-alpha+CLHEP::twopi)/CLHEP::deg
179  << " with " << pgonZ.size() << " sections" << std::endl;
180  for (unsigned int k=0; k<pgonZ.size(); ++k)
181  std::cout << "[" << k << "] z " << pgonZ[k] << " R " << pgonRin[k]
182  << ":" << pgonRout[k] << std::endl;
183 #endif
184  } else {
186  0.5*thick[ii], rinB, routF, 0.0,
187  CLHEP::twopi);
188  glog = DDLogicalPart(solid.ddname(), matter, solid);
189 #ifdef EDM_ML_DEBUG
190  std::cout << "DDHGCalModule test: " << solid.name()
191  << " Tubs made of " << matName << " of dimensions " << rinB
192  << ", " << routF << ", " << 0.5*thick[ii] << ", 0.0, "
193  << CLHEP::twopi/CLHEP::deg << std::endl;
194  std::cout << "DDHGCalModule test position in: " << glog.name()
195  << " number " << copy << std::endl;
196 #endif
197  positionSensitive(glog,rinB,routF,cpv);
198  }
199  DDTranslation r1(0,0,zz);
200  DDRotation rot;
201  cpv.position(glog, module, copy, r1, rot);
202  ++copyNumber[ii];
203 #ifdef EDM_ML_DEBUG
204  std::cout << "DDHGCalModule test: " << glog.name() << " number "
205  << copy << " positioned in " << module.name() << " at " << r1
206  << " with " << rot << std::endl;
207 #endif
208  zz += (0.5*thick[ii]);
209  } // End of loop over layers in a block
210  zi = zo;
211  laymin = laymax;
212  if (fabs(thickTot-layerThick[i]) < 0.00001) {
213  } else if (thickTot > layerThick[i]) {
214  edm::LogError("HGCalGeom") << "Thickness of the partition " << layerThick[i]
215  << " is smaller than thickness " << thickTot
216  << " of all its components **** ERROR ****\n";
217  } else if (thickTot < layerThick[i]) {
218  edm::LogWarning("HGCalGeom") << "Thickness of the partition "
219  << layerThick[i] << " does not match with "
220  << thickTot << " of the components\n";
221  }
222  } // End of loop over blocks
223 }
float alpha
Definition: AMPTWrapper.h:95
const N & name() const
Definition: DDBase.h:74
def copy(args, dbName)
double rMax(double z)
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:43
std::vector< int > copyNumber
Definition: DDHGCalModule.h:38
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
std::vector< int > layerSense
Definition: DDHGCalModule.h:42
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
std::vector< int > layers
Definition: DDHGCalModule.h:39
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
const Double_t pi
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:68
U second(std::pair< T, U > const &p)
std::vector< double > slopeB
Definition: DDHGCalModule.h:47
std::vector< std::string > names
Definition: DDHGCalModule.h:36
std::vector< std::string > materials
Definition: DDHGCalModule.h:35
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition: DDSolid.cc:865
std::vector< int > layerType
Definition: DDHGCalModule.h:41
ii
Definition: cuy.py:590
int k[5][pyjets_maxn]
double zMinBlock
Definition: DDHGCalModule.h:43
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
std::vector< double > thick
Definition: DDHGCalModule.h:37
std::vector< double > layerThick
Definition: DDHGCalModule.h:40
void positionSensitive(DDLogicalPart &glog, double rin, double rout, DDCompactView &cpv)
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
std::string idNameSpace
Definition: DDHGCalModule.h:52
static DDSolid polyhedra(const DDName &name, int sides, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polyhedra (refere to Geant3 or Geant4 documentation)
Definition: DDSolid.cc:730
const N & ddname() const
Definition: DDBase.h:76
void DDHGCalModule::execute ( DDCompactView cpv)
override

Definition at line 106 of file DDHGCalModule.cc.

References constructLayers(), copies, gather_cfg::cout, gen::k, and class-composition::parent.

106  {
107 
108 #ifdef EDM_ML_DEBUG
109  std::cout << "==>> Constructing DDHGCalModule..." << std::endl;
110 #endif
111  copies.clear();
112  constructLayers (parent(), cpv);
113 #ifdef EDM_ML_DEBUG
114  std::cout << copies.size() << " different wafer copy numbers" << std::endl;
115  int nk(0), k(0);
116  for (std::unordered_set<int>::const_iterator itr=copies.begin();
117  itr != copies.end(); ++itr,++k) {
118  std::cout << "[" << k << "] : " << (*itr) << " ";
119  ++nk;
120  if (nk == 8) { std::cout << std::endl; nk = 0;}
121  }
122  if (nk > 0) std::cout << std::endl;
123 #endif
124  copies.clear();
125 #ifdef EDM_ML_DEBUG
126  std::cout << "<<== End of DDHGCalModule construction ..." << std::endl;
127 #endif
128 }
std::unordered_set< int > copies
Definition: DDHGCalModule.h:53
int k[5][pyjets_maxn]
void constructLayers(const DDLogicalPart &, DDCompactView &cpv)
void DDHGCalModule::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)
override

Definition at line 32 of file DDHGCalModule.cc.

References copyNumber, gather_cfg::cout, dbl_to_int(), mps_fire::i, idNameSpace, createfilelist::int, layers, layerSense, layerThick, layerType, materials, names, DDCurrentNamespace::ns(), rMaxFine, rMaxFront, sectors, slopeB, slopeT, thick, wafer, waferW, zFront, and zMinBlock.

36  {
37 
38  wafer = vsArgs["WaferName"];
39 #ifdef EDM_ML_DEBUG
40  std::cout << "DDHGCalModule: " << wafer.size() << " wafers" << std::endl;
41  for (unsigned int i=0; i<wafer.size(); ++i)
42  std::cout << "Wafer[" << i << "] " << wafer[i] << std::endl;
43 #endif
44  materials = vsArgs["MaterialNames"];
45  names = vsArgs["VolumeNames"];
46  thick = vArgs["Thickness"];
47  for (unsigned int i=0; i<materials.size(); ++i) {
48  copyNumber.emplace_back(1);
49  }
50 #ifdef EDM_ML_DEBUG
51  std::cout << "DDHGCalModule: " << materials.size()
52  << " types of volumes" << std::endl;
53  for (unsigned int i=0; i<names.size(); ++i)
54  std::cout << "Volume [" << i << "] " << names[i] << " of thickness "
55  << thick[i] << " filled with " << materials[i]
56  << " first copy number " << copyNumber[i] << std::endl;
57 #endif
58  layers = dbl_to_int(vArgs["Layers"]);
59  layerThick = vArgs["LayerThick"];
60 #ifdef EDM_ML_DEBUG
61  std::cout << "DDHGCalModule: " << layers.size() << " blocks" <<std::endl;
62  for (unsigned int i=0; i<layers.size(); ++i)
63  std::cout << "Block [" << i << "] of thickness " << layerThick[i]
64  << " with " << layers[i] << " layers" << std::endl;
65 #endif
66  layerType = dbl_to_int(vArgs["LayerType"]);
67  layerSense = dbl_to_int(vArgs["LayerSense"]);
68 #ifdef EDM_ML_DEBUG
69  std::cout << "DDHGCalModule: " << layerType.size() << " layers"
70  << std::endl;
71  for (unsigned int i=0; i<layerType.size(); ++i)
72  std::cout << "Layer [" << i << "] with material type " << layerType[i]
73  << " sensitive class " << layerSense[i] << std::endl;
74 #endif
75  zMinBlock = nArgs["zMinBlock"];
76  rMaxFine = nArgs["rMaxFine"];
77  waferW = nArgs["waferW"];
78  sectors = (int)(nArgs["Sectors"]);
79 #ifdef EDM_ML_DEBUG
80  std::cout << "DDHGCalModule: zStart " << zMinBlock << " rFineCoarse "
81  << rMaxFine << " wafer width " << waferW << " sectors " << sectors
82  << std::endl;
83 #endif
84  slopeB = vArgs["SlopeBottom"];
85  slopeT = vArgs["SlopeTop"];
86  zFront = vArgs["ZFront"];
87  rMaxFront = vArgs["RMaxFront"];
88 #ifdef EDM_ML_DEBUG
89  std::cout << "DDHGCalModule: Bottom slopes " << slopeB[0] << ":"
90  << slopeB[1] << " and " << slopeT.size() << " slopes for top"
91  << std::endl;
92  for (unsigned int i=0; i<slopeT.size(); ++i)
93  std::cout << "Block [" << i << "] Zmin " << zFront[i] << " Rmax "
94  << rMaxFront[i] << " Slope " << slopeT[i] << std::endl;
95 #endif
97 #ifdef EDM_ML_DEBUG
98  std::cout << "DDHGCalModule: NameSpace " << idNameSpace << std::endl;
99 #endif
100 }
std::vector< int > copyNumber
Definition: DDHGCalModule.h:38
static std::string & ns()
std::vector< std::string > wafer
Definition: DDHGCalModule.h:34
std::vector< int > layerSense
Definition: DDHGCalModule.h:42
std::vector< int > layers
Definition: DDHGCalModule.h:39
std::vector< int > dbl_to_int(const std::vector< double > &vecdbl)
Converts a std::vector of doubles to a std::vector of int.
Definition: DDutils.h:7
std::vector< double > slopeB
Definition: DDHGCalModule.h:47
std::vector< double > slopeT
Definition: DDHGCalModule.h:48
std::vector< std::string > names
Definition: DDHGCalModule.h:36
std::vector< std::string > materials
Definition: DDHGCalModule.h:35
std::vector< double > rMaxFront
Definition: DDHGCalModule.h:50
std::vector< int > layerType
Definition: DDHGCalModule.h:41
double zMinBlock
Definition: DDHGCalModule.h:43
std::vector< double > thick
Definition: DDHGCalModule.h:37
std::vector< double > layerThick
Definition: DDHGCalModule.h:40
std::vector< double > zFront
Definition: DDHGCalModule.h:49
std::string idNameSpace
Definition: DDHGCalModule.h:52
void DDHGCalModule::positionSensitive ( DDLogicalPart glog,
double  rin,
double  rout,
DDCompactView cpv 
)
protected

Definition at line 243 of file DDHGCalModule.cc.

References copies, popcon2dropbox::copy(), TCMET_cfi::corner, gather_cfg::cout, DDBase< N, C >::ddname(), DDSplit(), PVValHelper::dx, PVValHelper::dy, createfilelist::int, HGCalParameters::k_CornerSize, dataset::name, create_public_lumi_plots::ncol, nin, DDCompactView::position(), rMaxFine, idealTransformation::rotation, findQualityFiles::rr, mathSSE::sqrt(), funct::tan(), wafer, HGCalGeomTools::waferCorner(), and waferW.

Referenced by constructLayers().

244  {
245  double dx = 0.5*waferW;
246  double dy = 3.0*dx*tan(30.0*CLHEP::deg);
247  double rr = 2.0*dx*tan(30.0*CLHEP::deg);
248  int ncol = (int)(2.0*rout/waferW) + 1;
249  int nrow = (int)(rout/(waferW*tan(30.0*CLHEP::deg))) + 1;
250  int incm(0), inrm(0), kount(0), ntot(0), nin(0), nfine(0), ncoarse(0);
251 #ifdef EDM_ML_DEBUG
252  std::cout << glog.ddname() << " rout " << rout << " Row " << nrow
253  << " Column " << ncol << std::endl;
254 #endif
255  for (int nr=-nrow; nr <= nrow; ++nr) {
256  int inr = (nr >= 0) ? nr : -nr;
257  for (int nc=-ncol; nc <= ncol; ++nc) {
258  int inc = (nc >= 0) ? nc : -nc;
259  if (inr%2 == inc%2) {
260  double xpos = nc*dx;
261  double ypos = nr*dy;
262  std::pair<int,int> corner =
263  HGCalGeomTools::waferCorner(xpos, ypos, dx, rr, rin, rout, true);
264  ++ntot;
265  if (corner.first > 0) {
266  int copy = inr*100 + inc;
267  if (nc < 0) copy += 10000;
268  if (nr < 0) copy += 100000;
269  if (inc > incm) incm = inc;
270  if (inr > inrm) inrm = inr;
271  kount++;
272  if (copies.count(copy) == 0) copies.insert(copy);
273  if (corner.first == (int)(HGCalParameters::k_CornerSize)) {
274  double rpos = std::sqrt(xpos*xpos+ypos*ypos);
275  DDTranslation tran(xpos, ypos, 0.0);
277  ++nin;
278  DDName name = (rpos < rMaxFine) ?
279  DDName(DDSplit(wafer[0]).first, DDSplit(wafer[0]).second) :
280  DDName(DDSplit(wafer[1]).first, DDSplit(wafer[1]).second);
281  cpv.position(name, glog.ddname(), copy, tran, rotation);
282  if (rpos < rMaxFine) ++nfine;
283  else ++ncoarse;
284 #ifdef EDM_ML_DEBUG
285  std::cout << "DDHGCalModule: " << name << " number " << copy
286  << " positioned in " << glog.ddname() << " at " << tran
287  << " with " << rotation << std::endl;
288 #endif
289  }
290  }
291  }
292  }
293  }
294 #ifdef EDM_ML_DEBUG
295  std::cout << "DDHGCalModule: # of columns " << incm << " # of rows "
296  << inrm << " and " << nin << ":" << kount << ":" << ntot
297  << " wafers (" << nfine << ":" << ncoarse << ") for "
298  << glog.ddname() << " R " << rin << ":" << rout << std::endl;
299 #endif
300 }
def copy(args, dbName)
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
std::vector< std::string > wafer
Definition: DDHGCalModule.h:34
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
int nin
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:68
static std::pair< int32_t, int32_t > waferCorner(double xpos, double ypos, double r, double R, double rMin, double rMax, bool oldBug=false)
T sqrt(T t)
Definition: SSEVec.h:18
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
std::unordered_set< int > copies
Definition: DDHGCalModule.h:53
static uint32_t k_CornerSize
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
const N & ddname() const
Definition: DDBase.h:76
double DDHGCalModule::rMax ( double  z)
protected

Definition at line 225 of file DDHGCalModule.cc.

References gather_cfg::cout, gen::k, alignCSCRings::r, rMaxFront, slopeT, and zFront.

Referenced by constructLayers().

225  {
226  double r(0);
227 #ifdef EDM_ML_DEBUG
228  unsigned int ik(0);
229 #endif
230  for (unsigned int k=0; k<slopeT.size(); ++k) {
231  if (z < zFront[k]) break;
232  r = rMaxFront[k] + (z - zFront[k]) * slopeT[k];
233 #ifdef EDM_ML_DEBUG
234  ik = k;
235 #endif
236  }
237 #ifdef EDM_ML_DEBUG
238  std::cout << "rMax : " << z << ":" << ik << ":" << r << std::endl;
239 #endif
240  return r;
241 }
std::vector< double > slopeT
Definition: DDHGCalModule.h:48
std::vector< double > rMaxFront
Definition: DDHGCalModule.h:50
int k[5][pyjets_maxn]
std::vector< double > zFront
Definition: DDHGCalModule.h:49

Member Data Documentation

std::unordered_set<int> DDHGCalModule::copies
private

Definition at line 53 of file DDHGCalModule.h.

Referenced by execute(), and positionSensitive().

std::vector<int> DDHGCalModule::copyNumber
private

Definition at line 38 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::string DDHGCalModule::idName
private

Definition at line 51 of file DDHGCalModule.h.

std::string DDHGCalModule::idNameSpace
private

Definition at line 52 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::vector<int> DDHGCalModule::layers
private

Definition at line 39 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::vector<int> DDHGCalModule::layerSense
private

Definition at line 42 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::vector<double> DDHGCalModule::layerThick
private

Definition at line 40 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::vector<int> DDHGCalModule::layerType
private

Definition at line 41 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::vector<std::string> DDHGCalModule::materials
private

Definition at line 35 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::vector<std::string> DDHGCalModule::names
private

Definition at line 36 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

double DDHGCalModule::rMaxFine
private

Definition at line 44 of file DDHGCalModule.h.

Referenced by initialize(), and positionSensitive().

std::vector<double> DDHGCalModule::rMaxFront
private

Definition at line 50 of file DDHGCalModule.h.

Referenced by initialize(), and rMax().

int DDHGCalModule::sectors
private

Definition at line 46 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::vector<double> DDHGCalModule::slopeB
private

Definition at line 47 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::vector<double> DDHGCalModule::slopeT
private

Definition at line 48 of file DDHGCalModule.h.

Referenced by initialize(), and rMax().

std::vector<double> DDHGCalModule::thick
private

Definition at line 37 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().

std::vector<std::string> DDHGCalModule::wafer
private

Definition at line 34 of file DDHGCalModule.h.

Referenced by initialize(), and positionSensitive().

double DDHGCalModule::waferW
private

Definition at line 45 of file DDHGCalModule.h.

Referenced by initialize(), and positionSensitive().

std::vector<double> DDHGCalModule::zFront
private

Definition at line 49 of file DDHGCalModule.h.

Referenced by initialize(), and rMax().

double DDHGCalModule::zMinBlock
private

Definition at line 43 of file DDHGCalModule.h.

Referenced by constructLayers(), and initialize().