CMS 3D CMS Logo

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