kalmanalignment is hosted by Hepforge, IPPP Durham
Kalman Alignment

/home/mweber/Dokumente/CMS/Alignment/kalmanalignment/trunk/simulation/Det.h

Go to the documentation of this file.
00001 #ifndef _Det_h
00002 #define _Det_h
00003 
00004 #include <CLHEP/Matrix/Vector.h>
00005 #include <CLHEP/Matrix/Matrix.h>
00006 
00007 #include "ReferenceFrame.h"
00008 
00030 class Det {
00031  protected:
00033   int fID; 
00035   double fWidth; 
00037   double fLength;
00039   double fThickness;
00041   double fPitchX;
00043   double fPitchY;
00044   ReferenceFrame fNominal;
00045   ReferenceFrame fMisalignDelta;
00046   ReferenceFrame fAlignDelta;
00047   ReferenceFrame fMisalign;
00048   ReferenceFrame fAlign;
00049 
00050  public:
00051   Det(int ID, double Width, double Length, double Thickness, double PitchX, double PitchY);
00052 
00053   // return module parameters
00054 
00056   const double GetWidth() const { return fWidth; };
00058   const double GetLength() const { return fLength; };
00060   const double GetThickness() const { return fThickness; };
00062   const double GetPitchX() const { return fPitchX; };
00064   const double GetPitchY() const { return fPitchY; };
00066   const double GetResolutionX() const { return fPitchX/sqrt(12.); };
00068   const double GetResolutionY() const { return fPitchY/sqrt(12.); };
00070   const double GetRadiationLength() const;
00072   int GetID() const { return fID; };
00073 
00074   // Access the reference frames. Note that here not only the delta frames can
00075   // be returned, but also the combined frames.
00077   const ReferenceFrame & GetNominal() const { return fNominal; };
00079   const ReferenceFrame & GetMisalignDelta() const { return fMisalignDelta; };
00081   const ReferenceFrame & GetMisalign() const { return fMisalign; };
00083   const ReferenceFrame & GetAlignDelta() const { return fAlignDelta; };
00085   const ReferenceFrame & GetAlign() const { return fAlign; };
00086 
00089   bool InsideBounds(CLHEP::HepVector local) const;
00090 
00093   CLHEP::HepVector MeasuredIntersection(CLHEP::HepVector trueIntersection) const;
00094 
00096   void SetNominalFrame(ReferenceFrame nominal);
00098   void SetMisalignFrame(ReferenceFrame misalignDelta);
00100   void SetAlignFrame(ReferenceFrame alignDelta);
00101 };
00102 
00103 #endif