First round of effc++ changes
[u/mrichter/AliRoot.git] / TRD / Cal / AliTRDCalROC.cxx
CommitLineData
7754cd1f 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///////////////////////////////////////////////////////////////////////////////
19// //
20// Calibration base class for a single ROC //
21// Contains one UShort_t value per pad //
22// However, values are set and get as float, there are stored internally as //
23// (UShort_t) value * 10000 //
24// //
25///////////////////////////////////////////////////////////////////////////////
26
27#include "AliTRDCalROC.h"
28
29ClassImp(AliTRDCalROC)
30
31//_____________________________________________________________________________
2745a409 32AliTRDCalROC::AliTRDCalROC()
33 :TObject()
34 ,fPla(0)
35 ,fCha(0)
36 ,fNrows(0)
37 ,fNcols(0)
38 ,fNchannels(0)
39 ,fData(0)
7754cd1f 40{
41 //
42 // Default constructor
43 //
44
7754cd1f 45}
46
47//_____________________________________________________________________________
2745a409 48AliTRDCalROC::AliTRDCalROC(Int_t p, Int_t c)
49 :TObject()
50 ,fPla(p)
51 ,fCha(c)
52 ,fNrows(0)
53 ,fNcols(144)
54 ,fNchannels(0)
55 ,fData(0)
7754cd1f 56{
57 //
58 // Constructor that initializes a given pad plane type
59 //
60
7754cd1f 61 //
62 // The pad plane parameter
63 //
64 switch (p) {
65 case 0:
66 if (c == 2) {
67 // L0C0 type
68 fNrows = 12;
69 }
70 else {
71 // L0C1 type
72 fNrows = 16;
73 }
74 break;
75 case 1:
76 if (c == 2) {
77 // L1C0 type
78 fNrows = 12;
79 }
80 else {
81 // L1C1 type
82 fNrows = 16;
83 }
84 break;
85 case 2:
86 if (c == 2) {
87 // L2C0 type
88 fNrows = 12;
89 }
90 else {
91 // L2C1 type
92 fNrows = 16;
93 }
94 break;
95 case 3:
96 if (c == 2) {
97 // L3C0 type
98 fNrows = 12;
99 }
100 else {
101 // L3C1 type
102 fNrows = 16;
103 }
104 break;
105 case 4:
106 if (c == 2) {
107 // L4C0 type
108 fNrows = 12;
109 }
110 else {
111 // L4C1 type
112 fNrows = 16;
113 }
114 break;
115 case 5:
116 if (c == 2) {
117 // L5C0 type
118 fNrows = 12;
119 }
120 else {
121 // L5C1 type
122 fNrows = 16;
123 }
124 break;
125 };
126
127 fNchannels = fNrows * fNcols;
2745a409 128 if (fNchannels != 0) {
7754cd1f 129 fData = new UShort_t[fNchannels];
2745a409 130 }
7754cd1f 131
2745a409 132 for (Int_t i=0; i<fNchannels; ++i) {
7754cd1f 133 fData[i] = 0;
2745a409 134 }
135
7754cd1f 136}
137
138//_____________________________________________________________________________
2745a409 139AliTRDCalROC::AliTRDCalROC(const AliTRDCalROC &c)
140 :TObject(c)
141 ,fPla(c.fPla)
142 ,fCha(c.fCha)
143 ,fNrows(c.fNrows)
144 ,fNcols(c.fNcols)
145 ,fNchannels(c.fNchannels)
146 ,fData(0)
7754cd1f 147{
148 //
149 // AliTRDCalROC copy constructor
150 //
151
2745a409 152 Int_t iBin = 0;
153
154 if (((AliTRDCalROC &) c).fData) delete [] ((AliTRDCalROC &) c).fData;
155 ((AliTRDCalROC &) c).fData = new UShort_t[fNchannels];
156 for (iBin = 0; iBin < fNchannels; iBin++) {
157 ((AliTRDCalROC &) c).fData[iBin] = fData[iBin];
158 }
7754cd1f 159
160}
161
162//_____________________________________________________________________________
163AliTRDCalROC::~AliTRDCalROC()
164{
165 //
166 // AliTRDCalROC destructor
167 //
168
169 if (fData) {
170 delete [] fData;
171 fData = 0;
172 }
2745a409 173
7754cd1f 174}
175
176//_____________________________________________________________________________
177AliTRDCalROC &AliTRDCalROC::operator=(const AliTRDCalROC &c)
178{
179 //
180 // Assignment operator
181 //
182
183 if (this != &c) ((AliTRDCalROC &) c).Copy(*this);
184 return *this;
185
186}
187
188//_____________________________________________________________________________
189void AliTRDCalROC::Copy(TObject &c) const
190{
191 //
192 // Copy function
193 //
194
195 ((AliTRDCalROC &) c).fPla = fPla;
196 ((AliTRDCalROC &) c).fCha = fCha;
197
198 ((AliTRDCalROC &) c).fNrows = fNrows;
199 ((AliTRDCalROC &) c).fNcols = fNcols;
200
201 Int_t iBin = 0;
202
203 ((AliTRDCalROC &) c).fNchannels = fNchannels;
204
205 if (((AliTRDCalROC &) c).fData) delete [] ((AliTRDCalROC &) c).fData;
206 ((AliTRDCalROC &) c).fData = new UShort_t[fNchannels];
207 for (iBin = 0; iBin < fNchannels; iBin++) {
208 ((AliTRDCalROC &) c).fData[iBin] = fData[iBin];
209 }
210
211 TObject::Copy(c);
212
213}
214
215//_____________________________________________________________________________
216void AliTRDCalROC::Scale(Float_t value)
217{
218 //
219 // Scales all values of this ROC with the provided parameter. Is used if ROC defines
220 // local variations of a global (or per detector defined) parameter
221 //
222
223 for (Int_t iBin = 0; iBin < fNchannels; iBin++) {
224 fData[iBin] = (UShort_t) (value * fData[iBin]);
225 }
2745a409 226
7754cd1f 227}