#include "AliLog.h"
#include "AliMUONPainterGroup.h"
#include "AliMUONPainterHelper.h"
-#include "AliMUONPainterPadStore.h"
#include "AliMUONTrackerDataHistogrammer.h"
#include "AliMUONVCalibParam.h"
#include "AliMUONVDigit.h"
#include "AliMpConnection.h"
#include "AliMpConstants.h"
#include "AliMpDDLStore.h"
-#include "AliMpDetElement.h"
#include "AliMpPad.h"
#include "AliMpSegmentation.h"
#include "AliMpVSegmentation.h"
/// 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,
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;
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);
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,
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);
}
AliMUONTrackerDataHistogrammer tdh(*data,0,-1);
- fHistogram = tdh.CreateChannelHisto(fDetElemId, fManuId,
- pad.GetLocation().GetSecond());
+ fHistogram = tdh.CreateChannelHisto(fDetElemId, fManuId,pad.GetManuChannel());
+
if (fHistogram)
{
new TCanvas();
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);
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());
}
}
//_____________________________________________________________________________
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);
}
//_____________________________________________________________________________
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);
// 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();
AliMUONPainterHelper::Instance()->Global2Local(fDetElemId,x,y,zg,xl,yl,zl);
- return seg->PadByPosition(TVector2(xl,yl));
+ return seg->PadByPosition(xl,yl);
}
//_____________________________________________________________________________