]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding new CreateIterator() and GetNeighbours() methods
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 6 Feb 2007 15:29:08 +0000 (15:29 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 6 Feb 2007 15:29:08 +0000 (15:29 +0000)
(Laurent)

MUON/mapping/AliMpSlatSegmentation.cxx
MUON/mapping/AliMpSlatSegmentation.h
MUON/mapping/AliMpTriggerSegmentation.cxx
MUON/mapping/AliMpTriggerSegmentation.h

index 63f216d8c8a15d229c3974eec13e63a170391e6f..571fc4da43e6f92646a8fbd2b5204b6b8b5dcd30 100644 (file)
@@ -27,6 +27,8 @@
 #include "AliLog.h"
 #include "AliMpArea.h"
 #include "AliMpConnection.h"
+#include "AliMpConstants.h"
+#include "AliLog.h"
 #include "AliMpMotif.h"
 #include "AliMpMotifPosition.h"
 #include "AliMpMotifType.h"
@@ -93,6 +95,31 @@ AliMpSlatSegmentation::CreateIterator(const AliMpArea& area) const
   return new AliMpSlatPadIterator(fkSlat,a);
 }
 
+//_____________________________________________________________________________
+AliMpVPadIterator*
+AliMpSlatSegmentation::CreateIterator() const
+{
+  /// Returns an iterator to loop over all pads of that segmentation
+  ///
+  /// FIXME: we currently just forward this to the other CreateIterator,
+  /// with the proper region. Might be more efficient to write a dedicated
+  /// iterator ? Test that idea.
+  
+  AliMpArea area(TVector2(0.0,0.0),fkSlat->Dimensions());
+  return CreateIterator(area);
+}
+
+//_____________________________________________________________________________
+Int_t 
+AliMpSlatSegmentation::GetNeighbours(const AliMpPad& pad, 
+                                     TObjArray& neighbours,
+                                     Bool_t includeSelf,
+                                     Bool_t includeVoid) const
+{
+  /// Uses default implementation
+  return AliMpVSegmentation::GetNeighbours(pad,neighbours,includeSelf,includeVoid);
+}
+
 //_____________________________________________________________________________
 TVector2
 AliMpSlatSegmentation::Dimensions() const
@@ -278,8 +305,9 @@ AliMpSlatSegmentation::PadByPosition(const TVector2& position,
   // AliMpPad::Invalid() is returned if there's no pad at the given location.
   //
   
-  TVector2 blPos(position+fkSlat->Position()); // position relative to 
-  // bottom-left of the slat.
+  TVector2 blPos(position);
+  
+  blPos += fkSlat->Position(); // position relative to bottom-left of the slat.
   
   AliMpMotifPosition* motifPos = fkSlat->FindMotifPosition(blPos.X(),blPos.Y());
        
@@ -296,8 +324,9 @@ AliMpSlatSegmentation::PadByPosition(const TVector2& position,
        }
        
   AliMpVMotif* motif =  motifPos->GetMotif();  
+  blPos -= motifPos->Position();
   AliMpIntPair localIndices 
-    = motif->PadIndicesLocal(blPos-motifPos->Position());
+    = motif->PadIndicesLocal(blPos);
        
   AliMpConnection* connect = 
     motif->GetMotifType()->FindConnectionByLocalIndices(localIndices);
index d92382d0e89ed196f8f0bb4e56774592a1b77b59..7a94060428a6575a1e6ef74d7f802f3d6e1a8515 100644 (file)
@@ -42,7 +42,12 @@ class AliMpSlatSegmentation : public AliMpVSegmentation
   virtual ~AliMpSlatSegmentation();
 
   virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
+  virtual AliMpVPadIterator* CreateIterator() const;
 
+  virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
+                              Bool_t includeSelf=kFALSE,
+                              Bool_t includeVoid=kFALSE) const;
+  
   const char* GetName() const;
   
   Bool_t HasPad(const AliMpIntPair& indices) const;
index 697a584bf2392ad2954175cdedd1c4980815acd7..7776bae800dd4cde75a6db3ad2dc5f7455e0c45f 100644 (file)
@@ -103,10 +103,34 @@ AliMpTriggerSegmentation::CreateIterator(const AliMpArea&) const
   //
   // Returns an iterator to loop over the pad contained within given area.
   // Not implemented for trigger.
+  AliError("Not implemented for trigger");
+  return 0;
+}
+
+//_____________________________________________________________________________
+AliMpVPadIterator*
+AliMpTriggerSegmentation::CreateIterator() const
+{
+  //
+  // Returns an iterator to loop over all the pads
+  // Not implemented for trigger.
+  AliError("Not implemented for trigger");
   
   return 0;
 }
 
+//_____________________________________________________________________________
+Int_t 
+AliMpTriggerSegmentation::GetNeighbours(const AliMpPad& /*pad*/, 
+                                        TObjArray& /*neighbours*/,
+                                        Bool_t /*includeSelf*/,
+                                        Bool_t /*includeVoid*/) const
+{
+  /// not implemented.
+  AliError("Not implemented for trigger");
+  return 0;
+}
+
 //_____________________________________________________________________________
 TVector2
 AliMpTriggerSegmentation::Dimensions() const
index 31f6edc00e54c0133f2412ac5c69a9dcf86f1bd2..01bb82d8d616f1c3b6360b08515db013e1eef27e 100644 (file)
@@ -37,7 +37,10 @@ public:
   virtual ~AliMpTriggerSegmentation();
   
   virtual AliMpVPadIterator* CreateIterator(const AliMpArea& area) const;
-  
+  virtual AliMpVPadIterator* CreateIterator() const;
+  virtual Int_t GetNeighbours(const AliMpPad& pad, TObjArray& neighbours,
+                              Bool_t includeSelf=kFALSE,
+                              Bool_t includeVoid=kFALSE) const;
   const char* GetName() const;
   
   Bool_t HasPad(const AliMpIntPair& indices) const;