- #ifndef TBKERNEL_ITBGEOMETRYSVC_H
- #define TBKERNEL_ITBGEOMETRYSVC_H 1
-
- #include "GaudiKernel/IService.h"
- #include "GaudiKernel/Point3DTypes.h"
- #include "GaudiKernel/Vector3DTypes.h"
-
- /** @class ITbGeometrySvc ITbGeometrySvc.h
- *
- * Interface for the testbeam geometry service which holds
- * the geometric transformations between local and global coordinates
- * of the individual planes.
- *
- */
-
- class TbModule;
- namespace LHCb {
- class TbTrack;
- }
-
- class GAUDI_API ITbGeometrySvc : virtual public IService {
-
- public:
- /// InterfaceID
- DeclareInterfaceID(ITbGeometrySvc, 1, 0);
-
- /// Transform a point in the local frame of a plane to global coordinates
- virtual Gaudi::XYZPoint localToGlobal(const Gaudi::XYZPoint& p,
- const unsigned int i) = 0;
- /// Transform a point in the global frame to the local frame of a plane
- virtual Gaudi::XYZPoint globalToLocal(const Gaudi::XYZPoint& p,
- const unsigned int i) = 0;
-
- /// Calculate the local x, y coordinates of a given pixel
- virtual bool pixelToPoint(const unsigned int scol, const unsigned int row,
- const unsigned int plane, double& x,
- double& y) = 0;
- /// Calculate the pixel and inter-pixel position of a given local point
- virtual bool pointToPixel(const double x, const double y,
- const unsigned int plane, unsigned int& scol,
- unsigned int& row) = 0;
-
- /// Calculate the intercept of a track with a telescope plane
- virtual Gaudi::XYZPoint intercept(const LHCb::TbTrack* t,
- const unsigned int i) = 0;
-
- virtual Gaudi::XYZPoint intercept(const Gaudi::XYZPoint& p,
- const Gaudi::XYZVector& t,
- const unsigned int i) = 0;
-
- /// Return a pointer to the module object for a given plane index
- virtual TbModule* module(const unsigned int i) = 0;
- /// Return a pointer to the module object of a given plane identifier
- virtual TbModule* module(const std::string& det) = 0;
- /// Return the list of modules
- virtual const std::vector<TbModule*>& modules() = 0;
-
- virtual unsigned int nDevices() const = 0;
-
- virtual unsigned int deviceIndex(const std::string& det) = 0;
-
- virtual unsigned int plane(const std::string& det) = 0;
-
- virtual bool readConditions(const std::string& file,
- std::vector<TbModule*>& modules) = 0;
-
- virtual void printAlignment(const std::vector<TbModule*>& modules) = 0;
-
- virtual void setModule(unsigned int i, TbModule* module) = 0;
- };
-
- #endif