CMS 3D CMS Logo

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

#include <DDHGCalEEAlgo.h>

Inheritance diagram for DDHGCalEEAlgo:

Public Member Functions

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

Protected Member Functions

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

Private Attributes

std::unordered_set< int > copies_
 
std::vector< int > copyNumber_
 
int firstLayer_
 
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_
 
std::string nameSpace_
 
double rMaxFine_
 
std::vector< double > rMaxFront_
 
double rMinThick_
 
int sectors_
 
std::vector< double > slopeB_
 
std::vector< double > slopeT_
 
std::vector< double > thick_
 
std::vector< std::string > wafers_
 
double waferSepar_
 
double waferSize_
 
std::vector< double > zFront_
 
double zMinBlock_
 

Detailed Description

Definition at line 11 of file DDHGCalEEAlgo.h.

Constructor & Destructor Documentation

DDHGCalEEAlgo::DDHGCalEEAlgo ( )

Definition at line 18 of file DDHGCalEEAlgo.cc.

18  {
19 #ifdef EDM_ML_DEBUG
20  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: Creating an instance";
21 #endif
22 }
DDHGCalEEAlgo::~DDHGCalEEAlgo ( )
override

Definition at line 24 of file DDHGCalEEAlgo.cc.

24 {}

Member Function Documentation

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

Definition at line 145 of file DDHGCalEEAlgo.cc.

References alpha, popcon2dropbox::copy(), copyNumber_, funct::cos(), DDBase< N, C >::ddname(), DDSplit(), plotBeamSpotDB::first, mps_fire::i, cuy::ii, gen::k, layers_, layerSense_, layerThick_, layerType_, materials_, dataset::name, DDBase< N, C >::name(), names_, nameSpace_, 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().

146  {
147 
148 #ifdef EDM_ML_DEBUG
149  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: \t\tInside Layers";
150 #endif
151  double zi(zMinBlock_);
152  int laymin(0);
153  const double tol(0.01);
154  for (unsigned int i=0; i<layers_.size(); i++) {
155  double zo = zi + layerThick_[i];
156  double routF = rMax(zi);
157  int laymax = laymin+layers_[i];
158  double zz = zi;
159  double thickTot(0);
160  std::vector<double> pgonZ(2), pgonRin(2), pgonRout(2);
161  for (int ly=laymin; ly<laymax; ++ly) {
162  int ii = layerType_[ly];
163  int copy = copyNumber_[ii];
164  double hthick = 0.5*thick_[ii];
165  double rinB = (layerSense_[ly] == 0) ? (zo*slopeB_[0]) :
166  (zo*slopeB_[1]);
167  zz += hthick;
168  thickTot += thick_[ii];
169 
170  std::string name = "HGCal"+names_[ii]+std::to_string(copy);
171 #ifdef EDM_ML_DEBUG
172  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: Layer " << ly << ":"
173  << ii << " Front " << zi << ", " << routF
174  << " Back " << zo << ", " << rinB
175  << " superlayer thickness "
176  << layerThick_[i];
177 #endif
178  DDName matName(DDSplit(materials_[ii]).first,
179  DDSplit(materials_[ii]).second);
180  DDMaterial matter(matName);
181  DDLogicalPart glog;
182  if (layerSense_[ly] == 0) {
183  double alpha = CLHEP::pi/sectors_;
184  double rmax = routF*cos(alpha) - tol;
185  pgonZ[0] =-hthick; pgonZ[1] = hthick;
186  pgonRin[0] = rinB; pgonRin[1] = rinB;
187  pgonRout[0] = rmax; pgonRout[1] = rmax;
189  sectors_,-alpha,CLHEP::twopi,
190  pgonZ, pgonRin, pgonRout);
191  glog = DDLogicalPart(solid.ddname(), matter, solid);
192 #ifdef EDM_ML_DEBUG
193  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << solid.name()
194  << " polyhedra of " << sectors_
195  << " sectors covering "
196  << -alpha/CLHEP::deg << ":"
197  << (-alpha+CLHEP::twopi)/CLHEP::deg
198  << " with " << pgonZ.size()
199  << " sections and filled with "
200  << matName << ":" << &matter;
201  for (unsigned int k=0; k<pgonZ.size(); ++k)
202  edm::LogVerbatim("HGCalGeom") << "[" << k << "] z " << pgonZ[k]
203  << " R " << pgonRin[k] << ":"
204  << pgonRout[k];
205 #endif
206  } else {
208  hthick, rinB, routF, 0.0,
209  CLHEP::twopi);
210  glog = DDLogicalPart(solid.ddname(), matter, solid);
211 #ifdef EDM_ML_DEBUG
212  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << solid.name()
213  << " Tubs made of " << matName << ":"
214  << &matter << " of dimensions " << rinB
215  << ", " << routF << ", " << hthick
216  << ", 0.0, " << CLHEP::twopi/CLHEP::deg
217  << " and position " << glog.name()
218  << " number " << copy;
219 #endif
220  positionSensitive(glog,rinB,routF,layerSense_[ly],cpv);
221  }
222  DDTranslation r1(0,0,zz);
223  DDRotation rot;
224  cpv.position(glog, module, copy, r1, rot);
225  ++copyNumber_[ii];
226 #ifdef EDM_ML_DEBUG
227  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << glog.name()
228  << " number " << copy << " positioned in "
229  << module.name() << " at " << r1
230  << " with " << rot;
231 #endif
232  zz += hthick;
233  } // End of loop over layers in a block
234  zi = zo;
235  laymin = laymax;
236  if (fabs(thickTot-layerThick_[i]) < 0.00001) {
237  } else if (thickTot > layerThick_[i]) {
238  edm::LogError("HGCalGeom") << "Thickness of the partition "
239  << layerThick_[i] << " is smaller than "
240  << thickTot << ": thickness of all its "
241  << "components **** ERROR ****";
242  } else if (thickTot < layerThick_[i]) {
243  edm::LogWarning("HGCalGeom") << "Thickness of the partition "
244  << layerThick_[i] << " does not match with "
245  << thickTot << " of the components";
246  }
247  } // End of loop over blocks
248 }
std::vector< double > slopeB_
Definition: DDHGCalEEAlgo.h:51
float alpha
Definition: AMPTWrapper.h:95
const N & name() const
Definition: DDBase.h:78
std::vector< double > thick_
Definition: DDHGCalEEAlgo.h:38
std::vector< double > layerThick_
Definition: DDHGCalEEAlgo.h:41
def copy(args, dbName)
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:41
std::vector< int > copyNumber_
Definition: DDHGCalEEAlgo.h:39
std::string nameSpace_
Definition: DDHGCalEEAlgo.h:55
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
std::vector< int > layerSense_
Definition: DDHGCalEEAlgo.h:43
double rMax(double z)
A DDSolid represents the shape of a part.
Definition: DDSolid.h:38
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:67
U second(std::pair< T, U > const &p)
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:92
void positionSensitive(const DDLogicalPart &glog, double rin, double rout, int layertype, DDCompactView &cpv)
std::vector< int > layerType_
Definition: DDHGCalEEAlgo.h:42
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
Definition: DDSolid.cc:986
ii
Definition: cuy.py:588
int k[5][pyjets_maxn]
double zMinBlock_
Definition: DDHGCalEEAlgo.h:45
std::vector< int > layers_
Definition: DDHGCalEEAlgo.h:40
std::vector< std::string > names_
Definition: DDHGCalEEAlgo.h:37
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
std::vector< std::string > materials_
Definition: DDHGCalEEAlgo.h:36
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:846
const N & ddname() const
Definition: DDBase.h:80
void DDHGCalEEAlgo::execute ( DDCompactView cpv)
override

Definition at line 125 of file DDHGCalEEAlgo.cc.

References constructLayers(), copies_, gen::k, and class-composition::parent.

125  {
126 
127 #ifdef EDM_ML_DEBUG
128  edm::LogVerbatim("HGCalGeom") << "==>> Constructing DDHGCalEEAlgo...";
129  copies_.clear();
130 #endif
131  constructLayers (parent(), cpv);
132 #ifdef EDM_ML_DEBUG
133  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << copies_.size()
134  << " different wafer copy numbers";
135  int k(0);
136  for (std::unordered_set<int>::const_iterator itr=copies_.begin();
137  itr != copies_.end(); ++itr,++k) {
138  edm::LogVerbatim("HGCalGeom") << "Copy [" << k << "] : " << (*itr);
139  }
140  copies_.clear();
141  edm::LogVerbatim("HGCalGeom") << "<<== End of DDHGCalEEAlgo construction...";
142 #endif
143 }
std::unordered_set< int > copies_
Definition: DDHGCalEEAlgo.h:56
int k[5][pyjets_maxn]
void constructLayers(const DDLogicalPart &, DDCompactView &cpv)
void DDHGCalEEAlgo::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)
override

Definition at line 26 of file DDHGCalEEAlgo.cc.

References copyNumber_, dbl_to_int(), firstLayer_, mps_fire::i, cuy::ii, createfilelist::int, layers_, layerSense_, layerThick_, layerType_, materials_, names_, nameSpace_, DDCurrentNamespace::ns(), rMaxFine_, rMaxFront_, rMinThick_, sectors_, slopeB_, slopeT_, thick_, wafers_, waferSepar_, waferSize_, zFront_, and zMinBlock_.

30  {
31 
32  wafers_ = vsArgs["WaferNames"];
33 #ifdef EDM_ML_DEBUG
34  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << wafers_.size()
35  << " wafers";
36  for (unsigned int i=0; i<wafers_.size(); ++i)
37  edm::LogVerbatim("HGCalGeom") << "Wafer[" << i << "] " << wafers_[i];
38 #endif
39  materials_ = vsArgs["MaterialNames"];
40  names_ = vsArgs["VolumeNames"];
41  thick_ = vArgs["Thickness"];
42  for (unsigned int i=0; i<materials_.size(); ++i) {
43  copyNumber_.emplace_back(1);
44  }
45 #ifdef EDM_ML_DEBUG
46  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << materials_.size()
47  << " types of volumes";
48  for (unsigned int i=0; i<names_.size(); ++i)
49  edm::LogVerbatim("HGCalGeom") << "Volume [" << i << "] " << names_[i]
50  << " of thickness " << thick_[i]
51  << " filled with " << materials_[i]
52  << " first copy number " << copyNumber_[i];
53 #endif
54  layers_ = dbl_to_int(vArgs["Layers"]);
55  layerThick_ = vArgs["LayerThick"];
56 #ifdef EDM_ML_DEBUG
57  edm::LogVerbatim("HGCalGeom") << "There are " << layers_.size() << " blocks";
58  for (unsigned int i=0; i<layers_.size(); ++i)
59  edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] of thickness "
60  << layerThick_[i]
61  << " with " << layers_[i] << " layers";
62 #endif
63  layerType_ = dbl_to_int(vArgs["LayerType"]);
64  layerSense_ = dbl_to_int(vArgs["LayerSense"]);
65  firstLayer_ = (int)(nArgs["FirstLayer"]);
66  if (firstLayer_ > 0) {
67  for (unsigned int i=0; i<layerType_.size(); ++i) {
68  if (layerSense_[i] != 0) {
69  int ii = layerType_[i];
70  copyNumber_[ii] = firstLayer_;
71 #ifdef EDM_ML_DEBUG
72  edm::LogVerbatim("HGCalGeom") << "First copy number for layer type "
73  << i << ":" << ii << " with "
74  << materials_[ii] << " changed to "
75  << copyNumber_[ii];
76 #endif
77  break;
78  }
79  }
80  }
81 #ifdef EDM_ML_DEBUG
82  edm::LogVerbatim("HGCalGeom") << "There are " << layerType_.size()
83  << " layers" ;
84  for (unsigned int i=0; i<layerType_.size(); ++i)
85  edm::LogVerbatim("HGCalGeom") << "Layer [" << i << "] with material type "
86  << layerType_[i] << " sensitive class "
87  << layerSense_[i];
88 #endif
89  zMinBlock_ = nArgs["zMinBlock"];
90  rMaxFine_ = nArgs["rMaxFine"];
91  rMinThick_ = nArgs["rMinThick"];
92  waferSize_ = nArgs["waferSize"];
93  waferSepar_ = nArgs["SensorSeparation"];
94  sectors_ = (int)(nArgs["Sectors"]);
95 #ifdef EDM_ML_DEBUG
96  edm::LogVerbatim("HGCalGeom") << "zStart " << zMinBlock_ << " rFineCoarse "
97  << rMaxFine_ << " rMaxThick " << rMinThick_
98  << " wafer width " << waferSize_
99  << " separations " << waferSepar_
100  << " sectors " << sectors_;
101 #endif
102  slopeB_ = vArgs["SlopeBottom"];
103  slopeT_ = vArgs["SlopeTop"];
104  zFront_ = vArgs["ZFront"];
105  rMaxFront_ = vArgs["RMaxFront"];
106 #ifdef EDM_ML_DEBUG
107  edm::LogVerbatim("HGCalGeom") << "Bottom slopes " << slopeB_[0] << ":"
108  << slopeB_[1] << " and " << slopeT_.size()
109  << " slopes for top" ;
110  for (unsigned int i=0; i<slopeT_.size(); ++i)
111  edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] Zmin " << zFront_[i]
112  << " Rmax " << rMaxFront_[i] << " Slope "
113  << slopeT_[i];
114 #endif
116 #ifdef EDM_ML_DEBUG
117  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: NameSpace " << nameSpace_;
118 #endif
119 }
std::vector< double > slopeB_
Definition: DDHGCalEEAlgo.h:51
double rMaxFine_
Definition: DDHGCalEEAlgo.h:46
std::vector< double > thick_
Definition: DDHGCalEEAlgo.h:38
std::vector< double > layerThick_
Definition: DDHGCalEEAlgo.h:41
std::vector< int > copyNumber_
Definition: DDHGCalEEAlgo.h:39
std::vector< std::string > wafers_
Definition: DDHGCalEEAlgo.h:35
std::string nameSpace_
Definition: DDHGCalEEAlgo.h:55
double waferSepar_
Definition: DDHGCalEEAlgo.h:49
static std::string & ns()
std::vector< double > slopeT_
Definition: DDHGCalEEAlgo.h:52
std::vector< int > layerSense_
Definition: DDHGCalEEAlgo.h:43
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 > zFront_
Definition: DDHGCalEEAlgo.h:53
double rMinThick_
Definition: DDHGCalEEAlgo.h:47
std::vector< int > layerType_
Definition: DDHGCalEEAlgo.h:42
ii
Definition: cuy.py:588
double zMinBlock_
Definition: DDHGCalEEAlgo.h:45
std::vector< int > layers_
Definition: DDHGCalEEAlgo.h:40
std::vector< std::string > names_
Definition: DDHGCalEEAlgo.h:37
std::vector< std::string > materials_
Definition: DDHGCalEEAlgo.h:36
std::vector< double > rMaxFront_
Definition: DDHGCalEEAlgo.h:54
double waferSize_
Definition: DDHGCalEEAlgo.h:48
void DDHGCalEEAlgo::positionSensitive ( const DDLogicalPart glog,
double  rin,
double  rout,
int  layertype,
DDCompactView cpv 
)
protected

Definition at line 269 of file DDHGCalEEAlgo.cc.

References funct::abs(), copies_, popcon2dropbox::copy(), DDBase< N, C >::ddname(), DDSplit(), PVValHelper::dy, plotBeamSpotDB::first, createfilelist::int, gen::k, N, dataset::name, nin, DDCompactView::position(), dttmaxenums::R, alignCSCRings::r, rMaxFine_, rMinThick_, idealTransformation::rotation, edm::second(), mathSSE::sqrt(), findQualityFiles::v, wafers_, waferSepar_, and waferSize_.

Referenced by constructLayers().

271  {
272  static const double sqrt3 = std::sqrt(3.0);
273  double r = 0.5*(waferSize_ + waferSepar_);
274  double R = 2.0*r/sqrt3;
275  double dy = 0.75*R;
276  int N = (int)(0.5*rout/r) + 2;
277  double xc[6], yc[6];
278 #ifdef EDM_ML_DEBUG
279  int ium(0), ivm(0), iumAll(0), ivmAll(0), kount(0), ntot(0), nin(0);
280  std::vector<int> ntype(6,0);
281  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: " << glog.ddname()
282  << " rout " << rout << " N "
283  << N << " for maximum u, v";
284 #endif
285  for (int u = -N; u <= N; ++u) {
286  int iu = std::abs(u);
287  for (int v = -N; v <= N; ++v) {
288  int iv = std::abs(v);
289  int nr = 2*v;
290  int nc =-2*u+v;
291  double xpos = nc*r;
292  double ypos = nr*dy;
293  xc[0] = xpos+r; yc[0] = ypos+0.5*R;
294  xc[1] = xpos; yc[1] = ypos+R;
295  xc[2] = xpos-r; yc[2] = ypos+0.5*R;
296  xc[3] = xpos-r; yc[3] = ypos-0.5*R;
297  xc[4] = xpos; yc[4] = ypos-R;
298  xc[5] = xpos+r; yc[5] = ypos-0.5*R;
299  bool cornerOne(false), cornerAll(true);
300  for (int k=0; k<6; ++k) {
301  double rpos = std::sqrt(xc[k]*xc[k]+yc[k]*yc[k]);
302  if (rpos >= rin && rpos <= rout) cornerOne = true;
303  else cornerAll = false;
304  }
305 #ifdef EDM_ML_DEBUG
306  ++ntot;
307 #endif
308  if (cornerOne) {
309  int copy = iv*100 + iu;
310  if (u < 0) copy += 10000;
311  if (v < 0) copy += 100000;
312 #ifdef EDM_ML_DEBUG
313  if (iu > ium) ium = iu;
314  if (iv > ivm) ivm = iv;
315  kount++;
316  if (copies_.count(copy) == 0) copies_.insert(copy);
317 #endif
318  if (cornerAll) {
319 #ifdef EDM_ML_DEBUG
320  if (iu > iumAll) iumAll = iu;
321  if (iv > ivmAll) ivmAll = iv;
322  ++nin;
323 #endif
324  double rpos = std::sqrt(xpos*xpos+ypos*ypos);
325  DDTranslation tran(xpos, ypos, 0.0);
327  int type = (rpos < rMaxFine_) ? 0 : ((rpos < rMinThick_) ? 1 : 2);
328  if (layertype > 1) type += 3;
330  DDSplit(wafers_[type]).second);
331  cpv.position(name, glog.ddname(), copy, tran, rotation);
332 #ifdef EDM_ML_DEBUG
333  ++ntype[type];
334  edm::LogVerbatim("HGCalGeom") << " DDHGCalEEAlgo: " << name
335  << " number " << copy
336  << " positioned in " << glog.ddname()
337  << " at " << tran
338  << " with " << rotation;
339 #endif
340  }
341  }
342  }
343  }
344 #ifdef EDM_ML_DEBUG
345  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo: Maximum # of u " << ium
346  << ":" << iumAll << " # of v " << ivm << ":"
347  << ivmAll << " and " << nin << ":" << kount
348  << ":" << ntot << " wafers (" << ntype[0]
349  << ":" << ntype[1] << ":" << ntype[2] << ":"
350  << ntype[3] << ":" << ntype[4] << ":"
351  << ntype[5] << ") for " << glog.ddname()
352  << " R " << rin << ":" << rout;
353 #endif
354 }
type
Definition: HCALResponse.h:21
std::unordered_set< int > copies_
Definition: DDHGCalEEAlgo.h:56
double rMaxFine_
Definition: DDHGCalEEAlgo.h:46
def copy(args, dbName)
std::vector< std::string > wafers_
Definition: DDHGCalEEAlgo.h:35
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
double waferSepar_
Definition: DDHGCalEEAlgo.h:49
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
int nin
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:67
U second(std::pair< T, U > const &p)
double rMinThick_
Definition: DDHGCalEEAlgo.h:47
T sqrt(T t)
Definition: SSEVec.h:18
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int k[5][pyjets_maxn]
#define N
Definition: blowfish.cc:9
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
double waferSize_
Definition: DDHGCalEEAlgo.h:48
const N & ddname() const
Definition: DDBase.h:80
double DDHGCalEEAlgo::rMax ( double  z)
protected

Definition at line 250 of file DDHGCalEEAlgo.cc.

References gen::k, alignCSCRings::r, rMaxFront_, slopeT_, and zFront_.

Referenced by constructLayers().

250  {
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]) break;
257  r = rMaxFront_[k] + (z - zFront_[k]) * slopeT_[k];
258 #ifdef EDM_ML_DEBUG
259  ik = k;
260 #endif
261  }
262 #ifdef EDM_ML_DEBUG
263  edm::LogVerbatim("HGCalGeom") << "DDHGCalEEAlgo:rMax : " << z << ":" << ik
264  << ":" << r;
265 #endif
266  return r;
267 }
std::vector< double > slopeT_
Definition: DDHGCalEEAlgo.h:52
std::vector< double > zFront_
Definition: DDHGCalEEAlgo.h:53
int k[5][pyjets_maxn]
std::vector< double > rMaxFront_
Definition: DDHGCalEEAlgo.h:54

Member Data Documentation

std::unordered_set<int> DDHGCalEEAlgo::copies_
private

Definition at line 56 of file DDHGCalEEAlgo.h.

Referenced by execute(), and positionSensitive().

std::vector<int> DDHGCalEEAlgo::copyNumber_
private

Definition at line 39 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

int DDHGCalEEAlgo::firstLayer_
private

Definition at line 44 of file DDHGCalEEAlgo.h.

Referenced by initialize().

std::vector<int> DDHGCalEEAlgo::layers_
private

Definition at line 40 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

std::vector<int> DDHGCalEEAlgo::layerSense_
private

Definition at line 43 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

std::vector<double> DDHGCalEEAlgo::layerThick_
private

Definition at line 41 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

std::vector<int> DDHGCalEEAlgo::layerType_
private

Definition at line 42 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

std::vector<std::string> DDHGCalEEAlgo::materials_
private

Definition at line 36 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

std::vector<std::string> DDHGCalEEAlgo::names_
private

Definition at line 37 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

std::string DDHGCalEEAlgo::nameSpace_
private

Definition at line 55 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

double DDHGCalEEAlgo::rMaxFine_
private

Definition at line 46 of file DDHGCalEEAlgo.h.

Referenced by initialize(), and positionSensitive().

std::vector<double> DDHGCalEEAlgo::rMaxFront_
private

Definition at line 54 of file DDHGCalEEAlgo.h.

Referenced by initialize(), and rMax().

double DDHGCalEEAlgo::rMinThick_
private

Definition at line 47 of file DDHGCalEEAlgo.h.

Referenced by initialize(), and positionSensitive().

int DDHGCalEEAlgo::sectors_
private

Definition at line 50 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

std::vector<double> DDHGCalEEAlgo::slopeB_
private

Definition at line 51 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

std::vector<double> DDHGCalEEAlgo::slopeT_
private

Definition at line 52 of file DDHGCalEEAlgo.h.

Referenced by initialize(), and rMax().

std::vector<double> DDHGCalEEAlgo::thick_
private

Definition at line 38 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().

std::vector<std::string> DDHGCalEEAlgo::wafers_
private

Definition at line 35 of file DDHGCalEEAlgo.h.

Referenced by initialize(), and positionSensitive().

double DDHGCalEEAlgo::waferSepar_
private

Definition at line 49 of file DDHGCalEEAlgo.h.

Referenced by initialize(), and positionSensitive().

double DDHGCalEEAlgo::waferSize_
private

Definition at line 48 of file DDHGCalEEAlgo.h.

Referenced by initialize(), and positionSensitive().

std::vector<double> DDHGCalEEAlgo::zFront_
private

Definition at line 53 of file DDHGCalEEAlgo.h.

Referenced by initialize(), and rMax().

double DDHGCalEEAlgo::zMinBlock_
private

Definition at line 45 of file DDHGCalEEAlgo.h.

Referenced by constructLayers(), and initialize().