ROOT logo
#ifndef ALIITSSEGMENTATIONSSD_H
#define ALIITSSEGMENTATIONSSD_H

#include "AliITSsegmentation.h"

//////////////////////////////////////////////////////
// Segmentation class for SSD                       //
//                                                  //
//////////////////////////////////////////////////////

/* $Id$ */

class AliITSsegmentationSSD :
public AliITSsegmentation {
 public:

    AliITSsegmentationSSD(Option_t *opt="");
    AliITSsegmentationSSD(const AliITSsegmentationSSD &source);
    virtual ~AliITSsegmentationSSD(){}
    AliITSsegmentationSSD& operator=(const AliITSsegmentationSSD &source);


    // Strip size  
    virtual void    SetPadSize(Float_t pitch,Float_t /* d */)
	{fPitch=pitch;}

    // Maximum number of strips along the two coordinates  
    virtual void    SetNPads(Int_t p1,Int_t /* d */){fNstrips=p1;}
    // Returns the maximum number of cells (digits) posible
    virtual Int_t   GetNPads() const {return 2*fNstrips;}


    // Set stereo angles Pside-Nside 
    virtual void    SetAngles(Float_t pa=0.0075, Float_t na=0.0275) 
                         {fStereoP=pa; fStereoN=na;}

    // Set stereo angles Pside-Nside 
    // Transform from real coordinates to strips
    virtual void    GetPadIxz(Float_t x ,Float_t z ,Int_t   &iP,Int_t  &iN) const;
    // Transform from strips to real coordinates
            void    GetPadCxz(Float_t iP, Float_t iN, Float_t &x , Float_t &z) const;
    virtual void    GetPadCxz(Int_t iP, Int_t iN, Float_t &x , Float_t &z) const { GetPadCxz((Float_t) iP, (Float_t) iN, x, z); }
    virtual void    GetPadTxz(Float_t &x , Float_t &z) const;
    // Transformation from Geant cm detector center local coordinates
    // to detector P and N side strip numbers..
    virtual Bool_t  LocalToDet(Float_t x,Float_t z,Int_t &iP,Int_t &iN) const;
    // Transformation from detector segmentation/cell coordiantes starting
    // from 0. iPN=0 for P side and 1 for N side strip. Returned is z=0.0
    // and the corresponding x value..
    virtual void    DetToLocal(Int_t ix,Int_t iPN,Float_t &x,Float_t &z) const;

    virtual Int_t    GetNumberOfChips() const {
      return fgkNchipsPerSide;
    }
    virtual Int_t    GetMaximumChipIndex() const{
      return fgkNchipsPerSide*2-1;
    }
    virtual Int_t    GetChipFromLocal(Float_t xloc, Float_t zloc) const;
    virtual Int_t    GetChipFromChannel(Int_t ix, Int_t iz) const;
    virtual Int_t    GetChipsInLocalWindow(Int_t* array, Float_t zmin, Float_t zmax, Float_t xmin, Float_t xmax) const;

    virtual void Init();

    // Strip size in x
    virtual Float_t Dpx(Int_t) const {return fPitch;}
    // Strip size in z 
    virtual Float_t Dpz(Int_t) const {return fDz;}
    // Maximum number of Strips in x
    virtual Int_t    Npx() const {return fNstrips;}
    // Maximum number of Strips in z
    virtual Int_t    Npz()const {return 1;}

    // Angles : Pside stereo angle-Nside stereo angle
     virtual void Angles(Float_t &aP,Float_t &aN) const;
     virtual void SetLayer(Int_t l);
     virtual Int_t GetLayer() const {return fLayer;}
    // Print Default parameters
     virtual void PrintDefaultParameters() const;

  protected:

  virtual void Copy(TObject &obj) const; 

  Int_t      fNstrips;       // Number of strips in x 
  Float_t    fStereoP;       // Stereo angle for Pside (rad)
  Float_t    fStereoN;       // Stereo angle for Nside (rad)
  Float_t    fPitch;         // Pitch of the strips
  
  Int_t      fLayer;           //! layer number (5 or 6)
  static const Float_t fgkDxDefault;  // Default value for fDx
  static const Float_t fgkDzDefault;  // Default value for fDz
  static const Float_t fgkDyDefault;  // Default value for fDy
  static const Float_t fgkPitchDefault; //Default value for fPitch
  static const Int_t fgkNstripsDefault; //Default value for fNstrips
  static const Int_t fgkNchipsPerSide;    //number of chips per side
  static const Int_t fgkNstripsPerChip;    //number of strips per chip

  ClassDef(AliITSsegmentationSSD,4) //Segmentation class for SSD 
};

#endif
 AliITSsegmentationSSD.h:1
 AliITSsegmentationSSD.h:2
 AliITSsegmentationSSD.h:3
 AliITSsegmentationSSD.h:4
 AliITSsegmentationSSD.h:5
 AliITSsegmentationSSD.h:6
 AliITSsegmentationSSD.h:7
 AliITSsegmentationSSD.h:8
 AliITSsegmentationSSD.h:9
 AliITSsegmentationSSD.h:10
 AliITSsegmentationSSD.h:11
 AliITSsegmentationSSD.h:12
 AliITSsegmentationSSD.h:13
 AliITSsegmentationSSD.h:14
 AliITSsegmentationSSD.h:15
 AliITSsegmentationSSD.h:16
 AliITSsegmentationSSD.h:17
 AliITSsegmentationSSD.h:18
 AliITSsegmentationSSD.h:19
 AliITSsegmentationSSD.h:20
 AliITSsegmentationSSD.h:21
 AliITSsegmentationSSD.h:22
 AliITSsegmentationSSD.h:23
 AliITSsegmentationSSD.h:24
 AliITSsegmentationSSD.h:25
 AliITSsegmentationSSD.h:26
 AliITSsegmentationSSD.h:27
 AliITSsegmentationSSD.h:28
 AliITSsegmentationSSD.h:29
 AliITSsegmentationSSD.h:30
 AliITSsegmentationSSD.h:31
 AliITSsegmentationSSD.h:32
 AliITSsegmentationSSD.h:33
 AliITSsegmentationSSD.h:34
 AliITSsegmentationSSD.h:35
 AliITSsegmentationSSD.h:36
 AliITSsegmentationSSD.h:37
 AliITSsegmentationSSD.h:38
 AliITSsegmentationSSD.h:39
 AliITSsegmentationSSD.h:40
 AliITSsegmentationSSD.h:41
 AliITSsegmentationSSD.h:42
 AliITSsegmentationSSD.h:43
 AliITSsegmentationSSD.h:44
 AliITSsegmentationSSD.h:45
 AliITSsegmentationSSD.h:46
 AliITSsegmentationSSD.h:47
 AliITSsegmentationSSD.h:48
 AliITSsegmentationSSD.h:49
 AliITSsegmentationSSD.h:50
 AliITSsegmentationSSD.h:51
 AliITSsegmentationSSD.h:52
 AliITSsegmentationSSD.h:53
 AliITSsegmentationSSD.h:54
 AliITSsegmentationSSD.h:55
 AliITSsegmentationSSD.h:56
 AliITSsegmentationSSD.h:57
 AliITSsegmentationSSD.h:58
 AliITSsegmentationSSD.h:59
 AliITSsegmentationSSD.h:60
 AliITSsegmentationSSD.h:61
 AliITSsegmentationSSD.h:62
 AliITSsegmentationSSD.h:63
 AliITSsegmentationSSD.h:64
 AliITSsegmentationSSD.h:65
 AliITSsegmentationSSD.h:66
 AliITSsegmentationSSD.h:67
 AliITSsegmentationSSD.h:68
 AliITSsegmentationSSD.h:69
 AliITSsegmentationSSD.h:70
 AliITSsegmentationSSD.h:71
 AliITSsegmentationSSD.h:72
 AliITSsegmentationSSD.h:73
 AliITSsegmentationSSD.h:74
 AliITSsegmentationSSD.h:75
 AliITSsegmentationSSD.h:76
 AliITSsegmentationSSD.h:77
 AliITSsegmentationSSD.h:78
 AliITSsegmentationSSD.h:79
 AliITSsegmentationSSD.h:80
 AliITSsegmentationSSD.h:81
 AliITSsegmentationSSD.h:82
 AliITSsegmentationSSD.h:83
 AliITSsegmentationSSD.h:84
 AliITSsegmentationSSD.h:85
 AliITSsegmentationSSD.h:86
 AliITSsegmentationSSD.h:87
 AliITSsegmentationSSD.h:88
 AliITSsegmentationSSD.h:89
 AliITSsegmentationSSD.h:90
 AliITSsegmentationSSD.h:91
 AliITSsegmentationSSD.h:92
 AliITSsegmentationSSD.h:93
 AliITSsegmentationSSD.h:94
 AliITSsegmentationSSD.h:95
 AliITSsegmentationSSD.h:96
 AliITSsegmentationSSD.h:97
 AliITSsegmentationSSD.h:98
 AliITSsegmentationSSD.h:99
 AliITSsegmentationSSD.h:100
 AliITSsegmentationSSD.h:101