]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSegmentationSlat.cxx
Removing warnings ...
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationSlat.cxx
index 33fa34189e4f72ef0a449f82b84fe16f12b36c80..9add3aeb9ac7df61a93af7ca8c6a22a39b37c93f 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.10  2001/01/23 18:58:19  hristov
-Initialisation of some pointers
-
-Revision 1.9  2001/01/17 20:53:40  hristov
-Destructors corrected to avoid memory leaks
-
-Revision 1.8  2000/12/21 22:12:41  morsch
-Clean-up of coding rule violations,
-
-Revision 1.7  2000/11/08 13:01:40  morsch
-Chamber half-planes of stations 3-5 at different z-positions.
-
-Revision 1.6  2000/11/06 09:20:43  morsch
-AliMUON delegates part of BuildGeometry() to AliMUONSegmentation using the
-Draw() method. This avoids code and parameter replication.
-
-Revision 1.5  2000/10/23 13:37:40  morsch
-Correct z-position of slat planes.
-
-Revision 1.4  2000/10/22 16:55:43  morsch
-Use only x-symmetry in global to local transformations and delegation.
-
-Revision 1.3  2000/10/18 11:42:06  morsch
-- AliMUONRawCluster contains z-position.
-- Some clean-up of useless print statements during initialisations.
-
-Revision 1.2  2000/10/09 14:06:18  morsch
-Some type cast problems of type  (TMath::Sign((Float_t)1.,x)) corrected (P.H.)
-
-Revision 1.1  2000/10/06 09:00:47  morsch
-Segmentation class for chambers built out of slats.
-
-*/
+/* $Id$ */
 
 #include "AliMUONSegmentationSlat.h"
 #include "AliMUONSegmentationSlatModule.h"
@@ -60,7 +26,7 @@ Segmentation class for chambers built out of slats.
 #include <TBRIK.h>
 #include <TNode.h>
 #include <TGeometry.h>
-#include <iostream.h>
+#include <Riostream.h>
 
 //___________________________________________
 ClassImp(AliMUONSegmentationSlat)
@@ -68,9 +34,13 @@ ClassImp(AliMUONSegmentationSlat)
 AliMUONSegmentationSlat::AliMUONSegmentationSlat() 
 {
 // Default constructor
+  fChamber = 0;
+  fNDiv = 0;
+  fSlats = 0;
+  fCurrentSlat = 0;
 }
 
-AliMUONSegmentationSlat::AliMUONSegmentationSlat(Int_t nsec
+AliMUONSegmentationSlat::AliMUONSegmentationSlat(Int_t /*nsec*/
 {
 // Non default constructor
     fSlats=0;            
@@ -91,7 +61,7 @@ AliMUONSegmentationSlat::~AliMUONSegmentationSlat(){
   }
 
 }
-
+//-----------------------------------------------------------
 void AliMUONSegmentationSlat::SetPadSize(Float_t p1, Float_t p2)
 {
 //  Sets the pad (strip) size 
@@ -99,14 +69,28 @@ void AliMUONSegmentationSlat::SetPadSize(Float_t p1, Float_t p2)
     fDpx=p1;
     fDpy=p2;
 }
-
+//-----------------------------------------------------------
 Float_t AliMUONSegmentationSlat::GetAnod(Float_t xhit) const
 {
 // Returns for a hit position xhit the position of the nearest anode wire    
     Float_t wire= (xhit>0)? Int_t(xhit/fWireD)+0.5:Int_t(xhit/fWireD)-0.5;
     return fWireD*wire;
 }
-
+//-----------------------------------------------------------
+void AliMUONSegmentationSlat::GetNParallelAndOffset(Int_t /*iX*/, Int_t /*iY*/, Int_t *Nparallel, Int_t *Offset) 
+{
+  *Nparallel=1;
+  *Offset=0;
+}
+//-----------------------------------------------------------
+void AliMUONSegmentationSlat::GiveTestPoints(Int_t & /*n*/, Float_t */*x*/, Float_t */*y*/)  const 
+{;}
+//-----------------------------------------------------------
+Float_t AliMUONSegmentationSlat::Distance2AndOffset(Int_t /*iX*/, Int_t /*iY*/, Float_t /*X*/, Float_t /*Y*/, Int_t * /*dummy*/) 
+{
+  return 0.;
+}
+//-----------------------------------------------------------
 Float_t AliMUONSegmentationSlat::Dpx(Int_t isec) const
 {
 //
@@ -119,7 +103,7 @@ Float_t AliMUONSegmentationSlat::Dpx(Int_t isec) const
     return Slat(islat)->Dpx(iregion);
 }
 
-Float_t AliMUONSegmentationSlat::Dpy(Int_t isec) const
+Float_t AliMUONSegmentationSlat::Dpy(Int_t /*isec*/) const
 {
 //
 // Returns y-pad (strip)  size for given sector isec
@@ -147,6 +131,8 @@ void AliMUONSegmentationSlat::GlobalToLocal(
     Float_t zlocal;
     Int_t i;
     Int_t index=-1;
+    Float_t eps = 1.e-4;
+    
 // Transform According to slat plane z-position: negative side is shifted down 
 //                                                 positive side is shifted up
 // by half the overlap
@@ -161,17 +147,20 @@ void AliMUONSegmentationSlat::GlobalToLocal(
 // Find slat number                      
     for (i=ifirst; i<fNSlats; i+=2) {
        index=i;
-       if ((y >= fYPosition[i]) && (y < fYPosition[i]+fSlatY)) break;
+       if ((y >= fYPosition[i]-eps) && (y <= fYPosition[i]+fSlatY+eps)) break;
     }
     
 //
 // Transform to local coordinate system
 
     
-    ylocal = y   -fYPosition[index];
-    xlocal = xabs-fXPosition[index];
-    islat  = index;
-    if (i >= fNSlats) {islat = -1; x=-1; y = -1;}
+    if (index >= fNSlats || index < 0 ) {
+      islat = -1; xlocal=-1; ylocal = -1; }
+    else {
+      ylocal = y   -fYPosition[index];
+      xlocal = xabs-fXPosition[index];
+      islat  = index;
+    }
 }
 
 void AliMUONSegmentationSlat::GlobalToLocal(
@@ -354,13 +343,14 @@ FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy)
 //
 
 
-
     Int_t islat;
     Float_t xlocal, ylocal;
     GlobalToLocal(xhit, yhit, zhit, islat, xlocal, ylocal);
     fSlatIndex=islat;
-    fCurrentSlat=Slat(islat);
-    fCurrentSlat->FirstPad(xlocal, ylocal, dx, dy);
+    if (islat>-1) {
+      fCurrentSlat=Slat(islat);
+      fCurrentSlat->FirstPad(xlocal, ylocal, dx, dy);
+    }
 
 }
 
@@ -468,7 +458,7 @@ void AliMUONSegmentationSlat::Init(Int_t chamber)
 // Initialize slat modules of quadrant +/+    
 // The other three quadrants are handled through symmetry transformations
 //
-    printf("\n Initialise Segmentation Slat \n");
+  //printf("\n Initialise Segmentation Slat \n");
 //
 
 // Initialize Slat modules
@@ -489,7 +479,7 @@ void AliMUONSegmentationSlat::Init(Int_t chamber)
     fNpx=0;
 // for each slat in the quadrant (+,+)    
     for (islat=0; islat<fNSlats; islat++) {
-       (*fSlats)[islat] = CreateSlatModule();
+        fSlats->AddAt(CreateSlatModule(),islat);
 
        AliMUONSegmentationSlatModule *slat =  Slat(islat);
        // Configure Slat
@@ -545,7 +535,8 @@ void  AliMUONSegmentationSlat::SetSlatXPositions(Float_t *xpos)
 }
 
 AliMUONSegmentationSlatModule*  AliMUONSegmentationSlat::Slat(Int_t index) const
-{ return ((AliMUONSegmentationSlatModule*) (*fSlats)[index]);}
+  //PH { return ((AliMUONSegmentationSlatModule*) (*fSlats)[index]);}
+{ return ((AliMUONSegmentationSlatModule*) fSlats->At(index));}
 
 
 AliMUONSegmentationSlatModule* AliMUONSegmentationSlat::