#include "AliMUONPCBPainter.h"
#include "AliMUONManuPainter.h"
#include "AliMUONContour.h"
#include "AliMUONPainterHelper.h"
#include "AliMUONVCalibParam.h"
#include "AliMUONVTrackerData.h"
#include "AliMpDEManager.h"
#include "AliMpMotifPosition.h"
#include "AliMpPCB.h"
#include "AliMpPlaneType.h"
#include "AliMpSlat.h"
#include "AliLog.h"
ClassImp(AliMUONPCBPainter)
AliMUONPCBPainter::AliMUONPCBPainter(TRootIOCtor* ioCtor)
: AliMUONVPainter(ioCtor),
fDetElemId(-1),
fPCBIndex(-1)
{
}
AliMUONPCBPainter::AliMUONPCBPainter()
: AliMUONVPainter(),
fDetElemId(-1),
fPCBIndex(-1)
{
}
AliMUONPCBPainter::AliMUONPCBPainter(const AliMUONAttPainter& att,
Int_t detElemId,
Int_t pcbNumber)
: AliMUONVPainter("PCB"),
fDetElemId(detElemId),
fPCBIndex(pcbNumber)
{
SetAttributes(att);
AliMUONPainterHelper* h = AliMUONPainterHelper::Instance();
AliMp::PlaneType planeType = ( att.IsBendingPlane() ? AliMp::kBendingPlane : AliMp::kNonBendingPlane );
const AliMpSlat* slat = AliMUONPainterHelper::Instance()->GetSlat(fDetElemId,planeType);
SetID(detElemId,pcbNumber);
SetName(h->PCBName(pcbNumber));
SetPathName(h->PCBPathName(detElemId,pcbNumber));
AliMpPCB* pcb = slat->GetPCB(fPCBIndex);
AliMUONContour* contour = h->GetContour(ContourName());
TObjArray contourArray;
for ( Int_t imp = 0 ; imp < pcb->GetSize(); ++imp )
{
AliMpMotifPosition* mp = pcb->GetMotifPosition(imp);
AliDebug(1,Form("Adding manu %d to PCB %d of DE %d",
mp->GetID(),fPCBIndex,fDetElemId));
AliMUONVPainter* painter = new AliMUONManuPainter(Attributes(),fDetElemId,mp->GetID());
Add(painter);
if (!contour)
{
contourArray.Add(painter->Contour());
}
}
Double_t x,y,z;
h->Local2Global(fDetElemId,
pcb->X()-slat->GetPositionX(),
pcb->Y()-slat->GetPositionY(),
0.0,
x,y,z);
if (!contour)
{
contour = h->MergeContours(contourArray,ContourName());
}
SetContour(contour);
}
AliMUONPCBPainter::~AliMUONPCBPainter()
{
}
AliMUONPCBPainter::AliMUONPCBPainter(const AliMUONPCBPainter& rhs)
: AliMUONVPainter(rhs),
fDetElemId(-1),
fPCBIndex(-1)
{
rhs.Copy(*this);
}
AliMUONPCBPainter&
AliMUONPCBPainter::operator=(const AliMUONPCBPainter& rhs)
{
if ( this != &rhs )
{
rhs.Copy(*this);
}
return *this;
}
void
AliMUONPCBPainter::ComputeDataRange(const AliMUONVTrackerData& data, Int_t dataIndex,
Double_t& dataMin, Double_t& dataMax) const
{
dataMin = dataMax = data.PCB(fDetElemId, fPCBIndex,dataIndex);
}
void
AliMUONPCBPainter::Copy(TObject& object) const
{
AliMUONVPainter::Copy((AliMUONVPainter&)(object));
((AliMUONPCBPainter&)(object)).fDetElemId = fDetElemId;
((AliMUONPCBPainter&)(object)).fPCBIndex = fPCBIndex;
}
TString
AliMUONPCBPainter::Describe(const AliMUONVTrackerData& data, Int_t dataIndex,
Double_t, Double_t)
{
if (!data.HasPCB(fDetElemId,fPCBIndex)) return "";
Double_t value = data.PCB(fDetElemId,fPCBIndex,dataIndex);
return AliMUONPainterHelper::Instance()->FormatValue(data.DimensionName(dataIndex).Data(),value);
}
Bool_t
AliMUONPCBPainter::IsIncluded() const
{
return ( InteractiveReadOutConfig()->PCB(fDetElemId,fPCBIndex) > 0 );
}
void
AliMUONPCBPainter::PaintArea(const AliMUONVTrackerData& data, Int_t dataIndex,
Double_t min, Double_t max)
{
if (!data.HasPCB(fDetElemId,fPCBIndex)) return;
Double_t value = data.PCB(fDetElemId,fPCBIndex,dataIndex);
if ( value >= AliMUONVCalibParam::InvalidFloatValue() ) return;
Int_t color = AliMUONPainterHelper::Instance()->ColorFromValue(value,min,max);
PaintArea(color);
}
AliMUONPCBPainter.cxx:100 AliMUONPCBPainter.cxx:101 AliMUONPCBPainter.cxx:102 AliMUONPCBPainter.cxx:103 AliMUONPCBPainter.cxx:104 AliMUONPCBPainter.cxx:105 AliMUONPCBPainter.cxx:106 AliMUONPCBPainter.cxx:107 AliMUONPCBPainter.cxx:108 AliMUONPCBPainter.cxx:109 AliMUONPCBPainter.cxx:110 AliMUONPCBPainter.cxx:111 AliMUONPCBPainter.cxx:112 AliMUONPCBPainter.cxx:113 AliMUONPCBPainter.cxx:114 AliMUONPCBPainter.cxx:115 AliMUONPCBPainter.cxx:116 AliMUONPCBPainter.cxx:117 AliMUONPCBPainter.cxx:118 AliMUONPCBPainter.cxx:119 AliMUONPCBPainter.cxx:120 AliMUONPCBPainter.cxx:121 AliMUONPCBPainter.cxx:122 AliMUONPCBPainter.cxx:123 AliMUONPCBPainter.cxx:124 AliMUONPCBPainter.cxx:125 AliMUONPCBPainter.cxx:126 AliMUONPCBPainter.cxx:127 AliMUONPCBPainter.cxx:128 AliMUONPCBPainter.cxx:129 AliMUONPCBPainter.cxx:130 AliMUONPCBPainter.cxx:131 AliMUONPCBPainter.cxx:132 AliMUONPCBPainter.cxx:133 AliMUONPCBPainter.cxx:134 AliMUONPCBPainter.cxx:135 AliMUONPCBPainter.cxx:136 AliMUONPCBPainter.cxx:137 AliMUONPCBPainter.cxx:138 AliMUONPCBPainter.cxx:139 AliMUONPCBPainter.cxx:140 AliMUONPCBPainter.cxx:141 AliMUONPCBPainter.cxx:142 AliMUONPCBPainter.cxx:143 AliMUONPCBPainter.cxx:144 AliMUONPCBPainter.cxx:145 AliMUONPCBPainter.cxx:146 AliMUONPCBPainter.cxx:147 AliMUONPCBPainter.cxx:148 AliMUONPCBPainter.cxx:149 AliMUONPCBPainter.cxx:150 AliMUONPCBPainter.cxx:151 AliMUONPCBPainter.cxx:152 AliMUONPCBPainter.cxx:153 AliMUONPCBPainter.cxx:154 AliMUONPCBPainter.cxx:155 AliMUONPCBPainter.cxx:156 AliMUONPCBPainter.cxx:157 AliMUONPCBPainter.cxx:158 AliMUONPCBPainter.cxx:159 AliMUONPCBPainter.cxx:160 AliMUONPCBPainter.cxx:161 AliMUONPCBPainter.cxx:162 AliMUONPCBPainter.cxx:163 AliMUONPCBPainter.cxx:164 AliMUONPCBPainter.cxx:165 AliMUONPCBPainter.cxx:166 AliMUONPCBPainter.cxx:167 AliMUONPCBPainter.cxx:168 AliMUONPCBPainter.cxx:169 AliMUONPCBPainter.cxx:170 AliMUONPCBPainter.cxx:171 AliMUONPCBPainter.cxx:172 AliMUONPCBPainter.cxx:173 AliMUONPCBPainter.cxx:174 AliMUONPCBPainter.cxx:175 AliMUONPCBPainter.cxx:176 AliMUONPCBPainter.cxx:177 AliMUONPCBPainter.cxx:178 AliMUONPCBPainter.cxx:179 AliMUONPCBPainter.cxx:180 AliMUONPCBPainter.cxx:181 AliMUONPCBPainter.cxx:182 AliMUONPCBPainter.cxx:183 AliMUONPCBPainter.cxx:184 AliMUONPCBPainter.cxx:185 AliMUONPCBPainter.cxx:186 AliMUONPCBPainter.cxx:187 AliMUONPCBPainter.cxx:188 AliMUONPCBPainter.cxx:189 AliMUONPCBPainter.cxx:190 AliMUONPCBPainter.cxx:191 AliMUONPCBPainter.cxx:192 AliMUONPCBPainter.cxx:193 AliMUONPCBPainter.cxx:194 AliMUONPCBPainter.cxx:195 AliMUONPCBPainter.cxx:196 AliMUONPCBPainter.cxx:197 AliMUONPCBPainter.cxx:198 AliMUONPCBPainter.cxx:199 AliMUONPCBPainter.cxx:200 AliMUONPCBPainter.cxx:201