]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/mapping/AliMpIteratorPainter.cxx
Fix coverity defect
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpIteratorPainter.cxx
CommitLineData
3617b752 1/**************************************************************************
2* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3* *
4* Author: The ALICE Off-line Project. *
5* Contributors are mentioned in the code where appropriate. *
6* *
7* Permission to use, copy, modify and distribute this software and its *
8* documentation strictly for non-commercial purposes is hereby granted *
9* without fee, provided that the above copyright notice appears in all *
10* copies and that both the copyright notice and this permission notice *
11* appear in the supporting documentation. The authors make no claims *
12* about the suitability of this software for any purpose. It is *
13* provided "as is" without express or implied warranty. *
14**************************************************************************/
15
16// $Id$
17
18#include "AliMpIteratorPainter.h"
19
20#include "AliMpVPadIterator.h"
21#include "AliMpPad.h"
22#include "AliMpGraphContext.h"
23
24#include "AliLog.h"
25
26#include "TObjArray.h"
27#include "TVirtualX.h"
28#include "TVirtualPad.h"
29#include "TVector2.h"
30#include "TMath.h"
31
3d1463c8 32//-----------------------------------------------------------------------------
3617b752 33/// \class AliMpIteratorPainter
34///
35/// A painter for a group of pads, which is defined by an iterator
36///
37///
38/// \author L. Aphecetche
3d1463c8 39//-----------------------------------------------------------------------------
3617b752 40
41/// \cond CLASSIMP
42ClassImp(AliMpIteratorPainter)
43/// \endcond
44
45//_____________________________________________________________________________
46AliMpIteratorPainter::AliMpIteratorPainter(AliMpVPadIterator *it)
47: AliMpVPainter(), fPads(new TObjArray), fPosition(), fDimensions()
48{
49 /// Ctor. Iterator must not be null.
50
51 //if (!it) throw;
52 if (!it) {
76e1274b 53 AliFatal("Iterator must not be null.");
54 return;
3617b752 55 }
56
57 Double_t xmin(1E9), xmax(-1E9);
58 Double_t ymin(1E9), ymax(-1E9);
59
60 fPads->SetOwner(kTRUE);
61 it->First();
62 while ( !it->IsDone() )
63 {
64 AliMpPad pad = it->CurrentItem();
65 fPads->AddLast(new AliMpPad(pad));
6e97fbb8 66 TVector2 lowerLeft(TVector2(pad.GetPositionX(),pad.GetPositionY())-
67 TVector2(pad.GetDimensionX(),pad.GetDimensionY()));
68 TVector2 upperRight(TVector2(pad.GetPositionX(),pad.GetPositionY())+
69 TVector2(pad.GetDimensionX(),pad.GetDimensionY()));
3617b752 70 xmin = TMath::Min(lowerLeft.X(),xmin);
71 ymin = TMath::Min(lowerLeft.Y(),ymin);
72 xmax = TMath::Max(upperRight.X(),xmax);
73 ymax = TMath::Max(upperRight.Y(),ymax);
74 it->Next();
75 }
76 fPosition = TVector2((xmin+xmax)/2.0,(ymin+ymax)/2.0);
77 fDimensions = TVector2((xmax-xmin)/2.0,(ymax-ymin)/2.0);
78}
79
80//_____________________________________________________________________________
81AliMpIteratorPainter::~AliMpIteratorPainter()
82{
83 /// dtor
84 delete fPads;
85}
86
87//_____________________________________________________________________________
88void
89AliMpIteratorPainter::Draw(Option_t* option)
90{
91 /// Append ourselves to the current graphic pad
92 AliMpGraphContext *gr = AliMpGraphContext::Instance();
93 gr->Push();
94 InitGraphContext();
95 gr->SetPadPosForReal(GetPosition(),GetDimensions());
96 AppendPad(option);
97 gr->Pop();
98}
99
100//_____________________________________________________________________________
101void
102AliMpIteratorPainter::Paint(Option_t*)
103{
104 /// Actual drawing method
105
106 AliMpGraphContext* gr = AliMpGraphContext::Instance();
107 gr->Push();
108 InitGraphContext();
109 gPad->Range(0.,0.,1.,1.);
110
111 TIter next(fPads);
112 AliMpPad* pad;
113
114 while ( ( pad = static_cast<AliMpPad*>(next()) ) )
115 {
116 TVector2 padPadPos;
117 TVector2 padPadDim;
118
6e97fbb8 119 gr->RealToPad(TVector2(pad->GetPositionX(),
120 pad->GetPositionY()),
121 TVector2(pad->GetDimensionX(),
122 pad->GetDimensionY()),
123 padPadPos, padPadDim);
3617b752 124
125 TVector2 bl = padPadPos - padPadDim;
126 TVector2 ur = padPadPos + padPadDim;
127
168e9c4d 128 Int_t manuId = pad->GetManuId();
3617b752 129
130 Style_t sty = gVirtualX->GetFillStyle();
131
132 gVirtualX->SetFillStyle(1);
133 if (manuId % 5 == 0)
134 gVirtualX->SetFillColor(0);
135 if (manuId % 5 == 1)
136 gVirtualX->SetFillColor(38);
137 if (manuId % 5 == 2)
138 gVirtualX->SetFillColor(33);
139 if (manuId % 5 == 3)
140 gVirtualX->SetFillColor(16);
141 if (manuId % 5 == 4)
142 gVirtualX->SetFillColor(44);
143
144 gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y());
145 gVirtualX->SetFillStyle(0);
146 gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y());
147 gVirtualX->SetFillStyle(sty);
148
149 Float_t textSize = gVirtualX->GetTextSize();
150 gVirtualX->SetTextSize(10);
151 gVirtualX->SetTextAlign(22);
152 gPad->PaintText((bl.X()+ur.X())/2.0,(bl.Y()+ur.Y())/2.0,
168e9c4d 153 Form("%d",pad->GetManuChannel()));
3617b752 154
155 gVirtualX->SetTextSize(textSize);
156
157 }
158}
159
160