#include <DDEcalEndcapAlgo.h>
Public Types | |
typedef HepGeom::Point3D< double > | Pt3D |
typedef HepGeom::ReflectZ3D | RfZ3D |
typedef HepGeom::Rotate3D | Ro3D |
typedef CLHEP::HepRotation | Rota |
typedef HepGeom::RotateX3D | RoX3D |
typedef HepGeom::RotateY3D | RoY3D |
typedef HepGeom::RotateZ3D | RoZ3D |
typedef HepGeom::Transform3D | Tf3D |
typedef HepGeom::Translate3D | Tl3D |
typedef EcalTrapezoidParameters | Trap |
typedef CLHEP::Hep3Vector | Vec3 |
Public Member Functions | |
DDName | addTmp (DDName aName) const |
DDName | alvName (unsigned int i) const |
const DDTranslation & | cryFCtr (unsigned int iRow, unsigned int iCol) const |
DDName | cryName () const |
const DDTranslation & | cryRCtr (unsigned int iRow, unsigned int iCol) const |
DDName | cutBoxName () const |
DDEcalEndcapAlgo () | |
DDMaterial | ddmat (const std::string &s) const |
DDName | ddname (const std::string &s) const |
void | EECreateCR () |
void | EECreateSC (const unsigned int iSCType, DDCompactView &cpv) |
double | eeCrysFront () const |
double | eeCrysLength () const |
DDMaterial | eeCrysMat () const |
double | eeCrysRear () const |
std::vector< double > | EEGetSCCtrs (const int iCol, const int iRow) |
DDName | EEGetSCName (const int iCol, const int iRow) |
unsigned int | EEGetSCType (const unsigned int iCol, const unsigned int iRow) |
DDMaterial | eeMat () const |
double | eenColumns () const |
double | eenCRSC () const |
double | eenSCCutaway () const |
double | eenSCquad () const |
double | eenSCTypes () const |
double | eePF45 () const |
double | eePFFifth () const |
double | eePFHalf () const |
void | EEPositionCRs (const DDName pName, const DDTranslation offset, const int iSCType, DDCompactView &cpv) |
void | EEPosSC (const int iCol, const int iRow, DDName EEDeeName) |
DDMaterial | eeQuaMat () const |
DDName | eeQuaName () const |
double | eeSCAFront () const |
double | eeSCALength () const |
double | eeSCARear () const |
double | eeSCAWall () const |
double | eeSCEFront () const |
double | eeSCELength () const |
double | eeSCERear () const |
double | eeSCHLength () const |
double | eeSCHSide () const |
const std::vector< double > & | eevecEECRCtrs () const |
const std::vector< double > & | eevecEESCCtrs () const |
const std::vector< double > & | eevecEESCCutaway () const |
const std::vector< double > & | eevecEESCProf () const |
const std::vector< double > & | eevecEEShape () const |
DDMaterial | eeWallMat () const |
double | eezOff () const |
DDName | envName (unsigned int i) const |
void | execute (DDCompactView &cpv) |
const std::string & | idNameSpace () const |
double | iLength () const |
void | initialize (const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) |
DDName | intName (unsigned int i) const |
double | iXYOff () const |
DDRotation | myrot (const std::string &s, const DDRotationMatrix &r) const |
const DDTranslation & | scrFCtr (unsigned int iRow, unsigned int iCol) const |
const DDTranslation & | scrRCtr (unsigned int iRow, unsigned int iCol) const |
const std::vector< double > & | vecEESCLims () const |
virtual | ~DDEcalEndcapAlgo () |
Private Attributes | |
std::string | m_alvName |
DDTranslation | m_cryFCtr [5][5] |
std::string | m_cryName |
DDTranslation | m_cryRCtr [5][5] |
std::string | m_cutBoxName |
const std::vector< double > * | m_cutParms |
double | m_EECrysFront |
double | m_EECrysLength |
std::string | m_EECrysMat |
double | m_EECrysRear |
std::string | m_EEMat |
double | m_EEnColumns |
double | m_EEnCRSC |
double | m_EEnSCCutaway |
double | m_EEnSCquad |
double | m_EEnSCTypes |
std::string | m_EEQuaMat |
std::string | m_EEQuaName |
double | m_EESCAFront |
double | m_EESCALength |
double | m_EESCARear |
double | m_EESCAWall |
double | m_EESCEFront |
double | m_EESCELength |
double | m_EESCERear |
double | m_EESCHLength |
double | m_EESCHSide |
std::string | m_EEWallMat |
double | m_EEzOff |
std::string | m_envName |
std::string | m_idNameSpace |
double | m_iLength |
std::string | m_intName |
double | m_iXYOff |
double | m_PF45 |
double | m_PFfifth |
double | m_PFhalf |
DDTranslation | m_scrFCtr [10][10] |
DDTranslation | m_scrRCtr [10][10] |
std::vector< double > | m_vecEECRCtrs |
std::vector< double > | m_vecEESCCtrs |
std::vector< double > | m_vecEESCCutaway |
std::vector< double > | m_vecEESCLims |
std::vector< double > | m_vecEESCProf |
std::vector< double > | m_vecEEShape |
Definition at line 18 of file DDEcalEndcapAlgo.h.
typedef HepGeom::Point3D<double> DDEcalEndcapAlgo::Pt3D |
Definition at line 22 of file DDEcalEndcapAlgo.h.
typedef HepGeom::ReflectZ3D DDEcalEndcapAlgo::RfZ3D |
Definition at line 24 of file DDEcalEndcapAlgo.h.
typedef HepGeom::Rotate3D DDEcalEndcapAlgo::Ro3D |
Definition at line 26 of file DDEcalEndcapAlgo.h.
typedef CLHEP::HepRotation DDEcalEndcapAlgo::Rota |
Definition at line 32 of file DDEcalEndcapAlgo.h.
typedef HepGeom::RotateX3D DDEcalEndcapAlgo::RoX3D |
Definition at line 29 of file DDEcalEndcapAlgo.h.
typedef HepGeom::RotateY3D DDEcalEndcapAlgo::RoY3D |
Definition at line 28 of file DDEcalEndcapAlgo.h.
typedef HepGeom::RotateZ3D DDEcalEndcapAlgo::RoZ3D |
Definition at line 27 of file DDEcalEndcapAlgo.h.
typedef HepGeom::Transform3D DDEcalEndcapAlgo::Tf3D |
Definition at line 23 of file DDEcalEndcapAlgo.h.
typedef HepGeom::Translate3D DDEcalEndcapAlgo::Tl3D |
Definition at line 25 of file DDEcalEndcapAlgo.h.
Definition at line 21 of file DDEcalEndcapAlgo.h.
typedef CLHEP::Hep3Vector DDEcalEndcapAlgo::Vec3 |
Definition at line 31 of file DDEcalEndcapAlgo.h.
DDEcalEndcapAlgo::DDEcalEndcapAlgo | ( | ) |
Definition at line 25 of file DDEcalEndcapAlgo.cc.
: m_idNameSpace ( "" ), m_EEMat ( "" ), m_EEzOff ( 0 ), m_EEQuaName ( "" ), m_EEQuaMat ( "" ), m_EECrysMat ( "" ), m_EEWallMat ( "" ), m_EECrysLength ( 0 ) , m_EECrysRear ( 0 ) , m_EECrysFront ( 0 ) , m_EESCELength ( 0 ) , m_EESCERear ( 0 ) , m_EESCEFront ( 0 ) , m_EESCALength ( 0 ) , m_EESCARear ( 0 ) , m_EESCAFront ( 0 ) , m_EESCAWall ( 0 ) , m_EESCHLength ( 0 ) , m_EESCHSide ( 0 ) , m_EEnSCTypes ( 0 ) , m_vecEESCProf (), m_EEnColumns ( 0 ), m_vecEEShape (), m_EEnSCCutaway ( 0 ) , m_vecEESCCutaway (), m_EEnSCquad ( 0 ) , m_vecEESCCtrs(), m_EEnCRSC ( 0 ) , m_vecEECRCtrs(), m_cutParms ( 0 ), m_cutBoxName ( "" ), m_envName ( "" ), m_alvName ( "" ), m_intName ( "" ), m_cryName ( "" ), m_PFhalf ( 0 ) , m_PFfifth ( 0 ) , m_PF45 ( 0 ) , m_vecEESCLims (), m_iLength ( 0 ) , m_iXYOff ( 0 ) { edm::LogInfo("EcalGeom") << "DDEcalEndcapAlgo info: Creating an instance" ; }
DDEcalEndcapAlgo::~DDEcalEndcapAlgo | ( | ) | [virtual] |
Definition at line 71 of file DDEcalEndcapAlgo.cc.
{}
Definition at line 119 of file DDEcalEndcapAlgo.h.
References ddname(), and DDName::name().
Referenced by EECreateSC().
DDName DDEcalEndcapAlgo::alvName | ( | unsigned int | i | ) | const [inline] |
Definition at line 115 of file DDEcalEndcapAlgo.h.
References ddname(), int_to_string(), and m_alvName.
Referenced by EECreateSC().
{ return ddname( m_alvName + int_to_string(i) ) ; }
const DDTranslation& DDEcalEndcapAlgo::cryFCtr | ( | unsigned int | iRow, |
unsigned int | iCol | ||
) | const [inline] |
Definition at line 121 of file DDEcalEndcapAlgo.h.
References m_cryFCtr.
Referenced by EEPositionCRs().
{ return m_cryFCtr[iRow-1][iCol-1] ; }
DDName DDEcalEndcapAlgo::cryName | ( | ) | const [inline] |
Definition at line 117 of file DDEcalEndcapAlgo.h.
References ddname(), and m_cryName.
Referenced by EECreateCR(), and EEPositionCRs().
const DDTranslation& DDEcalEndcapAlgo::cryRCtr | ( | unsigned int | iRow, |
unsigned int | iCol | ||
) | const [inline] |
Definition at line 124 of file DDEcalEndcapAlgo.h.
References m_cryRCtr.
Referenced by EEPositionCRs().
{ return m_cryRCtr[iRow-1][iCol-1] ; }
DDName DDEcalEndcapAlgo::cutBoxName | ( | ) | const [inline] |
Definition at line 109 of file DDEcalEndcapAlgo.h.
References ddname(), and m_cutBoxName.
Referenced by EECreateSC(), and execute().
{ return ddname( m_cutBoxName ) ; }
DDMaterial DDEcalEndcapAlgo::ddmat | ( | const std::string & | s | ) | const |
Definition at line 158 of file DDEcalEndcapAlgo.cc.
References ddname().
Referenced by eeCrysMat(), eeMat(), eeQuaMat(), and eeWallMat().
{ return DDMaterial( ddname( s ) ) ; }
DDName DDEcalEndcapAlgo::ddname | ( | const std::string & | s | ) | const |
Definition at line 164 of file DDEcalEndcapAlgo.cc.
References DDSplit(), m_idNameSpace, and cond::rpcobtemp::temp.
Referenced by addTmp(), alvName(), cryName(), cutBoxName(), ddmat(), eeQuaName(), envName(), intName(), and myrot().
void DDEcalEndcapAlgo::EECreateCR | ( | ) |
Definition at line 445 of file DDEcalEndcapAlgo.cc.
References cryName(), eeCrysFront(), eeCrysLength(), eeCrysMat(), eeCrysRear(), mathSSE::sqrt(), and DDSolidFactory::trap().
Referenced by execute().
{ // EECreateCR Create endcap crystal logical volume // edm::LogInfo("EcalGeom") << "EECreateCR: = " << std::endl; DDSolid EECRSolid (DDSolidFactory::trap( cryName(), 0.5*eeCrysLength(), atan((eeCrysRear()-eeCrysFront())/(sqrt(2.)*eeCrysLength())), 45.*deg, 0.5*eeCrysFront(),0.5*eeCrysFront(),0.5*eeCrysFront(),0.*deg, 0.5*eeCrysRear(), 0.5*eeCrysRear(), 0.5*eeCrysRear(),0.*deg ) ); DDLogicalPart part ( cryName(), eeCrysMat(), EECRSolid ) ; }
void DDEcalEndcapAlgo::EECreateSC | ( | const unsigned int | iSCType, |
DDCompactView & | cpv | ||
) |
Definition at line 287 of file DDEcalEndcapAlgo.cc.
References addTmp(), alvName(), cutBoxName(), eeCrysRear(), eeMat(), eePF45(), eePFFifth(), eePFHalf(), EEPositionCRs(), eeSCAFront(), eeSCALength(), eeSCARear(), eeSCAWall(), eeSCEFront(), eeSCELength(), eeSCERear(), eeWallMat(), envName(), iLength(), int_to_string(), intName(), iXYOff(), m_cutParms, myrot(), DDCompactView::position(), mathSSE::sqrt(), DDSolidFactory::subtraction(), and DDSolidFactory::trap().
Referenced by execute().
{ // EECreateSCType Create SC logical volume of the given type DDRotation noRot ; DDLogicalPart eeSCELog; DDLogicalPart eeSCALog; DDLogicalPart eeSCILog; // edm::LogInfo("EcalGeom") << "EECreateSC: Creating SC envelope" << std::endl; const string anum ( int_to_string(iSCType) ) ; const double eFront ( 0.5*eeSCEFront() ) ; const double eRear ( 0.5*eeSCERear() ) ; const double eAng ( atan((eeSCERear()-eeSCEFront())/(sqrt(2.)*eeSCELength())) ) ; const double ffived ( 45*deg ) ; const double zerod ( 0*deg ) ; DDSolid eeSCEnv ( DDSolidFactory::trap( ( 1 == iSCType ? envName( iSCType ) : addTmp( envName( iSCType ) ) ), 0.5*eeSCELength(), eAng, ffived, eFront, eFront, eFront, zerod, eRear, eRear, eRear, zerod ) ); const double aFront ( 0.5*eeSCAFront() ) ; const double aRear ( 0.5*eeSCARear() ) ; const double aAng ( atan((eeSCARear()-eeSCAFront())/(sqrt(2.)*eeSCALength())) ) ; const DDSolid eeSCAlv ( DDSolidFactory::trap( ( 1== iSCType ? alvName( iSCType ) : addTmp( alvName( iSCType ) ) ), 0.5*eeSCALength(), aAng, ffived, aFront, aFront, aFront, zerod, aRear, aRear, aRear, zerod ) ); const double dwall ( eeSCAWall() ) ; const double iFront ( aFront - dwall ) ; const double iRear ( iFront ) ; //aRear - dwall ) ; const double iLen ( iLength() ) ; //0.075*eeSCALength() ) ; const DDSolid eeSCInt ( DDSolidFactory::trap( ( 1==iSCType ? intName( iSCType ) : addTmp( intName( iSCType ) ) ), iLen/2., atan((eeSCARear()-eeSCAFront())/(sqrt(2.)*eeSCALength())), ffived, iFront, iFront, iFront, zerod, iRear, iRear, iRear, zerod ) ); const double dz ( -0.5*( eeSCELength() - eeSCALength() ) ) ; const double dxy ( 0.5* dz * (eeSCERear() - eeSCEFront())/eeSCELength() ) ; const double zIOff ( -( eeSCALength() - iLen )/2. ) ; const double xyIOff ( iXYOff() ) ; if( 1 == iSCType ) // standard SC in this block { eeSCELog = DDLogicalPart( envName( iSCType ), eeMat(), eeSCEnv ); eeSCALog = DDLogicalPart( alvName( iSCType ), eeWallMat(), eeSCAlv ); eeSCILog = DDLogicalPart( intName( iSCType ), eeMat(), eeSCInt ); } else // partial SCs this block: create subtraction volumes as appropriate { const double half ( (*m_cutParms)[0] - eePFHalf() *eeCrysRear() ) ; const double fifth ( (*m_cutParms)[0] + eePFFifth()*eeCrysRear() ) ; const double fac ( eePF45() ) ; const double zmm ( 0*mm ) ; DDTranslation cutTra ( 2 == iSCType ? DDTranslation( zmm, half, zmm ) : ( 3 == iSCType ? DDTranslation( half, zmm, zmm ) : ( 4 == iSCType ? DDTranslation( zmm, -fifth, zmm ) : ( 5 == iSCType ? DDTranslation( -half*fac, -half*fac, zmm ) : DDTranslation( -fifth, zmm, zmm ) ) ) ) ) ; const CLHEP::HepRotationZ cutm ( ffived ) ; DDRotation cutRot ( 5 != iSCType ? noRot : myrot( "EECry5Rot", DDRotationMatrix( cutm.xx(), cutm.xy(), cutm.xz(), cutm.yx(), cutm.yy(), cutm.yz(), cutm.zx(), cutm.zy(), cutm.zz() ) ) ) ; DDSolid eeCutEnv ( DDSolidFactory::subtraction( envName( iSCType ), addTmp( envName( iSCType ) ), cutBoxName(), cutTra, cutRot ) ) ; const DDTranslation extra ( dxy, dxy, dz ) ; DDSolid eeCutAlv ( DDSolidFactory::subtraction( alvName( iSCType ), addTmp( alvName( iSCType ) ), cutBoxName(), cutTra - extra, cutRot ) ) ; const double mySign ( iSCType < 4 ? +1. : -1. ) ; const DDTranslation extraI ( xyIOff + mySign*2*mm, xyIOff + mySign*2*mm, zIOff ) ; DDSolid eeCutInt ( DDSolidFactory::subtraction( intName( iSCType ), addTmp( intName( iSCType ) ), cutBoxName(), cutTra - extraI, cutRot ) ) ; eeSCELog = DDLogicalPart( envName( iSCType ), eeMat() , eeCutEnv ) ; eeSCALog = DDLogicalPart( alvName( iSCType ), eeWallMat(), eeCutAlv ) ; eeSCILog = DDLogicalPart( intName( iSCType ), eeMat() , eeCutInt ) ; } cpv.position( eeSCALog, envName( iSCType ), iSCType*100 + 1, DDTranslation( dxy, dxy, dz ), noRot ); cpv.position( eeSCILog, alvName( iSCType ), iSCType*100 + 1, DDTranslation( xyIOff, xyIOff, zIOff), noRot ); DDTranslation croffset( 0., 0., 0.) ; EEPositionCRs( alvName( iSCType ), croffset, iSCType, cpv ) ; }
double DDEcalEndcapAlgo::eeCrysFront | ( | ) | const [inline] |
Definition at line 87 of file DDEcalEndcapAlgo.h.
References m_EECrysFront.
Referenced by EECreateCR(), and EEPositionCRs().
{ return m_EECrysFront ; }
double DDEcalEndcapAlgo::eeCrysLength | ( | ) | const [inline] |
Definition at line 85 of file DDEcalEndcapAlgo.h.
References m_EECrysLength.
Referenced by EECreateCR(), and EEPositionCRs().
{ return m_EECrysLength ; }
DDMaterial DDEcalEndcapAlgo::eeCrysMat | ( | ) | const [inline] |
Definition at line 82 of file DDEcalEndcapAlgo.h.
References ddmat(), and m_EECrysMat.
Referenced by EECreateCR().
{ return ddmat( m_EECrysMat ) ; }
double DDEcalEndcapAlgo::eeCrysRear | ( | ) | const [inline] |
Definition at line 86 of file DDEcalEndcapAlgo.h.
References m_EECrysRear.
Referenced by EECreateCR(), EECreateSC(), and EEPositionCRs().
{ return m_EECrysRear ; }
std::vector<double> DDEcalEndcapAlgo::EEGetSCCtrs | ( | const int | iCol, |
const int | iRow | ||
) |
DDName DDEcalEndcapAlgo::EEGetSCName | ( | const int | iCol, |
const int | iRow | ||
) |
unsigned int DDEcalEndcapAlgo::EEGetSCType | ( | const unsigned int | iCol, |
const unsigned int | iRow | ||
) |
Definition at line 427 of file DDEcalEndcapAlgo.cc.
References eenSCCutaway(), and eevecEESCCutaway().
Referenced by execute().
{ unsigned int iType = 1; for( unsigned int ii = 0; ii < (unsigned int)( eenSCCutaway() ) ; ++ii ) { if( ( eevecEESCCutaway()[ 3*ii ] == iCol ) && ( eevecEESCCutaway()[ 3*ii + 1 ] == iRow ) ) { iType = int(eevecEESCCutaway()[3*ii+2]); // edm::LogInfo("EcalGeom") << "EEGetSCType: col, row, type = " // << iCol << " " << iRow << " " << iType << std::endl; } } return iType; }
DDMaterial DDEcalEndcapAlgo::eeMat | ( | ) | const [inline] |
Definition at line 76 of file DDEcalEndcapAlgo.h.
References ddmat(), and m_EEMat.
Referenced by EECreateSC().
double DDEcalEndcapAlgo::eenColumns | ( | ) | const [inline] |
Definition at line 99 of file DDEcalEndcapAlgo.h.
References m_EEnColumns.
Referenced by execute().
{ return m_EEnColumns ; }
double DDEcalEndcapAlgo::eenCRSC | ( | ) | const [inline] |
double DDEcalEndcapAlgo::eenSCCutaway | ( | ) | const [inline] |
Definition at line 100 of file DDEcalEndcapAlgo.h.
References m_EEnSCCutaway.
Referenced by EEGetSCType().
{ return m_EEnSCCutaway ; }
double DDEcalEndcapAlgo::eenSCquad | ( | ) | const [inline] |
Definition at line 101 of file DDEcalEndcapAlgo.h.
References m_EEnSCquad.
Referenced by execute().
{ return m_EEnSCquad ; }
double DDEcalEndcapAlgo::eenSCTypes | ( | ) | const [inline] |
Definition at line 98 of file DDEcalEndcapAlgo.h.
References m_EEnSCTypes.
Referenced by EEPositionCRs(), and execute().
{ return m_EEnSCTypes ; }
double DDEcalEndcapAlgo::eePF45 | ( | ) | const [inline] |
Definition at line 112 of file DDEcalEndcapAlgo.h.
References m_PF45.
Referenced by EECreateSC().
{ return m_PF45 ; }
double DDEcalEndcapAlgo::eePFFifth | ( | ) | const [inline] |
Definition at line 111 of file DDEcalEndcapAlgo.h.
References m_PFfifth.
Referenced by EECreateSC().
{ return m_PFfifth ; }
double DDEcalEndcapAlgo::eePFHalf | ( | ) | const [inline] |
Definition at line 110 of file DDEcalEndcapAlgo.h.
References m_PFhalf.
Referenced by EECreateSC().
{ return m_PFhalf ; }
void DDEcalEndcapAlgo::EEPositionCRs | ( | const DDName | pName, |
const DDTranslation | offset, | ||
const int | iSCType, | ||
DDCompactView & | cpv | ||
) |
Definition at line 463 of file DDEcalEndcapAlgo.cc.
References DDEcalEndcapTrap::centrePos(), cryFCtr(), cryName(), cryRCtr(), eeCrysFront(), eeCrysLength(), eeCrysRear(), eenSCTypes(), eevecEESCProf(), DDName::fullname(), int_to_string(), DDEcalEndcapTrap::moveto(), myrot(), DDCompactView::position(), and DDEcalEndcapTrap::rotation().
Referenced by EECreateSC().
{ // EEPositionCRs Position crystals within parent supercrystal interior volume // edm::LogInfo("EcalGeom") << "EEPositionCRs called " << std::endl; static const unsigned int ncol ( 5 ) ; if( iSCType > 0 && iSCType <= eenSCTypes() ) { const unsigned int icoffset ( ( iSCType - 1 )*ncol - 1 ) ; // Loop over columns of SC for( unsigned int icol ( 1 ); icol <= ncol ; ++icol ) { // Get column limits for this SC type from xml input const int ncrcol ( (int) eevecEESCProf()[ icoffset + icol ] ) ; const int imin ( 0 < ncrcol ? 1 : ( 0 > ncrcol ? ncol + ncrcol + 1 : 0 ) ) ; const int imax ( 0 < ncrcol ? ncrcol : ( 0 > ncrcol ? ncol : 0 ) ) ; if( imax>0 ) { // Loop over crystals in this row for( int irow ( imin ); irow <= imax ; ++irow ) { // edm::LogInfo("EcalGeom") << " type, col, row " << iSCType // << " " << icol << " " << irow << std::endl; // Create crystal as a DDEcalEndcapTrap object and calculate rotation and // translation required to position it in the SC. DDEcalEndcapTrap crystal( 1, eeCrysFront(), eeCrysRear(), eeCrysLength() ) ; crystal.moveto( cryFCtr( icol, irow ) , cryRCtr( icol, irow ) ); DDName rname ( "EECrRoC" + int_to_string( icol ) + "R" + int_to_string( irow ) ) ; cpv.position( cryName(), pName, 100*iSCType + 10*( icol - 1 ) + ( irow - 1 ), crystal.centrePos(), myrot( rname.fullname(), crystal.rotation() ) ) ; } } } } }
void DDEcalEndcapAlgo::EEPosSC | ( | const int | iCol, |
const int | iRow, | ||
DDName | EEDeeName | ||
) |
DDMaterial DDEcalEndcapAlgo::eeQuaMat | ( | ) | const [inline] |
Definition at line 80 of file DDEcalEndcapAlgo.h.
References ddmat(), and m_EEQuaMat.
{ return ddmat( m_EEQuaMat ) ; }
DDName DDEcalEndcapAlgo::eeQuaName | ( | ) | const [inline] |
Definition at line 79 of file DDEcalEndcapAlgo.h.
References ddname(), and m_EEQuaName.
Referenced by execute().
{ return ddname( m_EEQuaName ) ; }
double DDEcalEndcapAlgo::eeSCAFront | ( | ) | const [inline] |
Definition at line 93 of file DDEcalEndcapAlgo.h.
References m_EESCAFront.
Referenced by EECreateSC().
{ return m_EESCAFront ; }
double DDEcalEndcapAlgo::eeSCALength | ( | ) | const [inline] |
Definition at line 91 of file DDEcalEndcapAlgo.h.
References m_EESCALength.
Referenced by EECreateSC().
{ return m_EESCALength ; }
double DDEcalEndcapAlgo::eeSCARear | ( | ) | const [inline] |
Definition at line 92 of file DDEcalEndcapAlgo.h.
References m_EESCARear.
Referenced by EECreateSC().
{ return m_EESCARear ; }
double DDEcalEndcapAlgo::eeSCAWall | ( | ) | const [inline] |
Definition at line 94 of file DDEcalEndcapAlgo.h.
References m_EESCAWall.
Referenced by EECreateSC().
{ return m_EESCAWall ; }
double DDEcalEndcapAlgo::eeSCEFront | ( | ) | const [inline] |
Definition at line 90 of file DDEcalEndcapAlgo.h.
References m_EESCEFront.
Referenced by EECreateSC(), and execute().
{ return m_EESCEFront ; }
double DDEcalEndcapAlgo::eeSCELength | ( | ) | const [inline] |
Definition at line 88 of file DDEcalEndcapAlgo.h.
References m_EESCELength.
Referenced by EECreateSC(), and execute().
{ return m_EESCELength ; }
double DDEcalEndcapAlgo::eeSCERear | ( | ) | const [inline] |
Definition at line 89 of file DDEcalEndcapAlgo.h.
References m_EESCERear.
Referenced by EECreateSC(), and execute().
{ return m_EESCERear ; }
double DDEcalEndcapAlgo::eeSCHLength | ( | ) | const [inline] |
Definition at line 95 of file DDEcalEndcapAlgo.h.
References m_EESCHLength.
{ return m_EESCHLength ; }
double DDEcalEndcapAlgo::eeSCHSide | ( | ) | const [inline] |
const std::vector<double>& DDEcalEndcapAlgo::eevecEECRCtrs | ( | ) | const [inline] |
Definition at line 107 of file DDEcalEndcapAlgo.h.
References m_vecEECRCtrs.
Referenced by execute().
{ return m_vecEECRCtrs ; }
const std::vector<double>& DDEcalEndcapAlgo::eevecEESCCtrs | ( | ) | const [inline] |
Definition at line 106 of file DDEcalEndcapAlgo.h.
References m_vecEESCCtrs.
Referenced by execute().
{ return m_vecEESCCtrs ; }
const std::vector<double>& DDEcalEndcapAlgo::eevecEESCCutaway | ( | ) | const [inline] |
Definition at line 105 of file DDEcalEndcapAlgo.h.
References m_vecEESCCutaway.
Referenced by EEGetSCType().
{ return m_vecEESCCutaway ; }
const std::vector<double>& DDEcalEndcapAlgo::eevecEESCProf | ( | ) | const [inline] |
Definition at line 103 of file DDEcalEndcapAlgo.h.
References m_vecEESCProf.
Referenced by EEPositionCRs().
{ return m_vecEESCProf ; }
const std::vector<double>& DDEcalEndcapAlgo::eevecEEShape | ( | ) | const [inline] |
Definition at line 104 of file DDEcalEndcapAlgo.h.
References m_vecEEShape.
Referenced by execute().
{ return m_vecEEShape ; }
DDMaterial DDEcalEndcapAlgo::eeWallMat | ( | ) | const [inline] |
Definition at line 83 of file DDEcalEndcapAlgo.h.
References ddmat(), and m_EEWallMat.
Referenced by EECreateSC().
{ return ddmat( m_EEWallMat ) ; }
double DDEcalEndcapAlgo::eezOff | ( | ) | const [inline] |
Definition at line 77 of file DDEcalEndcapAlgo.h.
References m_EEzOff.
Referenced by execute().
{ return m_EEzOff ; }
DDName DDEcalEndcapAlgo::envName | ( | unsigned int | i | ) | const [inline] |
Definition at line 114 of file DDEcalEndcapAlgo.h.
References ddname(), int_to_string(), and m_envName.
Referenced by EECreateSC(), and execute().
{ return ddname( m_envName + int_to_string(i) ) ; }
void DDEcalEndcapAlgo::execute | ( | DDCompactView & | cpv | ) |
Definition at line 178 of file DDEcalEndcapAlgo.cc.
References DDSolidFactory::box(), DDEcalEndcapTrap::centrePos(), cutBoxName(), EECreateCR(), EECreateSC(), EEGetSCType(), eenColumns(), eenSCquad(), eenSCTypes(), eeQuaName(), eeSCEFront(), eeSCELength(), eeSCERear(), eevecEECRCtrs(), eevecEESCCtrs(), eevecEEShape(), eezOff(), envName(), DDName::fullname(), int_to_string(), m_cryFCtr, m_cryRCtr, m_cutParms, m_scrFCtr, m_scrRCtr, DDEcalEndcapTrap::moveto(), myrot(), mergeVDriftHistosByStation::name, DDSolid::parameters(), DDCompactView::position(), DDEcalEndcapTrap::rotation(), scrFCtr(), scrRCtr(), mathSSE::sqrt(), DDEcalEndcapTrap::translate(), and vecEESCLims().
{ // Position supercrystals in EE Quadrant // Version: 1.00 // Created: 30 July 2007 // Last Mod: //--------------------------------------------------------------------- //********************************* cutbox for trimming edge SCs const double cutWid ( eeSCERear()/sqrt(2.) ) ; const DDSolid eeCutBox ( DDSolidFactory::box( cutBoxName(), cutWid, cutWid, eeSCELength()/sqrt(2.) ) ) ; m_cutParms = &eeCutBox.parameters() ; //************************************************************** //** fill supercrystal front and rear center positions from xml input for( unsigned int iC ( 0 ) ; iC != (unsigned int) eenSCquad() ; ++iC ) { const unsigned int iOff ( 8*iC ) ; const unsigned int ix ( (unsigned int) eevecEESCCtrs()[ iOff + 0 ] ) ; const unsigned int iy ( (unsigned int) eevecEESCCtrs()[ iOff + 1 ] ) ; assert( ix > 0 && ix < 11 && iy >0 && iy < 11 ) ; m_scrFCtr[ ix - 1 ][ iy - 1 ] = DDTranslation( eevecEESCCtrs()[ iOff + 2 ] , eevecEESCCtrs()[ iOff + 4 ] , eevecEESCCtrs()[ iOff + 6 ] ) ; m_scrRCtr[ ix - 1 ][ iy - 1 ] = DDTranslation( eevecEESCCtrs()[ iOff + 3 ] , eevecEESCCtrs()[ iOff + 5 ] , eevecEESCCtrs()[ iOff + 7 ] ) ; } //** fill crystal front and rear center positions from xml input for( unsigned int iC ( 0 ) ; iC != 25 ; ++iC ) { const unsigned int iOff ( 8*iC ) ; const unsigned int ix ( (unsigned int) eevecEECRCtrs()[ iOff + 0 ] ) ; const unsigned int iy ( (unsigned int) eevecEECRCtrs()[ iOff + 1 ] ) ; assert( ix > 0 && ix < 6 && iy >0 && iy < 6 ) ; m_cryFCtr[ ix - 1 ][ iy - 1 ] = DDTranslation( eevecEECRCtrs()[ iOff + 2 ] , eevecEECRCtrs()[ iOff + 4 ] , eevecEECRCtrs()[ iOff + 6 ] ) ; m_cryRCtr[ ix - 1 ][ iy - 1 ] = DDTranslation( eevecEECRCtrs()[ iOff + 3 ] , eevecEECRCtrs()[ iOff + 5 ] , eevecEECRCtrs()[ iOff + 7 ] ) ; } EECreateCR() ; // make a single crystal just once here for( unsigned int isc ( 0 ); isc<eenSCTypes() ; ++isc ) { EECreateSC( isc+1, cpv ); } const std::vector<double>& colLimits ( eevecEEShape() ); //** Loop over endcap columns for( int icol = 1; icol<=int(eenColumns()); icol++ ) { //** Loop over SCs in column, using limits from xml input for( int irow = int(colLimits[2*icol-2]); irow <= int(colLimits[2*icol-1]) ; ++irow ) { if( vecEESCLims()[0] <= icol && vecEESCLims()[1] >= icol && vecEESCLims()[2] <= irow && vecEESCLims()[3] >= irow ) { // Find SC type (complete or partial) for this location const unsigned int isctype ( EEGetSCType( icol, irow ) ); // Create SC as a DDEcalEndcapTrap object and calculate rotation and // translation required to position it in the endcap. DDEcalEndcapTrap scrys( 1, eeSCEFront(), eeSCERear(), eeSCELength() ) ; scrys.moveto( scrFCtr( icol, irow ), scrRCtr( icol, irow ) ); scrys.translate( DDTranslation( 0., 0., -eezOff() ) ) ; DDName rname ( envName( isctype ).name() + int_to_string( icol ) + "R" + int_to_string( irow ) ) ; /* edm::LogInfo("EcalGeom") << "Quadrant, SC col/row " << eeQuaName() << " " << icol << " / " << irow << std::endl << " Limits " << int(colLimits[2*icol-2]) << "->" << int(colLimits[2*icol-1]) << std::endl << " SC type = " << isctype << std::endl << " Zoff, Scz = " << eezOff() << " " << sc1.z() << std::endl << " Rotation " << rname << " " << scrys.rotation() << std::endl << " Position " << sccentre << std::endl; */ // Position SC in endcap cpv.position( envName( isctype ), eeQuaName(), 100*isctype + 10*(icol-1) + (irow-1), scrys.centrePos(), myrot( rname.fullname(), scrys.rotation() ) ) ; } } } }
const std::string& DDEcalEndcapAlgo::idNameSpace | ( | ) | const [inline] |
Definition at line 73 of file DDEcalEndcapAlgo.h.
References m_idNameSpace.
{ return m_idNameSpace ; }
double DDEcalEndcapAlgo::iLength | ( | ) | const [inline] |
Definition at line 135 of file DDEcalEndcapAlgo.h.
References m_iLength.
Referenced by EECreateSC().
{ return m_iLength ; }
void DDEcalEndcapAlgo::initialize | ( | const DDNumericArguments & | nArgs, |
const DDVectorArguments & | vArgs, | ||
const DDMapArguments & | mArgs, | ||
const DDStringArguments & | sArgs, | ||
const DDStringVectorArguments & | vsArgs | ||
) |
Definition at line 76 of file DDEcalEndcapAlgo.cc.
References m_alvName, m_cryName, m_cutBoxName, m_EECrysFront, m_EECrysLength, m_EECrysMat, m_EECrysRear, m_EEMat, m_EEnColumns, m_EEnCRSC, m_EEnSCCutaway, m_EEnSCquad, m_EEnSCTypes, m_EEQuaMat, m_EEQuaName, m_EESCAFront, m_EESCALength, m_EESCARear, m_EESCAWall, m_EESCEFront, m_EESCELength, m_EESCERear, m_EESCHLength, m_EESCHSide, m_EEWallMat, m_EEzOff, m_envName, m_idNameSpace, m_iLength, m_intName, m_iXYOff, m_PF45, m_PFfifth, m_PFhalf, m_vecEECRCtrs, m_vecEESCCtrs, m_vecEESCCutaway, m_vecEESCLims, m_vecEESCProf, m_vecEEShape, DDCurrentNamespace::ns(), and dbtoconf::parent.
{ // edm::LogInfo("EcalGeom") << "DDEcalEndcapAlgo info: Initialize" ; m_idNameSpace = DDCurrentNamespace::ns(); // TRICK! m_idNameSpace = parent().name().ns(); // barrel parent volume m_EEMat = sArgs["EEMat" ] ; m_EEzOff = nArgs["EEzOff" ] ; m_EEQuaName = sArgs["EEQuaName" ] ; m_EEQuaMat = sArgs["EEQuaMat" ] ; m_EECrysMat = sArgs["EECrysMat" ] ; m_EEWallMat = sArgs["EEWallMat" ] ; m_EECrysLength = nArgs["EECrysLength" ] ; m_EECrysRear = nArgs["EECrysRear" ] ; m_EECrysFront = nArgs["EECrysFront" ] ; m_EESCELength = nArgs["EESCELength" ] ; m_EESCERear = nArgs["EESCERear" ] ; m_EESCEFront = nArgs["EESCEFront" ] ; m_EESCALength = nArgs["EESCALength" ] ; m_EESCARear = nArgs["EESCARear" ] ; m_EESCAFront = nArgs["EESCAFront" ] ; m_EESCAWall = nArgs["EESCAWall" ] ; m_EESCHLength = nArgs["EESCHLength" ] ; m_EESCHSide = nArgs["EESCHSide" ] ; m_EEnSCTypes = nArgs["EEnSCTypes"]; m_EEnColumns = nArgs["EEnColumns"]; m_EEnSCCutaway = nArgs["EEnSCCutaway"]; m_EEnSCquad = nArgs["EEnSCquad"]; m_EEnCRSC = nArgs["EEnCRSC"]; m_vecEESCProf = vArgs["EESCProf"]; m_vecEEShape = vArgs["EEShape"]; m_vecEESCCutaway = vArgs["EESCCutaway"]; m_vecEESCCtrs = vArgs["EESCCtrs"]; m_vecEECRCtrs = vArgs["EECRCtrs"]; m_cutBoxName = sArgs["EECutBoxName" ] ; m_envName = sArgs["EEEnvName" ] ; m_alvName = sArgs["EEAlvName" ] ; m_intName = sArgs["EEIntName" ] ; m_cryName = sArgs["EECryName" ] ; m_PFhalf = nArgs["EEPFHalf" ] ; m_PFfifth = nArgs["EEPFFifth" ] ; m_PF45 = nArgs["EEPF45" ] ; m_vecEESCLims = vArgs["EESCLims"]; m_iLength = nArgs["EEiLength" ] ; m_iXYOff = nArgs["EEiXYOff" ] ; // edm::LogInfo("EcalGeom") << "DDEcalEndcapAlgo info: end initialize" ; }
DDName DDEcalEndcapAlgo::intName | ( | unsigned int | i | ) | const [inline] |
Definition at line 116 of file DDEcalEndcapAlgo.h.
References ddname(), int_to_string(), and m_intName.
Referenced by EECreateSC().
{ return ddname( m_intName + int_to_string(i) ) ; }
double DDEcalEndcapAlgo::iXYOff | ( | ) | const [inline] |
Definition at line 136 of file DDEcalEndcapAlgo.h.
References m_iXYOff.
Referenced by EECreateSC().
{ return m_iXYOff ; }
DDRotation DDEcalEndcapAlgo::myrot | ( | const std::string & | s, |
const DDRotationMatrix & | r | ||
) | const |
Definition at line 144 of file DDEcalEndcapAlgo.cc.
References ddname(), DDrot(), and m_idNameSpace.
Referenced by EECreateSC(), EEPositionCRs(), and execute().
{ return DDrot( ddname( m_idNameSpace + ":" + s ), new DDRotationMatrix( r ) ) ; }
const DDTranslation& DDEcalEndcapAlgo::scrFCtr | ( | unsigned int | iRow, |
unsigned int | iCol | ||
) | const [inline] |
Definition at line 127 of file DDEcalEndcapAlgo.h.
References m_scrFCtr.
Referenced by execute().
{ return m_scrFCtr[iRow-1][iCol-1] ; }
const DDTranslation& DDEcalEndcapAlgo::scrRCtr | ( | unsigned int | iRow, |
unsigned int | iCol | ||
) | const [inline] |
Definition at line 130 of file DDEcalEndcapAlgo.h.
References m_scrRCtr.
Referenced by execute().
{ return m_scrRCtr[iRow-1][iCol-1] ; }
const std::vector<double>& DDEcalEndcapAlgo::vecEESCLims | ( | ) | const [inline] |
Definition at line 133 of file DDEcalEndcapAlgo.h.
References m_vecEESCLims.
Referenced by execute().
{ return m_vecEESCLims ; }
std::string DDEcalEndcapAlgo::m_alvName [private] |
Definition at line 182 of file DDEcalEndcapAlgo.h.
Referenced by alvName(), and initialize().
DDTranslation DDEcalEndcapAlgo::m_cryFCtr[5][5] [private] |
Definition at line 186 of file DDEcalEndcapAlgo.h.
std::string DDEcalEndcapAlgo::m_cryName [private] |
Definition at line 184 of file DDEcalEndcapAlgo.h.
Referenced by cryName(), and initialize().
DDTranslation DDEcalEndcapAlgo::m_cryRCtr[5][5] [private] |
Definition at line 187 of file DDEcalEndcapAlgo.h.
std::string DDEcalEndcapAlgo::m_cutBoxName [private] |
Definition at line 179 of file DDEcalEndcapAlgo.h.
Referenced by cutBoxName(), and initialize().
const std::vector<double>* DDEcalEndcapAlgo::m_cutParms [private] |
Definition at line 178 of file DDEcalEndcapAlgo.h.
Referenced by EECreateSC(), and execute().
double DDEcalEndcapAlgo::m_EECrysFront [private] |
Definition at line 156 of file DDEcalEndcapAlgo.h.
Referenced by eeCrysFront(), and initialize().
double DDEcalEndcapAlgo::m_EECrysLength [private] |
Definition at line 154 of file DDEcalEndcapAlgo.h.
Referenced by eeCrysLength(), and initialize().
std::string DDEcalEndcapAlgo::m_EECrysMat [private] |
Definition at line 151 of file DDEcalEndcapAlgo.h.
Referenced by eeCrysMat(), and initialize().
double DDEcalEndcapAlgo::m_EECrysRear [private] |
Definition at line 155 of file DDEcalEndcapAlgo.h.
Referenced by eeCrysRear(), and initialize().
std::string DDEcalEndcapAlgo::m_EEMat [private] |
Definition at line 145 of file DDEcalEndcapAlgo.h.
Referenced by eeMat(), and initialize().
double DDEcalEndcapAlgo::m_EEnColumns [private] |
Definition at line 169 of file DDEcalEndcapAlgo.h.
Referenced by eenColumns(), and initialize().
double DDEcalEndcapAlgo::m_EEnCRSC [private] |
Definition at line 175 of file DDEcalEndcapAlgo.h.
Referenced by eenCRSC(), and initialize().
double DDEcalEndcapAlgo::m_EEnSCCutaway [private] |
Definition at line 171 of file DDEcalEndcapAlgo.h.
Referenced by eenSCCutaway(), and initialize().
double DDEcalEndcapAlgo::m_EEnSCquad [private] |
Definition at line 173 of file DDEcalEndcapAlgo.h.
Referenced by eenSCquad(), and initialize().
double DDEcalEndcapAlgo::m_EEnSCTypes [private] |
Definition at line 167 of file DDEcalEndcapAlgo.h.
Referenced by eenSCTypes(), and initialize().
std::string DDEcalEndcapAlgo::m_EEQuaMat [private] |
Definition at line 149 of file DDEcalEndcapAlgo.h.
Referenced by eeQuaMat(), and initialize().
std::string DDEcalEndcapAlgo::m_EEQuaName [private] |
Definition at line 148 of file DDEcalEndcapAlgo.h.
Referenced by eeQuaName(), and initialize().
double DDEcalEndcapAlgo::m_EESCAFront [private] |
Definition at line 162 of file DDEcalEndcapAlgo.h.
Referenced by eeSCAFront(), and initialize().
double DDEcalEndcapAlgo::m_EESCALength [private] |
Definition at line 160 of file DDEcalEndcapAlgo.h.
Referenced by eeSCALength(), and initialize().
double DDEcalEndcapAlgo::m_EESCARear [private] |
Definition at line 161 of file DDEcalEndcapAlgo.h.
Referenced by eeSCARear(), and initialize().
double DDEcalEndcapAlgo::m_EESCAWall [private] |
Definition at line 163 of file DDEcalEndcapAlgo.h.
Referenced by eeSCAWall(), and initialize().
double DDEcalEndcapAlgo::m_EESCEFront [private] |
Definition at line 159 of file DDEcalEndcapAlgo.h.
Referenced by eeSCEFront(), and initialize().
double DDEcalEndcapAlgo::m_EESCELength [private] |
Definition at line 157 of file DDEcalEndcapAlgo.h.
Referenced by eeSCELength(), and initialize().
double DDEcalEndcapAlgo::m_EESCERear [private] |
Definition at line 158 of file DDEcalEndcapAlgo.h.
Referenced by eeSCERear(), and initialize().
double DDEcalEndcapAlgo::m_EESCHLength [private] |
Definition at line 164 of file DDEcalEndcapAlgo.h.
Referenced by eeSCHLength(), and initialize().
double DDEcalEndcapAlgo::m_EESCHSide [private] |
Definition at line 165 of file DDEcalEndcapAlgo.h.
Referenced by eeSCHSide(), and initialize().
std::string DDEcalEndcapAlgo::m_EEWallMat [private] |
Definition at line 152 of file DDEcalEndcapAlgo.h.
Referenced by eeWallMat(), and initialize().
double DDEcalEndcapAlgo::m_EEzOff [private] |
Definition at line 146 of file DDEcalEndcapAlgo.h.
Referenced by eezOff(), and initialize().
std::string DDEcalEndcapAlgo::m_envName [private] |
Definition at line 181 of file DDEcalEndcapAlgo.h.
Referenced by envName(), and initialize().
std::string DDEcalEndcapAlgo::m_idNameSpace [private] |
Definition at line 142 of file DDEcalEndcapAlgo.h.
Referenced by ddname(), idNameSpace(), initialize(), and myrot().
double DDEcalEndcapAlgo::m_iLength [private] |
Definition at line 198 of file DDEcalEndcapAlgo.h.
Referenced by iLength(), and initialize().
std::string DDEcalEndcapAlgo::m_intName [private] |
Definition at line 183 of file DDEcalEndcapAlgo.h.
Referenced by initialize(), and intName().
double DDEcalEndcapAlgo::m_iXYOff [private] |
Definition at line 200 of file DDEcalEndcapAlgo.h.
Referenced by initialize(), and iXYOff().
double DDEcalEndcapAlgo::m_PF45 [private] |
Definition at line 194 of file DDEcalEndcapAlgo.h.
Referenced by eePF45(), and initialize().
double DDEcalEndcapAlgo::m_PFfifth [private] |
Definition at line 193 of file DDEcalEndcapAlgo.h.
Referenced by eePFFifth(), and initialize().
double DDEcalEndcapAlgo::m_PFhalf [private] |
Definition at line 192 of file DDEcalEndcapAlgo.h.
Referenced by eePFHalf(), and initialize().
DDTranslation DDEcalEndcapAlgo::m_scrFCtr[10][10] [private] |
Definition at line 189 of file DDEcalEndcapAlgo.h.
DDTranslation DDEcalEndcapAlgo::m_scrRCtr[10][10] [private] |
Definition at line 190 of file DDEcalEndcapAlgo.h.
std::vector<double> DDEcalEndcapAlgo::m_vecEECRCtrs [private] |
Definition at line 176 of file DDEcalEndcapAlgo.h.
Referenced by eevecEECRCtrs(), and initialize().
std::vector<double> DDEcalEndcapAlgo::m_vecEESCCtrs [private] |
Definition at line 174 of file DDEcalEndcapAlgo.h.
Referenced by eevecEESCCtrs(), and initialize().
std::vector<double> DDEcalEndcapAlgo::m_vecEESCCutaway [private] |
Definition at line 172 of file DDEcalEndcapAlgo.h.
Referenced by eevecEESCCutaway(), and initialize().
std::vector<double> DDEcalEndcapAlgo::m_vecEESCLims [private] |
Definition at line 196 of file DDEcalEndcapAlgo.h.
Referenced by initialize(), and vecEESCLims().
std::vector<double> DDEcalEndcapAlgo::m_vecEESCProf [private] |
Definition at line 168 of file DDEcalEndcapAlgo.h.
Referenced by eevecEESCProf(), and initialize().
std::vector<double> DDEcalEndcapAlgo::m_vecEEShape [private] |
Definition at line 170 of file DDEcalEndcapAlgo.h.
Referenced by eevecEEShape(), and initialize().