LCOV - code coverage report
Current view: top level - ITS/ITSbase - AliITSsegmentationSDD.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 17 24 70.8 %
Date: 2016-06-14 17:26:59 Functions: 15 25 60.0 %

          Line data    Source code
       1             : #ifndef ALIITSSEGMENTATIONSDD_H
       2             : #define ALIITSSEGMENTATIONSDD_H
       3             : 
       4             : 
       5             : #include "AliITSsegmentation.h"
       6             : 
       7             : //////////////////////////////////////////////////////
       8             : // Segmentation class for SDD                       //
       9             : //                                                  //
      10             : //////////////////////////////////////////////////////
      11             : class AliITSsegmentationSDD :
      12             : public AliITSsegmentation {
      13             :  public:
      14             : 
      15             : 
      16             :     AliITSsegmentationSDD(Option_t *opt="");
      17             :     AliITSsegmentationSDD(const AliITSsegmentationSDD &source);
      18             :     AliITSsegmentationSDD& operator=(const AliITSsegmentationSDD &source);
      19        1074 :     virtual ~AliITSsegmentationSDD(){}
      20             : 
      21             :     // Set Detector Segmentation Parameters
      22             :     //
      23             :     // get the drift speed used for this segmentation
      24           0 :     virtual Float_t GetDriftSpeed()const{return fDriftSpeed;}
      25             :     // Set the drift speed needed for this segmentation
      26             :     virtual void SetDriftSpeed(Float_t ds){
      27         344 :       fDriftSpeed = ds;
      28         172 :       fSetDriftSpeed=kTRUE;
      29         172 :     }
      30             :     // Cell size dz*dx  
      31             :     virtual void    SetPadSize(Float_t pitch, Float_t clock) 
      32         372 :                          {fPitch=pitch;fTimeStep=1000./clock;}
      33             : 
      34             :     // Maximum number of cells along the two coordinates z,x (anodes,samples) 
      35             :     virtual void    SetNPads(Int_t p1, Int_t p2) 
      36         372 :                          {fNanodes=2*p1;fNsamples=p2;}
      37             :     // Returns the maximum number of cells (digits) posible
      38           0 :     virtual Int_t   GetNPads() const {return fNanodes*fNsamples;}
      39             : 
      40             :     // Transform from real local to cell coordinates
      41             :     virtual void    GetPadIxz(Float_t x ,Float_t z ,Int_t   &ix,Int_t   &iz) const;
      42             :     // Transform from cell to real local coordinates
      43             :     virtual void    GetPadCxz(Int_t   ix,Int_t   iz,Float_t &x ,Float_t &z ) const;    
      44             : 
      45             :     // Get anode and time bucket as floats - numbering from 0
      46             :     virtual void    GetPadTxz(Float_t &x ,Float_t &z) const;
      47             :     // Transformation from Geant cm detector center local coordinates
      48             :     // to detector segmentation/cell coordiantes starting from (0,0).
      49             :     virtual Bool_t  LocalToDet(Float_t x,Float_t z,Int_t &ix,Int_t &iz) const;
      50             :     // Transformation from detector segmentation/cell coordiantes starting
      51             :     // from (0,0) to Geant cm detector center local coordinates.
      52             :     virtual void    DetToLocal(Int_t ix,Int_t iz,Float_t &x,Float_t &z) const;
      53             :     //
      54             :     virtual Float_t GetAnodeFromLocal(Float_t x,Float_t z) const;
      55             :     virtual Int_t   GetSideFromLocalX(Float_t xloc) const {
      56       11981 :       if(xloc>0) return 0;   // left side (channel 0) positive xloc
      57        2248 :       else return 1;         // right side (channel 1) negative xloc
      58        4743 :     }
      59             :     virtual Float_t GetLocalZFromAnode(Int_t nAnode) const;
      60             :     virtual Float_t GetLocalZFromAnode(Float_t zAnode) const;
      61             :     virtual Float_t GetDriftTimeFromTb(Int_t tb) const {
      62           0 :       Float_t xtb=(Float_t)tb+0.5;
      63           0 :       return GetDriftTimeFromTb(xtb);
      64             :     }
      65             :     virtual Float_t GetDriftTimeFromTb(Float_t xtb) const {
      66         460 :       return xtb*fTimeStep;
      67             :     }
      68             :     virtual Int_t    GetNumberOfChips() const {
      69           0 :       return fgkNchipsPerHybrid;
      70             :     }
      71             :     virtual Int_t    GetMaximumChipIndex() const{
      72        1040 :       return fgkNchipsPerHybrid*2-1;
      73             :     }
      74             :     virtual Int_t    GetChipFromLocal(Float_t xloc, Float_t zloc) const;
      75             :     virtual Int_t    GetChipsInLocalWindow(Int_t* array, Float_t zmin, Float_t zmax, Float_t xmin, Float_t xmax) const;
      76             :       
      77             : 
      78             :     virtual Int_t    GetChipFromChannel(Int_t ix, Int_t iz) const; 
      79             : 
      80             :     // Initialisation
      81             :     virtual void Init();
      82             : 
      83             :     //
      84             :     // Get member data
      85             :     //
      86             :     // Cell size in x
      87         198 :     virtual Float_t Dpx(Int_t) const {return fTimeStep;}
      88             :     // Cell size in z 
      89         212 :     virtual Float_t Dpz(Int_t) const {return fPitch;} 
      90             : 
      91             :     // Maximum number of samples in x
      92          14 :     virtual Int_t    Npx() const {return fNsamples;}
      93             :     // Maximum number of anodes in z
      94        1058 :     virtual Int_t    Npz() const {return fNanodes;}
      95             :     // Maximum number of anodes in z
      96        1040 :     virtual Int_t    NpzHalf() const {return fNanodes/2;}
      97             : 
      98             :     //
      99             :     // Get next neighbours 
     100             :     virtual void Neighbours(Int_t iX,Int_t iZ,Int_t* Nlist,Int_t Xlist[10],
     101             :                             Int_t Zlist[10]) const;
     102             : 
     103             :     // Current integration limits 
     104           0 :     virtual void  IntegrationLimits(Float_t&,Float_t&,Float_t&,Float_t&) {}
     105             :     // Print Parameters
     106             :     virtual void    Print(Option_t *opt="") const;
     107             : // Print default parameters (static const data members, if any)
     108             :     virtual void PrintDefaultParameters() const;            
     109             : 
     110           0 :     static Int_t GetNAnodesPerHybrid()  { return fgkHalfNanodesDefault;}
     111             :   protected:
     112             : 
     113             :     virtual void Copy(TObject &obj) const;
     114             : 
     115             :     Int_t      fNsamples; // Number of time samples in x
     116             :     Int_t      fNanodes;  // Summed # of anodes in the two det halves (z)
     117             :     Float_t    fPitch;    // Anode pitch - microns
     118             :     Float_t    fTimeStep; // Sampling time - ns
     119             :     Float_t    fDriftSpeed;  // Drift speed 
     120             :     Bool_t     fSetDriftSpeed; // flag for usage of drift speed
     121             :     static const Float_t fgkDxDefault;  // Default value for fDx
     122             :     static const Float_t fgkDzDefault;  // Default value for fDz
     123             :     static const Float_t fgkDyDefault;  // Default value for fDy
     124             :     static const Float_t fgkPitchDefault; //Default value for fPitch
     125             :     static const Float_t fgkClockDefault; //Default value for the clock freq.
     126             :     static const Int_t fgkHalfNanodesDefault; //Default value for fNanodes/2
     127             :     static const Int_t fgkNsamplesDefault; //Default value for fNsamples
     128             :     static const Int_t fgkNchipsPerHybrid;    //number of chips per hybrid
     129             :     static const Int_t fgkNanodesPerChip;    //number of chips per hybrid
     130             :     static const Float_t fgkCm2Micron;  // conversion from cm to micron
     131             :     static const Float_t fgkMicron2Cm;  // conversion from micron to cm
     132         118 :     ClassDef(AliITSsegmentationSDD,6) // SDD segmentation
     133             : };
     134             : 
     135             : #endif

Generated by: LCOV version 1.11