CMS 3D CMS Logo

Public Member Functions | Private Attributes

DDMuonAngular Class Reference

#include <DDMuonAngular.h>

List of all members.

Public Member Functions

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

Private Attributes

std::string childName
std::string idNameSpace
int incrCopyNo
int n
std::string rotns
double startAngle
int startCopyNo
double stepAngle
double zoffset

Detailed Description

Definition at line 10 of file DDMuonAngular.h.


Constructor & Destructor Documentation

DDMuonAngular::DDMuonAngular ( )

Definition at line 16 of file DDMuonAngular.cc.

                             {
  edm::LogInfo("MuonGeom") << "DDMuonAngular test: Creating an instance";
}
DDMuonAngular::~DDMuonAngular ( ) [virtual]

Definition at line 20 of file DDMuonAngular.cc.

{}

Member Function Documentation

void DDMuonAngular::execute ( DDCompactView cpv)

Definition at line 49 of file DDMuonAngular.cc.

References childName, dbl_to_string(), DDrot(), idNameSpace, incrCopyNo, createXMLFile::iphi, n, dbtoconf::parent, phi, DDCompactView::position(), idealTransformation::rotation, rotns, startAngle, startCopyNo, stepAngle, AlCaHLTBitMon_QueryRunRegistry::string, and zoffset.

                                              {

  double phi    = startAngle;
  int    copyNo = startCopyNo;

  for (int ii=0; ii<n; ii++) {

    double phideg = phi/CLHEP::deg;
    int    iphi;
    if (phideg > 0)  iphi = int(phideg+0.1);
    else             iphi = int(phideg-0.1);
    if (iphi >= 360) iphi   -= 360;
    phideg = iphi;
    DDRotation rotation;
    std::string rotstr("NULL");

    if (iphi != 0) {
      rotstr = "R"; 
      if (phideg >=0 && phideg < 10) rotstr = "R00"; 
      else if (phideg < 100)         rotstr = "R0";
      rotstr = rotstr + dbl_to_string(phideg);
      rotation = DDRotation(DDName(rotstr, rotns)); 
      if (!rotation) {
        edm::LogInfo("MuonGeom") << "DDMuonAngular test: Creating a new rotation "
                             << DDName(rotstr, idNameSpace) << "\t90, " 
                             << phideg << ", 90, " << (phideg+90) << ", 0, 0";
        rotation = DDrot(DDName(rotstr, rotns), 90*CLHEP::deg, 
                         phideg*CLHEP::deg, 90*CLHEP::deg, 
                         (90+phideg)*CLHEP::deg, 0*CLHEP::deg,  0*CLHEP::deg);
      } 
    }
    
    DDTranslation tran(0, 0, zoffset);
  
    DDName parentName = parent().name(); 
    cpv.position(DDName(childName,idNameSpace), parentName, copyNo, tran, rotation);
    edm::LogInfo("MuonGeom") << "DDMuonAngular test: " 
                         << DDName(childName, idNameSpace) << " number " 
                         << copyNo << " positioned in " << parentName << " at "
                             << tran << " with " << rotstr << " " << rotation;
    phi    += stepAngle;
    copyNo += incrCopyNo;
  }
}
void DDMuonAngular::initialize ( const DDNumericArguments nArgs,
const DDVectorArguments vArgs,
const DDMapArguments mArgs,
const DDStringArguments sArgs,
const DDStringVectorArguments vsArgs 
)

Definition at line 22 of file DDMuonAngular.cc.

References childName, idNameSpace, incrCopyNo, n, DDCurrentNamespace::ns(), dbtoconf::parent, rotns, startAngle, startCopyNo, stepAngle, and zoffset.

                                                                 {

  startAngle  = nArgs["startAngle"];
  stepAngle   = nArgs["stepAngle"];
  zoffset     = nArgs["zoffset"];
  n           = int (nArgs["n"]);
  startCopyNo = int (nArgs["startCopyNo"]);
  incrCopyNo  = int (nArgs["incrCopyNo"]);
  edm::LogInfo("MuonGeom") << "DDMuonAngular debug: Parameters for positioning-- "
                       << n << " copies in steps of " << stepAngle/CLHEP::deg 
                       << " from " << startAngle/CLHEP::deg << " \tZoffest " 
                       << zoffset << "\tStart and inremental copy nos " 
                       << startCopyNo << ", " << incrCopyNo;

  rotns       = sArgs["RotNameSpace"];
  idNameSpace = DDCurrentNamespace::ns();
  childName   = sArgs["ChildName"]; 
  DDName parentName = parent().name(); 
  edm::LogInfo("MuonGeom") << "DDMuonAngular debug: Parent " << parentName 
                       << "\tChild " << childName << "\tNameSpace "
                       << idNameSpace << "\tRotation Namespace " << rotns;
}

Member Data Documentation

std::string DDMuonAngular::childName [private]

Definition at line 35 of file DDMuonAngular.h.

Referenced by execute(), and initialize().

std::string DDMuonAngular::idNameSpace [private]

Definition at line 34 of file DDMuonAngular.h.

Referenced by execute(), and initialize().

Definition at line 31 of file DDMuonAngular.h.

Referenced by execute(), and initialize().

int DDMuonAngular::n [private]

Definition at line 29 of file DDMuonAngular.h.

Referenced by execute(), and initialize().

std::string DDMuonAngular::rotns [private]

Definition at line 33 of file DDMuonAngular.h.

Referenced by execute(), and initialize().

double DDMuonAngular::startAngle [private]

Definition at line 26 of file DDMuonAngular.h.

Referenced by execute(), and initialize().

Definition at line 30 of file DDMuonAngular.h.

Referenced by execute(), and initialize().

double DDMuonAngular::stepAngle [private]

Definition at line 27 of file DDMuonAngular.h.

Referenced by execute(), and initialize().

double DDMuonAngular::zoffset [private]

Definition at line 28 of file DDMuonAngular.h.

Referenced by execute(), and initialize().