LCOV - code coverage report
Current view: top level - ITSMFT/MFT/MFTbase - AliMFTGeometry.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 13 7.7 %
Date: 2016-06-14 17:26:59 Functions: 1 19 5.3 %

          Line data    Source code
       1             : #ifndef AliMFTGeometry_H
       2             : #define AliMFTGeometry_H
       3             : 
       4             : 
       5             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       6             :  * See cxx source for full Copyright notice                               */
       7             : 
       8             : // $Id$
       9             : 
      10             : /// \ingroup MFTbase
      11             : /// \class AliMFTGeometry
      12             : /// \brief Class Handling both Virutal Segmentation and Real Volumes
      13             : ///
      14             : /// \author Raphael Tieulent <raphael.tieulent@cern.ch>
      15             : /// \date June 9th, 2015
      16             : 
      17             : # include "AliGeometry.h"
      18             : # include "AliMFTSegmentation.h"
      19             : 
      20             : class AliMFTGeometryBuilder;
      21             : 
      22             : //__________________________________________________________________
      23             : 
      24           0 : class AliMFTGeometry : public AliGeometry
      25             : {
      26             : public:
      27             : 
      28             :   static const Int_t kNDisks = 5;             ///< \brief Number of Disk
      29             :   static const Double_t kSensorLength;        ///< \brief CMOS Sensor Length
      30             :   static const Double_t kSensorHeight;        ///< \brief CMOS Sensor Height
      31             :   static const Double_t kSensorActiveHeight;  ///< \brief CMOS Sensor Active height
      32             :   static const Double_t kSensorActiveWidth;   ///< \brief CMOS Sensor Active width
      33             :   static const Double_t kSensorThickness;     ///< \brief CMOS Sensor Thickness
      34             :   static const Double_t kXPixelPitch;         ///< \brief Pixel pitch along X
      35             :   static const Double_t kYPixelPitch;         ///< \brief Pixel pitch along Y
      36             :   static const Int_t kNPixelX = 1024;         ///< \brief Number of Pixel along X
      37             :   static const Int_t kNPixelY = 512;          ///< \brief Number of Pixel along Y
      38             :   static const Double_t kSensorMargin;        ///< \brief Inactive margin around active area
      39             : 
      40             :   static const Double_t kSensorInterspace;    ///< \brief Interspace between 2 sensors on a ladder
      41             :   static const Double_t kSensorSideOffset;    ///< \brief Offset of sensor compare to ladder edge (close to the beam pipe)
      42             :   static const Double_t kSensorTopOffset;     ///< \brief Offset of sensor compare to ladder top edge
      43             :   static const Double_t kLadderOffsetToEnd;   ///< \brief Offset of sensor compare to ladder connector edge
      44             :   static const Double_t fHeightActive;   ///< height of the active elements
      45             :   static const Double_t fHeightReadout;  ///< height of the readout elements attached to the active ones
      46             : 
      47             :   static const Double_t kFlexHeight;          ///< \brief Flex Height 
      48             :   static const Double_t kLineWidth; 
      49             :   static const Double_t kVarnishThickness;  
      50             :   static const Double_t kAluThickness;    
      51             :   static const Double_t kKaptonThickness;
      52             :   static const Double_t kFlexThickness;       ///< \brief Flex Thickness
      53             :   static const Double_t kClearance;          
      54             :   static const Double_t kRadiusHole1;          
      55             :   static const Double_t kRadiusHole2;          
      56             :   static const Double_t kHoleShift1;          
      57             :   static const Double_t kHoleShift2;          
      58             :   static const Double_t kConnectorOffset;          
      59             :   static const Double_t kCapacitorDz;        
      60             :   static const Double_t kCapacitorDy;        
      61             :   static const Double_t kCapacitorDx; 
      62             :   static const Double_t kConnectorLength;
      63             :   static const Double_t kConnectorWidth;
      64             :   static const Double_t kConnectorHeight;
      65             :   static const Double_t kConnectorThickness;
      66             :   static const Double_t kEpsilon;
      67             :   static const Double_t kGlueThickness;
      68             :   static const Double_t kGlueEdge;
      69             :   static const Double_t kShiftDDGNDline;
      70             :   static const Double_t kShiftline;
      71             : 
      72             : 
      73             :   /// \brief Retuns MFT Geometry singleton object
      74             :   static AliMFTGeometry* Instance();
      75             :   
      76             :   enum ObjectTypes {kHalfMFTType, kHalfDiskType, kPlaneType, kLadderType, kSensorType};
      77             :   
      78             :   virtual ~AliMFTGeometry();
      79           0 :   virtual void GetGlobal(const AliRecPoint * p, TVector3 & pos, TMatrixF & mat) const {};
      80           0 :   virtual void GetGlobal(const AliRecPoint * p, TVector3 & pos) const {};
      81           0 :   virtual Bool_t Impact(const TParticle * particle) const             {return kFALSE;};
      82             :   void   Build();
      83             :   
      84             :   /// \brief Returns Object type based on Unique ID provided
      85           0 :   Int_t GetObjectType(UInt_t uniqueID)  const {return ((uniqueID>>14)&0x7);};
      86             :   /// \brief Returns Half-MFT ID based on Unique ID provided
      87           0 :   Int_t GetHalfMFTID(UInt_t uniqueID)   const {return ((uniqueID>>13)&0x1);};
      88             :   /// \brief Returns Half-Disk ID based on Unique ID provided
      89           0 :   Int_t GetHalfDiskID(UInt_t uniqueID)  const {return ((uniqueID>>10)&0x7);};
      90             :   /// \brief Returns Ladder ID based on Unique ID provided
      91           0 :   Int_t GetLadderID(UInt_t uniqueID)    const {return ((uniqueID>>4)&0x3F);};
      92             :   /// \brief Returns Sensor ID based on Unique ID provided
      93           0 :   Int_t GetSensorID(UInt_t uniqueID)    const {return (uniqueID&0xF);};
      94             :   
      95             :   UInt_t GetObjectID(ObjectTypes type, Int_t half=0, Int_t disk=0, Int_t ladder=0, Int_t chip=0) const;
      96             :   
      97             :   /// \brief Returns TGeo ID of the volume describing the sensors
      98           0 :   Int_t GetSensorVolumeID()    const {return fSensorVolumeId;};
      99             :   /// \brief Set the TGeo ID of the volume describing the sensors
     100           0 :   void  SetSensorVolumeID(Int_t val)   { fSensorVolumeId= val;};
     101             : 
     102             :   /// \brief Returns pointer to the segmentation
     103           0 :   AliMFTSegmentation * GetSegmentation() const {return fSegmentation;};
     104             :   
     105             :   Bool_t Hit2PixelID(Double_t xHit, Double_t yHit, Double_t zHit, Int_t detElemID, Int_t &xPixel, Int_t &yPixel) const;
     106             :   void GetPixelCenter(Int_t xPixel, Int_t yPixel, Int_t detElemID, Double_t &xCenter, Double_t &yCenter, Double_t &zCenter ) const ;
     107             :   Int_t GetDiskNSensors(Int_t diskId) const;
     108             :   Int_t GetDetElemLocalID(Int_t detElem) const;
     109             : 
     110             :   void LoadSegmentation();
     111             : 
     112             :   
     113             : private:
     114             : 
     115             :   static AliMFTGeometry* fgInstance; ///< \brief  Singleton instance
     116             :   AliMFTGeometry();
     117             :   AliMFTGeometry(const char* name);
     118             :   
     119             :   AliMFTGeometryBuilder* fBuilder; ///< \brief Geometry Builder
     120             :   AliMFTSegmentation *fSegmentation; ///< \brief Segmentation of the detector
     121             :   Int_t fSensorVolumeId; ///< \brief ID of the volume describing the CMOS Sensor
     122             :   
     123             :   /// \cond CLASSIMP
     124          14 :   ClassDef(AliMFTGeometry, 1);
     125             :   /// \endcond
     126             : 
     127             : };
     128             : 
     129             : 
     130             : #endif
     131             : 

Generated by: LCOV version 1.11