4 // Class AliMpMotifPainter
5 // -----------------------
6 // Class for drawing a motif into canvas
8 // Authors: David Guez, IPN Orsay
10 #include <Riostream.h>
12 #include "AliMpMotifPainter.h"
13 #include "AliMpGraphContext.h"
14 #include "AliMpMotifPosition.h"
15 #include "AliMpMotifType.h"
16 #include "AliMpConnection.h"
17 #include "AliMpIntPair.h"
19 ClassImp(AliMpMotifPainter)
21 //_______________________________________________________________________
22 AliMpMotifPainter::AliMpMotifPainter()
26 // default dummy constructor
28 //_______________________________________________________________________
29 AliMpMotifPainter::AliMpMotifPainter(AliMpMotifPosition *motifPos)
36 //_______________________________________________________________________
37 void AliMpMotifPainter::DumpObject()
39 // Draw the owned object
44 //_______________________________________________________________________
45 TVector2 AliMpMotifPainter::GetPosition() const
47 // Get the owned object's position
48 return fMotifPos->Position();
51 //_______________________________________________________________________
52 TVector2 AliMpMotifPainter::GetDimensions() const
54 // Get the owned object's dimensions
55 return fMotifPos->Dimensions();
59 //_______________________________________________________________________
60 void AliMpMotifPainter::Paint(Option_t *option)
63 AliMpGraphContext *gr = AliMpGraphContext::Instance();
64 if (!fMotifPos) return;
65 Int_t col=gVirtualX->GetFillColor();
67 gPad->Range(0.,0.,1.,1.);
76 Float_t textSize = gVirtualX->GetTextSize();
77 gVirtualX->SetTextSize(10);
81 str = Form("%d",fMotifPos->GetID());
86 str = Form("(%d,%d)",fMotifPos->GetHighIndicesLimit().GetFirst(),
87 fMotifPos->GetHighIndicesLimit().GetSecond());
90 str = Form("(%d,%d)",fMotifPos->GetLowIndicesLimit().GetFirst(),
91 fMotifPos->GetLowIndicesLimit().GetSecond());
96 str = Form("(%f,%f)",(GetPosition()-GetDimensions()).X(),
97 (GetPosition()-GetDimensions()).Y());
100 gPad->PaintText(GetPadPosition().X()-0.01,GetPadPosition().Y()-0.01,str);
102 gVirtualX->SetTextSize(textSize);
107 //PaintWholeBox(kFALSE);
108 AliMpMotifType *motifType = fMotifPos->GetMotif()->GetMotifType();
109 for (Int_t j=motifType->GetNofPadsY()-1;j>=0;j--){
110 for (Int_t i=0;i<motifType->GetNofPadsX();i++){
111 AliMpIntPair indices = AliMpIntPair(i,j);
112 AliMpConnection* connect =
113 motifType->FindConnectionByLocalIndices(indices);
115 TVector2 realPadPos =
116 GetPosition()+fMotifPos->GetMotif()->PadPositionLocal(indices);
117 TVector2 padPadPos,padPadDim;
118 gr->RealToPad(realPadPos,
119 fMotifPos->GetMotif()->GetPadDimensions(indices),
120 padPadPos,padPadDim);
121 TVector2 bl = padPadPos - padPadDim;
122 TVector2 ur = padPadPos + padPadDim;
125 Style_t sty = gVirtualX->GetFillStyle();
126 gVirtualX->SetFillStyle(1);
127 gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y());
128 gVirtualX->SetFillStyle(0);
129 gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y());
130 gVirtualX->SetFillStyle(sty);
132 Float_t textSize = gVirtualX->GetTextSize();
133 gVirtualX->SetTextSize(10);
134 gPad->PaintText(padPadPos.X()-0.01,padPadPos.Y()-0.01,
135 Form("%d",connect->GetGassiNum()));
137 gVirtualX->SetTextSize(textSize);
145 PaintWholeBox(kFALSE);
148 gVirtualX->SetFillColor(col);