00001 // COCOA class header file 00002 //Id: OptOOpticalSquare.h 00003 //CAT: Model 00004 // 00005 // Base class to describe Optical Objects of type sensor 2D 00006 // 00007 // History: v1.0 00008 // Pedro Arce 00009 00010 #ifndef _OPTOPSEUDOPENTAPRISM_HH 00011 #define _OPTOPSEUDOPENTAPRISM_HH 00012 00013 #include "Alignment/CocoaUtilities/interface/CocoaGlobals.h" 00014 #include "Alignment/CocoaModel/interface/OpticalObject.h" 00015 class Measurement; 00016 class LightRay; 00017 00018 class OptOOpticalSquare: public OpticalObject 00019 { 00020 00021 public: 00022 //---------- Constructors / Destructor 00023 OptOOpticalSquare(){ }; 00024 OptOOpticalSquare(OpticalObject* parent, const ALIstring& type, const ALIstring& name, const ALIbool copy_data) : 00025 OpticalObject( parent, type, name, copy_data){ }; 00026 ~OptOOpticalSquare(){ }; 00027 00028 //---------- Fast simulation of deviation of the light ray (reflection, shift, ...) 00029 virtual void fastDeviatesLightRay( LightRay& lightray ); 00030 //---------- Detailed simulation of the light ray traversing 00031 virtual void fastTraversesLightRay( LightRay& lightray ); 00032 //---------- Detailed simulation of deviation of the light ray (reflection, shift, ...) 00033 virtual void detailedDeviatesLightRay( LightRay& lightray ); 00034 //---------- Fast simulation of the light ray traversing 00035 virtual void detailedTraversesLightRay( LightRay& lightray ); 00036 00037 #ifdef COCOA_VIS 00038 virtual void fillIguana(); 00039 #endif 00040 void constructSolidShape(); 00041 00042 private: 00043 //---------- Calculate the centre points and normal std::vector of each of the four pentaprism faces the light ray may touch 00044 void calculateFaces( ALIbool isDetailed ); 00045 00046 //---------- Centre points and normal std::vector of each of the four pentaprism faces the light ray may touch 00047 Hep3Vector faceP[5]; 00048 Hep3Vector faceV[5]; 00049 00050 00051 }; 00052 00053 #endif 00054