]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSt345SlatSegmentationV2.cxx
- Updated for modifying AliMUONHitMapA1 constructor
[u/mrichter/AliRoot.git] / MUON / AliMUONSt345SlatSegmentationV2.cxx
index 666990e15bca1bb74d8a9997689262c8937b9348..d634b3c4074b31500ce844ef4ebba8aad3ae6d70 100644 (file)
@@ -43,8 +43,6 @@ ClassImp(AliMUONSt345SlatSegmentationV2)
 
 namespace
 {
-  Double_t fgkLengthUnit = 0.1; // This class expects centimeters, while
-                                                                                                                               // AliMpSlat works with milimeters.
   Int_t fgIntOffset = 1;
   Float_t FMAX(1E9);
 }
@@ -74,10 +72,9 @@ fPadIterator(0),
 fXhit(FMAX),
 fYhit(FMAX)
 { 
-  // slatType is the description of the PCBs of that slat,
-  // e.g. 122200N, 112200SR2, 112233NR3, etc...
-  // The actual filename used is dealt with by the AliMpSt345Reader class.
-  // Same thing for the path if that file, by the way.
+  //
+  // Normal ctor.
+  //
        
        ReadMappingData();
                
@@ -138,8 +135,11 @@ Float_t
 AliMUONSt345SlatSegmentationV2::Dpx(int ipcb) const
 {
        AliMpPCB* pcb = fSlat->GetPCB(ipcb);
-       if (!pcb) AliFatal("pcb is null!");
-       return pcb->PadSizeX() * fgkLengthUnit;
+       if (!pcb) 
+  {
+    AliFatal("pcb is null!");
+  }
+       return pcb->PadSizeX();
 }
 
 //_____________________________________________________________________________
@@ -147,8 +147,11 @@ Float_t
 AliMUONSt345SlatSegmentationV2::Dpy(int ipcb) const
 {
        AliMpPCB* pcb = fSlat->GetPCB(ipcb);
-       if (!pcb) AliFatal("pcb is null!");
-       return pcb->PadSizeY() * fgkLengthUnit;
+       if (!pcb) 
+  {
+    AliFatal("pcb is null!");
+  }
+       return pcb->PadSizeY();
 }
 
 //_____________________________________________________________________________
@@ -186,9 +189,11 @@ AliMUONSt345SlatSegmentationV2::FirstPad(Float_t xhit, Float_t yhit,
   // Note that we convert the area position to a reference frame
   // located in the lower-left corner of the slat, instead of its
   // center.
-  AliMpArea area(TVector2((x01+x02)/2.0/fgkLengthUnit+fSlat->DX(),
-                                                                                                       (y01+y02)/2.0/fgkLengthUnit+fSlat->DY()),
-                                                                TVector2(xext/2.0/fgkLengthUnit,yext/2.0/fgkLengthUnit));
+//  AliMpArea area(TVector2((x01+x02)/2.0+fSlat->DX(),
+//                                                                                                     (y01+y02)/2.0+fSlat->DY()),
+//                                                              TVector2(xext/2.0,yext/2.0));
+  AliMpArea area(TVector2((x01+x02)/2.0,(y01+y02)/2.0),
+                                                                TVector2(xext/2.0,yext/2.0));
        
   delete fPadIterator;
        
@@ -228,6 +233,17 @@ AliMUONSt345SlatSegmentationV2::GetDirection()
   return kDirUndefined;
 }
 
+//______________________________________________________________________________
+const AliMpVSegmentation*  
+AliMUONSt345SlatSegmentationV2::GetMpSegmentation() const
+{
+// Returns the mapping segmentation
+// (provides access to electronics info)
+
+  return fSlatSegmentation;
+}  
+
+
 //_____________________________________________________________________________
 void 
 AliMUONSt345SlatSegmentationV2::GetNParallelAndOffset(Int_t,Int_t,Int_t*,Int_t*)
@@ -249,9 +265,11 @@ void
 AliMUONSt345SlatSegmentationV2::GetPadC(Int_t ix, Int_t iy, 
                                                                                                                                                                Float_t& x, Float_t& y)
 {
-  AliMpPad pad = fSlatSegmentation->PadByIndices(AliMpIntPair(ix-fgIntOffset,iy-fgIntOffset),true);
-  x = pad.Position().X() * fgkLengthUnit;
-  y = pad.Position().Y() * fgkLengthUnit;
+  AliMpPad pad = 
+  fSlatSegmentation->PadByIndices(AliMpIntPair(ix-fgIntOffset,iy-fgIntOffset),
+                                  kTRUE);
+  x = pad.Position().X();
+  y = pad.Position().Y();
 }
 
 
@@ -268,11 +286,11 @@ void
 AliMUONSt345SlatSegmentationV2::GetPadI(Float_t x, Float_t y,
                                                                                                                                                                Int_t& ix, Int_t& iy)
 {
-  Double_t slatx = fSlat->DX();
-  Double_t slaty = fSlat->DY();
+//  Double_t slatx = fSlat->DX();
+//  Double_t slaty = fSlat->DY();
   AliMpPad pad = 
-    fSlatSegmentation->PadByPosition(TVector2(x/fgkLengthUnit+slatx, 
-                                                                                                                                       y/fgkLengthUnit+slaty), true);
+    fSlatSegmentation->PadByPosition(TVector2(x,y), kTRUE);
+//  fSlatSegmentation->PadByPosition(TVector2(x+slatx,y+slaty), kTRUE);
        
   if ( pad != AliMpPad::Invalid() )
        {
@@ -329,11 +347,11 @@ AliMUONSt345SlatSegmentationV2::IntegrationLimits(Float_t& x1, Float_t& x2,
        //   y1 = fYhit - fY - Dpy(fSector)/2.;
        //   y2 = y1 + Dpy(fSector);    
        
-  Float_t x = fCurrentPad.Position().X() * fgkLengthUnit;
-  Float_t y = fCurrentPad.Position().Y() * fgkLengthUnit;
+  Float_t x = fCurrentPad.Position().X();
+  Float_t y = fCurrentPad.Position().Y();
        
-  Float_t padsizex = fCurrentPad.Dimensions().X() * 2.0 * fgkLengthUnit;
-  Float_t padsizey = fCurrentPad.Dimensions().Y() * 2.0 * fgkLengthUnit;
+  Float_t padsizex = fCurrentPad.Dimensions().X() * 2.0;
+  Float_t padsizey = fCurrentPad.Dimensions().Y() * 2.0;
        
   x1 = fXhit - x - padsizex/2.0;
   x2 = x1 + padsizex;
@@ -397,7 +415,8 @@ AliMUONSt345SlatSegmentationV2::Neighbours(Int_t iX, Int_t iY, Int_t* Nlist,
        
   // Define the region to look into : a region slightly bigger
   // than the pad itself (10% bigger), in order to catch first neighbours.
-  AliMpArea area(pad.Position()+fSlat->Dimensions(),pad.Dimensions()*2.1); 
+//  AliMpArea area(pad.Position()+fSlat->Dimensions(),pad.Dimensions()*2.1); 
+  AliMpArea area(pad.Position(),pad.Dimensions()*2.1); 
                
   AliMpVPadIterator* it = fSlatSegmentation->CreateIterator(area);
   it->First();
@@ -451,7 +470,7 @@ void
 AliMUONSt345SlatSegmentationV2::Print(Option_t*) const
 {
   cout << "DetElemId=" << fDetElemId << " PlaneType=" 
-  << fPlaneType << " fSlat=" << fSlat 
+  << fPlaneType << " Npx,Npy=" << Npx() << "," << Npy() << " fSlat=" << fSlat 
   << " fSlatSegmentation=" << fSlatSegmentation
   << " fSlatSegmentation->Slat()=" << fSlatSegmentation->Slat() << endl;
 }
@@ -460,8 +479,10 @@ AliMUONSt345SlatSegmentationV2::Print(Option_t*) const
 void
 AliMUONSt345SlatSegmentationV2::ReadMappingData()
 {
-       fSlatSegmentation = dynamic_cast<AliMpSlatSegmentation*>(AliMUONSegmentationManager::Segmentation(fDetElemId,fPlaneType));
-       if (!fSlatSegmentation)
+       fSlatSegmentation = dynamic_cast<AliMpSlatSegmentation*>
+  (AliMUONSegmentationManager::Segmentation(fDetElemId,fPlaneType));
+       
+  if (!fSlatSegmentation)
        {
                AliFatal("Wrong segmentation type encountered");
        }
@@ -470,9 +491,9 @@ AliMUONSt345SlatSegmentationV2::ReadMappingData()
 
 //_____________________________________________________________________________
 Int_t
-AliMUONSt345SlatSegmentationV2::Sector(Int_t ix, Int_t iy)
+AliMUONSt345SlatSegmentationV2::Sector(Int_t ix, Int_t)
 {
-  return fSlat->FindPCBIndex(ix,iy);
+  return fSlat->FindPCBIndex(ix - fgIntOffset);
 }
 
 //_____________________________________________________________________________