GetPadC adapted to the AliMUONSt1GeometryBuilderV2 geometry for station 1,
authorcussonno <cussonno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Feb 2004 15:32:51 +0000 (15:32 +0000)
committercussonno <cussonno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Feb 2004 15:32:51 +0000 (15:32 +0000)
Must be properly implemented.

MUON/AliMUONSegmentationV01.cxx
MUON/AliMUONSegmentationV01.h

index 399b330..f8b9f72 100644 (file)
@@ -25,6 +25,7 @@
 #include <TNode.h>  
 #include <TGeometry.h>  
 #include <TF1.h> 
+#include <TVector3.h> 
 #include <TObjArray.h>
 #include <Riostream.h>
 
@@ -268,6 +269,44 @@ GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y)
     } else {
        x=y=0;
     }
+
+}
+//________________________________________________________________
+
+void AliMUONSegmentationV01::
+GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
+{
+//  Returns real coordinates (x,y,z) for given pad coordinates (ix,iy)
+//
+  GetPadC(ix,iy,x,y); 
+    
+  // To be properly interfaced with chamber geometry (AliMUONSt1GeometryBuilderV2) ???
+  TVector3 scale[4];  
+  scale[0] = TVector3( 1,  1,  1);  // quadrant I
+  scale[1] = TVector3(-1,  1, -1);  // quadrant II
+  scale[2] = TVector3(-1, -1,  1);  // quadrant III
+  scale[3] = TVector3( 1, -1, -1);  // quadrant IV
+
+  Int_t iQuadrant;
+  
+  if (ix > 0) {
+    if (iy > 0) {
+      iQuadrant = 0;
+    } else {
+      iQuadrant = 3;
+    }
+  } else {
+    if (iy > 0) {
+      iQuadrant = 1;
+    } else {
+      iQuadrant = 2;
+    }
+  }      
+  if (TMath::Abs(fZ) <  600) {
+    z = fZ + scale[iQuadrant].Z()*6.5/2.; // Station 1
+  } else {
+    z = fZ;  // Station 2
+  }
 }
 
 void AliMUONSegmentationV01::
index 15de465..7d030bd 100644 (file)
@@ -41,8 +41,7 @@ public AliMUONSegmentationV0 {
     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    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);}
+    virtual void    GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z);
     //
     // Initialisation
     virtual void Init(Int_t chamber);