]>
Commit | Line | Data |
---|---|---|
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 | } |