/* $Id$ */
#include "AliMUONSt345SlatSegmentationV2.h"
+#include "AliMUONConstants.h"
-#include "AliLog.h"
#include "AliMpArea.h"
#include "AliMpSlat.h"
#include "AliMpSlatSegmentation.h"
// Dpx, Dpy, Sector offer now to the clustering. That indeed should be
// handled directly at the level of AliMpVSegmentation...
#include "AliMpVPadIterator.h"
-#include "AliMUONSegmentationManager.h"
-#include "AliMUONConstants.h"
-#include "Riostream.h"
+#include "AliLog.h"
+#include "Riostream.h"
#include "TClass.h"
ClassImp(AliMUONSt345SlatSegmentationV2)
}
//_____________________________________________________________________________
-AliMUONSt345SlatSegmentationV2::AliMUONSt345SlatSegmentationV2(Int_t detElemId, AliMpPlaneType bendingOrNonBending)
+AliMUONSt345SlatSegmentationV2::AliMUONSt345SlatSegmentationV2(
+ AliMpVSegmentation* segmentation,
+ Int_t detElemId, AliMpPlaneType bendingOrNonBending)
: AliMUONVGeometryDESegmentation(),
fDetElemId(detElemId),
fPlaneType(bendingOrNonBending),
//
// Normal ctor.
//
-
- ReadMappingData();
+
+ fSlatSegmentation = dynamic_cast<AliMpSlatSegmentation*>(segmentation);
+ if (fSlatSegmentation)
+ fSlat = fSlatSegmentation->Slat();
+ else
+ AliFatal("Wrong mapping segmentation type");
AliDebug(1,Form("this=%p detElemId=%3d %s fSlatSegmentation=%p",this,detElemId,
( (bendingOrNonBending==kBendingPlane)?"Bending":"NonBending" ),
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*)
fSlatSegmentation->PadByIndices(AliMpIntPair(iX-fgIntOffset,iY-fgIntOffset),kTRUE);
// 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(),pad.Dimensions()*2.1);
+ // than the pad itself (5% bigger), in order to catch first neighbours.
+
+ AliMpArea area(pad.Position(),pad.Dimensions()*1.05);
AliMpVPadIterator* it = fSlatSegmentation->CreateIterator(area);
it->First();
<< " fSlatSegmentation->Slat()=" << fSlatSegmentation->Slat() << endl;
}
-//_____________________________________________________________________________
-void
-AliMUONSt345SlatSegmentationV2::ReadMappingData()
-{
- fSlatSegmentation = dynamic_cast<AliMpSlatSegmentation*>
- (AliMUONSegmentationManager::Segmentation(fDetElemId,fPlaneType));
-
- if (!fSlatSegmentation)
- {
- AliFatal("Wrong segmentation type encountered");
- }
- fSlat = fSlatSegmentation->Slat();
-}
-
//_____________________________________________________________________________
Int_t
AliMUONSt345SlatSegmentationV2::Sector(Int_t ix, Int_t)
{
AliFatal("Not Implemented");
}
-
-//_____________________________________________________________________________
-void
-AliMUONSt345SlatSegmentationV2::Streamer(TBuffer &R__b)
-{
- if (R__b.IsReading())
- {
- AliMUONSt345SlatSegmentationV2::Class()->ReadBuffer(R__b, this);
- ReadMappingData();
- }
- else
- {
- AliMUONSt345SlatSegmentationV2::Class()->WriteBuffer(R__b, this);
- }
-}
-