Fixes for Coverity warnings (M. van Leeuwen)
[u/mrichter/AliRoot.git] / ITS / AliITSChannelDaSSD.cxx
1 /**************************************************************************
2  * Copyright(c) 2007-2009, 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 /// This class provides storage container ITS SSD channel callibration data
21 /// used by DA. 
22 ///
23 ///////////////////////////////////////////////////////////////////////////////
24
25
26 #include <Riostream.h>
27 #include "AliITSChannelDaSSD.h"
28 #include "TString.h"
29 #include "AliLog.h"
30
31 ClassImp(AliITSChannelDaSSD)
32
33 using namespace std;
34
35 const Short_t AliITSChannelDaSSD::fgkMinStripId = 0;               // minimum strip id
36 const Short_t AliITSChannelDaSSD::fgkMaxStripId = 1535;            // maximum strip id
37
38 const Short_t  AliITSChannelDaSSD::fgkSignalOverflow  =  2047;      // ADC overflow value
39 const Short_t  AliITSChannelDaSSD::fgkSignalUnderflow = -2048;      // ADC underflow value
40 const UShort_t AliITSChannelDaSSD::fgkDefaultSignal   =  0x7F;      // initialization value for fNoise, fPedestal, fSignal[i]
41 const Float_t  AliITSChannelDaSSD::fgkUndefinedValue  =  32639.0f;  // = 0x7F7F
42
43
44 //______________________________________________________________________________
45 AliITSChannelDaSSD::AliITSChannelDaSSD() :
46   fStripId(0),
47   fEventsNumber(0),
48   fSignal(NULL),
49   fPedestal(fgkUndefinedValue),
50   fNoise(fgkUndefinedValue),
51   fNoiseCM(fgkUndefinedValue),
52   fNOverflowEv(0)
53 {
54 // Default costructor
55 }
56
57
58 //______________________________________________________________________________
59 AliITSChannelDaSSD::AliITSChannelDaSSD(const UShort_t stripID) :
60   fStripId(stripID),
61   fEventsNumber(0),
62   fSignal(NULL),
63   fPedestal(fgkUndefinedValue),
64   fNoise(fgkUndefinedValue),
65   fNoiseCM(fgkUndefinedValue),
66   fNOverflowEv(0)
67 {
68 // Costructor, initialize channal id
69 }
70
71
72 //______________________________________________________________________________
73 AliITSChannelDaSSD::AliITSChannelDaSSD(const UShort_t stripID, const Long_t eventsnumber) :
74   fStripId(stripID),
75   fEventsNumber(0),
76   fSignal(NULL),
77   fPedestal(fgkUndefinedValue),
78   fNoise(fgkUndefinedValue),
79   fNoiseCM(fgkUndefinedValue),
80   fNOverflowEv(0)
81 {
82 // Costructor, initialize channal id and allocate array for events data
83   if (stripID > fgkMaxStripId)
84     AliWarning(Form("AliITSChannelDaSSD: Wrong StripID: %i", stripID));
85   fSignal = new (nothrow) Short_t[eventsnumber];
86   if (fSignal) {
87     fEventsNumber = eventsnumber;
88     memset(fSignal, fgkDefaultSignal, (eventsnumber * sizeof(Short_t)));
89   } else {
90     AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", eventsnumber));
91     fSignal = NULL;
92     fEventsNumber = 0;
93   }
94 }
95
96
97
98 //______________________________________________________________________________
99 AliITSChannelDaSSD::AliITSChannelDaSSD(const AliITSChannelDaSSD& strip) :
100   TObject(strip),
101   fStripId(strip.fStripId),
102   fEventsNumber(strip.fEventsNumber),
103   fSignal(NULL),
104   fPedestal(strip.fPedestal),
105   fNoise(strip.fNoise),
106   fNoiseCM(strip.fNoiseCM),
107   fNOverflowEv(strip.fNOverflowEv)
108 {
109   // copy constructor
110   if ((strip.fEventsNumber > 0) && (strip.fSignal)) {
111     fSignal = new (nothrow) Short_t[strip.fEventsNumber];
112     if (fSignal) {
113       memcpy(fSignal, strip.fSignal, (strip.fEventsNumber * sizeof(Short_t)));
114     } else {
115       AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", strip.fEventsNumber));
116       fSignal = NULL;
117       fEventsNumber = 0;
118     }
119   }  
120 }
121
122
123
124 //______________________________________________________________________________
125 AliITSChannelDaSSD& AliITSChannelDaSSD::operator = (const AliITSChannelDaSSD& strip)
126 {
127 // assignment operator
128   if (this == &strip)  return *this;
129   TObject::operator=(strip);  
130   if (fSignal) { delete [] fSignal; fSignal = NULL; }
131   fStripId = strip.fStripId;
132   fEventsNumber = strip.fEventsNumber;
133   fPedestal = strip.fPedestal;
134   fNoise = strip.fNoise;
135   fNoiseCM = strip.fNoiseCM;
136   fNOverflowEv = strip.fNOverflowEv;
137   if ((strip.fEventsNumber > 0) && (strip.fSignal)) fSignal = new (nothrow) Short_t[strip.fEventsNumber];
138   else return *this;
139   if (fSignal) {
140     memcpy(fSignal, strip.fSignal, (strip.fEventsNumber * sizeof(Short_t)));
141   } else {
142     AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", strip.fEventsNumber));
143     fSignal = NULL;
144     fEventsNumber = 0;
145   }
146   return *this;
147 }
148
149
150 //______________________________________________________________________________
151 AliITSChannelDaSSD::~AliITSChannelDaSSD()
152 {
153 // Destructor
154   if (fSignal) delete [] fSignal;
155 }
156
157
158 //______________________________________________________________________________
159 Bool_t AliITSChannelDaSSD::SetEvenetsNumber(const Long_t eventsnumber)
160 {
161 // Allocate array for events data
162   if (fSignal) {delete [] fSignal; fSignal = NULL; }
163   fSignal = new (nothrow) Short_t[eventsnumber];
164   if (fSignal) {
165     fEventsNumber = eventsnumber;
166     memset(fSignal, fgkDefaultSignal, (eventsnumber * sizeof(Short_t)));
167     return kTRUE;
168   } else {
169     AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", eventsnumber));
170     fSignal = NULL;
171     fEventsNumber = 0;
172     return kFALSE;
173   }
174 }
175
176
177 //______________________________________________________________________________
178 Bool_t AliITSChannelDaSSD::SetSignal(const Long_t eventnumber, const Short_t signal)
179 {
180 // put signal value to array 
181   if (eventnumber < fEventsNumber && fSignal)
182   {
183      fSignal[eventnumber] = signal;
184      return kTRUE;
185   }
186   return kFALSE;
187 }