Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 10:38:39

0001 //   COCOA class header file

0002 //Id:  OptOOpticalSquare.h

0003 //CAT: Model

0004 //

0005 //   Base class to describe Optical Objects of type sensor 2D

0006 //

0007 //   History: v1.0

0008 //   Pedro Arce

0009 
0010 #ifndef _OPTOPSEUDOPENTAPRISM_HH
0011 #define _OPTOPSEUDOPENTAPRISM_HH
0012 
0013 #include "Alignment/CocoaUtilities/interface/CocoaGlobals.h"
0014 #include "Alignment/CocoaModel/interface/OpticalObject.h"
0015 class Measurement;
0016 class LightRay;
0017 
0018 class OptOOpticalSquare : public OpticalObject {
0019 public:
0020   //---------- Constructors / Destructor

0021   OptOOpticalSquare(){};
0022   OptOOpticalSquare(OpticalObject* parent, const ALIstring& type, const ALIstring& name, const ALIbool copy_data)
0023       : OpticalObject(parent, type, name, copy_data){};
0024   ~OptOOpticalSquare() override{};
0025 
0026   //---------- Fast simulation of deviation of the light ray (reflection, shift, ...)

0027   void fastDeviatesLightRay(LightRay& lightray) override;
0028   //---------- Detailed simulation of the light ray traversing

0029   void fastTraversesLightRay(LightRay& lightray) override;
0030   //---------- Detailed simulation of deviation of the light ray (reflection, shift, ...)

0031   void detailedDeviatesLightRay(LightRay& lightray) override;
0032   //---------- Fast simulation of the light ray traversing

0033   void detailedTraversesLightRay(LightRay& lightray) override;
0034 
0035 #ifdef COCOA_VIS
0036   virtual void fillIguana();
0037 #endif
0038   void constructSolidShape() override;
0039 
0040 private:
0041   //---------- Calculate the centre points and normal std::vector of each of the four pentaprism faces the light ray may touch

0042   void calculateFaces(ALIbool isDetailed);
0043 
0044   //---------- Centre points and normal std::vector of each of the four pentaprism faces the light ray may touch

0045   CLHEP::Hep3Vector faceP[5];
0046   CLHEP::Hep3Vector faceV[5];
0047 };
0048 
0049 #endif