]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSegmentationV0.h
Code revision:
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationV0.h
index 86c40e7cad6ae586973c324a8d1fa4bcaa075e8f..f1b634ce33f707051f937f15daef5b456a7cabc0 100644 (file)
@@ -4,21 +4,24 @@
  * See cxx source for full Copyright notice                               */
 
 /* $Id$ */
+// Revision of includes 07/05/2004
 
-#include "AliMUONSegmentation.h"
-
-class AliMUONChamber;
 //----------------------------------------------
 //
 // Chamber segmentation for homogeneously segmented circular chamber
 //
-class AliMUONSegmentationV0 :
-public AliMUONSegmentation {
+
+#include "AliSegmentation.h"
+
+class AliMUONChamber;
+class TF1;
+
+class AliMUONSegmentationV0 : public AliSegmentation 
+{
  public:
-    AliMUONSegmentationV0(){}
-    AliMUONSegmentationV0(const AliMUONSegmentationV0 & segmentation);
-    
+    AliMUONSegmentationV0();
     virtual ~AliMUONSegmentationV0(){}
+
     // Set Chamber Segmentation Parameters
     //
     // Pad size Dx*Dy 
@@ -28,45 +31,41 @@ public AliMUONSegmentation {
     // Transform from pad (wire) to real coordinates and vice versa
     //
     // Anod wire coordinate closest to xhit
-    virtual Float_t GetAnod(Float_t xhit);
+    virtual Float_t GetAnod(Float_t xhit) const;
     // Transform from pad to real coordinates
-    virtual void    GetPadIxy(Float_t x, Float_t y , Int_t &ix, Int_t &iy);
-    virtual void    GetPadIxy(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
-       {GetPadIxy(x, y, ix, 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) ;
     // Transform from real to pad coordinates
-    virtual void    GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y);
-    virtual void    GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
-       {z=0; GetPadCxy(ix, iy, x , 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
-    virtual Float_t Dpx(){return fDpx;}
+    virtual Float_t Dpx() const {return fDpx;}
     // Pad size in y
-    virtual Float_t Dpy(){return fDpy;}
+    virtual Float_t Dpy() const {return fDpy;}
     // Pad size in x by Sector
-    virtual Float_t Dpx(Int_t) {return fDpx;}
+    virtual Float_t Dpx(Int_t) const {return fDpx;}
     // Pad size in y by Secto
-    virtual Float_t Dpy(Int_t) {return fDpy;}
+    virtual Float_t Dpy(Int_t) const {return fDpy;}
     // Maximum number of Pads in x
-    virtual Int_t   Npx(){return fNpx;}
+    virtual Int_t   Npx() const {return fNpx;}
     // Maximum number of Pads in y
-    virtual Int_t   Npy(){return fNpy;}
+    virtual Int_t   Npy() const {return fNpy;}
     // Set pad position
     virtual void     SetPad(Int_t ix, Int_t iy);
     // Set hit position
     virtual void     SetHit(Float_t xhit, Float_t yhit);
-    virtual void     SetHit(Float_t xhit, Float_t yhit, Float_t zhit)
-       {SetHit(xhit, yhit);}
-    //
+    virtual void     SetHit(Float_t xhit, Float_t yhit, Float_t zhit);
     // 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);}
+    virtual void  FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy);
     // Stepper
     virtual void  NextPad();
     // Condition
@@ -77,43 +76,46 @@ public AliMUONSegmentation {
 dummy);
     // Number of pads read in parallel and offset to add to x 
     // (specific to LYON, but mandatory for display)
-    virtual void GetNParallelAndOffset(Int_t iX, Int_t iY,
-        Int_t *Nparallel, Int_t *Offset) {*Nparallel=1;*Offset=0;}
+    virtual void GetNParallelAndOffset(Int_t iX, Int_t iY, Int_t *Nparallel, Int_t *Offset);
     // Get next neighbours 
     virtual void Neighbours
-       (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
+       (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]) ;
     //
     // Current Pad during Integration
     // x-coordinaten
-    virtual Int_t  Ix(){return fix;}
+    virtual Int_t  Ix() {return fIx;}
     // y-coordinate
-    virtual Int_t  Iy(){return fiy;}
+    virtual Int_t  Iy() {return fIy;}
     // current sector
-    virtual Int_t  ISector(){return 1;}
+    virtual Int_t  ISector() {return 1;}
     // calculate sector from pad coordinates
-    virtual Int_t  Sector(Int_t ix, Int_t iy) {return 1;}
+    virtual Int_t  Sector(Int_t ix, Int_t iy);
+    virtual Int_t  Sector(Float_t x, Float_t y);
     //
     // Signal Generation Condition during Stepping
-    virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
+    virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z) ;
     // Initialise signal gneration at coord (x,y,z)
     virtual void  SigGenInit(Float_t x, Float_t y, Float_t z);
     // Current integration limits
     virtual void IntegrationLimits
        (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
     // Test points for auto calibration
-    virtual void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
+    virtual 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) {fCorr=func;}
+    virtual void SetCorrFunc(Int_t dum, TF1* func);
     // Get the correction Function
-    virtual TF1* CorrFunc(Int_t) {return fCorr;}
-    // assignment operator
-    AliMUONSegmentationV0& operator=(const AliMUONSegmentationV0& rhs);
+    virtual TF1* CorrFunc(Int_t) const {return fCorr;}
     
     ClassDef(AliMUONSegmentationV0,1) //Class for homogeneous segmentation
-       protected:
+  
+  protected:
+    AliMUONSegmentationV0(const AliMUONSegmentationV0 & segmentation);
+    // assignment operator
+    AliMUONSegmentationV0& operator=(const AliMUONSegmentationV0& rhs);
+
     //
     // Implementation of the segmentation class:
     // Version 0 models rectangular pads with the same dimensions all
@@ -131,29 +133,33 @@ dummy);
     
     
     // Chamber region consideres during disintegration   
-    Int_t fixmin; // lower left  x
-    Int_t fixmax; // lower left  y
-    Int_t fiymin; // upper right x
-    Int_t fiymax; // upper right y 
+    Int_t fIxmin; // ! lower left  x
+    Int_t fIxmax; // ! lower left  y
+    Int_t fIymin; // ! upper right x
+    Int_t fIymax; // ! upper right y 
     //
     // Current pad during integration (cursor for disintegration)
-    Int_t fix;  // pad coord.  x 
-    Int_t fiy;  // pad coord.  y 
-    Float_t fx; // real coord. x
-    Float_t fy; // real ccord. y
+    Int_t fIx;  // ! pad coord.  x 
+    Int_t fIy;  // ! pad coord.  y 
+    Float_t fX; // ! real coord. x
+    Float_t fY; // ! real ccord. y
     //
     // Current pad and wire during tracking (cursor at hit centre)
     //
     //
-    Float_t fxhit;  // x-position of hit
-    Float_t fyhit;  // y-position of hit
+    Float_t fXhit;  // ! x-position of hit
+    Float_t fYhit;  // ! y-position of hit
     // Reference point to define signal generation condition
-    Int_t fixt;     // pad coord. x
-    Int_t fiyt;     // pad coord. y
-    Int_t fiwt;     // wire number
-    Float_t fxt;    // x
-    Float_t fyt;    // y
-    TF1*    fCorr;  // correction function
+    Int_t fIxt;     // ! pad coord. x
+    Int_t fIyt;     // ! pad coord. y
+    Int_t fIwt;     // ! wire number
+    Float_t fXt;    // ! x
+    Float_t fYt;    // ! y
+    TF1*    fCorr;  // ! correction function
+    //
+    AliMUONChamber* fChamber; // ! Reference to mother chamber
+    Int_t fId;                // Identifier
+    Float_t fZ;               // z-position of chamber
 };
 #endif