]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpVSegmentation.h
Fix for the problem during PbPb run of Nov 2010 (Indra)
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpVSegmentation.h
index f51b0780d03507a0632feedfc03718aebbf34160..3cca8b62a0eb859c55c0eeeab253e147a58145ed 100644 (file)
@@ -1,3 +1,5 @@
+
+
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
 /// conversion between pad indices, pad location, pad position;
 /// finding pad neighbour.
 ///
-/// \author David Guez, Ivana Hrivnacova; IPN Orsay
+/// \author David Guez, Ivana Hrivnacova, IPN Orsay;
+///         Laurent Aphecetche, SUBATECH
 
 #ifndef ALI_MP_V_SEGMENTATION_H
 #define ALI_MP_V_SEGMENTATION_H
 
 #include <TObject.h>
 
-#include "AliMpPadPair.h"
 #include "AliMpPad.h"
 #include "AliMpPlaneType.h"
+#include "AliMpStationType.h"
 
 class AliMpVPadIterator;
-class AliMpIntPair;
 class AliMpArea;
+class AliMpMotifPosition;
 
 class TArrayI;
-class TVector2;
+class TObjArray;
 
 class AliMpVSegmentation : public TObject
 {
@@ -36,40 +39,76 @@ class AliMpVSegmentation : public TObject
     AliMpVSegmentation();
     virtual ~AliMpVSegmentation();
   
-    // factory method 
+    //
+    // methods 
+    //
+
+    // factory methods
+    /// Create iterator over pads in the given area 
     virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const = 0;
 
-    // methods  
-    virtual AliMpPad PadByLocation(const AliMpIntPair& location, 
-                               Bool_t warning = true) const = 0;
-    virtual AliMpPad PadByIndices (const AliMpIntPair& indices,  
+    /// Create a pad iterator over the whole area
+    virtual AliMpVPadIterator* CreateIterator() const = 0;
+    
+    /// Fill the array with the pads that are neighbours of pad. Returns
+    /// the number of neighbours.
+    virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
+                                Bool_t includeSelf=kFALSE,
+                                Bool_t includeVoid=kFALSE) const = 0;
+
+            /// Find pad by location
+    virtual AliMpPad PadByLocation(Int_t manuId, Int_t manuChannel, 
+                                Bool_t warning = true) const = 0;
+            /// Find pad by indices
+    virtual AliMpPad PadByIndices (Int_t ix, Int_t iy,  
                                Bool_t warning = true) const = 0;
-    virtual AliMpPad PadByPosition(const TVector2& position,
+            /// Find pad by position
+    virtual AliMpPad PadByPosition(Double_t x, Double_t y,
                                Bool_t warning = true) const = 0;
-
-    virtual AliMpPadPair PadsUp(const AliMpPad& pad) const;
-    virtual AliMpPadPair PadsDown(const AliMpPad& pad) const;
-    virtual AliMpPadPair PadsLeft(const AliMpPad& pad) const;
-    virtual AliMpPadPair PadsRight(const AliMpPad& pad) const;
-
+            /// Return true if the pad with given indices exists.
+            /// Compared with the PadByIndices method, this one can generally be implemented
+            /// faster, as one does not have to create an AliMpPad object... 
+    virtual Bool_t HasPadByIndices(Int_t ix, Int_t iy) const;
+  
+            /// Return true if the pad with given location exists
+    virtual Bool_t HasPadByLocation(Int_t manuId, Int_t manuChannel) const;
+  
+            /// Return maximum pad index in X direction
     virtual Int_t  MaxPadIndexX() const = 0;
+            /// Return maximum pad index in Y direction
     virtual Int_t  MaxPadIndexY() const = 0;
+            /// Return the number of pads in the detection element
     virtual Int_t  NofPads() const = 0;
 
-    virtual Bool_t HasPad(const AliMpIntPair& indices) const = 0;
-    
+            /// Fill the given array with the electronic card IDs
     virtual void GetAllElectronicCardIDs(TArrayI& ecn) const = 0;
 
+            /// Get the number of electronic card IDs 
+    virtual Int_t GetNofElectronicCards() const = 0;
+    
+            /// Whether or not we have a given manu
+    virtual Bool_t HasMotifPosition(Int_t manuId) const = 0;
+  
+            /// Return the position of a given manu (aka motifPosition)
+    virtual AliMpMotifPosition* MotifPosition(Int_t manuId) const = 0;
+
+            /// Return the plane type
     virtual AliMp::PlaneType PlaneType() const = 0;
     
-    /// Gives the half-sizes (in cm) of the underlying detection element.
-    virtual TVector2 Dimensions() const = 0;
+            /// Return the station type
+    virtual AliMp::StationType StationType() const = 0;
+
+            /// Return the x half-sizes of the detection element
+    virtual Double_t  GetDimensionX() const = 0;
+            /// Return the y half-sizes of the detection element
+    virtual Double_t  GetDimensionY() const = 0;
     
-  private:  
-    // methods
-    AliMpPadPair FindPads(const TVector2& position1, 
-                          const TVector2& position2) const;
+            /// Return the x position of the origin of the detection element
+    virtual Double_t  GetPositionX() const = 0;
+            /// Return the y position of the origin of the detection element
+    virtual Double_t  GetPositionY() const = 0;
 
+  
   ClassDef(AliMpVSegmentation,1)  // Segmentation
 };