#include <DDTrackerPhiAltAlgo.h>
Public Member Functions | |
DDTrackerPhiAltAlgo () | |
void | execute (DDCompactView &cpv) |
void | initialize (const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) |
virtual | ~DDTrackerPhiAltAlgo () |
Private Attributes | |
std::string | childName |
std::string | idNameSpace |
int | incrCopyNo |
int | number |
double | radiusIn |
double | radiusOut |
double | rangeAngle |
double | startAngle |
int | startCopyNo |
double | tilt |
double | zpos |
Definition at line 10 of file DDTrackerPhiAltAlgo.h.
DDTrackerPhiAltAlgo::DDTrackerPhiAltAlgo | ( | ) |
Definition at line 18 of file DDTrackerPhiAltAlgo.cc.
References LogDebug.
{ LogDebug("TrackerGeom") << "DDTrackerPhiAltAlgo info: Creating an instance"; }
DDTrackerPhiAltAlgo::~DDTrackerPhiAltAlgo | ( | ) | [virtual] |
Definition at line 22 of file DDTrackerPhiAltAlgo.cc.
{}
void DDTrackerPhiAltAlgo::execute | ( | DDCompactView & | cpv | ) |
Definition at line 57 of file DDTrackerPhiAltAlgo.cc.
References childName, funct::cos(), dbl_to_string(), DDrot(), DDSplit(), first, i, idNameSpace, incrCopyNo, LogDebug, number, dbtoconf::parent, phi, DDCompactView::position(), radiusIn, radiusOut, rangeAngle, idealTransformation::rotation, edm::second(), funct::sin(), startAngle, startCopyNo, theta(), tilt, and zpos.
{ if (number > 0) { double theta = 90.*CLHEP::deg; double dphi; if (number == 1 || fabs(rangeAngle-360.0*CLHEP::deg)<0.001*CLHEP::deg) dphi = rangeAngle/number; else dphi = rangeAngle/(number-1); int copyNo = startCopyNo; DDName mother = parent().name(); DDName child(DDSplit(childName).first, DDSplit(childName).second); for (int i=0; i<number; i++) { double phi = startAngle + i*dphi; double phix = phi - tilt + 90.*CLHEP::deg; double phiy = phix + 90.*CLHEP::deg; double phideg = phix/CLHEP::deg; DDRotation rotation; if (phideg != 0) { std::string rotstr =DDSplit(childName).first+dbl_to_string(phideg*10.); rotation = DDRotation(DDName(rotstr, idNameSpace)); if (!rotation) { LogDebug("TrackerGeom") << "DDTrackerPhiAltAlgo test: Creating a new" << " rotation " << rotstr << "\t" << "90., " << phix/CLHEP::deg << ", 90.," << phiy/CLHEP::deg << ", 0, 0"; rotation = DDrot(DDName(rotstr, idNameSpace), theta, phix, theta, phiy, 0., 0.); } } double xpos, ypos; if (i%2 == 0) { xpos = radiusIn*cos(phi); ypos = radiusIn*sin(phi); } else { xpos = radiusOut*cos(phi); ypos = radiusOut*sin(phi); } DDTranslation tran(xpos, ypos, zpos); cpv.position(child, mother, copyNo, tran, rotation); LogDebug("TrackerGeom") << "DDTrackerPhiAltAlgo test: " << child << " number " << copyNo << " positioned in " << mother << " at " << tran << " with " << rotation; copyNo += incrCopyNo; } } }
void DDTrackerPhiAltAlgo::initialize | ( | const DDNumericArguments & | nArgs, |
const DDVectorArguments & | vArgs, | ||
const DDMapArguments & | mArgs, | ||
const DDStringArguments & | sArgs, | ||
const DDStringVectorArguments & | vsArgs | ||
) |
Definition at line 24 of file DDTrackerPhiAltAlgo.cc.
References childName, idNameSpace, incrCopyNo, LogDebug, DDCurrentNamespace::ns(), number, dbtoconf::parent, radiusIn, radiusOut, rangeAngle, startAngle, startCopyNo, tilt, and zpos.
{ tilt = nArgs["Tilt"]; startAngle = nArgs["StartAngle"]; rangeAngle = nArgs["RangeAngle"]; radiusIn = nArgs["RadiusIn"]; radiusOut = nArgs["RadiusOut"]; zpos = nArgs["ZPosition"]; number = int (nArgs["Number"]); startCopyNo= int (nArgs["StartCopyNo"]); incrCopyNo = int (nArgs["IncrCopyNo"]); LogDebug("TrackerGeom") << "DDTrackerPhiAltAlgo debug: Parameters for " << "positioning--" << " Tilt " << tilt << "\tStartAngle " << startAngle/CLHEP::deg << "\tRangeAngle " << rangeAngle/CLHEP::deg << "\tRin " << radiusIn << "\tRout " << radiusOut << "\t ZPos " << zpos << "\tCopy Numbers " << number << " Start/Increment " << startCopyNo << ", " << incrCopyNo; idNameSpace = DDCurrentNamespace::ns(); childName = sArgs["ChildName"]; DDName parentName = parent().name(); LogDebug("TrackerGeom") << "DDTrackerPhiAltAlgo debug: Parent " << parentName << "\tChild " << childName << " NameSpace " << idNameSpace; }
std::string DDTrackerPhiAltAlgo::childName [private] |
Definition at line 38 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
std::string DDTrackerPhiAltAlgo::idNameSpace [private] |
Definition at line 37 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
int DDTrackerPhiAltAlgo::incrCopyNo [private] |
Definition at line 35 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
int DDTrackerPhiAltAlgo::number [private] |
Definition at line 33 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
double DDTrackerPhiAltAlgo::radiusIn [private] |
Definition at line 30 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
double DDTrackerPhiAltAlgo::radiusOut [private] |
Definition at line 31 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
double DDTrackerPhiAltAlgo::rangeAngle [private] |
Definition at line 29 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
double DDTrackerPhiAltAlgo::startAngle [private] |
Definition at line 28 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
int DDTrackerPhiAltAlgo::startCopyNo [private] |
Definition at line 34 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
double DDTrackerPhiAltAlgo::tilt [private] |
Definition at line 27 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().
double DDTrackerPhiAltAlgo::zpos [private] |
Definition at line 32 of file DDTrackerPhiAltAlgo.h.
Referenced by execute(), and initialize().