]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSegmentationV04.cxx
ZDC needs PIPE, ABSO, DIPO and SHIL
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationV04.cxx
index 77431526f1bf175cb0592ba57945142ad879bae8..60844264662798655f09de8887e35022a947fec5 100644 (file)
 
 /*
 $Log$
+Revision 1.6  2000/10/18 11:42:06  morsch
+- AliMUONRawCluster contains z-position.
+- Some clean-up of useless print statements during initialisations.
+
+Revision 1.5  2000/10/04 18:50:05  morsch
+In Init(): (*fDpxD)[fNsec-1]=fDpx;
+
+Revision 1.4  2000/10/03 21:48:07  morsch
+Adopt to const declaration of some of the methods in AliSegmentation.
+
+Revision 1.3  2000/06/29 12:34:09  morsch
+AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
+it usable with any other geometry class. The link to the object to which it belongs is
+established via an index. This assumes that there exists a global geometry manager
+from which the pointer to the parent object can be obtained (in our case gAlice).
+
+Revision 1.2  2000/06/15 07:58:48  morsch
+Code from MUON-dev joined
+
 Revision 1.1.2.1  2000/06/09 21:38:15  morsch
 AliMUONSegmentationV04 code  from  AliMUONSegResV04.cxx
 
@@ -26,15 +45,19 @@ AliMUONSegmentationV04 code  from  AliMUONSegResV04.cxx
 
 
 #include "AliMUONSegmentationV04.h"
+#include "AliMUONChamber.h"
+#include "AliMUON.h"
+#include "AliRun.h"
+
 #include <TMath.h>
 
 //___________________________________________
 ClassImp(AliMUONSegmentationV04)
 
 
-void AliMUONSegmentationV04::Init(AliMUONChamber* Chamber)
+void AliMUONSegmentationV04::Init(Int_t chamber)
 {
-    printf("\n Initialise segmentation v04 \n");
+
 //
 //  Fill the arrays fCx (x-contour) and fNpxS (ix-contour) for each sector
 //  These arrays help in converting from real to pad co-ordinates and
@@ -44,6 +67,8 @@ void AliMUONSegmentationV04::Init(AliMUONChamber* Chamber)
 //  concentric circles as shown below
 //
 //  PCB module size in cm
+    printf("\n Initialise Segmentation V04 \n");
+
     const Float_t kDxPCB=40, kDyPCB=40;
 //  PCB distribution (7 rows with 1+3 segmentation regions)
     const Int_t kpcb[7][4] = {{1, 2, 2, 2}, 
@@ -80,11 +105,10 @@ void AliMUONSegmentationV04::Init(AliMUONChamber* Chamber)
     fNpy=7*nPyPCB;
 //
 //  Calculate padsize along x
-    fDpxD[fNsec-1]=fDpx;
+    (*fDpxD)[fNsec-1]=fDpx;
     if (fNsec > 1) {
        for (Int_t i=fNsec-2; i>=0; i--){
-           fDpxD[i]=fDpxD[fNsec-1]/fNDiv[i];
-           printf("\n test ---dx %d %f \n",i,fDpxD[i]);
+           (*fDpxD)[i]=(*fDpxD)[fNsec-1]/(*fNDiv)[i];
        }
     }
 //
@@ -101,11 +125,11 @@ void AliMUONSegmentationV04::Init(AliMUONChamber* Chamber)
 //  Loop over sectors (isec=0 is the dead space surounding the beam pipe)
            for (Int_t isec=0; isec<4; isec++) {
                if (isec==0) {
-                   fNpxS[0][iy]=kpcb[irow][0]*Int_t(kDxPCB/fDpxD[0]);
+                   fNpxS[0][iy]=kpcb[irow][0]*Int_t(kDxPCB/(*fDpxD)[0]);
                    fCx[0][iy]=kpcb[irow][0]*kDxPCB;
                } else {
                    fNpxS[isec][iy]=fNpxS[isec-1][iy]
-                       +kpcb[irow][isec]*Int_t(kDxPCB/fDpxD[isec]);
+                       +kpcb[irow][isec]*Int_t(kDxPCB/(*fDpxD)[isec]);
 
                    fCx[isec][iy]=fCx[isec-1][iy]
                    +kpcb[irow][isec]*kDxPCB;
@@ -113,9 +137,13 @@ void AliMUONSegmentationV04::Init(AliMUONChamber* Chamber)
            } // sectors
        } // pad raws in module
     } // PCB rows
+
+    AliMUON *pMUON  = (AliMUON *) gAlice->GetModule("MUON");
+    fChamber=&(pMUON->Chamber(chamber));
+    fZ = fChamber->Z();
 }
 
-void AliMUONSegmentationV04::GiveTestPoints(Int_t &n, Float_t *x, Float_t *y)
+void AliMUONSegmentationV04::GiveTestPoints(Int_t &n, Float_t *x, Float_t *y) const
 {
 // Returns test point on the pad plane.
 // Used during determination of the segmoid correction of the COG-method