CMS 3D CMS Logo

OptOTiltmeter.cc
Go to the documentation of this file.
1 // COCOA class implementation file
2 //Id: OptOTiltmeter.cc
3 //CAT: Model
4 //
5 // History: v1.0
6 // Pedro Arce
7 
10 #include <iostream>
11 #include <iomanip>
12 #ifdef COCOA_VIS
13 #include "Alignment/CocoaVisMgr/interface/ALIVRMLMgr.h"
14 #include "Alignment/IgCocoaFileWriter/interface/IgCocoaFileMgr.h"
15 #endif
18 
19 using namespace CLHEP;
20 
21 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
22 //@@ Default behaviour: make measurement
23 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
25 {
26  makeMeasurement( lightray, meas);
27 
28 }
29 
30 
31 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
32 //@@ Make measurement as angle with the horizontal plane = angle between local Z axis and its projection on the global XZ plane
33 //-Make measurement as rotations around X axis: difference between current Z axis and Z axis (0,0,1)
34 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
36 {
37 
38  //---------- Get local Z axix
39  CLHEP::HepRotation rmt = rmGlob();
40  CLHEP::Hep3Vector ZAxisl(0.,0.,1.);
41  ZAxisl *= rmt;
42 
43  //--------- Get projection in a global XZ plane
44  /*-plane parallel to global Y (gravity) and to tiltmeter Z
45  CLHEP::Hep3Vector plane_point(0.,0.,0.);
46  CLHEP::Hep3Vector plane_normal = ZAxisl.cross( CLHEP::Hep3Vector(0.,1.,0.) );
47  CLHEP::Hep3Vector ZAxis_proj = (ALIPlane( plane_point, plane_normal)).project( ZAxisl );
48  */
49  CLHEP::Hep3Vector XAxisg(1.,0.,0.);
50  CLHEP::Hep3Vector ZAxisg(0.,0.,1.);
51  CLHEP::Hep3Vector ZAxis_proj = (ZAxisl*XAxisg) * XAxisg + (ZAxisl*ZAxisg) * ZAxisg;
52  ZAxis_proj *= (1. / ZAxis_proj.mag() );
53 
54  //--------- Get measurement
55  ALIdouble measvalue = acos(ZAxisl*ZAxis_proj / ZAxisl.mag() / ZAxis_proj.mag());
56  //----- get sign of angle as sign of y component of ZAxis
57  if( ZAxisl.y() != 0 ) measvalue *= (ZAxisl.y() / fabs(ZAxisl.y()) );
58  meas.setValueSimulated(0 , measvalue );
59 
60  if (ALIUtils::debug >= 3) {
61  ALIUtils::dump3v(ZAxisl," OptOTiltmeter: Local Z axis ");
62  ALIUtils::dumprm(rmt," tiltmeter rotation matrix");
63  ALIUtils::dump3v(ZAxis_proj," Projection of Local Z axis on global XZ plane ");
64  std::cout << "SIMU value: TA: " << std::setprecision(8) << 1000*meas.valueSimulated(0)
65  << " (mrad) " << (this)->name() << std::endl;
66  std::cout << "REAL value: TA: " << std::setprecision(8) << 1000*meas.value()[0]
67  << " (mrad) " << (this)->name() << std::endl;
68 
69  }
70 
71 
72  /*- //---------- Get simulated value:
73  CLHEP::HepRotation rmtori = rmGlobOriginal();
74  CLHEP::Hep3Vector ZAxism(0.,0.,1.);
75  CLHEP::Hep3Vector ZAxism_ori = ZAxism;
76  ZAxism_ori *= rmtori;
77 
78  //---------- Measure rotation with respect to original position, around the X axis defined by the original position, in the original YZ plane
79  CLHEP::Hep3Vector ZAxism_rot = ZAxism;
80  CLHEP::HepRotation rmt = rmGlob();
81  ZAxism_rot *= rmt;
82  //----- Project on original YZ plane
83  CLHEP::Hep3Vector YAxism_ori(0.,1.,0.);
84  YAxism_ori *= rmtori;
85  //--- create original YZ plane
86  CLHEP::Hep3Vector YZplanePoint = centreGlob();
87  CLHEP::Hep3Vector YZplaneNormal = YAxism_ori.cross( ZAxism_ori );
88  ALIPlane yzorig( YZplanePoint, YZplaneNormal );
89  CLHEP::Hep3Vector ZAxism_proj = yzorig.project( ZAxism_rot);
90  //- ALIUtils::dump3v( YAxism_ori, "YAxism_ori");
91  //- ALIUtils::dump3v( ZAxism_ori, "ZAxism_ori");
92  //- ALIUtils::dump3v( ZAxism_rot, "ZAxism_rot");
93  //- ALIUtils::dump3v( ZAxism_proj, "ZAxism_proj");
94  ALIdouble measValue = acos( ZAxism.dot(ZAxism_proj)/ZAxism_proj.mag() );
95  if( ZAxism_proj.x() < 0) measValue *= -1.;
96  meas.setValueSimulated(0 , measValue );
97 
98  if (ALIUtils::debug >= 3) {
99  std::cout << " OptOTiltmeter: Original Z axis " << ZAxism_ori << std::endl;
100  ALIUtils::dumprm(rmt," tiltmeter original rotation matrix");
101  std::cout << " OptOTiltmeter: current Z axis " << ZAxism_rot << std::endl;
102  ALIUtils::dumprm(rmt," tiltmeter current rotation matrix");
103  std::cout << "SIMU value; TA: " << std::setprecision(8) << meas.valueSimulated(0)
104  << " (rad) " << (this)->name() << std::endl;
105  std::cout << "REAL value: TA: " << std::setprecision(8) << meas.value()[0]
106  << " (rad) " << (this)->name() << std::endl;
107 
108  }
109  */
110 
111 }
112 
113 #ifdef COCOA_VIS
114 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
116 {
117  //- std::cout << " filling optosensor " << std::endl;
118  ALIVRMLMgr& vrmlmgr = ALIVRMLMgr::getInstance();
119  ALIColour* col = new ALIColour( 1., 1., 0., 0. );
120  vrmlmgr.AddBox( *this, .2, .2, 1., col);
121  vrmlmgr.SendReferenceFrame( *this, 0.6);
122  vrmlmgr.SendName( *this, 0.01 );
123 }
124 
125 
126 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
128 {
129  ALIColour* col = new ALIColour( 1., 0., 0.9, 0. );
130  std::vector<ALIdouble> spar;
131  spar.push_back(1.);
132  spar.push_back(1.);
133  spar.push_back(4.);
134  IgCocoaFileMgr::getInstance().addSolid( *this, "BOX", spar, col);
135 }
136 #endif
137 
138 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
140 {
141  ALIdouble go;
143  gomgr->getGlobalOptionValue("VisScale", go );
144 
145  theSolidShape = new CocoaSolidShapeBox( "Box", go*2.*cm/m, go*2.*cm/m, go*5.*cm/m ); //COCOA internal units are meters
146 }
147 
long double ALIdouble
Definition: CocoaGlobals.h:11
void defaultBehaviour(LightRay &lightray, Measurement &meas) override
virtual void fillVRML()
Definition: OpticalObject.h:55
static void dumprm(const CLHEP::HepRotation &rm, const std::string &msg, std::ostream &out=std::cout)
Definition: ALIUtils.cc:77
static ALIint debug
Definition: ALIUtils.h:36
void makeMeasurement(LightRay &lightray, Measurement &meas) override
static GlobalOptionMgr * getInstance()
void constructSolidShape() override
int getGlobalOptionValue(const ALIstring &sstr, ALIdouble &val)
--— Search a string in theGlobalOptions and return 1 if found
void setValueSimulated(ALIint coor, ALIdouble value)
Definition: Measurement.h:196
static void dump3v(const CLHEP::Hep3Vector &vec, const std::string &msg)
Definition: ALIUtils.cc:61
virtual void fillIguana()
Definition: OpticalObject.h:56
const ALIdouble * value() const
Definition: Measurement.h:125
col
Definition: cuy.py:1010
const ALIdouble valueSimulated(ALIuint ii) const
Definition: Measurement.h:117