]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONPCBPainter.cxx
Fixed coding conventions in MUONQADataMaker classes.
[u/mrichter/AliRoot.git] / MUON / AliMUONPCBPainter.cxx
CommitLineData
0145e89a 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/// \class AliMUONPCBPainter
19///
20/// Implementation of AliMUONVPainter for slat's PCBs
21///
22/// \author Laurent Aphecetche, Subatech
23
24#include "AliMUONPCBPainter.h"
25
26#include "AliMUONManuPainter.h"
27#include "AliMUONPainterContour.h"
28#include "AliMUONPainterHelper.h"
29#include "AliMUONVCalibParam.h"
30#include "AliMUONVTrackerData.h"
31#include "AliMpDEManager.h"
32#include "AliMpMotifPosition.h"
33#include "AliMpPCB.h"
34#include "AliMpPlaneType.h"
35#include "AliMpSlat.h"
36#include "AliLog.h"
37
38/// \cond(CLASSIMP)
39ClassImp(AliMUONPCBPainter)
40/// \endcond
41
42//_____________________________________________________________________________
43AliMUONPCBPainter::AliMUONPCBPainter()
44: AliMUONVPainter(),
45fDetElemId(-1),
46fPCBIndex(-1)
47{
48 /// empty ctor
49}
50
51//_____________________________________________________________________________
52AliMUONPCBPainter::AliMUONPCBPainter(const AliMUONAttPainter& att,
53 Int_t detElemId,
54 Int_t pcbNumber)
55: AliMUONVPainter("PCB"),
56 fDetElemId(detElemId),
57 fPCBIndex(pcbNumber)
58{
59 /// Ctor
60
61 SetAttributes(att);
62
63 AliMUONPainterHelper* h = AliMUONPainterHelper::Instance();
64
65 AliMp::PlaneType planeType = ( att.IsBendingPlane() ? AliMp::kBendingPlane : AliMp::kNonBendingPlane );
66
67 const AliMpSlat* slat = AliMUONPainterHelper::Instance()->GetSlat(fDetElemId,planeType);
68
69 SetID(detElemId,pcbNumber);
70 SetName(h->PCBName(pcbNumber));
71 SetPathName(h->PCBPathName(detElemId,pcbNumber));
72
73 AliMpPCB* pcb = slat->GetPCB(fPCBIndex);
74
75 AliMUONPainterContour* contour = h->GetContour(ContourName());
76 TObjArray contourArray;
77
78 for ( Int_t imp = 0 ; imp < pcb->GetSize(); ++imp )
79 {
80 AliMpMotifPosition* mp = pcb->GetMotifPosition(imp);
81 AliDebug(1,Form("Adding manu %d to PCB %d of DE %d",
82 mp->GetID(),fPCBIndex,fDetElemId));
83 AliMUONVPainter* painter = new AliMUONManuPainter(Attributes(),fDetElemId,mp->GetID());
84 Add(painter);
85 if (!contour)
86 {
87 contourArray.Add(painter->Contour());
88 }
89 }
90
91 Double_t x,y,z;
92
93 h->Local2Global(fDetElemId,
94 pcb->X()-slat->Position().X(),
95 pcb->Y()-slat->Position().Y(),
96 0.0,
97 x,y,z);
98
99 if (!contour)
100 {
101 contour = h->MergeContours(contourArray,ContourName());
102 }
103
104 SetContour(contour);
105}
106
107//_____________________________________________________________________________
108AliMUONPCBPainter::~AliMUONPCBPainter()
109{
110 /// dtor
111}
112
113//_____________________________________________________________________________
114AliMUONPCBPainter::AliMUONPCBPainter(const AliMUONPCBPainter& rhs)
115: AliMUONVPainter(rhs),
116 fDetElemId(-1),
117 fPCBIndex(-1)
118{
119 /// copy ctor
120 rhs.Copy(*this);
121}
122
123//_____________________________________________________________________________
124AliMUONPCBPainter&
125AliMUONPCBPainter::operator=(const AliMUONPCBPainter& rhs)
126{
127 /// assignment operator
128 if ( this != &rhs )
129 {
130 rhs.Copy(*this);
131 }
132 return *this;
133}
134
135//_____________________________________________________________________________
136void
137AliMUONPCBPainter::ComputeDataRange(const AliMUONVTrackerData& data, Int_t dataIndex,
138 Double_t& dataMin, Double_t& dataMax) const
139{
140 /// Compute the min and max of this PCB data
141 dataMin = dataMax = data.PCB(fDetElemId, fPCBIndex,dataIndex);
142}
143
144//_____________________________________________________________________________
145void
146AliMUONPCBPainter::Copy(TObject& object) const
147{
148 /// Copy this to object
149 AliMUONVPainter::Copy((AliMUONVPainter&)(object));
150 ((AliMUONPCBPainter&)(object)).fDetElemId = fDetElemId;
151 ((AliMUONPCBPainter&)(object)).fPCBIndex = fPCBIndex;
152}
153
154//_____________________________________________________________________________
155void
156AliMUONPCBPainter::PaintArea(const AliMUONVTrackerData& data, Int_t dataIndex,
157 Double_t min, Double_t max)
158{
159 /// Fill the contour of this PCB with a color depending of the value of the data
160 if (!data.HasPCB(fDetElemId,fPCBIndex)) return;
161
162 Double_t value = data.PCB(fDetElemId,fPCBIndex,dataIndex);
163
164 if ( value >= AliMUONVCalibParam::InvalidFloatValue() ) return;
165
166 Int_t color = AliMUONPainterHelper::Instance()->ColorFromValue(value,min,max);
167
168 Contour()->PaintArea(color);
169}
170