Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:56:00

0001 //   COCOA class header file

0002 //Id:  OptOCOPS.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 _OptOCOPS_hh
0011 #define _OptOCOPS_hh
0012 
0013 #include "Alignment/CocoaUtilities/interface/CocoaGlobals.h"
0014 #include "Alignment/CocoaModel/interface/OpticalObject.h"
0015 class Measurement;
0016 class LightRay;
0017 #include "Alignment/CocoaModel/interface/ALILine.h"
0018 class DeviationsFromFileSensor2D;
0019 
0020 class OptOCOPS : public OpticalObject {
0021 public:
0022   //---------- Constructors / Destructor

0023   OptOCOPS(){};
0024   OptOCOPS(OpticalObject* parent, const ALIstring& type, const ALIstring& name, const ALIbool copy_data)
0025       : OpticalObject(parent, type, name, copy_data), fdevi_from_file(false){};
0026   ~OptOCOPS() override{};
0027 
0028   //---------- defaultBehaviour: make measurement

0029   void defaultBehaviour(LightRay& lightray, Measurement& meas) override;
0030   //---------- Make measurement

0031   void makeMeasurement(LightRay& lightray, Measurement& meas) override;
0032   //---------- Fast simulation of the light ray traversing

0033   void fastTraversesLightRay(LightRay& lightray) override;
0034 
0035   // Get intersection in local coordinates

0036   ALIdouble* convertPointToLocalCoordinates(const CLHEP::Hep3Vector& point);
0037 
0038 #ifdef COCOA_VIS
0039   virtual void fillVRML();
0040   virtual void fillIguana();
0041 #endif
0042   void constructSolidShape() override;
0043 
0044 private:
0045   ALIdouble getMeasFromInters(ALILine& line_xhair, ALILine& ccd, CLHEP::Hep3Vector& cops_line);
0046   // Deviation values read from file

0047   DeviationsFromFileSensor2D* deviFromFile;
0048   ALIbool fdevi_from_file;
0049   ALILine ccds[4];
0050 };
0051 
0052 #endif