X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONManuPadPainter.cxx;h=83abd835bf140140db7430d0d523d8c860bcd436;hb=f5a4613950af693fe3394e3ec84b32a2d4e47260;hp=11e8a39d1e8add4002816c82c79e48694a997314;hpb=49419555ad4a62c37cff03b3263946838aee56db;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONManuPadPainter.cxx b/MUON/AliMUONManuPadPainter.cxx index 11e8a39d1e8..83abd835bf1 100644 --- a/MUON/AliMUONManuPadPainter.cxx +++ b/MUON/AliMUONManuPadPainter.cxx @@ -20,7 +20,6 @@ #include "AliLog.h" #include "AliMUONPainterGroup.h" #include "AliMUONPainterHelper.h" -#include "AliMUONPainterPadStore.h" #include "AliMUONTrackerDataHistogrammer.h" #include "AliMUONVCalibParam.h" #include "AliMUONVDigit.h" @@ -28,7 +27,6 @@ #include "AliMpConnection.h" #include "AliMpConstants.h" #include "AliMpDDLStore.h" -#include "AliMpDetElement.h" #include "AliMpPad.h" #include "AliMpSegmentation.h" #include "AliMpVSegmentation.h" @@ -61,6 +59,19 @@ fFillStyleBck(-1) /// ctor } +//_____________________________________________________________________________ +AliMUONManuPadPainter::AliMUONManuPadPainter(TRootIOCtor* ioCtor) +: AliMUONVPainter(ioCtor), +fDetElemId(-1), +fManuId(-1), +fLineColorBck(-1), +fLineWidthBck(-1), +fFillColorBck(-1), +fFillStyleBck(-1) +{ + /// ctor +} + //_____________________________________________________________________________ AliMUONManuPadPainter::AliMUONManuPadPainter(const AliMUONVPainter& mother, Int_t detElemId, @@ -105,7 +116,7 @@ AliMUONManuPadPainter::ComputeDataRange(const AliMUONVTrackerData& data, Double_t& dataMin, Double_t& dataMax) const { /// Compute data range spanned by this manu pads - AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(fDetElemId); + const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentationByElectronics(fDetElemId,fManuId); dataMin = FLT_MAX; dataMax = -FLT_MAX; @@ -113,7 +124,7 @@ AliMUONManuPadPainter::ComputeDataRange(const AliMUONVTrackerData& data, for ( Int_t manuChannel = 0; manuChannel < AliMpConstants::ManuNofChannels(); ++manuChannel ) { - if ( de->IsConnectedChannel(fManuId,manuChannel) ) + if ( seg->HasPadByLocation(fManuId,manuChannel) ) { Double_t value = data.Channel(fDetElemId, fManuId, manuChannel, dataIndex); dataMin = TMath::Min(value,dataMin); @@ -142,12 +153,20 @@ AliMUONManuPadPainter::NameAtPosition(Double_t x, Double_t y) const if ( pad.IsValid() ) { - name = Form("%s%d",PathName().Data(),pad.GetLocation().GetSecond()); + name = Form("%s%d",PathName().Data(),pad.GetManuChannel()); } return name; } +//_____________________________________________________________________________ +Bool_t +AliMUONManuPadPainter::IsIncluded() const +{ + /// whether this manu is included in the readout or not + return ( InteractiveReadOutConfig()->Manu(fDetElemId,fManuId) > 0 ); +} + //_____________________________________________________________________________ TString AliMUONManuPadPainter::Describe(const AliMUONVTrackerData& data, Int_t dataIndex, @@ -161,7 +180,7 @@ AliMUONManuPadPainter::Describe(const AliMUONVTrackerData& data, Int_t dataIndex if ( pad.IsValid() ) { - Double_t value = data.Channel(fDetElemId,fManuId,pad.GetLocation().GetSecond(),dataIndex); + Double_t value = data.Channel(fDetElemId,fManuId,pad.GetManuChannel(),dataIndex); return AliMUONPainterHelper::Instance()->FormatValue(data.DimensionName(dataIndex).Data(),value); } @@ -189,8 +208,8 @@ AliMUONManuPadPainter::DrawHistogramClone(Double_t* values) const AliMUONTrackerDataHistogrammer tdh(*data,0,-1); - fHistogram = tdh.CreateChannelHisto(fDetElemId, fManuId, - pad.GetLocation().GetSecond()); + fHistogram = tdh.CreateChannelHisto(fDetElemId, fManuId,pad.GetManuChannel()); + if (fHistogram) { new TCanvas(); @@ -214,22 +233,17 @@ AliMUONManuPadPainter::PaintArea(const AliMUONVTrackerData& data, AliMUONPainterHelper* h = AliMUONPainterHelper::Instance(); BackupStyle(); - - Int_t cathode = h->GetCathodeType(fDetElemId,fManuId); - + gVirtualX->SetLineColor(-1); gVirtualX->SetFillStyle(1); + const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentationByElectronics(fDetElemId,fManuId); + for ( Int_t i = 0; i < AliMpConstants::ManuNofChannels(); ++i ) { - Int_t id = AliMUONVDigit::BuildUniqueID(fDetElemId,fManuId,i,cathode); - - TVector2 position; - TVector2 dimensions; + AliMpPad pad = seg->PadByLocation(fManuId,i,kFALSE); - h->PadStore().GetPadGeometry(id,position,dimensions); - - if ( dimensions.X() > 0 ) + if ( pad.IsValid() ) { Double_t value = data.Channel(fDetElemId,fManuId,i,dataIndex); @@ -243,13 +257,11 @@ AliMUONManuPadPainter::PaintArea(const AliMUONVTrackerData& data, fDetElemId,fManuId,i,value,min,max, color)); } - + gVirtualX->SetFillColor(color); - TVector2 bl(position-dimensions); - TVector2 ur(position+dimensions); + PaintPad(pad); - gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y()); } } @@ -258,22 +270,20 @@ AliMUONManuPadPainter::PaintArea(const AliMUONVTrackerData& data, //_____________________________________________________________________________ void -AliMUONManuPadPainter::PaintPad(Int_t padId) const +AliMUONManuPadPainter::PaintPad(const AliMpPad& pad) const { - /// Paint a single pad + Double_t blx = pad.GetPositionX()-pad.GetDimensionX(); + Double_t bly = pad.GetPositionY()-pad.GetDimensionY(); - TVector2 position; - TVector2 dimensions; - - AliMUONPainterHelper::Instance()->PadStore().GetPadGeometry(padId,position,dimensions); + Double_t urx = pad.GetPositionX()+pad.GetDimensionX(); + Double_t ury = pad.GetPositionY()+pad.GetDimensionY(); + + Double_t xe1,ye1,xe2,ye2,z; - if ( dimensions.X() > 0 ) - { - TVector2 bl(position-dimensions); - TVector2 ur(position+dimensions); + AliMUONPainterHelper::Instance()->Local2Global(fDetElemId,blx,bly,0,xe1,ye1,z); + AliMUONPainterHelper::Instance()->Local2Global(fDetElemId,urx,ury,0,xe2,ye2,z); - gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y()); - } + gPad->PaintBox(xe1,ye1,xe2,ye2); } //_____________________________________________________________________________ @@ -286,16 +296,10 @@ AliMUONManuPadPainter::PaintOutline(Int_t color, Int_t, Double_t x, Double_t y) Int_t lineColor = color >= 0 ? color : GetLineColor(); - AliMUONPainterHelper* h = AliMUONPainterHelper::Instance(); - - AliDebug(1,Form("color=%d lineColor=%d x=%7.3f y=%7.3f",color,lineColor,x,y)); - if ( lineColor > 0 ) { BackupStyle(); - Int_t cathode = h->GetCathodeType(fDetElemId,fManuId); - gVirtualX->SetLineColor(lineColor); gVirtualX->SetFillStyle(0); @@ -304,17 +308,19 @@ AliMUONManuPadPainter::PaintOutline(Int_t color, Int_t, Double_t x, Double_t y) // find pad to be drawn AliMpPad pad = PadByPosition(x,y); - Int_t id = AliMUONVDigit::BuildUniqueID(fDetElemId,fManuId,pad.GetLocation().GetSecond(),cathode); - - PaintPad(id); + PaintPad(pad); } else { + const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentationByElectronics(fDetElemId,fManuId); + for ( Int_t i = 0; i < AliMpConstants::ManuNofChannels(); ++i ) { - Int_t id = AliMUONVDigit::BuildUniqueID(fDetElemId,fManuId,i,cathode); + AliMpPad pad = seg->PadByLocation(fManuId,i,kFALSE); + + if (pad.IsValid()) PaintPad(pad); - PaintPad(id); + PaintPad(pad); } } RestoreStyle(); @@ -337,7 +343,7 @@ AliMUONManuPadPainter::PadByPosition(Double_t x, Double_t y) const AliMUONPainterHelper::Instance()->Global2Local(fDetElemId,x,y,zg,xl,yl,zl); - return seg->PadByPosition(TVector2(xl,yl)); + return seg->PadByPosition(xl,yl); } //_____________________________________________________________________________