CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
OptOSensor2D.cc
Go to the documentation of this file.
1 // COCOA class implementation file
2 //Id: OptOSensor2D.cc
3 //CAT: Model
4 //
5 // History: v1.0
6 // Pedro Arce
7 
15 #ifdef COCOA_VIS
16 #include "Alignment/CocoaVisMgr/interface/ALIVRMLMgr.h"
17 #include "Alignment/IgCocoaFileWriter/interface/IgCocoaFileMgr.h"
18 #endif
23 
24 #include <iostream>
25 #include <iomanip>
26 #include <fstream>
27 #include <cstdlib>
28 #include <cmath> // include floating-point std::abs functions
29 
30 using namespace CLHEP;
31 
32 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
33 //@@ Make measurement as distance to previous object 'screen'
34 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
35 void OptOSensor2D::defaultBehaviour(LightRay& lightray, Measurement& meas) { makeMeasurement(lightray, meas); }
36 
37 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
38 //@@ Make measurement as distance to previous object 'screen'
39 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
41  //---------- check is last and not the only one
42  /* if( vocite - OptOList().begin() == 0 ||
43  OptOList().end() - vocite != 1) {
44  std::cerr << " last and not only one Optical Object should be 'sensor2D' (unless you specify (:T)raverse) " <<
45  OptOList().end() - vocite << " size " <<OptOList().size() << std::endl;
46  DumpBadOrderOptOs();
47  }*/
48 
49  //---------- Get simulated value
50  //---------- Get intersection
51  CLHEP::Hep3Vector ZAxis(0., 0, 1.);
52  CLHEP::HepRotation rmt = rmGlob();
53  ZAxis = rmt * ZAxis;
54  if (ALIUtils::debug >= 4) {
55  ALIUtils::dump3v(centreGlob(), " sensor2D centre Glob ");
56  ALIUtils::dump3v(ZAxis, " snsor2D normal ");
57  }
58  //- ALIUtils::dumprm( rmt, "rot global " );
59  lightray.intersect(ALIPlane(centreGlob(), ZAxis));
60  CLHEP::Hep3Vector inters = lightray.point();
61 
62  ALIdouble* interslc;
63  interslc = convertPointToLocalCoordinates(inters);
64  ALIdouble interslcx = interslc[0];
65  ALIdouble interslcy = interslc[1];
66  meas.setValueSimulated(0, interslcx);
67  meas.setValueSimulated(1, interslcy);
68 
69  //----- Dump info
70  if (ALIUtils::debug >= 2) {
71  //--- Special for range studies
72  ALIstring chrg = "";
73  /*t if(Model::Ncmslinkrange >= 1 && Model::Ncmslinkrange <= 8 ) {
74  chrg = "RG";
75  } else {
76  chrg = "";
77  } t*/
78  CLHEP::Hep3Vector measvv(meas.value()[0], meas.value()[1], 0.);
79  measvv = rmt * measvv;
80  ALIUtils::dump3v(measvv, " $$$$$$MEAS IN LOCAL FRAME");
81  ALIUtils::dump3v(measvv + centreGlob(), " $$$$$$MEAS IN GLOBAL FRAME");
82 
83  ALIdouble detH = 1000 * meas.valueSimulated(0);
84  if (std::abs(detH) <= 1.e-9)
85  detH = 0.;
86  ALIdouble detV = 1000 * meas.valueSimulated(1);
87  if (std::abs(detV) <= 1.e-9)
88  detV = 0.;
89  std::cout << "REAL value: " << chrg << meas.valueType(0) << ": " << 1000 * meas.value()[0] << chrg << " "
90  << meas.valueType(1) << ": " << 1000 * meas.value()[1] << " (mm) " << (this)->name()
91  << " DIFF= " << detH - 1000 * meas.value()[0] << " " << detV - 1000 * meas.value()[1] << std::endl;
92  std::cout << "SIMU value: " << chrg << " " << meas.valueType(0)
93  << ": "
94  // << setprecision(3) << setw(4)
95  << detH << chrg << " " << meas.valueType(1) << ": " << detV << " (mm) " << (this)->name() << std::endl;
96  /*- std::cout << "SIMU value: " << chrg << " " << meas.valueType(0) << ": "
97  // << setprecision(3) << setw(4)
98  << detH / 0.3125
99  << chrg << " " << meas.valueType(1) << ": " << detV / 0.3125
100  << " STRIPS " << (this)->name() << std::endl; */
101  // << detH
102  // << chrg << " V: " << detV
103  // << " (mm) " << (this)->name() << std::endl;
104  ALIUtils::dump3v(1000. * (inters - parent()->centreGlob()), " $$$$$$SIMU inters - parent centre");
105  ALIUtils::dump3v(1000. * (inters - centreGlob()), " $$$$$$SIMU inters - centre");
106  }
107  //t delete &lightray;
108 
109  // store the lightray position and direction
110  meas.setLightRayPosition(lightray.point());
111  meas.setLightRayDirection(lightray.direction());
112 
113  delete[] interslc;
114 }
115 
116 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
117 //@@ Fast simulation of Light Ray traverses
118 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
121  if (ALIUtils::debug >= 2)
122  std::cout << "LR: FAST TRAVERSES SENSOR2D " << name() << std::endl;
123 
124  //---------- Shift and Deviate
125 
126  //---------- Get intersection
127  CLHEP::Hep3Vector ZAxis(0., 0, 1.);
128  CLHEP::HepRotation rmt = rmGlob();
129  ZAxis = rmt * ZAxis;
130  lightray.intersect(ALIPlane(centreGlob(), ZAxis));
131  CLHEP::Hep3Vector inters = lightray.point();
132 
133  ALIdouble deviX, deviY, devi;
134  // if deviationsFromFile are applied and this sensors has them get the deviations that corresponds to the intersection point.
135  // Set this deviation as original one, as it will not be changed for derivatives
136  if (DeviationsFromFileSensor2D::apply() && fdevi_from_file) {
137  //- std::cout << " DeviationsFromFileSensor2D::apply() " << DeviationsFromFileSensor2D::apply() << std::endl;
138  if (ALIUtils::debug >= 4) {
139  std::cout << "fdeviFromFile" << fdevi_from_file << std::endl;
140  //- std::cout << "deviFromFile" << deviFromFile << std::endl;
141  }
142  //--------- get measurement value of the current sensor
143  std::vector<Measurement*>& measv = Model::MeasurementList();
144  unsigned int ii;
145  Measurement* omeas = nullptr;
146  for (ii = 0; ii < measv.size(); ii++) {
147  //- std::cout << " sensor2d finding meas " << measv[ii]->sensorName() << " " << name() << std::endl;
148  if (measv[ii]->sensorName() == name()) {
149  omeas = measv[ii];
150  break;
151  }
152  }
153  if (omeas == nullptr) {
154  throw cms::Exception("LogicError") << "@SUB=OptOSensor2D::fastTraversesLightRay\n"
155  << "meas " << name() << " not found";
156  }
157 
158  ALIdouble interslcx = omeas->value(0);
159  ALIdouble interslcy = omeas->value(1);
160  if (ALIUtils::debug >= 5)
161  std::cout << " interslcx " << interslcx << " interslcy " << interslcy << std::endl;
162  //----- transform in milimeters and positive
163  //mum interslcx = interslcx*1.E6 + 10000.;
164  //mum interslcy = interslcy*1.E6 + 10000.;
166  interslcx = interslcx / df + 0.010 / df;
167  interslcy = interslcy / df + 0.010 / df;
168  if (ALIUtils::debug >= 5)
169  std::cout << " interslcx " << interslcx << " interslcy " << interslcy << std::endl;
170 
171  //---------- Get deviations from file (they are in microrads)
172  std::pair<ALIdouble, ALIdouble> devis = deviFromFile->getDevis(interslcx, interslcy);
173  deviX = devis.second;
174  deviY = -devis.first;
175  // deviX = devis.first;
176  // deviY = devis.second;
177 
178  //o deviX = *((deviFromFile->deviationsInX()).begin() + pointY*deviFromFile->nPoints() + pointX) * 1.E-6;;
179  //o deviY = *((deviFromFile->deviationsInY().begin()) + pointY*deviFromFile->nPoints() + pointX) * 1.E-6;
180 
181  //---------- Set this deviation value as original one, as it will not be changed for derivatives (change the entry and also the ExtraEntryValueOriginalList())
182  ALIuint entryNo = extraEntryNo("deviX");
183  if (verbose >= 3)
184  std::cout << "entrynox" << entryNo << name() << verbose << std::endl;
185  Entry* entryDeviX = *(ExtraEntryList().begin() + entryNo);
186  entryDeviX->setValue(deviX);
187  //- std::vector< ALIdouble >::const_iterator eevolite = static_cast<std::vector< ALIdouble >::iterator>( ExtraEntryValueOriginalList().begin() );
188  std::vector<ALIdouble> eevil = ExtraEntryValueOriginalList();
189  //- std::vector< ALIdouble >::const_iterator eevolite = ( ExtraEntryValueOriginalList().begin() );
190  std::vector<ALIdouble>::iterator eevolite = eevil.begin();
191 
192  *(eevolite + entryNo) = deviX;
193  if (verbose >= 3)
194  std::cout << " entryDeviX name " << entryDeviX->name() << entryDeviX->value() << std::endl;
195  entryNo = extraEntryNo("deviY");
196  Entry* entryDeviY = *(ExtraEntryList().begin() + entryNo);
197  //- std::cout << "entrynoy" << entryNo << name() << std::endl;
198  entryDeviY->setValue(deviY);
199  *(eevolite + entryNo) = deviY;
200  //- std::cout<< entryDeviY << " entryDeviY name " << entryDeviY->name() << entryDeviY->value() << std::endl;
201 
202  } else {
203  deviX = findExtraEntryValue("deviX");
204  deviY = findExtraEntryValue("deviY");
205 
206  //??? why previous does not work??
207  if (fdevi_from_file) {
208  if (ALIUtils::debug >= 5)
209  std::cout << "fdeviFromFile" << fdevi_from_file << std::endl;
210  ALIuint entryNo = extraEntryNo("deviX");
211  Entry* entryDeviX = *(ExtraEntryList().begin() + entryNo);
212  if (verbose >= 3)
213  std::cout << entryDeviX << " entryDeviX name " << entryDeviX->name() << entryDeviX->value() << std::endl;
214  deviX = entryDeviX->value();
215  entryNo = extraEntryNo("deviY");
216  Entry* entryDeviY = *(ExtraEntryList().begin() + entryNo);
217  if (verbose >= 3)
218  std::cout << entryDeviY << " entryDeviY name " << entryDeviY->name() << entryDeviY->value() << std::endl;
219  deviY = entryDeviY->value();
220 
221  } else {
222  ALIbool bb = findExtraEntryValueIfExists("devi", devi);
223  if (bb) {
224  deviX = devi;
225  deviY = devi;
226  }
227  if (ALIUtils::debug >= 4) {
228  std::cout << "devi " << devi << " devi x " << deviX << " devi y " << deviY << std::endl;
229  }
230  }
231  }
232  if (ALIUtils::debug >= 4) {
233  std::cout << " devi x " << deviX << " devi y " << deviY << std::endl;
234  }
235 
236  lightray.setPoint(inters);
237 
238  lightray.shiftAndDeviateWhileTraversing(this, 'T');
239  if (ALIUtils::debug >= 2) {
240  lightray.dumpData("Shifted and Deviated");
241  }
242 }
243 
244 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
245 //@@ Fast simulation of Light Ray traverses
246 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
248  if (ALIUtils::debug >= 4)
249  std::cout << "%%% LR: DETAILED TRAVERSES SENSOR2D " << name() << std::endl;
250  if (DeviationsFromFileSensor2D::apply() && fdevi_from_file) {
252  //- std::cout << "fdeviFromFile" << fdevi_from_file << std::endl;
253  if (ALIUtils::debug >= 0)
254  std::cerr << "!!WARNING: sensor " << name()
255  << " has read deviation from file and it will not be taken into account. Please use FAST TRAVERSES"
256  << deviFromFile << std::endl;
257  }
258 
259  //---------- If width is 0, just keep the intersection point
260  ALIdouble width = findExtraEntryValue("width");
261  if (width == 0) {
262  //---------- Get intersection
263  CLHEP::Hep3Vector ZAxis(0., 0, 1.);
264  CLHEP::HepRotation rmt = rmGlob();
265  ZAxis = rmt * ZAxis;
266  lightray.intersect(ALIPlane(centreGlob(), ZAxis));
267  CLHEP::Hep3Vector inters = lightray.point();
268  lightray.setPoint(inters);
269  if (ALIUtils::debug >= 2) {
270  lightray.dumpData("LightRay Sensor2D traversed: ");
271  }
272  return;
273  }
274 
275  if (ALIUtils::debug >= 4)
276  std::cout << std::endl << "$$$ LR: REFRACTION IN FORWARD PLATE " << std::endl;
277  //---------- Get forward plate
278  ALIPlane plate = getPlate(true, true);
279  //---------- Refract while entering object
280  ALIdouble refra_ind1 = 1.;
281  ALIdouble refra_ind2 = findExtraEntryValueMustExist("refra_ind");
282  lightray.refract(plate, refra_ind1, refra_ind2);
283 
284  if (ALIUtils::debug >= 4)
285  std::cout << std::endl << "$$$ LR: REFRACTION IN BACKWARD PLATE " << std::endl;
286  //---------- Get backward plate
287  plate = getPlate(false, true);
288  //---------- Refract while exiting splitter
289  lightray.refract(plate, refra_ind2, refra_ind1);
290 
291  CLHEP::Hep3Vector inters = lightray.point();
292  lightray.setPoint(inters);
293 
294  if (ALIUtils::debug >= 4) {
295  lightray.dumpData("LightRay Sensor2D traversed: ");
296  }
297 }
298 
299 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
300 //@@ fillExtraEntry: fill it from file or fill it the usual way
301 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
302 void OptOSensor2D::fillExtraEntry(std::vector<ALIstring>& wordlist) {
303  if (ALIUtils::debug >= 5)
304  std::cout << "OptOSensor2D fillExtraEntry wordlist[1] " << wordlist[1] << std::endl;
305  //---------- check if it is deviation read from file
306  fdevi_from_file = false;
307  //- std::cout << "WL " << wordlist[1]<< "WL " << wordlist[2]<< "WL " << wordlist[3] << std::endl;
308  if (wordlist[1] == ALIstring("devi") && wordlist[2] == ALIstring("from_file")) {
309  //---------- Open file
310  ALIstring fnam;
311  if (wordlist.size() >= 4) {
312  fnam = wordlist[3];
313  } else {
314  //----- Build up file name if it does not exists
315  fnam = "dat/devi-";
316  fnam += shortName();
317  fnam += ".dat";
318  }
319 
320  ALIFileIn& ifdevi = ALIFileIn::getInstance(fnam);
321 
322  //----- Check that file exists
323  if (ALIUtils::debug >= 4)
324  std::cout << "Opening deviation file: " << fnam << std::endl;
325  /*- if( !ifdevi ) {
326  std::cerr << " !!! Sensor2D Deviation file not found: " << fnam << " of object " << name() << std::endl;
327  exit(1);
328  }*/
329 
330  deviFromFile = new DeviationsFromFileSensor2D();
331  fdevi_from_file = true;
332  if (ALIUtils::debug >= 5)
333  std::cout << "deviFromFile " << deviFromFile << std::endl;
334  //----- Read header
335  ALIstring sensor1_name, sensor2_name;
336  ALIdouble sensor_dist;
337  ALIdouble prec_deviX, prec_deviY;
338 
339  std::vector<ALIstring> wl;
340  ifdevi.getWordsInLine(wl);
341  sensor1_name = wl[0];
342  sensor2_name = wl[1];
343  sensor_dist = atof(wl[2].c_str());
344  // 'c' means that light is traversing the glass
345  if (sensor1_name[sensor1_name.size() - 2] == 'c') {
346  sensor1_name = sensor1_name.substr(0, sensor1_name.size() - 1);
347  }
348  if (sensor2_name[sensor2_name.size() - 2] == 'c') {
349  sensor2_name = sensor2_name.substr(0, sensor2_name.size() - 1);
350  }
351  if (ALIUtils::debug >= 5)
352  std::cout << "sensor1_name " << sensor1_name << " sensor2_name " << sensor2_name << " sensor_dist " << sensor_dist
353  << " unknown " << wl[3] << std::endl;
354 
355  ifdevi.getWordsInLine(wl);
356  prec_deviX = atof(wl[0].c_str());
357  prec_deviY = atof(wl[1].c_str());
358 
359  if (ALIUtils::debug >= 5)
360  std::cout << "prec_deviX " << prec_deviX << " prec_deviY " << prec_deviY << std::endl;
361 
362  deviFromFile = new DeviationsFromFileSensor2D();
363  ALIdouble offsetX, offsetY;
364  if (wl.size() == 5) {
365  offsetX = ALIUtils::getFloat(wl[3]);
366  offsetY = ALIUtils::getFloat(wl[4]);
367  deviFromFile->setOffset(offsetX, offsetY);
368  }
369  deviFromFile->readFile(ifdevi);
370  fdevi_from_file = true;
371  if (ALIUtils::debug >= 5)
372  std::cout << "deviFromFile " << deviFromFile << std::endl;
373 
374  //--- Fill extra entries 'deviX' & 'deviY' to compute derivatives
375  std::vector<ALIstring> wlo;
376  char chartmp[20];
377  wlo.push_back(wordlist[0]);
378  wlo.push_back("deviX");
379  wlo.push_back("0"); // value is set to 0 as it is on the file and the point of intersection is not computed yet
380  gcvt(prec_deviX, 10, chartmp);
381  wlo.push_back(ALIstring(chartmp));
382  wlo.push_back("cal");
383  std::vector<ALIstring> wl2(wlo);
385 
386  wl2[1] = "deviY";
387  gcvt(prec_deviY, 10, chartmp);
388  wl2[3] = ALIstring(chartmp);
390 
391  } else {
393  }
394 }
395 
396 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
397 //@@
398 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
400  ALIdouble* interslc = new ALIdouble[2];
401 
402  //----- X value
403  CLHEP::HepRotation rmt = rmGlob();
404  CLHEP::Hep3Vector XAxism(1., 0., 0.);
405  XAxism *= rmt;
406  if (ALIUtils::debug >= 5)
407  ALIUtils::dump3v((this)->centreGlob(), "centre glob sensor2D");
408  if (ALIUtils::debug >= 5)
409  ALIUtils::dumprm(rmt, "rotation matrix sensor2D");
410  //t ALIUtils::dump3v(point - (this)->centreGlob() , "inters - (this)->centreGlob()");
411  if (ALIUtils::debug >= 5)
412  ALIUtils::dump3v(XAxism, "XAxism");
413  interslc[0] = (point - (this)->centreGlob()) * XAxism;
414 
415  //----- Y value
416  CLHEP::Hep3Vector YAxism(0., 1., 0.);
417  YAxism *= rmt;
418  if (ALIUtils::debug >= 5)
419  ALIUtils::dump3v(YAxism, "YAxism");
420  interslc[1] = (point - (this)->centreGlob()) * YAxism;
421 
422  if (ALIUtils::debug >= 5) {
423  std::cout << " intersection in local coordinates: X= " << interslc[0] << " Y= " << interslc[1] << std::endl;
424  ALIUtils::dump3v(point - (this)->centreGlob(), " inters - centre ");
425  }
426  return interslc;
427 }
428 
429 #ifdef COCOA_VIS
430 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
431 void OptOSensor2D::fillVRML() {
432  //- std::cout << " filling optosensor " << std::endl;
433  ALIVRMLMgr& vrmlmgr = ALIVRMLMgr::getInstance();
434  ALIColour* col = new ALIColour(0., 0., 1., 0.);
435  vrmlmgr.AddBox(*this, 1., 1., .2, col);
436  vrmlmgr.SendReferenceFrame(*this, 0.6);
437  vrmlmgr.SendName(*this, 0.1);
438 }
439 
440 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
442  ALIColour* col = new ALIColour(0., 0., 1., 0.);
443  std::vector<ALIdouble> spar;
444  spar.push_back(20.);
445  spar.push_back(20.);
446  spar.push_back(5.);
447  IgCocoaFileMgr::getInstance().addSolid(*this, "BOX", spar, col);
448 }
449 #endif
450 
451 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
453  ALIdouble go;
455  gomgr->getGlobalOptionValue("VisScale", go);
456 
457  theSolidShape = new CocoaSolidShapeBox(
458  "Box", go * 4. * cm / m, go * 4. * cm / m, go * 1. * cm / m); //COCOA internal units are meters
459 }
long double ALIdouble
Definition: CocoaGlobals.h:11
void detailedTraversesLightRay(LightRay &lightray) override
static ALIFileIn & getInstance(const ALIstring &name)
Definition: ALIFileIn.cc:22
void shiftAndDeviateWhileTraversing(const OpticalObject *opto, char behav)
Definition: LightRay.cc:235
const ALIstring valueType(ALIuint ii) const
Definition: Measurement.h:116
virtual void fillVRML()
Definition: OpticalObject.h:54
static void dumprm(const CLHEP::HepRotation &rm, const std::string &msg, std::ostream &out=std::cout)
Definition: ALIUtils.cc:71
void refract(const ALIPlane &plate, const ALIdouble refra_ind1, const ALIdouble refra_ind2)
Definition: LightRay.cc:157
static ALIint debug
Definition: ALIUtils.h:34
static GlobalOptionMgr * getInstance()
int ii
Definition: cuy.py:589
void makeMeasurement(LightRay &lightray, Measurement &meas) override
Definition: OptOSensor2D.cc:40
static double getFloat(const ALIstring &str)
Convert a string to an float, checking that it is really a number.
Definition: ALIUtils.cc:373
int getGlobalOptionValue(const ALIstring &sstr, ALIdouble &val)
--— Search a string in theGlobalOptions and return 1 if found
bool ALIbool
Definition: CocoaGlobals.h:19
void setPoint(const CLHEP::Hep3Vector &point)
Definition: LightRay.h:63
static constexpr int verbose
const CLHEP::Hep3Vector & point() const
Definition: LightRay.h:57
void setLightRayPosition(const CLHEP::Hep3Vector &lightRayPosition)
Definition: Measurement.h:169
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
void setValueSimulated(ALIint coor, ALIdouble value)
Definition: Measurement.h:146
void setLightRayDirection(const CLHEP::Hep3Vector &lightRayDirection)
Definition: Measurement.h:170
void fastTraversesLightRay(LightRay &lightray) override
void defaultBehaviour(LightRay &lightray, Measurement &meas) override
Definition: OptOSensor2D.cc:35
static void setApply(ALIbool val)
virtual void fillExtraEntry(std::vector< ALIstring > &wordlist)
void fillExtraEntry(std::vector< ALIstring > &wordlist) override
ALIint getWordsInLine(std::vector< ALIstring > &wl)
Definition: ALIFileIn.cc:74
static void dump3v(const CLHEP::Hep3Vector &vec, const std::string &msg)
Definition: ALIUtils.cc:58
void intersect(const ALIPlane &plane)
Definition: LightRay.cc:93
void constructSolidShape() override
virtual void fillIguana()
Definition: OpticalObject.h:55
const ALIdouble * value() const
Definition: Measurement.h:109
std::string ALIstring
Definition: CocoaGlobals.h:9
void dumpData(const ALIstring &str) const
Definition: LightRay.cc:374
const ALIdouble valueSimulated(ALIuint ii) const
Definition: Measurement.h:105
tuple cout
Definition: gather_cfg.py:144
static std::vector< Measurement * > & MeasurementList()
Definition: Model.h:88
int col
Definition: cuy.py:1009
ALIdouble * convertPointToLocalCoordinates(const CLHEP::Hep3Vector &point)
const CLHEP::Hep3Vector & direction() const
Definition: LightRay.h:58
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
static ALIdouble LengthValueDimensionFactor()
Definition: ALIUtils.h:62
unsigned int ALIuint
Definition: CocoaGlobals.h:17