CMS 3D CMS Logo

OpticalObject.h
Go to the documentation of this file.
1 // COCOA class header file
2 //Id: OpticalObject.h
3 //CAT: Model
4 //
5 // Base class to describe all types of Optical Objects
6 //
7 // History: v1.0
8 // Pedro Arce
9 
10 #ifndef _OPTICALOBJECT_HH
11 #define _OPTICALOBJECT_HH
12 
14 #include <cstdint>
15 
16 class LightRay;
17 class Measurement;
18 class Entry;
19 class ALIFileIn;
20 class Measurement;
21 class ALIPlane;
22 
24 class CocoaSolidShape;
25 
26 #include "CLHEP/Vector/ThreeVector.h"
27 #include "CLHEP/Vector/Rotation.h"
28 #include <fstream>
29 #include <vector>
30 class OpticalAlignInfo;
31 class OpticalAlignParam;
32 
33 enum XYZcoor { XCoor, YCoor, ZCoor };
34 
36  friend std::ostream& operator<<(std::ostream& os, const OpticalObject& c);
37 
38 public:
39  //---------- Constructors / destructor
41  OpticalObject(OpticalObject* parent, const ALIstring& type, const ALIstring& name, const ALIbool copy_data);
42  virtual ~OpticalObject();
43 
44  //----- Steering function to read OptO data from SDF file (and also start component OptOs)
45  void construct();
46 
47  void constructFromOptAligInfo(const OpticalAlignInfo& oaInfo);
48  std::vector<ALIstring> getCoordinateFromOptAlignParam(const OpticalAlignParam& oaParam);
50 
51  virtual void constructMaterial();
52  virtual void constructSolidShape();
53 
54  virtual void fillVRML(){};
55  virtual void fillIguana(){};
56 
57  // ACCESS DATA MEMBERS
58  const ALIstring& name() const { return theName; };
59  const ALIstring& type() const { return theType; };
60  const OpticalObject* parent() const { return theParent; };
61 
62  // Return List of Coordinate Entries
63  const std::vector<Entry*>& CoordinateEntryList() const { return theCoordinateEntryVector; }
64  // Return List of Extra Entries
65  const std::vector<Entry*>& ExtraEntryList() const { return theExtraEntryVector; }
66  // Return List of Extra Entry Values
67  std::vector<ALIdouble>& ExtraEntryValueList() { return theExtraEntryValueVector; }
68 
69  const std::vector<ALIdouble>& ExtraEntryValueOriginalList() { return theExtraEntryValueOriginalVector; }
70  const std::vector<ALIdouble>& ExtraEntryValueOriginalOriginalList() {
72  }
73 
74  // ACCESS CENTRE AND ROTATION DATA MEMBERS
75  const CLHEP::Hep3Vector& centreGlob() const { return theCentreGlob; }
76 
77  const CLHEP::Hep3Vector& centreGlobal() const { return centreGlob(); }
78 
79  const CLHEP::Hep3Vector centreLocal() const;
80 
81  const CLHEP::Hep3Vector& centreGlobOriginal() const { return theCentreGlobOriginal; }
82  const CLHEP::Hep3Vector& centreGlobOriginalOriginal() const { return theCentreGlobOriginalOriginal; }
83  const CLHEP::HepRotation& rmGlob() const { return theRmGlob; }
84 
85  const CLHEP::HepRotation rmLocal() const;
86 
87  const CLHEP::HepRotation& rmGlobOriginal() const { return theRmGlobOriginal; }
88  const CLHEP::HepRotation& rmGlobOriginalOriginal() const { return theRmGlobOriginalOriginal; }
89 
90  const double getEntryCentre(const XYZcoor coor) const;
91  const double getEntryCentre(const ALIstring& coor) const;
92 
93  const double getEntryRMangle(const XYZcoor coor) const;
94  const double getEntryRMangle(const ALIstring& coor) const;
95 
96  const ALIuint ID() const { return theCmsswID; }
97  const ALIuint getCmsswID() const { return theCmsswID; }
98  void setCmsswID(ALIuint id) { theCmsswID = id; }
99  void setID(ALIuint id) { theCmsswID = id; }
100 
101  // SET DATA METHODS
102  void setRmGlobalOriginal(const CLHEP::HepRotation& rm) { theRmGlobOriginal = rm; }
103  void setGlobalRMOriginalOriginal(const CLHEP::HepRotation& rmoriori);
104  void propagateGlobalRMOriginalOriginalChangeToChildren(const CLHEP::HepRotation& rmorioriold,
105  const CLHEP::HepRotation& rmoriorinew);
106  CLHEP::HepRotation buildRmFromEntryValuesOriginalOriginal();
107 
108  void setRmGlobal(const CLHEP::HepRotation& rm) { theRmGlob = rm; }
109 
110  void setType(const ALIstring& type) { theType = type; }
113  void addExtraEntryValueToList(ALIdouble entry_value) { theExtraEntryValueVector.push_back(entry_value); }
115  theExtraEntryValueOriginalVector.push_back(entry_value);
116  }
118  theExtraEntryValueOriginalOriginalVector.push_back(entry_value);
119  }
120 
121  //- void test(){};
122  //@@@@@----- METHODS USED IN Fit
123  //---------- Propagate the light ray with the behaviour 'behav'
124  virtual void participateInMeasurement(LightRay& lightray, Measurement& meas, const ALIstring& behav);
125  //---------- default behaviour (depends of subclass type). A default behaviour can be makeMeasurement(), therefore you have to pass 'meas'
126  virtual void defaultBehaviour(LightRay& lightray, Measurement& meas);
127  //---------- Fast simulation of deviation of the light ray (reflection, shift, ...)
128  virtual void fastDeviatesLightRay(LightRay& lightray);
129  //---------- Detailed simulation of the light ray traversing
130  virtual void fastTraversesLightRay(LightRay& lightray);
131  //---------- Detailed simulation of deviation of the light ray (reflection, shift, ...)
132  virtual void detailedDeviatesLightRay(LightRay& lightray);
133  //---------- Fast simulation of the light ray traversing
134  virtual void detailedTraversesLightRay(LightRay& lightray);
135 
136  //---------- Fast simulation of the light ray traversing
137  virtual void makeMeasurement(LightRay& lightray, Measurement& meas);
138 
139  //---------- User Defined Behaviour
140  virtual void userDefinedBehaviour(LightRay& lightray, Measurement& meas, const ALIstring& behav);
141 
142  //---------- Obtain the Z Axis of the OptO (ZAxis rotated with the OptO rotation matrix)
143  CLHEP::Hep3Vector getZAxis() {
144  CLHEP::Hep3Vector ZAxis(0., 0., 1.);
145  CLHEP::HepRotation rmt = rmGlob();
146  ZAxis = rmt * ZAxis;
147  return ZAxis;
148  }
149  //---------- Get one of the plates of an OptO made of two parallel plates
150  ALIPlane getPlate(const ALIbool forwardPlate, const ALIbool applyWedge);
151 
152  //---------- Displacements to get the derivative of a measurement w.r.t an entry
153  //----- Displace the centre coordinate 'coor'
154  void displaceCentreGlob(const XYZcoor coor, const ALIdouble disp);
155  CLHEP::Hep3Vector getDisplacementInLocalCoordinates(const XYZcoor coor, const ALIdouble disp);
156  void displaceCentreGlob(const CLHEP::Hep3Vector& dispVec);
157  //----- Rotate around axis 'coor'
158  void displaceRmGlobAroundGlobal(OpticalObject* opto1stRotated, const XYZcoor coor, const ALIdouble disp);
159  void displaceRmGlobAroundLocal(OpticalObject* opto1stRotated, const XYZcoor coor, const ALIdouble disp);
160  //----- Displace extra entry number 'entryNo'
161  void displaceExtraEntry(const ALIuint entryNo, const ALIdouble disp);
162  void setExtraEntryValue(const ALIuint entryNo, const ALIdouble disp);
163 
164  //----------- Displacements of original coordinates: do it to reset the original data
165  //----------- every new iteration of the non linear fit
166  //----- Displace the centre coordinate 'coor'
167  void displaceCentreGlobOriginal(const XYZcoor coor, const ALIdouble disp);
168  void displaceCentreGlobOriginal(const CLHEP::Hep3Vector& dispVec);
169  void displaceCentreGlobOriginalOriginal(const XYZcoor coor, const ALIdouble disp);
170  void displaceCentreGlobOriginalOriginal(const CLHEP::Hep3Vector& dispVec);
171  //----- Rotate around axis 'coor'
172  void displaceRmGlobOriginal(const OpticalObject* opto1stRotated, const XYZcoor coor, const ALIdouble disp);
173  void displaceRmGlobOriginalOriginal(const OpticalObject* opto1stRotated, const XYZcoor coor, const ALIdouble disp);
174  //----- Displace extra entry number 'entryNo'
175  void displaceExtraEntryOriginal(const ALIuint entryNo, const ALIdouble disp);
176  void displaceExtraEntryOriginalOriginal(const ALIuint entryNo, const ALIdouble disp);
177 
178  //---------- Reset the global coordinates and extra entries (after derivative is finished)
179  void resetGlobalCoordinates();
181 
182  // Find position of an extra entry in ExtraEntryList (and therefore in ExtraEntryValueList)
183  const ALIint extraEntryNo(const ALIstring& entry_name) const;
184 
185  // //@@ Find an extra Entry by name and return its value. If entry not found, stop.
186  const ALIdouble findExtraEntryValueMustExist(const ALIstring& eename) const;
187  // Find an extra Entry by name and return its value, if it is not found return 0
188  const ALIdouble findExtraEntryValue(const ALIstring& eename) const;
189 
190  // Find an extra Entry by name and pass its value. Return if entry is found or not
191  const ALIbool findExtraEntryValueIfExists(const ALIstring& eename, ALIdouble& value) const;
192 
193  // Return the name of the OptO without its path
194  const ALIstring shortName() const;
195  // Return the name of the OptO with its path
196  const ALIstring longName() const { return name(); }
197 
201 
202  std::vector<double> getRotationAnglesInOptOFrame(const OpticalObject* optoAncestor,
203  const std::vector<Entry*>& entries) const;
204  std::vector<double> getLocalRotationAngles(const std::vector<Entry*>& entries) const;
205  std::vector<double> getRotationAnglesFromMatrix(CLHEP::HepRotation& rmLocal,
206  const std::vector<Entry*>& entries) const;
207  double diff2pi(double ang1, double ang2);
208  bool eq2ang(double ang1, double ang2);
209  double approxTo0(double val);
210  double addPii(double val);
211  int checkMatrixEquations(double angleX, double angleY, double angleZ, CLHEP::HepRotation* rot = nullptr);
212 
213  //- CLHEP::Hep3Vector GetAxisForDisplacement( const XYZcoor coor );
214  void setGlobalCoordinates();
215  void setOriginalEntryValues();
216 
219 
220  //private DATA METHODS
221 private:
222  // Reads the data
223  void readData(ALIFileIn& filein);
224  // Copy the data from last OptO found of the same type
225  void copyData();
226 
227  // Read extra entries
228  void readExtraEntries(ALIFileIn& filein);
229 
230 protected:
231  // Create and fill an extra entry
232  virtual void fillExtraEntry(std::vector<ALIstring>& wordlist);
233 
234 private:
235  // Read centre or angles
236  void readCoordinates(const ALIstring& coor_type_read, const ALIstring& coor_type_expected, ALIFileIn& filein);
237  // Create and fill a coordinate entry
238  void fillCoordinateEntry(const ALIstring& coor_name, const std::vector<ALIstring>& wordlist);
239  // Set angles null
240  void setAnglesNull();
241 
242  //------ Build wordlist copying data of entry 'entry'
243  void buildWordList(const Entry* entry, std::vector<ALIstring>& wordlist);
244 
245  // start Optical Objects that are components of current
246  void createComponentOptOs(ALIFileIn& filein);
247 
248  OpticalObject* createNewOptO(OpticalObject* parent, ALIstring optoType, ALIstring optoName, ALIbool fcopyComponents);
249 
250  // Set global centre and rotation matrix
251  void setGlobalCentre();
252  void setGlobalRM();
254 
258  void SetRMGlobFromRMLocal();
259  void SetRMGlobFromRMLocalOriginalOriginal(const CLHEP::HepRotation& rmoriori);
260  // Calculate local rot axis with new rm glob
262 
265  void transformGlobal2Local();
266 
267  template <class T>
268  void rotateItAroundGlobal(T& object, const XYZcoor coor, const double disp);
269 
270  CLHEP::Hep3Vector getDispVec(const XYZcoor coor, const ALIdouble disp);
271 
274 
275 private:
276  // private DATA MEMBERS
280  //----- Boolean to mark if data is going to be read or copied from closest previous OptO with same type
282 
283  //----- Global centre and rotation matrix
284  CLHEP::Hep3Vector theCentreGlob;
285  CLHEP::HepRotation theRmGlob;
286  //----- Original global centre and rotation matrix (for backup when they are changed to get derivatives)
287  CLHEP::Hep3Vector theCentreGlobOriginal;
288  CLHEP::HepRotation theRmGlobOriginal;
289  CLHEP::Hep3Vector theCentreGlobOriginalOriginal;
290  CLHEP::HepRotation theRmGlobOriginalOriginal;
291 
292  // Lists of entries
293  std::vector<Entry*> theCoordinateEntryVector;
294  std::vector<Entry*> theExtraEntryVector;
295 
296  // Lists of values of entries
297  std::vector<ALIdouble> theExtraEntryValueVector;
298  std::vector<ALIdouble> theExtraEntryValueOriginalVector;
300 
301  // centre and angles are global
304 
306 
307  CLHEP::Hep3Vector axisXLocalInGlobal;
308  CLHEP::Hep3Vector axisYLocalInGlobal;
309  CLHEP::Hep3Vector axisZLocalInGlobal;
310 
312 
313 protected:
316 
318 };
319 
320 #endif
OpticalObject::diff2pi
double diff2pi(double ang1, double ang2)
Definition: OpticalObject.cc:1800
OpticalObject::setType
void setType(const ALIstring &type)
Definition: OpticalObject.h:110
OpticalObject::fastDeviatesLightRay
virtual void fastDeviatesLightRay(LightRay &lightray)
Definition: OpticalObject.cc:883
OpticalObject::SetCentreLocalFromEntryValues
void SetCentreLocalFromEntryValues()
Definition: OpticalObject.cc:700
OpticalObject::displaceCentreGlob
void displaceCentreGlob(const XYZcoor coor, const ALIdouble disp)
Definition: OpticalObject.cc:1000
OpticalObject::readCoordinates
void readCoordinates(const ALIstring &coor_type_read, const ALIstring &coor_type_expected, ALIFileIn &filein)
Definition: OpticalObject.cc:212
OpticalObject::constructSolidShape
virtual void constructSolidShape()
Definition: OpticalObject.cc:2006
OpticalObject::constructMaterial
virtual void constructMaterial()
Definition: OpticalObject.cc:2001
OpticalObject::meas
Measurement * meas()
Definition: OpticalObject.h:200
ALIbool
bool ALIbool
Definition: CocoaGlobals.h:19
OpticalObject::rmGlobOriginalOriginal
const CLHEP::HepRotation & rmGlobOriginalOriginal() const
Definition: OpticalObject.h:88
OpticalObject::displaceExtraEntryOriginalOriginal
void displaceExtraEntryOriginalOriginal(const ALIuint entryNo, const ALIdouble disp)
Definition: OpticalObject.cc:1492
OpticalObject::buildWordList
void buildWordList(const Entry *entry, std::vector< ALIstring > &wordlist)
Definition: OpticalObject.cc:418
OpticalObject::setRmGlobalOriginal
void setRmGlobalOriginal(const CLHEP::HepRotation &rm)
Definition: OpticalObject.h:102
OpticalObject::addExtraEntryToList
void addExtraEntryToList(Entry *entry)
Definition: OpticalObject.h:112
OpticalObject::setGlobalCoordinates
void setGlobalCoordinates()
Definition: OpticalObject.cc:587
OpticalObject::extraEntryNo
const ALIint extraEntryNo(const ALIstring &entry_name) const
Definition: OpticalObject.cc:1500
OpticalObject::theExtraEntryValueOriginalVector
std::vector< ALIdouble > theExtraEntryValueOriginalVector
Definition: OpticalObject.h:298
OpticalObject::longName
const ALIstring longName() const
Definition: OpticalObject.h:196
OpticalObject::fcopyData
ALIbool fcopyData
Definition: OpticalObject.h:281
OpticalObject::findExtraEntryValue
const ALIdouble findExtraEntryValue(const ALIstring &eename) const
Definition: OpticalObject.cc:1519
OpticalObject::getSolidShape
CocoaSolidShape * getSolidShape() const
Definition: OpticalObject.h:218
OpticalObject::setCmsswID
void setCmsswID(ALIuint id)
Definition: OpticalObject.h:98
OpticalObject::resetGlobalCoordinates
void resetGlobalCoordinates()
Definition: OpticalObject.cc:1573
OpticalObject::SetAnglesIsGlobal
void SetAnglesIsGlobal(ALIbool isG)
Definition: OpticalObject.h:273
OpticalObject::readExtraEntries
void readExtraEntries(ALIFileIn &filein)
Definition: OpticalObject.cc:147
OpticalObject::getEntryRMangle
const double getEntryRMangle(const XYZcoor coor) const
Definition: OpticalObject.cc:1977
OpticalObject::transformGlobal2Local
void transformGlobal2Local()
OpticalObject::axisZLocalInGlobal
CLHEP::Hep3Vector axisZLocalInGlobal
Definition: OpticalObject.h:309
mps_splice.entry
entry
Definition: mps_splice.py:68
OpticalObject::theExtraEntryVector
std::vector< Entry * > theExtraEntryVector
Definition: OpticalObject.h:294
OpticalObject::calculateLocalRotationAxisInGlobal
void calculateLocalRotationAxisInGlobal()
Definition: OpticalObject.cc:1723
OpticalObject::name
const ALIstring & name() const
Definition: OpticalObject.h:58
YCoor
Definition: OpticalObject.h:33
OpticalObject::centreGlobal
const CLHEP::Hep3Vector & centreGlobal() const
Definition: OpticalObject.h:77
OpticalObject::findExtraEntryValueIfExists
const ALIbool findExtraEntryValueIfExists(const ALIstring &eename, ALIdouble &value) const
Definition: OpticalObject.cc:1563
OpticalObject::displaceRmGlobAroundLocal
void displaceRmGlobAroundLocal(OpticalObject *opto1stRotated, const XYZcoor coor, const ALIdouble disp)
Definition: OpticalObject.cc:1215
ALIstring
std::string ALIstring
Definition: CocoaGlobals.h:9
OpticalObject::getRotationAnglesInOptOFrame
std::vector< double > getRotationAnglesInOptOFrame(const OpticalObject *optoAncestor, const std::vector< Entry * > &entries) const
Definition: OpticalObject.cc:1684
OpticalObject::theType
ALIstring theType
Definition: OpticalObject.h:278
OpticalObject::propagateGlobalRMOriginalOriginalChangeToChildren
void propagateGlobalRMOriginalOriginalChangeToChildren(const CLHEP::HepRotation &rmorioriold, const CLHEP::HepRotation &rmoriorinew)
Definition: OpticalObject.cc:652
OpticalAlignInfo
Definition: OpticalAlignInfo.h:71
OpticalObject::theSolidShape
CocoaSolidShape * theSolidShape
Definition: OpticalObject.h:315
OpticalObject::getDisplacementInLocalCoordinates
CLHEP::Hep3Vector getDisplacementInLocalCoordinates(const XYZcoor coor, const ALIdouble disp)
Definition: OpticalObject.cc:1022
OpticalObject::setAnglesNull
void setAnglesNull()
Definition: OpticalObject.cc:343
OpticalObject
Definition: OpticalObject.h:35
OpticalObject::theCmsswID
ALIuint theCmsswID
Definition: OpticalObject.h:311
OpticalObject::ExtraEntryValueOriginalList
const std::vector< ALIdouble > & ExtraEntryValueOriginalList()
Definition: OpticalObject.h:69
XCoor
Definition: OpticalObject.h:33
OpticalObject::readData
void readData(ALIFileIn &filein)
Definition: OpticalObject.cc:118
OpticalObject::checkMatrixEquations
int checkMatrixEquations(double angleX, double angleY, double angleZ, CLHEP::HepRotation *rot=nullptr)
Definition: OpticalObject.cc:1841
OpticalObject::eq2ang
bool eq2ang(double ang1, double ang2)
Definition: OpticalObject.cc:1807
OpticalObject::centreGlob
const CLHEP::Hep3Vector & centreGlob() const
Definition: OpticalObject.h:75
OpticalObject::addExtraEntryValueOriginalToList
void addExtraEntryValueOriginalToList(ALIdouble entry_value)
Definition: OpticalObject.h:114
OpticalObject::type
const ALIstring & type() const
Definition: OpticalObject.h:59
OpticalObject::ExtraEntryValueList
std::vector< ALIdouble > & ExtraEntryValueList()
Definition: OpticalObject.h:67
OpticalObject::axisYLocalInGlobal
CLHEP::Hep3Vector axisYLocalInGlobal
Definition: OpticalObject.h:308
OpticalObject::rmGlob
const CLHEP::HepRotation & rmGlob() const
Definition: OpticalObject.h:83
OpticalObject::displaceCentreGlobOriginal
void displaceCentreGlobOriginal(const XYZcoor coor, const ALIdouble disp)
Definition: OpticalObject.cc:1082
OpticalObject::shortName
const ALIstring shortName() const
Definition: OpticalObject.cc:1649
OpticalObject::theName
ALIstring theName
Definition: OpticalObject.h:279
OpticalObject::getLocalRotationAngles
std::vector< double > getLocalRotationAngles(const std::vector< Entry * > &entries) const
Definition: OpticalObject.cc:1679
OpticalObject::getEntryCentre
const double getEntryCentre(const XYZcoor coor) const
Definition: OpticalObject.cc:1955
OpticalObject::defaultBehaviour
virtual void defaultBehaviour(LightRay &lightray, Measurement &meas)
Definition: OpticalObject.cc:873
OpticalObject::rmLocal
const CLHEP::HepRotation rmLocal() const
Definition: OpticalObject.cc:1669
OpticalObject::~OpticalObject
virtual ~OpticalObject()
Definition: OpticalObject.cc:1644
XYZcoor
XYZcoor
Definition: OpticalObject.h:33
OpticalObject::theCoordinateEntryVector
std::vector< Entry * > theCoordinateEntryVector
Definition: OpticalObject.h:293
OpticalObject::SetCentreGlobFromCentreLocal
void SetCentreGlobFromCentreLocal()
Definition: OpticalObject.cc:749
OpticalObject::setGlobalCentre
void setGlobalCentre()
Definition: OpticalObject.cc:593
OpticalObject::buildRmFromEntryValuesOriginalOriginal
CLHEP::HepRotation buildRmFromEntryValuesOriginalOriginal()
Definition: OpticalObject.cc:675
OpticalObject::theCentreGlobOriginalOriginal
CLHEP::Hep3Vector theCentreGlobOriginalOriginal
Definition: OpticalObject.h:289
OpticalObject::centreIsGlobal
ALIbool centreIsGlobal
Definition: OpticalObject.h:302
OpticalObject::setGlobalCoordinatesOfComponents
void setGlobalCoordinatesOfComponents()
Definition: OpticalObject.cc:1304
Measurement
Definition: Measurement.h:27
OpticalObject::addExtraEntryValueOriginalOriginalToList
void addExtraEntryValueOriginalOriginalToList(ALIdouble entry_value)
Definition: OpticalObject.h:117
OpticalObject::theRmGlobOriginal
CLHEP::HepRotation theRmGlobOriginal
Definition: OpticalObject.h:288
OpticalObject::setID
void setID(ALIuint id)
Definition: OpticalObject.h:99
submit.rm
rm
Definition: submit.py:77
OpticalObject::displaceRmGlobOriginal
void displaceRmGlobOriginal(const OpticalObject *opto1stRotated, const XYZcoor coor, const ALIdouble disp)
Definition: OpticalObject.cc:1315
OpticalObject::fastTraversesLightRay
virtual void fastTraversesLightRay(LightRay &lightray)
Definition: OpticalObject.cc:893
OpticalObject::getDispVec
CLHEP::Hep3Vector getDispVec(const XYZcoor coor, const ALIdouble disp)
Definition: OpticalObject.cc:1909
OpticalObject::makeMeasurement
virtual void makeMeasurement(LightRay &lightray, Measurement &meas)
Definition: OpticalObject.cc:923
OpticalObject::SetRMLocalFromEntryValues
void SetRMLocalFromEntryValues()
Definition: OpticalObject.cc:715
OpticalObject::OpticalObject
OpticalObject()
Definition: OpticalObject.h:40
OpticalObject::fillIguana
virtual void fillIguana()
Definition: OpticalObject.h:55
OpticalObject::verbose
ALIint verbose
Definition: OpticalObject.h:317
OpticalObject::theExtraEntryValueOriginalOriginalVector
std::vector< ALIdouble > theExtraEntryValueOriginalOriginalVector
Definition: OpticalObject.h:299
OpticalAlignParam
Definition: OpticalAlignInfo.h:34
OpticalObject::getCoordinateFromOptAlignParam
std::vector< ALIstring > getCoordinateFromOptAlignParam(const OpticalAlignParam &oaParam)
Definition: OpticalObject.cc:2064
OpticalObject::theCentreGlobOriginal
CLHEP::Hep3Vector theCentreGlobOriginal
Definition: OpticalObject.h:287
OpticalObject::ExtraEntryList
const std::vector< Entry * > & ExtraEntryList() const
Definition: OpticalObject.h:65
OpticalObject::theCurrentMeas
Measurement * theCurrentMeas
Definition: OpticalObject.h:305
OpticalObject::getCmsswID
const ALIuint getCmsswID() const
Definition: OpticalObject.h:97
OpticalObject::centreGlobOriginalOriginal
const CLHEP::Hep3Vector & centreGlobOriginalOriginal() const
Definition: OpticalObject.h:82
OpticalObject::createComponentOptOsFromOptAlignInfo
void createComponentOptOsFromOptAlignInfo()
Definition: OpticalObject.cc:2088
OpticalObject::theExtraEntryValueVector
std::vector< ALIdouble > theExtraEntryValueVector
Definition: OpticalObject.h:297
OpticalObject::constructFromOptAligInfo
void constructFromOptAligInfo(const OpticalAlignInfo &oaInfo)
Definition: OpticalObject.cc:2016
LightRay
Definition: LightRay.h:20
type
type
Definition: SiPixelVCal_PayloadInspector.cc:37
OpticalObject::parent
const OpticalObject * parent() const
Definition: OpticalObject.h:60
OpticalObject::addPii
double addPii(double val)
Definition: OpticalObject.cc:1830
OpticalObject::copyData
void copyData()
Definition: OpticalObject.cc:371
ALIdouble
long double ALIdouble
Definition: CocoaGlobals.h:11
OpticalObject::resetOriginalOriginalCoordinates
void resetOriginalOriginalCoordinates()
Definition: OpticalObject.cc:1600
OpticalObject::SetRMGlobFromRMLocal
void SetRMGlobFromRMLocal()
Definition: OpticalObject.cc:777
OpticalObject::theRmGlob
CLHEP::HepRotation theRmGlob
Definition: OpticalObject.h:285
OpticalObject::rotateItAroundGlobal
void rotateItAroundGlobal(T &object, const XYZcoor coor, const double disp)
Definition: OpticalObject.cc:1739
ALIuint
unsigned int ALIuint
Definition: CocoaGlobals.h:17
ZCoor
Definition: OpticalObject.h:33
value
Definition: value.py:1
OpticalObject::setOriginalEntryValues
void setOriginalEntryValues()
Definition: OpticalObject.cc:823
OpticalObject::displaceRmGlobOriginalOriginal
void displaceRmGlobOriginalOriginal(const OpticalObject *opto1stRotated, const XYZcoor coor, const ALIdouble disp)
Definition: OpticalObject.cc:1399
ALIPlane
Definition: ALIPlane.h:15
OpticalObject::CoordinateEntryList
const std::vector< Entry * > & CoordinateEntryList() const
Definition: OpticalObject.h:63
OpticalObject::setExtraEntryValue
void setExtraEntryValue(const ALIuint entryNo, const ALIdouble disp)
Definition: OpticalObject.cc:1077
Entry
Definition: Entry.h:18
OpticalObject::operator<<
friend std::ostream & operator<<(std::ostream &os, const OpticalObject &c)
Definition: OpticalObject.cc:1661
OpticalObject::transformCylindrical2Cartesian
void transformCylindrical2Cartesian()
Definition: OpticalObject.cc:275
OpticalObject::ExtraEntryValueOriginalOriginalList
const std::vector< ALIdouble > & ExtraEntryValueOriginalOriginalList()
Definition: OpticalObject.h:70
OpticalObject::transformSpherical2Cartesian
void transformSpherical2Cartesian()
Definition: OpticalObject.cc:309
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
OpticalObject::detailedTraversesLightRay
virtual void detailedTraversesLightRay(LightRay &lightray)
Definition: OpticalObject.cc:913
OpticalObject::setGlobalRM
void setGlobalRM()
Definition: OpticalObject.cc:605
OpticalObject::fillCoordinateEntry
void fillCoordinateEntry(const ALIstring &coor_name, const std::vector< ALIstring > &wordlist)
Definition: OpticalObject.cc:314
OpticalObject::ID
const ALIuint ID() const
Definition: OpticalObject.h:96
heppy_batch.val
val
Definition: heppy_batch.py:351
OpticalObject::SetCentreIsGlobal
void SetCentreIsGlobal(ALIbool isG)
Definition: OpticalObject.h:272
OpticalObject::theMaterial
CocoaMaterialElementary * theMaterial
Definition: OpticalObject.h:314
OpticalObject::participateInMeasurement
virtual void participateInMeasurement(LightRay &lightray, Measurement &meas, const ALIstring &behav)
Definition: OpticalObject.cc:850
OpticalObject::userDefinedBehaviour
virtual void userDefinedBehaviour(LightRay &lightray, Measurement &meas, const ALIstring &behav)
Definition: OpticalObject.cc:930
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
T
long double T
Definition: Basic3DVectorLD.h:48
OpticalObject::theParent
OpticalObject * theParent
Definition: OpticalObject.h:277
OpticalObject::displaceExtraEntryOriginal
void displaceExtraEntryOriginal(const ALIuint entryNo, const ALIdouble disp)
Definition: OpticalObject.cc:1484
OpticalObject::SetRMGlobFromRMLocalOriginalOriginal
void SetRMGlobFromRMLocalOriginalOriginal(const CLHEP::HepRotation &rmoriori)
Definition: OpticalObject.cc:815
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
OpticalObject::addCoordinateEntryToList
void addCoordinateEntryToList(Entry *entry)
Definition: OpticalObject.h:111
OpticalObject::rmGlobOriginal
const CLHEP::HepRotation & rmGlobOriginal() const
Definition: OpticalObject.h:87
OpticalObject::getRotationAnglesFromMatrix
std::vector< double > getRotationAnglesFromMatrix(CLHEP::HepRotation &rmLocal, const std::vector< Entry * > &entries) const
Definition: OpticalObject.cc:1710
OpticalObject::getMaterial
CocoaMaterialElementary * getMaterial() const
Definition: OpticalObject.h:217
OpticalObject::construct
void construct()
Definition: OpticalObject.cc:70
OpticalObject::fillVRML
virtual void fillVRML()
Definition: OpticalObject.h:54
OpticalObject::displaceExtraEntry
void displaceExtraEntry(const ALIuint entryNo, const ALIdouble disp)
Definition: OpticalObject.cc:1068
OpticalObject::centreGlobOriginal
const CLHEP::Hep3Vector & centreGlobOriginal() const
Definition: OpticalObject.h:81
ALIint
int ALIint
Definition: CocoaGlobals.h:15
OpticalObject::theCentreGlob
CLHEP::Hep3Vector theCentreGlob
Definition: OpticalObject.h:284
OpticalObject::getPlate
ALIPlane getPlate(const ALIbool forwardPlate, const ALIbool applyWedge)
Definition: OpticalObject.cc:946
CocoaSolidShape
Definition: CocoaSolidShape.h:16
OpticalObject::detailedDeviatesLightRay
virtual void detailedDeviatesLightRay(LightRay &lightray)
Definition: OpticalObject.cc:903
OpticalObject::displaceCentreGlobOriginalOriginal
void displaceCentreGlobOriginalOriginal(const XYZcoor coor, const ALIdouble disp)
Definition: OpticalObject.cc:1124
CocoaGlobals.h
OpticalObject::displaceRmGlobAroundGlobal
void displaceRmGlobAroundGlobal(OpticalObject *opto1stRotated, const XYZcoor coor, const ALIdouble disp)
Definition: OpticalObject.cc:1169
OpticalObject::setGlobalRMOriginalOriginal
void setGlobalRMOriginalOriginal(const CLHEP::HepRotation &rmoriori)
Definition: OpticalObject.cc:616
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:46
OpticalObject::setRmGlobal
void setRmGlobal(const CLHEP::HepRotation &rm)
Definition: OpticalObject.h:108
OpticalObject::axisXLocalInGlobal
CLHEP::Hep3Vector axisXLocalInGlobal
Definition: OpticalObject.h:307
OpticalObject::centreLocal
const CLHEP::Hep3Vector centreLocal() const
Definition: OpticalObject.cc:1938
OpticalObject::createComponentOptOs
void createComponentOptOs(ALIFileIn &filein)
Definition: OpticalObject.cc:459
OpticalObject::anglesIsGlobal
ALIbool anglesIsGlobal
Definition: OpticalObject.h:303
OpticalObject::setMeas
void setMeas(Measurement *meas)
set current measurement
Definition: OpticalObject.h:199
OpticalObject::addExtraEntryValueToList
void addExtraEntryValueToList(ALIdouble entry_value)
Definition: OpticalObject.h:113
CocoaMaterialElementary
Definition: CocoaMaterialElementary.h:16
OpticalObject::approxTo0
double approxTo0(double val)
Definition: OpticalObject.cc:1822
OpticalObject::getZAxis
CLHEP::Hep3Vector getZAxis()
Definition: OpticalObject.h:143
ALIFileIn
Definition: ALIFileIn.h:20
OpticalObject::theRmGlobOriginalOriginal
CLHEP::HepRotation theRmGlobOriginalOriginal
Definition: OpticalObject.h:290
OpticalObject::createNewOptO
OpticalObject * createNewOptO(OpticalObject *parent, ALIstring optoType, ALIstring optoName, ALIbool fcopyComponents)
Definition: OpticalObject.cc:533