ROOT logo
//*--Author A.Rustamov
#include "halignmentggeom.h"
#include "halignmentgdata.h"
#include <iostream>

using namespace std;

ClassImp(HAlignmentGGeom)

  HAlignmentGGeom::HAlignmentGGeom()
{
  Init();
}

HAlignmentGGeom::~HAlignmentGGeom()
{
  Clear();
}

void HAlignmentGGeom::Clear()
{
  ;
}

void HAlignmentGGeom::Init()
{
  alignData=HAlignmentGData::Instance();
}

Float_t HAlignmentGGeom::CalcDistanceToPlane(HGeomVector point, HGeomVector pNormal, HGeomVector pPoint)
{
  // Calculates the distance from "point" to a plane 
  // defined by pNormal and pPoint; 
  
  alignData->SetPlane(pNormal, pPoint);
  return alignData->CalcDistanceToPlane(point);
}

Float_t HAlignmentGGeom::CalcDistanceToPlane(HGeomVector point, HGeomTransform trans)
{
  // Calculates the distance of a point to plane
  // defined by trans (3 Euler angles a position vector)
  
  alignData->SetPlane(trans);
  return alignData->CalcDistanceToPlane(point);
}


Float_t HAlignmentGGeom::CalcDistanceToLine(HGeomVector point, HGeomVector point1, HGeomVector point2 )
{
  // Claculates the distance between "point" and a line defined by two points: 
  // "point1" and "point2"  
  alignData->SetLine(point1, point2-point1);
  return alignData->CalcDistanceToLine(point);
}

HGeomVector HAlignmentGGeom::CalcVertex(HGeomVector point1, HGeomVector dir1, 
					HGeomVector point2, HGeomVector dir2)
{
  //Calculates vertex of two lines
  //Closest point to lines
  //Input should be the points and they direction vectors
  //There is no nedd to normalize direction vectors
  alignData->SetVertexLine1(point1, dir1);
  alignData->SetVertexLine2(point2, dir2);
  return alignData->CalcVertex();
}
HGeomVector HAlignmentGGeom::CalcIntersection(HGeomVector point1,  HGeomVector point2, 
					      HGeomVector pNormal, HGeomVector pPoint)
{
  //Calculates the intersection of a line
  //defined by "point1" and "point2"  with plane
  //defined by pNormal and pPoint
  alignData->SetLine(point1, point2-point1);
  alignData->SetPlane(pNormal, pPoint);
  return alignData->CalcIntersection();
}

HGeomVector HAlignmentGGeom::CalcIntersection(HGeomVector point1,  HGeomVector point2, 
					      HGeomTransform trans)
{
  //Calculates the intersection of a line
  //defined by "point1" and "point2"  with plane
  //defined by trans matrix
  alignData->SetLine(point1, point2-point1);
  alignData->SetPlane(trans);
  return alignData->CalcIntersection();
}

Float_t HAlignmentGGeom::CalcVectorDistance(HGeomVector dir, HGeomVector point1, HGeomVector point2)
{
  //calculates the vector distance between direction vector dir
  //and a direction vector of a line  defined with  point1 and point2
  //Be carefull with the order of point1 and point2
  //Vector distance depends on that, actually it should be defined in the same way
  //as dir
  HGeomVector DIR=(point2-point1);
  DIR/=DIR.length();
  return (dir-DIR).length();
}

Float_t HAlignmentGGeom::GetTheta(const HGeomTransform &trans, const Float_t& theta, const  Float_t& phi)
{
  //takes into account beam alignment
  //new polar angle is calculated 
  Float_t X=sin(theta)*cos(phi);
  Float_t Y=sin(theta)*sin(phi);
  Float_t Z=cos(theta);
  HGeomVector dir(X,Y,Z);
  HGeomRotation rot = trans.getRotMatrix();
  dir=  trans.transTo(dir) + rot.inverse()*trans.getTransVector();
  return atan2(sqrt(dir.getX()*dir.getX()+dir.getY()*dir.getY()), dir.getZ());
}

Float_t HAlignmentGGeom::GetPhi(const HGeomTransform& trans,const  Float_t& theta,const  Float_t& phi)
{
  //takes into account beam alignment
  //new athimuthal angle is calculated 
  Float_t X=sin(theta)*cos(phi);
  Float_t Y=sin(theta)*sin(phi);
  Float_t Z=cos(theta);
  HGeomVector dir(X,Y,Z);
  HGeomRotation rot=trans.getRotMatrix();
  dir=  trans.transTo(dir) + rot.inverse()*trans.getTransVector();
  return atan2(dir.getY(),dir.getX());
}


 halignmentggeom.cc:1
 halignmentggeom.cc:2
 halignmentggeom.cc:3
 halignmentggeom.cc:4
 halignmentggeom.cc:5
 halignmentggeom.cc:6
 halignmentggeom.cc:7
 halignmentggeom.cc:8
 halignmentggeom.cc:9
 halignmentggeom.cc:10
 halignmentggeom.cc:11
 halignmentggeom.cc:12
 halignmentggeom.cc:13
 halignmentggeom.cc:14
 halignmentggeom.cc:15
 halignmentggeom.cc:16
 halignmentggeom.cc:17
 halignmentggeom.cc:18
 halignmentggeom.cc:19
 halignmentggeom.cc:20
 halignmentggeom.cc:21
 halignmentggeom.cc:22
 halignmentggeom.cc:23
 halignmentggeom.cc:24
 halignmentggeom.cc:25
 halignmentggeom.cc:26
 halignmentggeom.cc:27
 halignmentggeom.cc:28
 halignmentggeom.cc:29
 halignmentggeom.cc:30
 halignmentggeom.cc:31
 halignmentggeom.cc:32
 halignmentggeom.cc:33
 halignmentggeom.cc:34
 halignmentggeom.cc:35
 halignmentggeom.cc:36
 halignmentggeom.cc:37
 halignmentggeom.cc:38
 halignmentggeom.cc:39
 halignmentggeom.cc:40
 halignmentggeom.cc:41
 halignmentggeom.cc:42
 halignmentggeom.cc:43
 halignmentggeom.cc:44
 halignmentggeom.cc:45
 halignmentggeom.cc:46
 halignmentggeom.cc:47
 halignmentggeom.cc:48
 halignmentggeom.cc:49
 halignmentggeom.cc:50
 halignmentggeom.cc:51
 halignmentggeom.cc:52
 halignmentggeom.cc:53
 halignmentggeom.cc:54
 halignmentggeom.cc:55
 halignmentggeom.cc:56
 halignmentggeom.cc:57
 halignmentggeom.cc:58
 halignmentggeom.cc:59
 halignmentggeom.cc:60
 halignmentggeom.cc:61
 halignmentggeom.cc:62
 halignmentggeom.cc:63
 halignmentggeom.cc:64
 halignmentggeom.cc:65
 halignmentggeom.cc:66
 halignmentggeom.cc:67
 halignmentggeom.cc:68
 halignmentggeom.cc:69
 halignmentggeom.cc:70
 halignmentggeom.cc:71
 halignmentggeom.cc:72
 halignmentggeom.cc:73
 halignmentggeom.cc:74
 halignmentggeom.cc:75
 halignmentggeom.cc:76
 halignmentggeom.cc:77
 halignmentggeom.cc:78
 halignmentggeom.cc:79
 halignmentggeom.cc:80
 halignmentggeom.cc:81
 halignmentggeom.cc:82
 halignmentggeom.cc:83
 halignmentggeom.cc:84
 halignmentggeom.cc:85
 halignmentggeom.cc:86
 halignmentggeom.cc:87
 halignmentggeom.cc:88
 halignmentggeom.cc:89
 halignmentggeom.cc:90
 halignmentggeom.cc:91
 halignmentggeom.cc:92
 halignmentggeom.cc:93
 halignmentggeom.cc:94
 halignmentggeom.cc:95
 halignmentggeom.cc:96
 halignmentggeom.cc:97
 halignmentggeom.cc:98
 halignmentggeom.cc:99
 halignmentggeom.cc:100
 halignmentggeom.cc:101
 halignmentggeom.cc:102
 halignmentggeom.cc:103
 halignmentggeom.cc:104
 halignmentggeom.cc:105
 halignmentggeom.cc:106
 halignmentggeom.cc:107
 halignmentggeom.cc:108
 halignmentggeom.cc:109
 halignmentggeom.cc:110
 halignmentggeom.cc:111
 halignmentggeom.cc:112
 halignmentggeom.cc:113
 halignmentggeom.cc:114
 halignmentggeom.cc:115
 halignmentggeom.cc:116
 halignmentggeom.cc:117
 halignmentggeom.cc:118
 halignmentggeom.cc:119
 halignmentggeom.cc:120
 halignmentggeom.cc:121
 halignmentggeom.cc:122
 halignmentggeom.cc:123
 halignmentggeom.cc:124
 halignmentggeom.cc:125
 halignmentggeom.cc:126
 halignmentggeom.cc:127
 halignmentggeom.cc:128