#include "AliLog.h"
#include "AliMpArea.h"
#include "AliMpConnection.h"
+#include "AliMpConstants.h"
+#include "AliLog.h"
#include "AliMpMotif.h"
#include "AliMpMotifPosition.h"
#include "AliMpMotifType.h"
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
// 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());
}
AliMpVMotif* motif = motifPos->GetMotif();
+ blPos -= motifPos->Position();
AliMpIntPair localIndices
- = motif->PadIndicesLocal(blPos-motifPos->Position());
+ = motif->PadIndicesLocal(blPos);
AliMpConnection* connect =
motif->GetMotifType()->FindConnectionByLocalIndices(localIndices);
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;
//
// 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
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;