]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpRowSegmentPainter.cxx
- Reordering includes from most specific to more general ones
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpRowSegmentPainter.cxx
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 // $MpId: AliMpRowSegmentPainter.cxx,v 1.7 2006/03/17 11:35:29 ivana Exp $
18 // Category: graphics
19 //
20 // Class AliMpRowSegmentPainter
21 // ----------------------------
22 // Class for drawing a motif into canvas
23 // Included in AliRoot: 2003/05/02
24 // Authors: David Guez, IPN Orsay
25  
26 #include "AliMpRowSegmentPainter.h"
27 #include "AliMpGraphContext.h"
28 #include "AliMpVRowSegment.h"
29 #include "AliMpRow.h"
30 #include "AliMpMotifMap.h"
31 #include "AliMpMotifPosition.h"
32
33 #include <TVirtualX.h>
34 #include <TPad.h>
35
36 ClassImp(AliMpRowSegmentPainter)
37
38 //_______________________________________________________________________
39 AliMpRowSegmentPainter::AliMpRowSegmentPainter()
40   : AliMpVPainter(),
41     fRowSegment(0)
42 {
43   /// Default constructor
44 }
45
46 //_______________________________________________________________________
47 AliMpRowSegmentPainter::AliMpRowSegmentPainter(AliMpVRowSegment *row)
48   : AliMpVPainter(),
49     fRowSegment(row)
50 {
51   /// Standard constructor 
52
53 }
54
55 //_____________________________________________________________________________
56 AliMpRowSegmentPainter::AliMpRowSegmentPainter(
57                                        const AliMpRowSegmentPainter& right) 
58   : AliMpVPainter(right) 
59 {  
60   /// Protected copy constructor (not provided)
61
62   Fatal("AliMpRowSegmentPainter", "Copy constructor not provided.");
63 }
64
65 //_______________________________________________________________________
66 AliMpRowSegmentPainter::~AliMpRowSegmentPainter()
67 {
68   /// Destructor
69 }
70
71 //_____________________________________________________________________________
72 AliMpRowSegmentPainter& 
73 AliMpRowSegmentPainter::operator=(const AliMpRowSegmentPainter& right)
74 {
75   /// Assignment operator (not provided)
76
77   // check assignment to self
78   if (this == &right) return *this;
79
80   Fatal("operator =", "Assignment operator not provided.");
81     
82   return *this;  
83 }    
84
85 //_______________________________________________________________________
86 TVector2 AliMpRowSegmentPainter::GetPosition() const
87 {
88 /// Get the owned object's position
89
90   return fRowSegment->Position();
91 }
92
93 //_______________________________________________________________________
94 TVector2 AliMpRowSegmentPainter::GetDimensions() const
95 {
96 /// Get the owned object's dimensions
97
98   return fRowSegment->Dimensions();
99 }
100
101 //_______________________________________________________________________
102 void AliMpRowSegmentPainter::DumpObject()
103 {
104 /// Draw the owned object
105
106   fRowSegment->Dump();
107 }
108
109 //_______________________________________________________________________
110 void AliMpRowSegmentPainter::Draw(Option_t *option)
111 {
112 /// Draw the sector on the current pad
113 /// The first letter of <option> is treated as follows:
114 /// - case "S" : each row segments are drawn separately
115 /// - case ""  : the whole row is drawn at once
116 /// in both cases, the rest of the option is passed
117 /// as argument to the Draw function of respectively
118 /// zone or row objects.
119
120   AliMpGraphContext *gr = AliMpGraphContext::Instance();
121   if( !fRowSegment) return;
122
123   gr->Push();
124   InitGraphContext();
125   switch (option[0]){
126   case 'M':
127     {
128
129       for (Int_t iMotif=0;iMotif<fRowSegment->GetNofMotifs();++iMotif){
130         gr->Push();
131
132         Int_t motifPositionId = fRowSegment->GetMotifPositionId(iMotif);
133         AliMpMotifPosition *motifPos = 
134             fRowSegment->GetRow()->GetMotifMap()
135               ->FindMotifPosition(motifPositionId);
136                                      
137         gr->SetPadPosForReal(motifPos->Position(),motifPos->Dimensions());
138         gr->SetColor(GetColor());
139         DrawObject(motifPos,option+1);
140
141         gr->Pop();
142       }
143     }
144     break;
145   default: AppendPad(option);
146   }
147   gr->Pop();
148 }
149
150
151 //_______________________________________________________________________
152 void AliMpRowSegmentPainter::Paint(Option_t* /*option*/)
153 {
154 /// Paint the object
155
156   AliMpGraphContext *gr = AliMpGraphContext::Instance();
157   if (!fRowSegment) return;
158   Int_t col=gVirtualX->GetFillColor();
159   gr->Push();
160   gPad->Range(0.,0.,1.,1.);
161   InitGraphContext();
162   PaintWholeBox(kTRUE);
163
164 //   Float_t textSize =   gVirtualX->GetTextSize();
165 //   if (option[0]=='T')
166 //     gPad->PaintText(GetPadPosition().X()-0.01,GetPadPosition().Y()-0.01,
167 //                   Form("%d",fRowSegment->GetMotif()->GetID()));
168 //   gVirtualX->SetTextSize(textSize);
169   gr->Pop();
170   gVirtualX->SetFillColor(col);
171 }