CMS 3D CMS Logo

DDHGCalModuleAlgo.cc
Go to the documentation of this file.
1 // File: DDHGCalModuleAlgo.cc
3 // Description: Geometry factory class for HGCal (EE and HESil)
5 
6 #include <algorithm>
7 #include <cmath>
8 #include <map>
9 #include <string>
10 #include <unordered_set>
11 #include <vector>
12 
27 
28 //#define EDM_ML_DEBUG
29 using namespace geant_units::operators;
30 
31 class DDHGCalModuleAlgo : public DDAlgorithm {
32 public:
33  // Constructor and Destructor
34  DDHGCalModuleAlgo(); // const std::string & name);
35  ~DDHGCalModuleAlgo() override;
36 
37  void initialize(const DDNumericArguments& nArgs,
38  const DDVectorArguments& vArgs,
39  const DDMapArguments& mArgs,
40  const DDStringArguments& sArgs,
41  const DDStringVectorArguments& vsArgs) override;
42  void execute(DDCompactView& cpv) override;
43 
44 protected:
45  void constructLayers(const DDLogicalPart&, DDCompactView& cpv);
46  double rMax(double z);
47  void positionSensitive(DDLogicalPart& glog, double rin, double rout, DDCompactView& cpv);
48 
49 private:
50  std::vector<std::string> wafer; // Wafers
51  std::vector<std::string> materials; // Materials
52  std::vector<std::string> names; // Names
53  std::vector<double> thick; // Thickness of the material
54  std::vector<int> copyNumber; // Initial copy numbers
55  std::vector<int> layers; // Number of layers in a section
56  std::vector<double> layerThick; // Thickness of each section
57  std::vector<int> layerType; // Type of the layer
58  std::vector<int> layerSense; // COntent of a layer (sensitive?)
59  double zMinBlock; // Starting z-value of the block
60  double rMaxFine; // Maximum r-value for fine wafer
61  double waferW; // Width of the wafer
62  double waferGap; // Gap between 2 wafers
63  int sectors; // Sectors
64  std::vector<double> slopeB; // Slope at the lower R
65  std::vector<double> slopeT; // Slopes at the larger R
66  std::vector<double> zFront; // Starting Z values for the slopes
67  std::vector<double> rMaxFront; // Corresponding rMax's
68  std::string idName; // Name of the "parent" volume.
69  std::string idNameSpace; // Namespace of this and ALL sub-parts
70  std::unordered_set<int> copies; // List of copy #'s
71 };
72 
74 #ifdef EDM_ML_DEBUG
75  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: Creating an instance";
76 #endif
77 }
78 
80 
82  const DDVectorArguments& vArgs,
83  const DDMapArguments&,
84  const DDStringArguments& sArgs,
85  const DDStringVectorArguments& vsArgs) {
86  wafer = vsArgs["WaferName"];
87 #ifdef EDM_ML_DEBUG
88  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: " << wafer.size() << " wafers";
89  for (unsigned int i = 0; i < wafer.size(); ++i)
90  edm::LogVerbatim("HGCalGeom") << "Wafer[" << i << "] " << wafer[i];
91 #endif
92  materials = vsArgs["MaterialNames"];
93  names = vsArgs["VolumeNames"];
94  thick = vArgs["Thickness"];
95  for (unsigned int i = 0; i < materials.size(); ++i) {
96  copyNumber.emplace_back(1);
97  }
98 #ifdef EDM_ML_DEBUG
99  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: " << materials.size() << " types of volumes";
100  for (unsigned int i = 0; i < names.size(); ++i)
101  edm::LogVerbatim("HGCalGeom") << "Volume [" << i << "] " << names[i] << " of thickness " << thick[i]
102  << " filled with " << materials[i] << " first copy number " << copyNumber[i];
103 #endif
104  layers = dbl_to_int(vArgs["Layers"]);
105  layerThick = vArgs["LayerThick"];
106 #ifdef EDM_ML_DEBUG
107  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: " << layers.size() << " blocks";
108  for (unsigned int i = 0; i < layers.size(); ++i)
109  edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] of thickness " << layerThick[i] << " with " << layers[i]
110  << " layers";
111 #endif
112  layerType = dbl_to_int(vArgs["LayerType"]);
113  layerSense = dbl_to_int(vArgs["LayerSense"]);
114 #ifdef EDM_ML_DEBUG
115  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: " << layerType.size() << " layers";
116  for (unsigned int i = 0; i < layerType.size(); ++i)
117  edm::LogVerbatim("HGCalGeom") << "Layer [" << i << "] with material type " << layerType[i] << " sensitive class "
118  << layerSense[i];
119 #endif
120  zMinBlock = nArgs["zMinBlock"];
121  rMaxFine = nArgs["rMaxFine"];
122  waferW = nArgs["waferW"];
123  waferGap = nArgs["waferGap"];
124  sectors = (int)(nArgs["Sectors"]);
125 #ifdef EDM_ML_DEBUG
126  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: zStart " << zMinBlock << " rFineCoarse " << rMaxFine
127  << " wafer width " << waferW << " gap among wafers " << waferGap << " sectors "
128  << sectors;
129 #endif
130  slopeB = vArgs["SlopeBottom"];
131  slopeT = vArgs["SlopeTop"];
132  zFront = vArgs["ZFront"];
133  rMaxFront = vArgs["RMaxFront"];
134 #ifdef EDM_ML_DEBUG
135  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: Bottom slopes " << slopeB[0] << ":" << slopeB[1] << " and "
136  << slopeT.size() << " slopes for top";
137  for (unsigned int i = 0; i < slopeT.size(); ++i)
138  edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] Zmin " << zFront[i] << " Rmax " << rMaxFront[i] << " Slope "
139  << slopeT[i];
140 #endif
141  idNameSpace = DDCurrentNamespace::ns();
142 #ifdef EDM_ML_DEBUG
143  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: NameSpace " << idNameSpace;
144 #endif
145 }
146 
148 // DDHGCalModuleAlgo methods...
150 
152 #ifdef EDM_ML_DEBUG
153  edm::LogVerbatim("HGCalGeom") << "==>> Constructing DDHGCalModuleAlgo...";
154 #endif
155  copies.clear();
156  constructLayers(parent(), cpv);
157 #ifdef EDM_ML_DEBUG
158  edm::LogVerbatim("HGCalGeom") << copies.size() << " different wafer copy numbers";
159 #endif
160  copies.clear();
161 #ifdef EDM_ML_DEBUG
162  edm::LogVerbatim("HGCalGeom") << "<<== End of DDHGCalModuleAlgo construction";
163 #endif
164 }
165 
167 #ifdef EDM_ML_DEBUG
168  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo test: \t\tInside Layers";
169 #endif
170  double zi(zMinBlock);
171  int laymin(0);
172  const double tol(0.01);
173  for (unsigned int i = 0; i < layers.size(); i++) {
174  double zo = zi + layerThick[i];
175  double routF = rMax(zi);
176  int laymax = laymin + layers[i];
177  double zz = zi;
178  double thickTot(0);
179  for (int ly = laymin; ly < laymax; ++ly) {
180  int ii = layerType[ly];
181  int copy = copyNumber[ii];
182  double rinB = (layerSense[ly] == 0) ? (zo * slopeB[0]) : (zo * slopeB[1]);
183  zz += (0.5 * thick[ii]);
184  thickTot += thick[ii];
185 
186  std::string name = "HGCal" + names[ii] + std::to_string(copy);
187 #ifdef EDM_ML_DEBUG
188  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo test: Layer " << ly << ":" << ii << " Front " << zi << ", "
189  << routF << " Back " << zo << ", " << rinB << " superlayer thickness "
190  << layerThick[i];
191 #endif
192  DDName matName(DDSplit(materials[ii]).first, DDSplit(materials[ii]).second);
193  DDMaterial matter(matName);
194  DDLogicalPart glog;
195  if (layerSense[ly] == 0) {
197  double rmax = routF * cos(alpha) - tol;
198  std::vector<double> pgonZ, pgonRin, pgonRout;
199  pgonZ.emplace_back(-0.5 * thick[ii]);
200  pgonZ.emplace_back(0.5 * thick[ii]);
201  pgonRin.emplace_back(rinB);
202  pgonRin.emplace_back(rinB);
203  pgonRout.emplace_back(rmax);
204  pgonRout.emplace_back(rmax);
206  DDName(name, idNameSpace), sectors, -alpha, 2 * geant_units::piRadians, pgonZ, pgonRin, pgonRout);
207  glog = DDLogicalPart(solid.ddname(), matter, solid);
208 #ifdef EDM_ML_DEBUG
209  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: " << solid.name() << " polyhedra of " << sectors
210  << " sectors covering " << convertRadToDeg(-alpha) << ":"
211  << (360.0 + convertRadToDeg(-alpha)) << " with " << pgonZ.size() << " sections";
212  for (unsigned int k = 0; k < pgonZ.size(); ++k)
213  edm::LogVerbatim("HGCalGeom") << "[" << k << "] z " << pgonZ[k] << " R " << pgonRin[k] << ":" << pgonRout[k];
214 #endif
215  } else {
217  DDName(name, idNameSpace), 0.5 * thick[ii], rinB, routF, 0.0, 2 * geant_units::piRadians);
218  glog = DDLogicalPart(solid.ddname(), matter, solid);
219 #ifdef EDM_ML_DEBUG
220  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: " << solid.name() << " Tubs made of " << matName
221  << " of dimensions " << rinB << ", " << routF << ", " << 0.5 * thick[ii]
222  << ", 0.0, 360.0";
223 #endif
224  positionSensitive(glog, rinB, routF, cpv);
225  }
226  DDTranslation r1(0, 0, zz);
227  DDRotation rot;
228  cpv.position(glog, module, copy, r1, rot);
229  ++copyNumber[ii];
230 #ifdef EDM_ML_DEBUG
231  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo test: " << glog.name() << " number " << copy
232  << " positioned in " << module.name() << " at " << r1 << " with " << rot
233  << std::endl;
234 #endif
235  zz += (0.5 * thick[ii]);
236  } // End of loop over layers in a block
237  zi = zo;
238  laymin = laymax;
239  if (fabs(thickTot - layerThick[i]) < 0.00001) {
240  } else if (thickTot > layerThick[i]) {
241  edm::LogError("HGCalGeom") << "Thickness of the partition " << layerThick[i] << " is smaller than thickness "
242  << thickTot << " of all its components **** ERROR ****\n";
243  } else if (thickTot < layerThick[i]) {
244  edm::LogWarning("HGCalGeom") << "Thickness of the partition " << layerThick[i] << " does not match with "
245  << thickTot << " of the components\n";
246  }
247  } // End of loop over blocks
248 }
249 
250 double DDHGCalModuleAlgo::rMax(double z) {
251  double r(0);
252 #ifdef EDM_ML_DEBUG
253  unsigned int ik(0);
254 #endif
255  for (unsigned int k = 0; k < slopeT.size(); ++k) {
256  if (z < zFront[k])
257  break;
258  r = rMaxFront[k] + (z - zFront[k]) * slopeT[k];
259 #ifdef EDM_ML_DEBUG
260  ik = k;
261 #endif
262  }
263 #ifdef EDM_ML_DEBUG
264  edm::LogVerbatim("HGCalGeom") << "rMax : " << z << ":" << ik << ":" << r << std::endl;
265 #endif
266  return r;
267 }
268 
269 void DDHGCalModuleAlgo::positionSensitive(DDLogicalPart& glog, double rin, double rout, DDCompactView& cpv) {
270  double ww = (waferW + waferGap);
271  double dx = 0.5 * ww;
272  double dy = 3.0 * dx * tan(30._deg);
273  double rr = 2.0 * dx * tan(30._deg);
274  int ncol = (int)(2.0 * rout / ww) + 1;
275  int nrow = (int)(rout / (ww * tan(30._deg))) + 1;
276  int incm(0), inrm(0), kount(0);
277 #ifdef EDM_ML_DEBUG
278  edm::LogVerbatim("HGCalGeom") << glog.ddname() << " rout " << rout << " Row " << nrow << " Column " << ncol;
279 #endif
280  for (int nr = -nrow; nr <= nrow; ++nr) {
281  int inr = (nr >= 0) ? nr : -nr;
282  for (int nc = -ncol; nc <= ncol; ++nc) {
283  int inc = (nc >= 0) ? nc : -nc;
284  if (inr % 2 == inc % 2) {
285  double xpos = nc * dx;
286  double ypos = nr * dy;
287  std::pair<int, int> corner = HGCalGeomTools::waferCorner(xpos, ypos, dx, rr, rin, rout, true);
288  if (corner.first == (int)(HGCalParameters::k_CornerSize)) {
289  double rpos = std::sqrt(xpos * xpos + ypos * ypos);
290  DDTranslation tran(xpos, ypos, 0.0);
292  int copy = inr * 100 + inc;
293  if (nc < 0)
294  copy += 10000;
295  if (nr < 0)
296  copy += 100000;
297  DDName name = (rpos < rMaxFine) ? DDName(DDSplit(wafer[0]).first, DDSplit(wafer[0]).second)
298  : DDName(DDSplit(wafer[1]).first, DDSplit(wafer[1]).second);
299  cpv.position(name, glog.ddname(), copy, tran, rotation);
300  if (inc > incm)
301  incm = inc;
302  if (inr > inrm)
303  inrm = inr;
304  kount++;
305  if (copies.count(copy) == 0)
306  copies.insert(copy);
307 #ifdef EDM_ML_DEBUG
308  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: " << name << " number " << copy << " positioned in "
309  << glog.ddname() << " at " << tran << " with " << rotation << std::endl;
310 #endif
311  }
312  }
313  }
314  }
315 #ifdef EDM_ML_DEBUG
316  edm::LogVerbatim("HGCalGeom") << "DDHGCalModuleAlgo: # of columns " << incm << " # of rows " << inrm << " and "
317  << kount << " wafers for " << glog.ddname();
318 #endif
319 }
320 
321 DEFINE_EDM_PLUGIN(DDAlgorithmFactory, DDHGCalModuleAlgo, "hgcal:DDHGCalModuleAlgo");
PluginFactory.h
photonAnalyzer_cfi.rMax
rMax
Definition: photonAnalyzer_cfi.py:91
HGCalGeomTools::waferCorner
static std::pair< int32_t, int32_t > waferCorner(double xpos, double ypos, double r, double R, double rMin, double rMax, bool oldBug=false)
Definition: HGCalGeomTools.cc:219
DDHGCalModuleAlgo::~DDHGCalModuleAlgo
~DDHGCalModuleAlgo() override
Definition: DDHGCalModuleAlgo.cc:79
DDCurrentNamespace.h
mps_fire.i
i
Definition: mps_fire.py:355
geometryCSVtoXML.zz
zz
Definition: geometryCSVtoXML.py:19
MessageLogger.h
DDHGCalModuleAlgo::zFront
std::vector< double > zFront
Definition: DDHGCalModuleAlgo.cc:66
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
DDHGCalModuleAlgo::sectors
int sectors
Definition: DDHGCalModuleAlgo.cc:63
DDName
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
DDHGCalModuleAlgo::wafer
std::vector< std::string > wafer
Definition: DDHGCalModuleAlgo.cc:50
zMuMuMuonUserData.alpha
alpha
zGenParticlesMatch = cms.InputTag(""),
Definition: zMuMuMuonUserData.py:9
findQualityFiles.rr
string rr
Definition: findQualityFiles.py:185
angle_units::operators::convertRadToDeg
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
DDHGCalModuleAlgo::rMax
double rMax(double z)
Definition: DDHGCalModuleAlgo.cc:250
DDSplit.h
DDHGCalModuleAlgo::layerThick
std::vector< double > layerThick
Definition: DDHGCalModuleAlgo.cc:56
HGCalParameters::k_CornerSize
static constexpr uint32_t k_CornerSize
Definition: HGCalParameters.h:38
DDHGCalModuleAlgo::constructLayers
void constructLayers(const DDLogicalPart &, DDCompactView &cpv)
Definition: DDHGCalModuleAlgo.cc:166
distTCMET_cfi.corner
corner
Definition: distTCMET_cfi.py:38
DDHGCalModuleAlgo::idName
std::string idName
Definition: DDHGCalModuleAlgo.cc:68
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:215
DDHGCalModuleAlgo::thick
std::vector< double > thick
Definition: DDHGCalModuleAlgo.cc:53
geant_units::operators
Definition: GeantUnits.h:18
dbl_to_int
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
DDHGCalModuleAlgo::copyNumber
std::vector< int > copyNumber
Definition: DDHGCalModuleAlgo.cc:54
dqmdumpme.first
first
Definition: dqmdumpme.py:55
DDHGCalModuleAlgo::execute
void execute(DDCompactView &cpv) override
Definition: DDHGCalModuleAlgo.cc:151
DDHGCalModuleAlgo
Definition: DDHGCalModuleAlgo.cc:31
DDHGCalModuleAlgo::positionSensitive
void positionSensitive(DDLogicalPart &glog, double rin, double rout, DDCompactView &cpv)
Definition: DDHGCalModuleAlgo.cc:269
DDHGCalModuleAlgo::initialize
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
Definition: DDHGCalModuleAlgo.cc:81
DDHGCalModuleAlgo::rMaxFine
double rMaxFine
Definition: DDHGCalModuleAlgo.cc:60
DDMaterial
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
DDHGCalModuleAlgo::DDHGCalModuleAlgo
DDHGCalModuleAlgo()
Definition: DDHGCalModuleAlgo.cc:73
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
DDHGCalModuleAlgo::zMinBlock
double zMinBlock
Definition: DDHGCalModuleAlgo.cc:59
DDSolidFactory::polyhedra
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:551
names
const std::string names[nVars_]
Definition: PhotonIDValueMapProducer.cc:122
DDTranslation
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
DDCompactView
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:80
DDBase::name
const N & name() const
Definition: DDBase.h:59
DDSolidFactory::tubs
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition: DDSolid.cc:653
DDSolid.h
dqmdumpme.k
k
Definition: dqmdumpme.py:60
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::LogWarning
Definition: MessageLogger.h:141
angle_units::piRadians
constexpr long double piRadians(M_PIl)
idealTransformation.rotation
dictionary rotation
Definition: idealTransformation.py:1
edm::LogError
Definition: MessageLogger.h:183
EgHLTOffHistBins_cfi.nr
nr
Definition: EgHLTOffHistBins_cfi.py:4
DDBase::ddname
const N & ddname() const
Definition: DDBase.h:61
DDHGCalModuleAlgo::materials
std::vector< std::string > materials
Definition: DDHGCalModuleAlgo.cc:51
GeantUnits.h
edmplugin::PluginFactory
Definition: PluginFactory.h:34
DDLogicalPart
A DDLogicalPart aggregates information concerning material, solid and sensitveness ....
Definition: DDLogicalPart.h:93
DDTypes.h
DDHGCalModuleAlgo::waferW
double waferW
Definition: DDHGCalModuleAlgo.cc:61
DDHGCalModuleAlgo::rMaxFront
std::vector< double > rMaxFront
Definition: DDHGCalModuleAlgo.cc:67
DDMaterial.h
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
createfilelist.int
int
Definition: createfilelist.py:10
DDutils.h
DDHGCalModuleAlgo::slopeT
std::vector< double > slopeT
Definition: DDHGCalModuleAlgo.cc:65
edm::LogVerbatim
Definition: MessageLogger.h:297
PVValHelper::dy
Definition: PVValidationHelpers.h:49
DDLogicalPart.h
module
Definition: vlib.h:198
alignCSCRings.r
r
Definition: alignCSCRings.py:93
ReadMapType< double >
HGCalGeomTools.h
DDAlgorithm.h
DDHGCalModuleAlgo::layerSense
std::vector< int > layerSense
Definition: DDHGCalModuleAlgo.cc:58
DDHGCalGeom::constructLayers
void constructLayers(const cms::DDNamespace &ns, const std::vector< std::string > &wafers, const std::vector< std::string > &covers, const std::vector< int > &layerType, const std::vector< int > &layerSense, const std::vector< int > &maxModule, const std::vector< std::string > &names, const std::vector< std::string > &materials, std::vector< int > &copyNumber, const std::vector< double > &layerThick, const double &absorbW, const double &absorbH, const double &waferTot, const double &rMax, const double &rMaxFine, std::unordered_set< int > &copies, int firstLayer, int lastLayer, double zFront, double totalWidth, bool ignoreCenter, dd4hep::Volume &module)
Definition: DDHGCalTBModuleX.cc:21
diffTwoXMLs.r1
r1
Definition: diffTwoXMLs.py:53
DDCurrentNamespace::ns
static std::string & ns()
Definition: DDCurrentNamespace.cc:3
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
DDSolid
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
DDRotation
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:57
DDHGCalModuleAlgo::layerType
std::vector< int > layerType
Definition: DDHGCalModuleAlgo.cc:57
DDHGCalModuleAlgo::slopeB
std::vector< double > slopeB
Definition: DDHGCalModuleAlgo.cc:64
DDHGCalModuleAlgo::idNameSpace
std::string idNameSpace
Definition: DDHGCalModuleAlgo.cc:69
DDHGCalModuleAlgo::copies
std::unordered_set< int > copies
Definition: DDHGCalModuleAlgo.cc:70
initialize
static AlgebraicMatrix initialize()
Definition: BeamSpotTransientTrackingRecHit.cc:24
DDHGCalModuleAlgo::layers
std::vector< int > layers
Definition: DDHGCalModuleAlgo.cc:55
volumeBasedMagneticField_160812_cfi.sectors
sectors
Definition: volumeBasedMagneticField_160812_cfi.py:59
DDAlgorithmFactory.h
HGCalParameters.h
class-composition.parent
parent
Definition: class-composition.py:88
cuy.ii
ii
Definition: cuy.py:590
PVValHelper::dx
Definition: PVValidationHelpers.h:48
hgcalTopologyTester_cfi.layers
layers
Definition: hgcalTopologyTester_cfi.py:8
DDSplit
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
Definition: DDSplit.cc:3
DDCompactView::position
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string &copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
Definition: DDCompactView.cc:66
DDHGCalModuleAlgo::names
std::vector< std::string > names
Definition: DDHGCalModuleAlgo.cc:52
DDHGCalModuleAlgo::waferGap
double waferGap
Definition: DDHGCalModuleAlgo.cc:62