CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DDEcalEndcapAlgo.cc
Go to the documentation of this file.
1 
3 // File: DDEcalEndcapAlgo.cc
4 // Description: Geometry factory class for Ecal Barrel
6 
7 #include <cmath>
8 #include <algorithm>
9 
15 #include "CLHEP/Units/GlobalSystemOfUnits.h"
16 
17 #include <CLHEP/Geometry/Transform3D.h>
18 
19 // Header files for endcap supercrystal geometry
21 
22 
23 namespace std{} using namespace std;
24 
26  m_idNameSpace ( "" ),
27  m_EEMat ( "" ),
28  m_EEzOff ( 0 ),
29  m_EEQuaName ( "" ),
30  m_EEQuaMat ( "" ),
31  m_EECrysMat ( "" ),
32  m_EEWallMat ( "" ),
33  m_EECrysLength ( 0 ) ,
34  m_EECrysRear ( 0 ) ,
35  m_EECrysFront ( 0 ) ,
36  m_EESCELength ( 0 ) ,
37  m_EESCERear ( 0 ) ,
38  m_EESCEFront ( 0 ) ,
39  m_EESCALength ( 0 ) ,
40  m_EESCARear ( 0 ) ,
41  m_EESCAFront ( 0 ) ,
42  m_EESCAWall ( 0 ) ,
43  m_EESCHLength ( 0 ) ,
44  m_EESCHSide ( 0 ) ,
45  m_EEnSCTypes ( 0 ) ,
46  m_vecEESCProf (),
47  m_EEnColumns ( 0 ),
48  m_vecEEShape (),
49  m_EEnSCCutaway ( 0 ) ,
50  m_vecEESCCutaway (),
51  m_EEnSCquad ( 0 ) ,
52  m_vecEESCCtrs(),
53  m_EEnCRSC ( 0 ) ,
54  m_vecEECRCtrs(),
55  m_cutParms ( 0 ),
56  m_cutBoxName ( "" ),
57  m_envName ( "" ),
58  m_alvName ( "" ),
59  m_intName ( "" ),
60  m_cryName ( "" ),
61  m_PFhalf ( 0 ) ,
62  m_PFfifth ( 0 ) ,
63  m_PF45 ( 0 ) ,
64  m_vecEESCLims (),
65  m_iLength ( 0 ) ,
66  m_iXYOff ( 0 )
67 {
68  edm::LogInfo("EcalGeom") << "DDEcalEndcapAlgo info: Creating an instance" ;
69 }
70 
72 
73 
74 
75 
77  const DDVectorArguments & vArgs,
78  const DDMapArguments & mArgs,
79  const DDStringArguments & sArgs,
80  const DDStringVectorArguments & vsArgs) {
81 
82 // edm::LogInfo("EcalGeom") << "DDEcalEndcapAlgo info: Initialize" ;
84  // TRICK!
85  m_idNameSpace = parent().name().ns();
86  // barrel parent volume
87  m_EEMat = sArgs["EEMat" ] ;
88  m_EEzOff = nArgs["EEzOff" ] ;
89 
90  m_EEQuaName = sArgs["EEQuaName" ] ;
91  m_EEQuaMat = sArgs["EEQuaMat" ] ;
92  m_EECrysMat = sArgs["EECrysMat" ] ;
93  m_EEWallMat = sArgs["EEWallMat" ] ;
94  m_EECrysLength = nArgs["EECrysLength" ] ;
95  m_EECrysRear = nArgs["EECrysRear" ] ;
96  m_EECrysFront = nArgs["EECrysFront" ] ;
97  m_EESCELength = nArgs["EESCELength" ] ;
98  m_EESCERear = nArgs["EESCERear" ] ;
99  m_EESCEFront = nArgs["EESCEFront" ] ;
100  m_EESCALength = nArgs["EESCALength" ] ;
101  m_EESCARear = nArgs["EESCARear" ] ;
102  m_EESCAFront = nArgs["EESCAFront" ] ;
103  m_EESCAWall = nArgs["EESCAWall" ] ;
104  m_EESCHLength = nArgs["EESCHLength" ] ;
105  m_EESCHSide = nArgs["EESCHSide" ] ;
106  m_EEnSCTypes = nArgs["EEnSCTypes"];
107  m_EEnColumns = nArgs["EEnColumns"];
108  m_EEnSCCutaway = nArgs["EEnSCCutaway"];
109  m_EEnSCquad = nArgs["EEnSCquad"];
110  m_EEnCRSC = nArgs["EEnCRSC"];
111  m_vecEESCProf = vArgs["EESCProf"];
112  m_vecEEShape = vArgs["EEShape"];
113  m_vecEESCCutaway = vArgs["EESCCutaway"];
114  m_vecEESCCtrs = vArgs["EESCCtrs"];
115  m_vecEECRCtrs = vArgs["EECRCtrs"];
116 
117  m_cutBoxName = sArgs["EECutBoxName" ] ;
118 
119  m_envName = sArgs["EEEnvName" ] ;
120  m_alvName = sArgs["EEAlvName" ] ;
121  m_intName = sArgs["EEIntName" ] ;
122  m_cryName = sArgs["EECryName" ] ;
123 
124  m_PFhalf = nArgs["EEPFHalf" ] ;
125  m_PFfifth = nArgs["EEPFFifth" ] ;
126  m_PF45 = nArgs["EEPF45" ] ;
127 
128  m_vecEESCLims = vArgs["EESCLims"];
129 
130  m_iLength = nArgs["EEiLength" ] ;
131 
132  m_iXYOff = nArgs["EEiXYOff" ] ;
133 
134 
135 // edm::LogInfo("EcalGeom") << "DDEcalEndcapAlgo info: end initialize" ;
136 }
137 
139 // DDEcalEndcapAlgo methods...
141 
142 
144 DDEcalEndcapAlgo::myrot( const std::string& s,
145  const DDRotationMatrix& r ) const
146 {
147  return DDrot( ddname( m_idNameSpace + ":" + s ), new DDRotationMatrix( r ) ) ;
148 }
149 /*
150 DDRotation
151 DDEcalBarrelAlgo::myrot( const std::string& s,
152  const CLHEP::HepRotation& r ) const
153 {
154  return DDrot( ddname( m_idNameSpace + ":" + s ), new DDRotationMatrix( r.xx(), r.xy(), r.xz(), r.yx(), r.yy(), r.yz(), r.zx(), r.zy(), r.zz() ) ) ;
155 }*/
156 
158 DDEcalEndcapAlgo::ddmat( const std::string& s ) const
159 {
160  return DDMaterial( ddname( s ) ) ;
161 }
162 
163 DDName
164 DDEcalEndcapAlgo::ddname( const std::string& s ) const
165 {
166  const pair<std::string,std::string> temp ( DDSplit(s) ) ;
167  if ( temp.second == "" ) {
168  return DDName( temp.first,
169  m_idNameSpace ) ;
170  } else {
171  return DDName( temp.first, temp.second );
172  }
173 }
174 
175 //-------------------- Endcap SC geometry methods ---------------------
176 
177 void
179 {
180 // Position supercrystals in EE Quadrant
181 // Version: 1.00
182 // Created: 30 July 2007
183 // Last Mod:
184 //---------------------------------------------------------------------
185 
186 //********************************* cutbox for trimming edge SCs
187  const double cutWid ( eeSCERear()/sqrt(2.) ) ;
188  const DDSolid eeCutBox ( DDSolidFactory::box(
189  cutBoxName(),
190  cutWid,
191  cutWid,
192  eeSCELength()/sqrt(2.) ) ) ;
193  m_cutParms = &eeCutBox.parameters() ;
194 //**************************************************************
195 
196 //** fill supercrystal front and rear center positions from xml input
197  for( unsigned int iC ( 0 ) ; iC != (unsigned int) eenSCquad() ; ++iC )
198  {
199  const unsigned int iOff ( 8*iC ) ;
200  const unsigned int ix ( (unsigned int) eevecEESCCtrs()[ iOff + 0 ] ) ;
201  const unsigned int iy ( (unsigned int) eevecEESCCtrs()[ iOff + 1 ] ) ;
202 
203  assert( ix > 0 && ix < 11 && iy >0 && iy < 11 ) ;
204 
205  m_scrFCtr[ ix - 1 ][ iy - 1 ] = DDTranslation( eevecEESCCtrs()[ iOff + 2 ] ,
206  eevecEESCCtrs()[ iOff + 4 ] ,
207  eevecEESCCtrs()[ iOff + 6 ] ) ;
208 
209  m_scrRCtr[ ix - 1 ][ iy - 1 ] = DDTranslation( eevecEESCCtrs()[ iOff + 3 ] ,
210  eevecEESCCtrs()[ iOff + 5 ] ,
211  eevecEESCCtrs()[ iOff + 7 ] ) ;
212  }
213 
214 //** fill crystal front and rear center positions from xml input
215  for( unsigned int iC ( 0 ) ; iC != 25 ; ++iC )
216  {
217  const unsigned int iOff ( 8*iC ) ;
218  const unsigned int ix ( (unsigned int) eevecEECRCtrs()[ iOff + 0 ] ) ;
219  const unsigned int iy ( (unsigned int) eevecEECRCtrs()[ iOff + 1 ] ) ;
220 
221  assert( ix > 0 && ix < 6 && iy >0 && iy < 6 ) ;
222 
223  m_cryFCtr[ ix - 1 ][ iy - 1 ] = DDTranslation( eevecEECRCtrs()[ iOff + 2 ] ,
224  eevecEECRCtrs()[ iOff + 4 ] ,
225  eevecEECRCtrs()[ iOff + 6 ] ) ;
226 
227  m_cryRCtr[ ix - 1 ][ iy - 1 ] = DDTranslation( eevecEECRCtrs()[ iOff + 3 ] ,
228  eevecEECRCtrs()[ iOff + 5 ] ,
229  eevecEECRCtrs()[ iOff + 7 ] ) ;
230  }
231 
232  EECreateCR() ; // make a single crystal just once here
233 
234  for( unsigned int isc ( 0 ); isc<eenSCTypes() ; ++isc )
235  {
236  EECreateSC( isc+1, cpv );
237  }
238 
239  const std::vector<double>& colLimits ( eevecEEShape() );
240 //** Loop over endcap columns
241  for( int icol = 1; icol<=int(eenColumns()); icol++ )
242  {
243 //** Loop over SCs in column, using limits from xml input
244  for( int irow = int(colLimits[2*icol-2]);
245  irow <= int(colLimits[2*icol-1]) ; ++irow )
246  {
247  if( vecEESCLims()[0] <= icol &&
248  vecEESCLims()[1] >= icol &&
249  vecEESCLims()[2] <= irow &&
250  vecEESCLims()[3] >= irow )
251  {
252  // Find SC type (complete or partial) for this location
253  const unsigned int isctype ( EEGetSCType( icol, irow ) );
254 
255  // Create SC as a DDEcalEndcapTrap object and calculate rotation and
256  // translation required to position it in the endcap.
257  DDEcalEndcapTrap scrys( 1, eeSCEFront(), eeSCERear(), eeSCELength() ) ;
258 
259  scrys.moveto( scrFCtr( icol, irow ),
260  scrRCtr( icol, irow ) );
261  scrys.translate( DDTranslation( 0., 0., -eezOff() ) ) ;
262 
263  DDName rname ( envName( isctype ).name()
264  + int_to_string( icol ) + "R" + int_to_string( irow ) ) ;
265 /*
266  edm::LogInfo("EcalGeom") << "Quadrant, SC col/row "
267  << eeQuaName() << " " << icol << " / " << irow << std::endl
268  << " Limits " << int(colLimits[2*icol-2]) << "->" << int(colLimits[2*icol-1]) << std::endl
269  << " SC type = " << isctype << std::endl
270  << " Zoff, Scz = " << eezOff() << " " << sc1.z() << std::endl
271  << " Rotation " << rname << " " << scrys.rotation() << std::endl
272  << " Position " << sccentre << std::endl;
273 */
274  // Position SC in endcap
275  cpv.position( envName( isctype ),
276  eeQuaName(),
277  100*isctype + 10*(icol-1) + (irow-1),
278  scrys.centrePos(),
279  myrot( rname.fullname(), scrys.rotation() ) ) ;
280  }
281  }
282  }
283 }
284 
285 
286 void
287 DDEcalEndcapAlgo::EECreateSC( const unsigned int iSCType ,
288  DDCompactView& cpv )
289 { // EECreateSCType Create SC logical volume of the given type
290 
291  DDRotation noRot ;
292 
293  DDLogicalPart eeSCELog;
294  DDLogicalPart eeSCALog;
295  DDLogicalPart eeSCILog;
296 
297 // edm::LogInfo("EcalGeom") << "EECreateSC: Creating SC envelope" << std::endl;
298 
299  const string anum ( int_to_string(iSCType) ) ;
300 
301  const double eFront ( 0.5*eeSCEFront() ) ;
302  const double eRear ( 0.5*eeSCERear() ) ;
303  const double eAng ( atan((eeSCERear()-eeSCEFront())/(sqrt(2.)*eeSCELength())) ) ;
304  const double ffived ( 45*deg ) ;
305  const double zerod ( 0*deg ) ;
306  DDSolid eeSCEnv ( DDSolidFactory::trap(
307  ( 1 == iSCType ? envName( iSCType ) : addTmp( envName( iSCType ) ) ),
308  0.5*eeSCELength(),
309  eAng,
310  ffived,
311  eFront,
312  eFront,
313  eFront,
314  zerod,
315  eRear,
316  eRear,
317  eRear,
318  zerod ) );
319 
320  const double aFront ( 0.5*eeSCAFront() ) ;
321  const double aRear ( 0.5*eeSCARear() ) ;
322  const double aAng ( atan((eeSCARear()-eeSCAFront())/(sqrt(2.)*eeSCALength())) ) ;
323  const DDSolid eeSCAlv ( DDSolidFactory::trap(
324  ( 1== iSCType ? alvName( iSCType ) : addTmp( alvName( iSCType ) ) ),
325  0.5*eeSCALength(),
326  aAng,
327  ffived,
328  aFront,
329  aFront,
330  aFront,
331  zerod,
332  aRear,
333  aRear,
334  aRear,
335  zerod ) );
336 
337  const double dwall ( eeSCAWall() ) ;
338  const double iFront ( aFront - dwall ) ;
339  const double iRear ( iFront ) ; //aRear - dwall ) ;
340  const double iLen ( iLength() ) ; //0.075*eeSCALength() ) ;
341  const DDSolid eeSCInt ( DDSolidFactory::trap(
342  ( 1==iSCType ? intName( iSCType ) : addTmp( intName( iSCType ) ) ),
343  iLen/2.,
344  atan((eeSCARear()-eeSCAFront())/(sqrt(2.)*eeSCALength())),
345  ffived,
346  iFront,
347  iFront,
348  iFront,
349  zerod,
350  iRear,
351  iRear,
352  iRear,
353  zerod ) );
354 
355  const double dz ( -0.5*( eeSCELength() - eeSCALength() ) ) ;
356  const double dxy ( 0.5* dz * (eeSCERear() - eeSCEFront())/eeSCELength() ) ;
357  const double zIOff ( -( eeSCALength() - iLen )/2. ) ;
358  const double xyIOff ( iXYOff() ) ;
359 
360  if( 1 == iSCType ) // standard SC in this block
361  {
362  eeSCELog = DDLogicalPart( envName( iSCType ), eeMat(), eeSCEnv );
363  eeSCALog = DDLogicalPart( alvName( iSCType ), eeWallMat(), eeSCAlv );
364  eeSCILog = DDLogicalPart( intName( iSCType ), eeMat(), eeSCInt );
365  }
366  else // partial SCs this block: create subtraction volumes as appropriate
367  {
368  const double half ( (*m_cutParms)[0] - eePFHalf() *eeCrysRear() ) ;
369  const double fifth ( (*m_cutParms)[0] + eePFFifth()*eeCrysRear() ) ;
370  const double fac ( eePF45() ) ;
371 
372  const double zmm ( 0*mm ) ;
373 
374  DDTranslation cutTra ( 2 == iSCType ? DDTranslation( zmm, half, zmm ) :
375  ( 3 == iSCType ? DDTranslation( half, zmm, zmm ) :
376  ( 4 == iSCType ? DDTranslation( zmm, -fifth, zmm ) :
377  ( 5 == iSCType ? DDTranslation( -half*fac, -half*fac, zmm ) :
378  DDTranslation( -fifth, zmm, zmm ) ) ) ) ) ;
379 
380  const CLHEP::HepRotationZ cutm ( ffived ) ;
381 
382  DDRotation cutRot ( 5 != iSCType ? noRot : myrot( "EECry5Rot",
383  DDRotationMatrix( cutm.xx(), cutm.xy(), cutm.xz(),
384  cutm.yx(), cutm.yy(), cutm.yz(),
385  cutm.zx(), cutm.zy(), cutm.zz() ) ) ) ;
386 
387  DDSolid eeCutEnv ( DDSolidFactory::subtraction( envName( iSCType ),
388  addTmp( envName( iSCType ) ),
389  cutBoxName(),
390  cutTra,
391  cutRot ) ) ;
392 
393  const DDTranslation extra ( dxy, dxy, dz ) ;
394 
395  DDSolid eeCutAlv ( DDSolidFactory::subtraction( alvName( iSCType ),
396  addTmp( alvName( iSCType ) ),
397  cutBoxName(),
398  cutTra - extra,
399  cutRot ) ) ;
400 
401  const double mySign ( iSCType < 4 ? +1. : -1. ) ;
402 
403  const DDTranslation extraI ( xyIOff + mySign*2*mm,
404  xyIOff + mySign*2*mm, zIOff ) ;
405 
406  DDSolid eeCutInt ( DDSolidFactory::subtraction( intName( iSCType ),
407  addTmp( intName( iSCType ) ),
408  cutBoxName(),
409  cutTra - extraI,
410  cutRot ) ) ;
411 
412  eeSCELog = DDLogicalPart( envName( iSCType ), eeMat() , eeCutEnv ) ;
413  eeSCALog = DDLogicalPart( alvName( iSCType ), eeWallMat(), eeCutAlv ) ;
414  eeSCILog = DDLogicalPart( intName( iSCType ), eeMat() , eeCutInt ) ;
415  }
416 
417 
418  cpv.position( eeSCALog, envName( iSCType ), iSCType*100 + 1, DDTranslation( dxy, dxy, dz ), noRot );
419  cpv.position( eeSCILog, alvName( iSCType ), iSCType*100 + 1, DDTranslation( xyIOff, xyIOff, zIOff), noRot );
420 
421  DDTranslation croffset( 0., 0., 0.) ;
422  EEPositionCRs( alvName( iSCType ), croffset, iSCType, cpv ) ;
423 
424 }
425 
426 unsigned int
427 DDEcalEndcapAlgo::EEGetSCType( const unsigned int iCol,
428  const unsigned int iRow )
429 {
430  unsigned int iType = 1;
431  for( unsigned int ii = 0; ii < (unsigned int)( eenSCCutaway() ) ; ++ii )
432  {
433  if( ( eevecEESCCutaway()[ 3*ii ] == iCol ) &&
434  ( eevecEESCCutaway()[ 3*ii + 1 ] == iRow ) )
435  {
436  iType = int(eevecEESCCutaway()[3*ii+2]);
437 // edm::LogInfo("EcalGeom") << "EEGetSCType: col, row, type = "
438 // << iCol << " " << iRow << " " << iType << std::endl;
439  }
440  }
441  return iType;
442 }
443 
444 void
446 {
447  // EECreateCR Create endcap crystal logical volume
448 
449 // edm::LogInfo("EcalGeom") << "EECreateCR: = " << std::endl;
450 
451  DDSolid EECRSolid (DDSolidFactory::trap(
452  cryName(),
453  0.5*eeCrysLength(),
454  atan((eeCrysRear()-eeCrysFront())/(sqrt(2.)*eeCrysLength())),
455  45.*deg,
456  0.5*eeCrysFront(),0.5*eeCrysFront(),0.5*eeCrysFront(),0.*deg,
457  0.5*eeCrysRear(), 0.5*eeCrysRear(), 0.5*eeCrysRear(),0.*deg ) );
458 
459  DDLogicalPart part ( cryName(), eeCrysMat(), EECRSolid ) ;
460 }
461 
462 void
464  const DDTranslation offset,
465  const int iSCType,
466  DDCompactView& cpv )
467 {
468  // EEPositionCRs Position crystals within parent supercrystal interior volume
469 
470 // edm::LogInfo("EcalGeom") << "EEPositionCRs called " << std::endl;
471 
472  static const unsigned int ncol ( 5 ) ;
473 
474  if( iSCType > 0 &&
475  iSCType <= eenSCTypes() )
476  {
477  const unsigned int icoffset ( ( iSCType - 1 )*ncol - 1 ) ;
478 
479  // Loop over columns of SC
480  for( unsigned int icol ( 1 ); icol <= ncol ; ++icol )
481  {
482  // Get column limits for this SC type from xml input
483  const int ncrcol ( (int) eevecEESCProf()[ icoffset + icol ] ) ;
484 
485  const int imin ( 0 < ncrcol ? 1 : ( 0 > ncrcol ? ncol + ncrcol + 1 : 0 ) ) ;
486  const int imax ( 0 < ncrcol ? ncrcol : ( 0 > ncrcol ? ncol : 0 ) ) ;
487 
488  if( imax>0 )
489  {
490  // Loop over crystals in this row
491  for( int irow ( imin ); irow <= imax ; ++irow )
492  {
493 // edm::LogInfo("EcalGeom") << " type, col, row " << iSCType
494 // << " " << icol << " " << irow << std::endl;
495 
496  // Create crystal as a DDEcalEndcapTrap object and calculate rotation and
497  // translation required to position it in the SC.
498  DDEcalEndcapTrap crystal( 1, eeCrysFront(), eeCrysRear(), eeCrysLength() ) ;
499 
500  crystal.moveto( cryFCtr( icol, irow ) ,
501  cryRCtr( icol, irow ) );
502 
503  DDName rname ( "EECrRoC" + int_to_string( icol ) + "R" + int_to_string( irow ) ) ;
504 
505  cpv.position( cryName(),
506  pName,
507  100*iSCType + 10*( icol - 1 ) + ( irow - 1 ),
508  crystal.centrePos(),
509  myrot( rname.fullname(), crystal.rotation() ) ) ;
510  }
511  }
512  }
513  }
514 }
515 
const std::vector< double > & parameters() const
Don&#39;t use (only meant to be used by DDbox(), DDtub(), ...)
Definition: DDSolid.cc:153
void EEPositionCRs(const DDName pName, const DDTranslation offset, const int iSCType, DDCompactView &cpv)
DDName cutBoxName() const
DDTranslation m_cryFCtr[5][5]
void moveto(const DDTranslation frontCentre, const DDTranslation rearCentre)
const DDTranslation & scrRCtr(unsigned int iRow, unsigned int iCol) const
DDMaterial ddmat(const std::string &s) const
list parent
Definition: dbtoconf.py:74
const std::vector< double > & eevecEESCCtrs() const
std::string m_cutBoxName
DDName addTmp(DDName aName) const
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
double eeSCEFront() const
DDTranslation m_scrRCtr[10][10]
DDName envName(unsigned int i) const
void translate(const DDTranslation trans)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, std::string copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=NULL)
unsigned int EEGetSCType(const unsigned int iCol, const unsigned int iRow)
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:18
std::string m_intName
DDName eeQuaName() const
double iLength() const
static std::string & ns()
void execute(DDCompactView &cpv)
type of data representation of DDCompactView
Definition: DDCompactView.h:81
double eeSCELength() const
double eeSCALength() const
std::string m_EEQuaMat
A DDSolid represents the shape of a part.
Definition: DDSolid.h:42
DDRotation myrot(const std::string &s, const DDRotationMatrix &r) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
double eenSCCutaway() const
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:66
std::string m_idNameSpace
std::vector< double > m_vecEESCLims
DDName cryName() const
const std::vector< double > & vecEESCLims() const
std::string m_EECrysMat
std::string m_envName
double eeCrysLength() const
const std::vector< double > & eevecEESCProf() const
DDMaterial eeWallMat() const
std::string int_to_string(const int &in)
Definition: DDutils.cc:16
double eeCrysRear() const
T sqrt(T t)
Definition: SSEVec.h:28
double eePF45() const
std::string m_EEQuaName
std::string m_cryName
const std::string fullname() const
Definition: DDName.h:56
DDTranslation m_scrFCtr[10][10]
DDName ddname(const std::string &s) const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:95
double eeCrysFront() const
const DDTranslation & cryRCtr(unsigned int iRow, unsigned int iCol) const
static DDSolid trap(const DDName &name, double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
Definition: DDSolid.cc:726
unsigned int offset(bool)
double eenSCquad() const
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Definition: DDSolid.cc:522
const DDTranslation & cryFCtr(unsigned int iRow, unsigned int iCol) const
DDMaterial eeCrysMat() const
DDRotation DDrot(const DDName &name, DDRotationMatrix *rot)
Definition of a uniquely identifiable rotation matrix named by DDName name.
Definition: DDRotation.cc:94
const std::vector< double > & eevecEECRCtrs() const
DDMaterial eeMat() const
double eezOff() const
std::vector< double > m_vecEEShape
DDTranslation m_cryRCtr[5][5]
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs)
part
Definition: HCALResponse.h:21
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
Definition: DDSolid.cc:708
double eePFHalf() const
std::vector< double > m_vecEESCCtrs
double eePFFifth() const
double eenColumns() const
double eeSCAFront() const
std::vector< double > m_vecEECRCtrs
double eeSCARear() const
DDName intName(unsigned int i) const
const DDTranslation & scrFCtr(unsigned int iRow, unsigned int iCol) const
double eenSCTypes() const
virtual ~DDEcalEndcapAlgo()
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:4
string s
Definition: asciidump.py:422
const std::vector< double > & eevecEESCCutaway() const
void EECreateSC(const unsigned int iSCType, DDCompactView &cpv)
std::string m_EEWallMat
std::string m_alvName
DDTranslation centrePos()
DDRotationMatrix rotation()
const std::vector< double > & eevecEEShape() const
const std::vector< double > * m_cutParms
DDName alvName(unsigned int i) const
std::vector< double > m_vecEESCCutaway
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
double eeSCAWall() const
double eeSCERear() const
double iXYOff() const
std::vector< double > m_vecEESCProf