File indexing completed on 2024-04-06 12:22:31
0001 #include "CylinderFromSectorMFGrid.h"
0002 #include "MagneticField/VolumeGeometry/interface/MagExceptions.h"
0003 #include <iostream>
0004
0005 CylinderFromSectorMFGrid::CylinderFromSectorMFGrid(const GloballyPositioned<float>& vol,
0006 double phiMin,
0007 double phiMax,
0008 MFGrid* sectorGrid)
0009 : MFGrid(vol),
0010 thePhiMin(phiMin),
0011 thePhiMax(phiMax),
0012 theSectorGrid(sectorGrid)
0013
0014 {
0015 if (thePhiMax < thePhiMin)
0016 thePhiMax += 2.0 * Geom::pi();
0017 theDelta = thePhiMax - thePhiMin;
0018 }
0019
0020 CylinderFromSectorMFGrid::~CylinderFromSectorMFGrid() { delete theSectorGrid; }
0021
0022 MFGrid::LocalVector CylinderFromSectorMFGrid::valueInTesla(const LocalPoint& p) const {
0023 double phi = p.phi();
0024 if (phi < thePhiMax && phi > thePhiMin)
0025 return theSectorGrid->valueInTesla(p);
0026 else {
0027 double phiRot = floor((phi - thePhiMin) / theDelta) * theDelta;
0028 double c = cos(phiRot);
0029 double s = sin(phiRot);
0030 double xrot = p.x() * c + p.y() * s;
0031 double yrot = -p.x() * s + p.y() * c;
0032
0033
0034 MFGrid::LocalVector tmp = theSectorGrid->valueInTesla(LocalPoint(xrot, yrot, p.z()));
0035
0036
0037 return MFGrid::LocalVector(tmp.x() * c - tmp.y() * s, tmp.x() * s + tmp.y() * c, tmp.z());
0038 }
0039 }
0040
0041 void CylinderFromSectorMFGrid::throwUp(const char* message) const {
0042 std::cout << "Throwing exception " << message << std::endl;
0043 throw MagGeometryError(message);
0044 }
0045 void CylinderFromSectorMFGrid::toGridFrame(const LocalPoint& p, double& a, double& b, double& c) const {
0046 throwUp("Not implemented yet");
0047 }
0048
0049 MFGrid::LocalPoint CylinderFromSectorMFGrid::fromGridFrame(double a, double b, double c) const {
0050 throwUp("Not implemented yet");
0051 return LocalPoint();
0052 }
0053
0054 Dimensions CylinderFromSectorMFGrid::dimensions() const { return theSectorGrid->dimensions(); }
0055
0056 MFGrid::LocalPoint CylinderFromSectorMFGrid::nodePosition(int i, int j, int k) const {
0057 throwUp("Not implemented yet");
0058 return LocalPoint();
0059 }
0060
0061 MFGrid::LocalVector CylinderFromSectorMFGrid::nodeValue(int i, int j, int k) const {
0062 throwUp("Not implemented yet");
0063 return LocalVector();
0064 }