X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONSt345SlatSegmentationV2.cxx;h=aff04f6be3509d2ddeaaf8c5448ac88a7a1e3229;hb=6cc447df875346026b0eba6dd37488e6d8381550;hp=0e8b754496b14ada322d5f067199991c9136d1d2;hpb=90e8f97c50b583ae12f694eb569c41d3af8c781f;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONSt345SlatSegmentationV2.cxx b/MUON/AliMUONSt345SlatSegmentationV2.cxx index 0e8b754496b..aff04f6be35 100644 --- a/MUON/AliMUONSt345SlatSegmentationV2.cxx +++ b/MUON/AliMUONSt345SlatSegmentationV2.cxx @@ -16,8 +16,8 @@ /* $Id$ */ #include "AliMUONSt345SlatSegmentationV2.h" +#include "AliMUONConstants.h" -#include "AliLog.h" #include "AliMpArea.h" #include "AliMpSlat.h" #include "AliMpSlatSegmentation.h" @@ -32,19 +32,16 @@ // 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) namespace { - Double_t fgkLengthUnit = 0.1; // This class expects centimeters, while - // AliMpSlat works with milimeters. Int_t fgIntOffset = 1; Float_t FMAX(1E9); } @@ -64,7 +61,9 @@ fYhit(FMAX) } //_____________________________________________________________________________ -AliMUONSt345SlatSegmentationV2::AliMUONSt345SlatSegmentationV2(Int_t detElemId, AliMpPlaneType bendingOrNonBending) +AliMUONSt345SlatSegmentationV2::AliMUONSt345SlatSegmentationV2( + AliMpVSegmentation* segmentation, + Int_t detElemId, AliMpPlaneType bendingOrNonBending) : AliMUONVGeometryDESegmentation(), fDetElemId(detElemId), fPlaneType(bendingOrNonBending), @@ -74,12 +73,15 @@ 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. - - ReadMappingData(); + // + // Normal ctor. + // + + fSlatSegmentation = dynamic_cast(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" ), @@ -138,7 +140,10 @@ Float_t AliMUONSt345SlatSegmentationV2::Dpx(int ipcb) const { AliMpPCB* pcb = fSlat->GetPCB(ipcb); - if (!pcb) AliFatal("pcb is null!"); + if (!pcb) + { + AliFatal("pcb is null!"); + } return pcb->PadSizeX(); } @@ -147,7 +152,10 @@ Float_t AliMUONSt345SlatSegmentationV2::Dpy(int ipcb) const { AliMpPCB* pcb = fSlat->GetPCB(ipcb); - if (!pcb) AliFatal("pcb is null!"); + if (!pcb) + { + AliFatal("pcb is null!"); + } return pcb->PadSizeY(); } @@ -186,9 +194,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; @@ -224,17 +234,20 @@ AliMUONSt345SlatSegmentationV2::GetAnod(Float_t xhit) const AliMUONGeometryDirection AliMUONSt345SlatSegmentationV2::GetDirection() { - AliFatal("Not Implemented"); + //AliWarning("Not Implemented"); return kDirUndefined; } -//_____________________________________________________________________________ -AliMUONSegmentManuIndex* -AliMUONSt345SlatSegmentationV2::GetMpConnection(Int_t,Int_t) +//______________________________________________________________________________ +const AliMpVSegmentation* +AliMUONSt345SlatSegmentationV2::GetMpSegmentation() const { - AliFatal("Not Implemented"); - return 0x0; -} +// Returns the mapping segmentation +// (provides access to electronics info) + + return fSlatSegmentation; +} + //_____________________________________________________________________________ void @@ -257,17 +270,13 @@ 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(); } -//_____________________________________________________________________________ -void -AliMUONSt345SlatSegmentationV2::GetPadE(Int_t&,Int_t&,AliMUONSegmentManuIndex*) -{ - AliFatal("Not Implemented"); -} //_____________________________________________________________________________ void @@ -282,11 +291,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() ) { @@ -343,11 +352,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; @@ -411,7 +420,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(); @@ -465,28 +475,16 @@ 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; } -//_____________________________________________________________________________ -void -AliMUONSt345SlatSegmentationV2::ReadMappingData() -{ - fSlatSegmentation = dynamic_cast(AliMUONSegmentationManager::Segmentation(fDetElemId,fPlaneType)); - if (!fSlatSegmentation) - { - AliFatal("Wrong segmentation type encountered"); - } - fSlat = fSlatSegmentation->Slat(); -} - //_____________________________________________________________________________ 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); } //_____________________________________________________________________________ @@ -566,19 +564,3 @@ AliMUONSt345SlatSegmentationV2::SigGenInit(Float_t,Float_t,Float_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); - } -} -