AliMUONSegmentation and AliMUONHitMap have been replaced by AliSegmentation and AliHi...
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationTriggerY.cxx
index c96efd44157967cbfd94899a5f0687fc409fee4f..dd0d93c96f6d2a7f463e8bbcea02c4a438019e8e 100644 (file)
 
 /*
 $Log$
+Revision 1.4  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.3  2000/06/26 10:01:26  pcrochet
+global variables removed
+
+Revision 1.2  2000/06/15 07:58:48  morsch
+Code from MUON-dev joined
+
 Revision 1.1.2.1  2000/06/09 21:51:58  morsch
 Code from AliMUONSegResTriggerY.cxx
 
 */
 
+
 /*
 Old Log:
 Revision 1.1.2.4  2000/05/05 10:17:04  morsch
@@ -37,6 +50,7 @@ Draft version from P. Crochet
 */
 
 #include "AliMUONSegmentationTriggerY.h"
+#include "AliMUONTriggerConstants.h"
 #include "TMath.h"
 #include "TRandom.h"
 #include "TArc.h"
@@ -44,41 +58,49 @@ Draft version from P. Crochet
 #include <iostream.h> 
 ClassImp(AliMUONSegmentationTriggerY)
 
-void AliMUONSegmentationTriggerY::Init(AliMUONChamber* Chamber)
+//------------------------------------------------------------------
+void AliMUONSegmentationTriggerY::Init(Int_t chamber)
 {
+// intialize Y segmentation 
   cout << "Initialize Trigger Chamber Geometry Y " << "\n";    
-  AliMUONSegmentationTrigger::Init(Chamber);
+  AliMUONSegmentationTrigger::Init(chamber);
     
 // calculate x & y position of Y strips
-  for (Int_t imodule=0; imodule<fgNmodule; imodule++) {    
-    Float_t width=StripSizeY(fgNum[imodule]);
-    for (Int_t istrip=0; istrip<fgNstripy[imodule]; istrip++){
+  Int_t nModule=AliMUONTriggerConstants::Nmodule();  
+  for (Int_t imodule=0; imodule<nModule; imodule++) {    
+    Float_t width=StripSizeY(AliMUONTriggerConstants::ModuleId(imodule));
+    Int_t nStrip=AliMUONTriggerConstants::NstripY(imodule);    
+    for (Int_t istrip=0; istrip<nStrip; istrip++){
       if (imodule<63) {
-       fXofysmin[imodule][istrip]=(fgXcmin[imodule]+width*(istrip))*fZscale;
-       fXofysmax[imodule][istrip]=(fgXcmin[imodule]+width*(istrip+1))*fZscale;
+       fXofysmin[imodule][istrip]=
+           (AliMUONTriggerConstants::XcMin(imodule)+width*(istrip))*fZscale;
+       fXofysmax[imodule][istrip]=
+           (AliMUONTriggerConstants::XcMin(imodule)+width*(istrip+1))*fZscale;
       } else { 
        fXofysmin[imodule][istrip]=-1.*fXofysmax[imodule-63][istrip];
        fXofysmax[imodule][istrip]=-1.*fXofysmin[imodule-63][istrip];
       }      
-      fYofysmin[imodule][istrip] = fgYcmin[imodule]*fZscale;
-      fYofysmax[imodule][istrip] = fgYcmax[imodule]*fZscale;
+      fYofysmin[imodule][istrip] = fYcmin[imodule]*fZscale;
+      fYofysmax[imodule][istrip] = fYcmax[imodule]*fZscale;
     }
   }
 
 }
 
 //------------------------------------------------------------------
-void AliMUONSegmentationTriggerY::GetPadIxy(Float_t x,Float_t y,Int_t &ix,Int_t &iy){
+void AliMUONSegmentationTriggerY::GetPadI(Float_t x,Float_t y,Int_t &ix,Int_t &iy){
 //  Returns pad coordinates (ix,iy) for given real coordinates (x,y)
 //  x,y = real coordinates; ix = module number , iy = strip number
 
   ix = 0;    
   iy = 0;
-  for (Int_t imodule=0; imodule<fgNmodule; imodule++) {
-    for (Int_t istrip=0; istrip<fgNstripy[imodule]; istrip++){
+  Int_t nModule=AliMUONTriggerConstants::Nmodule();
+  for (Int_t imodule=0; imodule<nModule; imodule++) {
+      Int_t nStrip=AliMUONTriggerConstants::NstripY(imodule);      
+    for (Int_t istrip=0; istrip<nStrip; istrip++){
       if (x>fXofysmin[imodule][istrip]&&x<fXofysmax[imodule][istrip]&&
          y>fYofysmin[imodule][istrip]&&y<fYofysmax[imodule][istrip]){
-       ix = fgNum[imodule];
+       ix = AliMUONTriggerConstants::ModuleId(imodule);
        iy = istrip;
       }
     }
@@ -86,13 +108,14 @@ void AliMUONSegmentationTriggerY::GetPadIxy(Float_t x,Float_t y,Int_t &ix,Int_t
 }
 
 //------------------------------------------------------------------
-void AliMUONSegmentationTriggerY::GetPadCxy(Int_t ix, Int_t iy, Float_t &x, Float_t &y){
+void AliMUONSegmentationTriggerY::GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y){
 //  Returns real coordinates (x,y) for given pad coordinates (ix,iy)
 //  ix = module number , iy = strip number;  x,y = center of strip
   x = 0.;    
   y = 0.;
-  for (Int_t imodule=0; imodule<fgNmodule; imodule++) {
-    if (fgNum[imodule]==ix){
+  Int_t nModule=AliMUONTriggerConstants::Nmodule();
+  for (Int_t imodule=0; imodule<nModule; imodule++) {
+    if (AliMUONTriggerConstants::ModuleId(imodule)==ix){
       x=fXofysmin[imodule][iy]+(fXofysmax[imodule][iy]-fXofysmin[imodule][iy])/2.;
       y=fYofysmin[imodule][iy]+(fYofysmax[imodule][iy]-fYofysmin[imodule][iy])/2.;
     }
@@ -118,7 +141,7 @@ Neighbours(Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[2], Int_t Ylist[2]){
   if (absiX!=0) {                         
     Int_t numModule=ModuleNumber(absiX);
     
-    if (iY==fgNstripy[numModule]-1) {                      // strip right 
+    if (iY==AliMUONTriggerConstants::NstripY(numModule)-1) { // strip right 
       if (absiX%10!=7) {
        *Nlist=1;
        Xlist[0]=absiX+1;
@@ -134,7 +157,7 @@ Neighbours(Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[2], Int_t Ylist[2]){
       if (absiX%10!=1&&absiX!=52) {
        *Nlist=*Nlist+1;
        Xlist[*Nlist-1]=absiX-1;
-       Ylist[*Nlist-1]=fgNstripy[numModule-1]-1;
+       Ylist[*Nlist-1]=AliMUONTriggerConstants::NstripY(numModule-1)-1;
       } 
     } else {
       *Nlist=*Nlist+1;
@@ -153,8 +176,8 @@ void AliMUONSegmentationTriggerY::SetPad(Int_t ix, Int_t iy)
 {
   // Sets virtual pad coordinates, needed for evaluating pad response 
   // outside the tracking program 
-  GetPadCxy(ix,iy,fx,fy);
-  GetPadIxy(fx,fy,fix,fiy);
+  GetPadC(ix,iy,fx,fy);
+  GetPadI(fx,fy,fix,fiy);
   fSector=Sector(ix,iy);    
 }
 
@@ -172,8 +195,8 @@ Int_t AliMUONSegmentationTriggerY::Iy()
 
 //------------------------------------------------------------------
 Float_t AliMUONSegmentationTriggerY::Dpx(Int_t isec)
-{ // returns x size of y strips for sector isec
-
+{ 
+// returns x size of y strips for sector isec
   if (isec==1) {
     return 2.125*fZscale;
   } else if (isec==2) {
@@ -189,9 +212,8 @@ Float_t AliMUONSegmentationTriggerY::Dpx(Int_t isec)
 
 //------------------------------------------------------------------
 Float_t AliMUONSegmentationTriggerY::Dpy(Int_t isec)
-{ // returns y size of y strips for sector isec
-    // cout << " In AliMUONSegmentationTriggerX::Dpx" << "\n";  
-
+{ 
+// returns y size of y strips for sector isec
   if (isec==1) {
     return 68.0*fZscale;
   } else if (isec==2) {
@@ -210,7 +232,10 @@ Float_t AliMUONSegmentationTriggerY::Dpy(Int_t isec)
 
 //------------------------------------------------------------------   
 void AliMUONSegmentationTriggerY::SetHit(Float_t xhit, Float_t yhit)
-{ AliMUONSegmentationTrigger::SetHit(xhit,yhit);}
+{ 
+// set hits during diintegration
+    AliMUONSegmentationTrigger::SetHit(xhit,yhit);
+}
 
 //------------------------------------------------------------------   
 Int_t AliMUONSegmentationTriggerY::Sector(Int_t ix, Int_t iy)
@@ -219,7 +244,7 @@ Int_t AliMUONSegmentationTriggerY::Sector(Int_t ix, Int_t iy)
 // 
   Int_t absix=TMath::Abs(ix);
   Int_t iwidth=Int_t(StripSizeY(absix));
-    
+
   if (absix==52) {
     return 1;
   } else if (absix==41||absix==61) {
@@ -240,8 +265,8 @@ IntegrationLimits(Float_t& x1, Float_t& x2, Float_t& x3, Float_t& width)
 // returns quantities needed to evaluate neighbour strip response
   Int_t ix,iy;
   Float_t xstrip,ystrip;
-  GetPadIxy(fxhit,fyhit,ix,iy);  
-  GetPadCxy(ix,iy,xstrip,ystrip);  
+  GetPadI(fxhit,fyhit,ix,iy);  
+  GetPadC(ix,iy,xstrip,ystrip);  
   x1=fxhit;        // hit x position
   x2=xstrip;       // x coordinate of the main strip
   x3=fx;           // current strip real x coordinate