CMS 3D CMS Logo

CylinderFromSectorMFGrid.cc
Go to the documentation of this file.
3 #include <iostream>
4 
6  double phiMin,
7  double phiMax,
8  MFGrid* sectorGrid)
9  : MFGrid(vol),
10  thePhiMin(phiMin),
11  thePhiMax(phiMax),
12  theSectorGrid(sectorGrid)
13 
14 {
15  if (thePhiMax < thePhiMin)
16  thePhiMax += 2.0 * Geom::pi();
18 }
19 
21 
23  double phi = p.phi();
24  if (phi < thePhiMax && phi > thePhiMin)
25  return theSectorGrid->valueInTesla(p);
26  else {
27  double phiRot = floor((phi - thePhiMin) / theDelta) * theDelta;
28  double c = cos(phiRot);
29  double s = sin(phiRot);
30  double xrot = p.x() * c + p.y() * s;
31  double yrot = -p.x() * s + p.y() * c;
32 
33  // get field in interpolation sector
35 
36  // rotate field back to original sector
37  return MFGrid::LocalVector(tmp.x() * c - tmp.y() * s, tmp.x() * s + tmp.y() * c, tmp.z());
38  }
39 }
40 
41 void CylinderFromSectorMFGrid::throwUp(const char* message) const {
42  std::cout << "Throwing exception " << message << std::endl;
43  throw MagGeometryError(message);
44 }
45 void CylinderFromSectorMFGrid::toGridFrame(const LocalPoint& p, double& a, double& b, double& c) const {
46  throwUp("Not implemented yet");
47 }
48 
50  throwUp("Not implemented yet");
51  return LocalPoint();
52 }
53 
55 
57  throwUp("Not implemented yet");
58  return LocalPoint();
59 }
60 
62  throwUp("Not implemented yet");
63  return LocalVector();
64 }
void toGridFrame(const LocalPoint &p, double &a, double &b, double &c) const override
find grid coordinates for point. For debugging and validation only.
Dimensions dimensions() const override
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
GloballyPositioned< float >::LocalPoint LocalPoint
Definition: MFGrid.h:31
void throwUp(const char *message) const
LocalPoint fromGridFrame(double a, double b, double c) const override
find grid coordinates for point. For debugging and validation only.
LocalVector valueInTesla(const LocalPoint &p) const override=0
Interpolated field value at given point.
LocalVector nodeValue(int i, int j, int k) const override
Field value at node.
CylinderFromSectorMFGrid(const GloballyPositioned< float > &vol, double phiMin, double phiMax, MFGrid *sectorGrid)
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
double b
Definition: hdecay.h:118
Definition: MFGrid.h:27
GloballyPositioned< float >::LocalVector LocalVector
Definition: MFGrid.h:32
double a
Definition: hdecay.h:119
LocalVector valueInTesla(const LocalPoint &p) const override
Interpolated field value at given point.
constexpr double pi()
Definition: Pi.h:31
tmp
align.sh
Definition: createJobs.py:716
virtual Dimensions dimensions() const =0
LocalPoint nodePosition(int i, int j, int k) const override
Position of node in local frame.