4 // Class AliMpMotifPainter
5 // -----------------------
6 // Class for drawing a motif into canvas
8 // Authors: David Guez, IPN Orsay
10 #include <TVirtualX.h>
13 #include "AliMpMotifPainter.h"
14 #include "AliMpGraphContext.h"
15 #include "AliMpMotifPosition.h"
16 #include "AliMpMotifType.h"
17 #include "AliMpConnection.h"
18 #include "AliMpIntPair.h"
20 ClassImp(AliMpMotifPainter)
22 //_______________________________________________________________________
23 AliMpMotifPainter::AliMpMotifPainter()
27 // default dummy constructor
29 //_______________________________________________________________________
30 AliMpMotifPainter::AliMpMotifPainter(AliMpMotifPosition *motifPos)
37 //_______________________________________________________________________
38 AliMpMotifPainter::~AliMpMotifPainter()
40 // default dummy constructor
42 //_______________________________________________________________________
43 void AliMpMotifPainter::DumpObject()
45 // Draw the owned object
50 //_______________________________________________________________________
51 TVector2 AliMpMotifPainter::GetPosition() const
53 // Get the owned object's position
54 return fMotifPos->Position();
57 //_______________________________________________________________________
58 TVector2 AliMpMotifPainter::GetDimensions() const
60 // Get the owned object's dimensions
61 return fMotifPos->Dimensions();
65 //_______________________________________________________________________
66 void AliMpMotifPainter::Paint(Option_t *option)
69 AliMpGraphContext *gr = AliMpGraphContext::Instance();
70 if (!fMotifPos) return;
71 Int_t col=gVirtualX->GetFillColor();
73 gPad->Range(0.,0.,1.,1.);
82 Float_t textSize = gVirtualX->GetTextSize();
83 gVirtualX->SetTextSize(10);
87 str = Form("%d",fMotifPos->GetID());
92 str = Form("(%d,%d)",fMotifPos->GetHighIndicesLimit().GetFirst(),
93 fMotifPos->GetHighIndicesLimit().GetSecond());
96 str = Form("(%d,%d)",fMotifPos->GetLowIndicesLimit().GetFirst(),
97 fMotifPos->GetLowIndicesLimit().GetSecond());
102 str = Form("(%f,%f)",(GetPosition()-GetDimensions()).X(),
103 (GetPosition()-GetDimensions()).Y());
106 gPad->PaintText(GetPadPosition().X()-0.01,GetPadPosition().Y()-0.01,str);
108 gVirtualX->SetTextSize(textSize);
113 //PaintWholeBox(kFALSE);
114 AliMpMotifType *motifType = fMotifPos->GetMotif()->GetMotifType();
115 for (Int_t j=motifType->GetNofPadsY()-1;j>=0;j--){
116 for (Int_t i=0;i<motifType->GetNofPadsX();i++){
117 AliMpIntPair indices = AliMpIntPair(i,j);
118 AliMpConnection* connect =
119 motifType->FindConnectionByLocalIndices(indices);
121 TVector2 realPadPos =
122 GetPosition()+fMotifPos->GetMotif()->PadPositionLocal(indices);
123 TVector2 padPadPos,padPadDim;
124 gr->RealToPad(realPadPos,
125 fMotifPos->GetMotif()->GetPadDimensions(indices),
126 padPadPos,padPadDim);
127 TVector2 bl = padPadPos - padPadDim;
128 TVector2 ur = padPadPos + padPadDim;
131 Style_t sty = gVirtualX->GetFillStyle();
132 gVirtualX->SetFillStyle(1);
133 gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y());
134 gVirtualX->SetFillStyle(0);
135 gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y());
136 gVirtualX->SetFillStyle(sty);
138 Float_t textSize = gVirtualX->GetTextSize();
139 gVirtualX->SetTextSize(10);
140 gPad->PaintText(padPadPos.X()-0.01,padPadPos.Y()-0.01,
141 Form("%d",connect->GetGassiNum()));
143 gVirtualX->SetTextSize(textSize);
151 PaintWholeBox(kFALSE);
154 gVirtualX->SetFillColor(col);