12 #include "CLHEP/Units/GlobalPhysicalConstants.h"
13 #include "CLHEP/Units/GlobalSystemOfUnits.h"
49 LogDebug(
"TrackerGeom") <<
"DDTrackerPhiAlgo info: Creating an instance";
59 if (nArgs.find(
"StartCopyNo") != nArgs.end()) {
60 startcn = size_t(nArgs[
"StartCopyNo"]);
64 if (nArgs.find(
"IncrCopyNo") != nArgs.end()) {
65 incrcn = int(nArgs[
"IncrCopyNo"]);
75 if (nArgs.find(
"NumCopies") != nArgs.end()) {
78 edm::LogError(
"TrackerGeom") <<
"DDTrackerPhiAlgo error: Parameter "
79 <<
"NumCopies does not agree with the size "
80 <<
"of the Phi vector. It was adjusted to "
81 <<
"be the size of the Phi vector and may "
82 <<
"lead to crashes or errors.";
88 LogDebug(
"TrackerGeom") <<
"DDTrackerPhiAlgo debug: Parameters for position"
90 <<
" Radius " <<
radius <<
" Tilt " <<
tilt / CLHEP::deg <<
" Copies " <<
phi.size() <<
" at";
91 for (
int i = 0;
i < (int)(
phi.size());
i++)
92 LogDebug(
"TrackerGeom") <<
"\t[" <<
i <<
"] phi = " <<
phi[
i] / CLHEP::deg <<
" z = " <<
zpos[
i];
97 LogDebug(
"TrackerGeom") <<
"DDTrackerPhiAlgo debug: Parent " << parentName <<
"\tChild " <<
childName <<
" NameSpace "
104 double theta = 90. * CLHEP::deg;
109 double phiy = phix + 90. * CLHEP::deg;
110 double phideg =
phi[
i] / CLHEP::deg;
115 LogDebug(
"TrackerGeom") <<
"DDTrackerPhiAlgo test: Creating a new "
116 <<
"rotation: " << rotstr <<
"\t"
117 <<
"90., " << phix / CLHEP::deg <<
", 90.," << phiy / CLHEP::deg <<
", 0, 0";
125 cpv.
position(child, mother, ci, tran, rotation);
126 LogDebug(
"TrackerGeom") <<
"DDTrackerPhiAlgo test: " << child <<
" number " << ci <<
" positioned in " << mother
127 <<
" at " << tran <<
" with " <<
rotation;
static AlgebraicMatrix initialize()
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
Sin< T >::type sin(const T &t)
Geom::Theta< T > theta() const
DDName is used to identify DDD entities uniquely.
static std::string & ns()
Log< level::Error, false > LogError
Compact representation of the geometrical detector hierarchy.
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
Cos< T >::type cos(const T &t)
~DDTrackerPhiAlgo() override
void execute(DDCompactView &cpv) override
#define DEFINE_EDM_PLUGIN(factory, type, name)
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation