LCOV - code coverage report
Current view: top level - FMD/FMDbase - AliFMDDetector.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 16 18 88.9 %
Date: 2016-06-14 17:26:59 Functions: 16 24 66.7 %

          Line data    Source code
       1             : #ifndef ALIFMDDETECTOR_H
       2             : #define ALIFMDDETECTOR_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
       4             :  * reserved. 
       5             :  *
       6             :  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
       7             :  *
       8             :  * See cxx source for full Copyright notice                               
       9             :  */
      10             : //__________________________________________________________________
      11             : //
      12             : // Utility class to help implement the FMD geometry.  This provides
      13             : // the interface for the concrete geometry implementations of the FMD
      14             : // sub-detectors. 
      15             : /** @file    AliFMDDetector.h
      16             :     @author  Christian Holm Christensen <cholm@nbi.dk>
      17             :     @date    Mon Mar 27 12:36:27 2006
      18             :     @brief   Sub-detector base class declaration
      19             :     @ingroup FMD_base
      20             : */
      21             : #ifndef ROOT_TNamed
      22             : # include <TNamed.h>
      23             : #endif
      24             : class AliFMDRing;
      25             : class TGeoMatrix;
      26             : 
      27             : /** @defgroup FMD_base Basic classes */
      28             : //__________________________________________________________________
      29             : /** @brief Base class for the geometry description and parameters of
      30             :     the FMD sub detectors FMD1, FMD2, and FMD3.
      31             : 
      32             :     This class hold common parameters of the specific FMD detectors.
      33             :     @ingroup FMD_base
      34             : */
      35             : class AliFMDDetector : public TNamed 
      36             : {
      37             : public:
      38             :   /** Constructor
      39             :       @param id    Detector number
      40             :       @param inner Pointer to inner ring geometry
      41             :       @param outer Pointer to inner outer geometry
      42             :       @return  */
      43             :   AliFMDDetector(Int_t id, AliFMDRing* inner, AliFMDRing* outer);
      44             :   /** Copy CTOR 
      45             :       @param other Object to copy from. */
      46             :   AliFMDDetector(const AliFMDDetector& other);
      47             :   /** Assignment operator 
      48             :       @param other Object to assign from
      49             :       @return reference to this object  */
      50             :   AliFMDDetector& operator=(const AliFMDDetector& other);
      51           0 :   virtual ~AliFMDDetector() {}
      52             :   /** Initialize the geometry */
      53             :   virtual void Init();
      54             :   /** Find the transformations that correspond to modules of this
      55             :       detector, and store them in the arrays. */
      56             :   virtual void InitTransformations();
      57             :   
      58             :   /** @param x Detector number */
      59           0 :   void SetId(Int_t x) { fId = x; }
      60             :   /** @param x Position of outer ring along z */
      61          36 :   void SetInnerZ(Double_t x) { fInnerZ = x; }
      62             :   /** @param x Position of outer ring along z */
      63          30 :   void SetOuterZ(Double_t x) { fOuterZ = x; }
      64             :   /** @param x Inner radius of inner honeycomb */
      65          90 :   void SetInnerHoneyLowR(Double_t x) { fInnerHoneyLowR = x; }
      66             :   /** @param x Outer radius of inner honeycomb */
      67         134 :   void SetInnerHoneyHighR(Double_t x) { fInnerHoneyHighR = x; }
      68             :   /** @param x Inner radius of outer honeycomb */
      69          68 :   void SetOuterHoneyLowR(Double_t x) { fOuterHoneyLowR = x; }
      70             :   /** @param x Outer radius of outer honeycomb */
      71          68 :   void SetOuterHoneyHighR(Double_t x) { fOuterHoneyHighR = x; }
      72             :     
      73             :   /** @return Detector number */
      74          44 :   Int_t GetId() const { return fId; }
      75             :   /** @return Position of outer ring along z */
      76          22 :   Double_t GetInnerZ() const { return fInnerZ; }
      77             :   /** @return Position of outer ring along z */
      78           8 :   Double_t GetOuterZ() const { return fOuterZ; }
      79             :   /** @return Inner radius of inner honeycomb */
      80           6 :   Double_t GetInnerHoneyLowR() const { return fInnerHoneyLowR; }
      81             :   /** @return Outer radius of inner honeycomb */
      82           6 :   Double_t GetInnerHoneyHighR() const { return fInnerHoneyHighR; }
      83             :   /** @return Inner radius of outer honeycomb */
      84           6 :   Double_t GetOuterHoneyLowR() const { return fOuterHoneyLowR; }
      85             :   /** @return Outer radius of outer honeycomb */
      86          28 :   Double_t GetOuterHoneyHighR() const { return fOuterHoneyHighR; }
      87             :     
      88             :   /** @return Inner ring information */
      89      541350 :   AliFMDRing* GetInner() const { return fInner; }
      90             :   /** @return Outer ring information */
      91      344338 :   AliFMDRing* GetOuter() const { return fOuter; }
      92             :   /** @param id Id of ring to get 
      93             :       @return Pointer to ring, 0 on failure */
      94             :   AliFMDRing* GetRing(Char_t id) const;
      95             :   /** @param id Id of ring to get 
      96             :       @return Z position of ring or 0 on failure */
      97             :   Double_t GetRingZ(Char_t id) const;
      98             :   
      99             :   /** Translate detector coordinates (detector, ring, sector, strip)
     100             :       to spatial coordinates (x, y, z) in the master reference frame
     101             :       of ALICE.  The member function uses the transformations
     102             :       previously obtained from the TGeoManager.
     103             :       @param ring   Ring id
     104             :       @param sector Sector number
     105             :       @param strip  Strip number
     106             :       @param x      On return, X coordinate 
     107             :       @param y      On return, Y coordinate 
     108             :       @param z      On return, Z coordinate  */
     109             :   void Detector2XYZ(Char_t ring, UShort_t sector, UShort_t strip, 
     110             :                     Double_t& x, Double_t& y, Double_t& z) const;
     111             :   /** Translate spatial coordinates (x,y,z) in the master reference
     112             :       frame of ALICE to the detector coordinates (detector, ring,
     113             :       sector, strip).  Note, that if this method is to be used in
     114             :       reconstruction or the like, then the input z-coordinate should
     115             :       be corrected for the events interactions points z-coordinate,
     116             :       like  
     117             :       @code 
     118             :       geom->XYZ2Detector(x,y,z-ipz,d,r,s,t);
     119             :       @endcode
     120             :       @param x       X coordinate
     121             :       @param y       Y coordinate
     122             :       @param z       Z coordinate
     123             :       @param ring    On return, Ring id            
     124             :       @param sector  On return, Sector number      
     125             :       @param strip   On return, Strip number       
     126             :       @return @c  false of (@a x, @a y, @a z) is not within this
     127             :       detector.  */
     128             :   Bool_t XYZ2Detector(Double_t x, Double_t y, Double_t z, 
     129             :                       Char_t& ring, UShort_t& sector, UShort_t& strip) const;
     130             : 
     131             :   /** Declare alignable volumes */
     132             :   virtual void SetAlignableVolumes() const;
     133             :    /** Get transformation matrix for a sector in a ring 
     134             :       @param ring   Ring id
     135             :       @param sector Sector numberr 
     136             :       @return Matrix on success, 0 otherwise */
     137             :   TGeoMatrix*   FindTransform(Char_t ring, UShort_t sector) const;
     138             : protected:
     139             :   /** Check if we have all transformations for a ring 
     140             :       @param ring Ring to check for 
     141             :       @return @c true if we got all transforms  */
     142             :   Bool_t        HasAllTransforms(Char_t ring) const;
     143             :  
     144             :   Int_t         fId;                    // Detector number
     145             :   Double_t      fInnerZ;                // Position of outer ring along z
     146             :   Double_t      fOuterZ;                // Position of outer ring along z
     147             :   Double_t      fInnerHoneyLowR;        // Inner radius of inner honeycomb
     148             :   Double_t      fInnerHoneyHighR;       // Outer radius of inner honeycomb
     149             :   Double_t      fOuterHoneyLowR;        // Inner radius of outer honeycomb
     150             :   Double_t      fOuterHoneyHighR;       // Outer radius of outer honeycomb
     151             :   AliFMDRing*   fInner;                 // Pointer to inner ring information
     152             :   AliFMDRing*   fOuter;                 // Pointer to outer ring information
     153             :   TObjArray*    fInnerTransforms;       // List of inner module global
     154             :   TObjArray*    fOuterTransforms;       // List of outer module global
     155             : 
     156          12 :   ClassDef(AliFMDDetector, 2); // 
     157             : };
     158             : 
     159             : #endif
     160             : //____________________________________________________________________
     161             : //
     162             : // Local Variables:
     163             : //   mode: C++
     164             : // End:
     165             : //
     166             : // EOF
     167             : //

Generated by: LCOV version 1.11