CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
OptOSensor2D Class Reference

#include <OptOSensor2D.h>

Inheritance diagram for OptOSensor2D:
OpticalObject

Public Member Functions

void constructSolidShape () override
 
ALIdoubleconvertPointToLocalCoordinates (const CLHEP::Hep3Vector &point)
 
void defaultBehaviour (LightRay &lightray, Measurement &meas) override
 
void detailedTraversesLightRay (LightRay &lightray) override
 
void fastTraversesLightRay (LightRay &lightray) override
 
void fillExtraEntry (std::vector< ALIstring > &wordlist) override
 
void makeMeasurement (LightRay &lightray, Measurement &meas) override
 
 OptOSensor2D ()
 
 OptOSensor2D (OpticalObject *parent, const ALIstring &type, const ALIstring &name, const ALIbool copy_data)
 
 ~OptOSensor2D () override
 
- Public Member Functions inherited from OpticalObject
void addCoordinateEntryToList (Entry *entry)
 
void addExtraEntryToList (Entry *entry)
 
void addExtraEntryValueOriginalOriginalToList (ALIdouble entry_value)
 
void addExtraEntryValueOriginalToList (ALIdouble entry_value)
 
void addExtraEntryValueToList (ALIdouble entry_value)
 
double addPii (double val)
 
double approxTo0 (double val)
 
CLHEP::HepRotation buildRmFromEntryValuesOriginalOriginal ()
 
const CLHEP::Hep3Vector & centreGlob () const
 
const CLHEP::Hep3Vector & centreGlobal () const
 
const CLHEP::Hep3Vector & centreGlobOriginal () const
 
const CLHEP::Hep3Vector & centreGlobOriginalOriginal () const
 
const CLHEP::Hep3Vector centreLocal () const
 
int checkMatrixEquations (double angleX, double angleY, double angleZ, CLHEP::HepRotation *rot=nullptr)
 
void construct ()
 
void constructFromOptAligInfo (const OpticalAlignInfo &oaInfo)
 
virtual void constructMaterial ()
 
const std::vector< Entry * > & CoordinateEntryList () const
 
void createComponentOptOsFromOptAlignInfo ()
 
virtual void detailedDeviatesLightRay (LightRay &lightray)
 
double diff2pi (double ang1, double ang2)
 
void displaceCentreGlob (const CLHEP::Hep3Vector &dispVec)
 
void displaceCentreGlob (const XYZcoor coor, const ALIdouble disp)
 
void displaceCentreGlobOriginal (const CLHEP::Hep3Vector &dispVec)
 
void displaceCentreGlobOriginal (const XYZcoor coor, const ALIdouble disp)
 
void displaceCentreGlobOriginalOriginal (const CLHEP::Hep3Vector &dispVec)
 
void displaceCentreGlobOriginalOriginal (const XYZcoor coor, const ALIdouble disp)
 
void displaceExtraEntry (const ALIuint entryNo, const ALIdouble disp)
 
void displaceExtraEntryOriginal (const ALIuint entryNo, const ALIdouble disp)
 
void displaceExtraEntryOriginalOriginal (const ALIuint entryNo, const ALIdouble disp)
 
void displaceRmGlobAroundGlobal (OpticalObject *opto1stRotated, const XYZcoor coor, const ALIdouble disp)
 
void displaceRmGlobAroundLocal (OpticalObject *opto1stRotated, const XYZcoor coor, const ALIdouble disp)
 
void displaceRmGlobOriginal (const OpticalObject *opto1stRotated, const XYZcoor coor, const ALIdouble disp)
 
void displaceRmGlobOriginalOriginal (const OpticalObject *opto1stRotated, const XYZcoor coor, const ALIdouble disp)
 
bool eq2ang (double ang1, double ang2)
 
const std::vector< Entry * > & ExtraEntryList () const
 
const ALIint extraEntryNo (const ALIstring &entry_name) const
 
std::vector< ALIdouble > & ExtraEntryValueList ()
 
const std::vector< ALIdouble > & ExtraEntryValueOriginalList ()
 
const std::vector< ALIdouble > & ExtraEntryValueOriginalOriginalList ()
 
virtual void fastDeviatesLightRay (LightRay &lightray)
 
virtual void fillIguana ()
 
virtual void fillVRML ()
 
const ALIdouble findExtraEntryValue (const ALIstring &eename) const
 
const ALIbool findExtraEntryValueIfExists (const ALIstring &eename, ALIdouble &value) const
 
const ALIdouble findExtraEntryValueMustExist (const ALIstring &eename) const
 
const ALIuint getCmsswID () const
 
std::vector< ALIstringgetCoordinateFromOptAlignParam (const OpticalAlignParam &oaParam)
 
CLHEP::Hep3Vector getDisplacementInLocalCoordinates (const XYZcoor coor, const ALIdouble disp)
 
const double getEntryCentre (const ALIstring &coor) const
 
const double getEntryCentre (const XYZcoor coor) const
 
const double getEntryRMangle (const ALIstring &coor) const
 
const double getEntryRMangle (const XYZcoor coor) const
 
std::vector< double > getLocalRotationAngles (const std::vector< Entry * > &entries) const
 
CocoaMaterialElementarygetMaterial () const
 
ALIPlane getPlate (const ALIbool forwardPlate, const ALIbool applyWedge)
 
std::vector< double > getRotationAnglesFromMatrix (CLHEP::HepRotation &rmLocal, const std::vector< Entry * > &entries) const
 
std::vector< double > getRotationAnglesInOptOFrame (const OpticalObject *optoAncestor, const std::vector< Entry * > &entries) const
 
CocoaSolidShapegetSolidShape () const
 
CLHEP::Hep3Vector getZAxis ()
 
const ALIuint ID () const
 
const ALIstring longName () const
 
Measurementmeas ()
 
const ALIstringname () const
 
 OpticalObject ()
 
 OpticalObject (OpticalObject *parent, const ALIstring &type, const ALIstring &name, const ALIbool copy_data)
 
const OpticalObjectparent () const
 
virtual void participateInMeasurement (LightRay &lightray, Measurement &meas, const ALIstring &behav)
 
void propagateGlobalRMOriginalOriginalChangeToChildren (const CLHEP::HepRotation &rmorioriold, const CLHEP::HepRotation &rmoriorinew)
 
void resetGlobalCoordinates ()
 
void resetOriginalOriginalCoordinates ()
 
const CLHEP::HepRotation & rmGlob () const
 
const CLHEP::HepRotation & rmGlobOriginal () const
 
const CLHEP::HepRotation & rmGlobOriginalOriginal () const
 
const CLHEP::HepRotation rmLocal () const
 
void setCmsswID (ALIuint id)
 
void setExtraEntryValue (const ALIuint entryNo, const ALIdouble disp)
 
void setGlobalCoordinates ()
 
void setGlobalRMOriginalOriginal (const CLHEP::HepRotation &rmoriori)
 
void setID (ALIuint id)
 
void setMeas (Measurement *meas)
 set current measurement More...
 
void setOriginalEntryValues ()
 
void setRmGlobal (const CLHEP::HepRotation &rm)
 
void setRmGlobalOriginal (const CLHEP::HepRotation &rm)
 
void setType (const ALIstring &type)
 
const ALIstring shortName () const
 
const ALIstringtype () const
 
virtual void userDefinedBehaviour (LightRay &lightray, Measurement &meas, const ALIstring &behav)
 
virtual ~OpticalObject ()
 

Private Attributes

DeviationsFromFileSensor2DdeviFromFile
 
ALIbool fdevi_from_file
 

Additional Inherited Members

- Protected Attributes inherited from OpticalObject
CocoaMaterialElementarytheMaterial
 
CocoaSolidShapetheSolidShape
 
ALIint verbose
 

Detailed Description

Definition at line 19 of file OptOSensor2D.h.

Constructor & Destructor Documentation

◆ OptOSensor2D() [1/2]

OptOSensor2D::OptOSensor2D ( )
inline

Definition at line 22 of file OptOSensor2D.h.

22 {};

◆ OptOSensor2D() [2/2]

OptOSensor2D::OptOSensor2D ( OpticalObject parent,
const ALIstring type,
const ALIstring name,
const ALIbool  copy_data 
)
inline

Definition at line 23 of file OptOSensor2D.h.

24  : OpticalObject(parent, type, name, copy_data), fdevi_from_file(false){};

◆ ~OptOSensor2D()

OptOSensor2D::~OptOSensor2D ( )
inlineoverride

Definition at line 25 of file OptOSensor2D.h.

25 {};

Member Function Documentation

◆ constructSolidShape()

void OptOSensor2D::constructSolidShape ( )
overridevirtual

Reimplemented from OpticalObject.

Definition at line 452 of file OptOSensor2D.cc.

452  {
453  ALIdouble go;
455  gomgr->getGlobalOptionValue("VisScale", go);
456 
458  "Box", go * 4. * cm / m, go * 4. * cm / m, go * 1. * cm / m); //COCOA internal units are meters
459 }

References GlobalOptionMgr::getGlobalOptionValue(), GlobalOptionMgr::getInstance(), and visualization-live-secondInstance_cfg::m.

◆ convertPointToLocalCoordinates()

ALIdouble * OptOSensor2D::convertPointToLocalCoordinates ( const CLHEP::Hep3Vector &  point)

Definition at line 399 of file OptOSensor2D.cc.

399  {
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 }

References gather_cfg::cout, ALIUtils::debug, ALIUtils::dump3v(), ALIUtils::dumprm(), and point.

◆ defaultBehaviour()

void OptOSensor2D::defaultBehaviour ( LightRay lightray,
Measurement meas 
)
overridevirtual

Reimplemented from OpticalObject.

Definition at line 35 of file OptOSensor2D.cc.

35 { makeMeasurement(lightray, meas); }

◆ detailedTraversesLightRay()

void OptOSensor2D::detailedTraversesLightRay ( LightRay lightray)
overridevirtual

Reimplemented from OpticalObject.

Definition at line 247 of file OptOSensor2D.cc.

247  {
248  if (ALIUtils::debug >= 4)
249  std::cout << "%%% LR: DETAILED TRAVERSES SENSOR2D " << name() << std::endl;
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
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 }

References DeviationsFromFileSensor2D::apply(), beam_dqm_sourceclient-live_cfg::cerr, gather_cfg::cout, ALIUtils::debug, LightRay::dumpData(), LightRay::intersect(), Skims_PA_cff::name, LightRay::point(), LightRay::refract(), DeviationsFromFileSensor2D::setApply(), LightRay::setPoint(), and ApeEstimator_cff::width.

◆ fastTraversesLightRay()

void OptOSensor2D::fastTraversesLightRay ( LightRay lightray)
overridevirtual

Reimplemented from OpticalObject.

Definition at line 119 of file OptOSensor2D.cc.

119  {
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
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 }

References DeviationsFromFileSensor2D::apply(), gather_cfg::cout, ALIUtils::debug, LightRay::dumpData(), Exception, cuy::ii, LightRay::intersect(), ALIUtils::LengthValueDimensionFactor(), Model::MeasurementList(), Skims_PA_cff::name, LightRay::point(), LightRay::setPoint(), LightRay::shiftAndDeviateWhileTraversing(), Measurement::value(), and verbose.

◆ fillExtraEntry()

void OptOSensor2D::fillExtraEntry ( std::vector< ALIstring > &  wordlist)
overridevirtual

Reimplemented from OpticalObject.

Definition at line 302 of file OptOSensor2D.cc.

302  {
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 
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 
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 }

References gather_cfg::cout, ALIUtils::debug, OpticalObject::fillExtraEntry(), ALIUtils::getFloat(), ALIFileIn::getInstance(), ALIFileIn::getWordsInLine(), and LaserClient_cfi::wl.

◆ makeMeasurement()

void OptOSensor2D::makeMeasurement ( LightRay lightray,
Measurement meas 
)
overridevirtual

Reimplemented from OpticalObject.

Definition at line 40 of file OptOSensor2D.cc.

40  {
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 }

References funct::abs(), gather_cfg::cout, ALIUtils::debug, LightRay::direction(), ALIUtils::dump3v(), MillePedeFileConverter_cfg::e, LightRay::intersect(), Skims_PA_cff::name, class-composition::parent, LightRay::point(), Measurement::setLightRayDirection(), Measurement::setLightRayPosition(), Measurement::setValueSimulated(), Measurement::value(), Measurement::valueSimulated(), and Measurement::valueType().

Member Data Documentation

◆ deviFromFile

DeviationsFromFileSensor2D* OptOSensor2D::deviFromFile
private

Definition at line 50 of file OptOSensor2D.h.

◆ fdevi_from_file

ALIbool OptOSensor2D::fdevi_from_file
private

Definition at line 51 of file OptOSensor2D.h.

LightRay::dumpData
void dumpData(const ALIstring &str) const
Definition: LightRay.cc:374
ALIUtils::getFloat
static double getFloat(const ALIstring &str)
Convert a string to an float, checking that it is really a number.
Definition: ALIUtils.cc:373
ApeEstimator_cff.width
width
Definition: ApeEstimator_cff.py:24
OpticalObject::meas
Measurement * meas()
Definition: OpticalObject.h:200
ALIbool
bool ALIbool
Definition: CocoaGlobals.h:19
OpticalObject::extraEntryNo
const ALIint extraEntryNo(const ALIstring &entry_name) const
Definition: OpticalObject.cc:1500
OpticalObject::findExtraEntryValue
const ALIdouble findExtraEntryValue(const ALIstring &eename) const
Definition: OpticalObject.cc:1519
OptOSensor2D::fdevi_from_file
ALIbool fdevi_from_file
Definition: OptOSensor2D.h:51
LaserClient_cfi.wl
wl
Definition: LaserClient_cfi.py:46
Model::MeasurementList
static std::vector< Measurement * > & MeasurementList()
Definition: Model.h:88
GlobalOptionMgr
Definition: GlobalOptionMgr.h:18
OpticalObject::name
const ALIstring & name() const
Definition: OpticalObject.h:58
GlobalOptionMgr::getInstance
static GlobalOptionMgr * getInstance()
Definition: GlobalOptionMgr.cc:18
gather_cfg.cout
cout
Definition: gather_cfg.py:144
DeviationsFromFileSensor2D::readFile
void readFile(ALIFileIn &ifdevi)
Definition: DeviationsFromFileSensor2D.cc:20
OpticalObject::findExtraEntryValueIfExists
const ALIbool findExtraEntryValueIfExists(const ALIstring &eename, ALIdouble &value) const
Definition: OpticalObject.cc:1563
ALIstring
std::string ALIstring
Definition: CocoaGlobals.h:9
GlobalOptionMgr::getGlobalOptionValue
int getGlobalOptionValue(const ALIstring &sstr, ALIdouble &val)
--— Search a string in theGlobalOptions and return 1 if found
Definition: GlobalOptionMgr.cc:115
OpticalObject::theSolidShape
CocoaSolidShape * theSolidShape
Definition: OpticalObject.h:315
DeviationsFromFileSensor2D::setApply
static void setApply(ALIbool val)
Definition: DeviationsFromFileSensor2D.h:48
OpticalObject::ExtraEntryValueOriginalList
const std::vector< ALIdouble > & ExtraEntryValueOriginalList()
Definition: OpticalObject.h:69
CocoaSolidShapeBox
Definition: CocoaSolidShapeBox.h:13
Measurement::setValueSimulated
void setValueSimulated(ALIint coor, ALIdouble value)
Definition: Measurement.h:146
OpticalObject::centreGlob
const CLHEP::Hep3Vector & centreGlob() const
Definition: OpticalObject.h:75
OpticalObject::rmGlob
const CLHEP::HepRotation & rmGlob() const
Definition: OpticalObject.h:83
OpticalObject::shortName
const ALIstring shortName() const
Definition: OpticalObject.cc:1649
LightRay::intersect
void intersect(const ALIPlane &plane)
Definition: LightRay.cc:93
DeviationsFromFileSensor2D
Definition: DeviationsFromFileSensor2D.h:23
DeviationsFromFileSensor2D::apply
static const ALIbool apply()
Definition: DeviationsFromFileSensor2D.h:45
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
LightRay::point
const CLHEP::Hep3Vector & point() const
Definition: LightRay.h:57
ALIUtils::debug
static ALIint debug
Definition: ALIUtils.h:34
Measurement
Definition: Measurement.h:27
LightRay::shiftAndDeviateWhileTraversing
void shiftAndDeviateWhileTraversing(const OpticalObject *opto, char behav)
Definition: LightRay.cc:235
OptOSensor2D::makeMeasurement
void makeMeasurement(LightRay &lightray, Measurement &meas) override
Definition: OptOSensor2D.cc:40
OpticalObject::OpticalObject
OpticalObject()
Definition: OpticalObject.h:40
OpticalObject::verbose
ALIint verbose
Definition: OpticalObject.h:317
ALIFileIn::getInstance
static ALIFileIn & getInstance(const ALIstring &name)
Definition: ALIFileIn.cc:22
OptOSensor2D::deviFromFile
DeviationsFromFileSensor2D * deviFromFile
Definition: OptOSensor2D.h:50
OpticalObject::ExtraEntryList
const std::vector< Entry * > & ExtraEntryList() const
Definition: OpticalObject.h:65
ALIUtils::dumprm
static void dumprm(const CLHEP::HepRotation &rm, const std::string &msg, std::ostream &out=std::cout)
Definition: ALIUtils.cc:71
OpticalObject::parent
const OpticalObject * parent() const
Definition: OpticalObject.h:60
beam_dqm_sourceclient-live_cfg.cerr
cerr
Definition: beam_dqm_sourceclient-live_cfg.py:17
ALIdouble
long double ALIdouble
Definition: CocoaGlobals.h:11
Measurement::valueType
const ALIstring valueType(ALIuint ii) const
Definition: Measurement.h:116
LightRay::setPoint
void setPoint(const CLHEP::Hep3Vector &point)
Definition: LightRay.h:63
ALIuint
unsigned int ALIuint
Definition: CocoaGlobals.h:17
ALIPlane
Definition: ALIPlane.h:15
LightRay::direction
const CLHEP::Hep3Vector & direction() const
Definition: LightRay.h:58
OpticalObject::fillExtraEntry
virtual void fillExtraEntry(std::vector< ALIstring > &wordlist)
Definition: OpticalObject.cc:163
OpticalObject::findExtraEntryValueMustExist
const ALIdouble findExtraEntryValueMustExist(const ALIstring &eename) const
Definition: OpticalObject.cc:1548
Measurement::valueSimulated
const ALIdouble valueSimulated(ALIuint ii) const
Definition: Measurement.h:105
type
type
Definition: HCALResponse.h:21
ALIUtils::dump3v
static void dump3v(const CLHEP::Hep3Vector &vec, const std::string &msg)
Definition: ALIUtils.cc:58
Measurement::setLightRayPosition
void setLightRayPosition(const CLHEP::Hep3Vector &lightRayPosition)
Definition: Measurement.h:169
Exception
Definition: hltDiff.cc:246
LightRay::refract
void refract(const ALIPlane &plate, const ALIdouble refra_ind1, const ALIdouble refra_ind2)
Definition: LightRay.cc:157
Measurement::setLightRayDirection
void setLightRayDirection(const CLHEP::Hep3Vector &lightRayDirection)
Definition: Measurement.h:170
OptOSensor2D::convertPointToLocalCoordinates
ALIdouble * convertPointToLocalCoordinates(const CLHEP::Hep3Vector &point)
Definition: OptOSensor2D.cc:399
Measurement::value
const ALIdouble * value() const
Definition: Measurement.h:109
OpticalObject::getPlate
ALIPlane getPlate(const ALIbool forwardPlate, const ALIbool applyWedge)
Definition: OpticalObject.cc:946
DeviationsFromFileSensor2D::getDevis
std::pair< ALIdouble, ALIdouble > getDevis(ALIdouble intersX, ALIdouble intersY)
Definition: DeviationsFromFileSensor2D.cc:146
ALIFileIn::getWordsInLine
ALIint getWordsInLine(std::vector< ALIstring > &wl)
Definition: ALIFileIn.cc:74
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ALIUtils::LengthValueDimensionFactor
static ALIdouble LengthValueDimensionFactor()
Definition: ALIUtils.h:62
point
*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
DeviationsFromFileSensor2D::setOffset
void setOffset(ALIdouble offX, ALIdouble offY)
Definition: DeviationsFromFileSensor2D.h:39
cuy.ii
ii
Definition: cuy.py:590
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
ALIFileIn
Definition: ALIFileIn.h:20