]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSegmentationV01.h
flistTreeFrame attribute added; fCanvasWindow removed
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationV01.h
index e63ce2e895123ae4e12876a71ec32ef983e3e326..87b4dc32e6bc33ec6b4e4a931cc0938c5f654d9a 100644 (file)
 //  Segmentation and Response classes version 01   //
 /////////////////////////////////////////////////////
 class AliMUON;
-class TArrayF;
-class TArrayI;
 class TObjArray;
 
-
-
 #include "AliMUONSegmentationV0.h"
-#include "TArrayI.h"
-#include "TArrayF.h"
+#include "TArrayI.h" // because the object, and not the pointer,
+#include "TArrayF.h" // belongs to the class
+
 
 class AliMUONSegmentationV01 :
 public AliMUONSegmentationV0 {
  public:
     AliMUONSegmentationV01();
+    AliMUONSegmentationV01(Int_t nsec);
     AliMUONSegmentationV01(const AliMUONSegmentationV01 & segmentation);
     
-    virtual ~AliMUONSegmentationV01(){}
+    virtual ~AliMUONSegmentationV01();
+    
     //    
     // Set Chamber Segmentation Parameters
     // 
     virtual  void    SetPadDivision(Int_t ndiv[4]);
     // Radii
     virtual  void    SetSegRadii(Float_t  r[4]);
+    virtual  void    SetOffsetY(Float_t off) {fOffsetY = off;}
     //
     // Transform from pad (wire) to real coordinates and vice versa
     //
     // Transform from pad to real coordinates
-    virtual void    GetPadIxy(Float_t x ,Float_t y ,Int_t   &ix,Int_t   &iy);
+    virtual void    GetPadI(Float_t x ,Float_t y ,Int_t   &ix,Int_t &iy);
+    virtual void    GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy) 
+       {GetPadI(x, y, ix, iy);}
     // Transform from real to pad coordinates
-    virtual void    GetPadCxy(Int_t   ix,Int_t   iy,Float_t &x ,Float_t &y );    
+    virtual void    GetPadC(Int_t   ix,Int_t   iy,Float_t &x ,Float_t &y );
+    virtual void    GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z) 
+       {z=fZ; GetPadC(ix, iy, x , y);}
     //
     // Initialisation
-    virtual void Init(AliMUONChamber* chamber);
+    virtual void Init(Int_t chamber);
     //
     // Get member data
     //
     // Pad size in x by Sector
-    virtual Float_t Dpx(Int_t isec);
+    virtual Float_t Dpx(Int_t isec) const;
     // Pad size in y by Sector
-    virtual Float_t Dpy(Int_t isec);
+    virtual Float_t Dpy(Int_t isec) const;
     // Max number of Pads in x
-    virtual Int_t   Npx(){return fNpxS[fNsec-1][1]+1;}
+    virtual Int_t   Npx() const {return fNpxS[fNsec-1][1]+1;}
     //
     virtual void    SetPad(Int_t ix,Int_t iy);
     //
     // Iterate over pads
     // Initialiser
     virtual void  FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
+    virtual void  FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy)
+       {FirstPad(xhit, yhit, dx, dy);}
     // Stepper
     virtual void  NextPad();
     // Condition
@@ -77,41 +83,42 @@ public AliMUONSegmentationV0 {
      virtual void IntegrationLimits
        (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
     // Test points for auto calibration
-    void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
+    void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y) const;
     //
     // Draw segmentation zones
-    virtual void Draw();
+    virtual void Draw(const char *opt="") const;
     // Function for systematic corrections
     // Set the correction function
     virtual void SetCorrFunc(Int_t dum, TF1* func);
     // Get the correction function
-    virtual TF1* CorrFunc(Int_t iZone);
+    virtual TF1* CorrFunc(Int_t iZone) const;
     // assignment operator
     AliMUONSegmentationV01& operator=(const AliMUONSegmentationV01& rhs);
     ClassDef(AliMUONSegmentationV01,1) // Segmentation approximating circular zones with different pad size
  protected:
     //  Geometry
     //
-    Int_t      fNsec;           // Number of sectors
-    TArrayF    fRSec;           // Sector outer radia
-    TArrayI    fNDiv;           // Pad size division
-    TArrayF    fDpxD;           // y pad width per sector
+    Int_t       fNsec;           // Number of sectors
+    TArrayF*    fRSec;           // Sector outer radia
+    TArrayI*    fNDiv;           // Pad size division
+    TArrayF*    fDpxD;           // y pad width per sector
+    Float_t     fOffsetY;        // Staggering offset in y
     // Segmentation map
-    Int_t      fNpxS[10][1000]; // Number of pads per sector in x
-    Float_t    fCx[10][1000];   // pad-sector contour x vs y  
+    Int_t      fNpxS[10][1000];  //  Number of pads per sector in x
+    Float_t    fCx[10][1000];    //  pad-sector contour x vs y  
     // Chamber region consideres during disintegration
     // (lower left and upper right corner)
     //
-    Float_t fxmin; // lower left  x
-    Float_t fxmax; // lower left  y
-    Float_t fymin; // upper right x
-    Float_t fymax; // upper right y 
+    Float_t fXmin; // ! lower left  x
+    Float_t fXmax; // ! lower left  y
+    Float_t fYmin; // ! upper right x
+    Float_t fYmax; // ! upper right y 
 
     //
     // Current pad during integration (cursor for disintegration)
-    Int_t   fSector; // Current sector
+    Int_t   fSector;   // ! Current sector
     //
-    TObjArray *fCorr; // Correction functions
+    TObjArray *fCorrA; // ! Array of correction functions
 };
 #endif