]>
Commit | Line | Data |
---|---|---|
223dda26 | 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> | |
f67db810 | 27 | #include "AliITSChannelDaSSD.h" |
c4d90345 | 28 | #include "TString.h" |
29 | #include "AliLog.h" | |
f67db810 | 30 | |
31 | ClassImp(AliITSChannelDaSSD) | |
32 | ||
33 | using namespace std; | |
34 | ||
c4d90345 | 35 | const Short_t AliITSChannelDaSSD::fgkMinStripId = 0; // minimum strip id |
36 | const Short_t AliITSChannelDaSSD::fgkMaxStripId = 1535; // maximum strip id | |
37 | ||
61a57d07 | 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 | |
f67db810 | 42 | |
c4d90345 | 43 | |
44 | //______________________________________________________________________________ | |
f67db810 | 45 | AliITSChannelDaSSD::AliITSChannelDaSSD() : |
46 | fStripId(0), | |
47 | fEventsNumber(0), | |
48 | fSignal(NULL), | |
49 | fPedestal(fgkUndefinedValue), | |
50 | fNoise(fgkUndefinedValue), | |
c4d90345 | 51 | fNoiseCM(fgkUndefinedValue), |
52 | fNOverflowEv(0) | |
f67db810 | 53 | { |
223dda26 | 54 | // Default costructor |
f67db810 | 55 | } |
56 | ||
57 | ||
c4d90345 | 58 | //______________________________________________________________________________ |
f67db810 | 59 | AliITSChannelDaSSD::AliITSChannelDaSSD(const UShort_t stripID) : |
60 | fStripId(stripID), | |
61 | fEventsNumber(0), | |
62 | fSignal(NULL), | |
63 | fPedestal(fgkUndefinedValue), | |
64 | fNoise(fgkUndefinedValue), | |
c4d90345 | 65 | fNoiseCM(fgkUndefinedValue), |
66 | fNOverflowEv(0) | |
f67db810 | 67 | { |
223dda26 | 68 | // Costructor, initialize channal id |
f67db810 | 69 | } |
70 | ||
71 | ||
c4d90345 | 72 | //______________________________________________________________________________ |
f67db810 | 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), | |
c4d90345 | 79 | fNoiseCM(fgkUndefinedValue), |
80 | fNOverflowEv(0) | |
f67db810 | 81 | { |
223dda26 | 82 | // Costructor, initialize channal id and allocate array for events data |
f67db810 | 83 | if (stripID > fgkMaxStripId) |
c4d90345 | 84 | AliWarning(Form("AliITSChannelDaSSD: Wrong StripID: %i", stripID)); |
223dda26 | 85 | fSignal = new (nothrow) Short_t[eventsnumber]; |
86 | if (fSignal) { | |
87 | fEventsNumber = eventsnumber; | |
88 | memset(fSignal, fgkDefaultSignal, (eventsnumber * sizeof(Short_t))); | |
89 | } else { | |
c4d90345 | 90 | AliError(Form("AliITSChannelDaSSD: Error allocating memory for %i Short_t objects!", eventsnumber)); |
223dda26 | 91 | fSignal = NULL; |
92 | fEventsNumber = 0; | |
f67db810 | 93 | } |
f67db810 | 94 | } |
95 | ||
96 | ||
97 | ||
c4d90345 | 98 | //______________________________________________________________________________ |
f67db810 | 99 | AliITSChannelDaSSD::AliITSChannelDaSSD(const AliITSChannelDaSSD& strip) : |
100 | TObject(strip), | |
101 | fStripId(strip.fStripId), | |
102 | fEventsNumber(strip.fEventsNumber), | |
a69c8ba0 | 103 | fSignal(NULL), |
f67db810 | 104 | fPedestal(strip.fPedestal), |
105 | fNoise(strip.fNoise), | |
c4d90345 | 106 | fNoiseCM(strip.fNoiseCM), |
107 | fNOverflowEv(strip.fNOverflowEv) | |
f67db810 | 108 | { |
109 | // copy constructor | |
a69c8ba0 | 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 %i Short_t objects!", strip.fEventsNumber)); | |
116 | fSignal = NULL; | |
117 | fEventsNumber = 0; | |
118 | } | |
119 | } | |
f67db810 | 120 | } |
121 | ||
c4d90345 | 122 | |
123 | ||
124 | //______________________________________________________________________________ | |
f67db810 | 125 | AliITSChannelDaSSD& AliITSChannelDaSSD::operator = (const AliITSChannelDaSSD& strip) |
126 | { | |
127 | // assignment operator | |
61a57d07 | 128 | if (this == &strip) return *this; |
129 | TObject::operator=(strip); | |
a69c8ba0 | 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 %i Short_t objects!", strip.fEventsNumber)); | |
143 | fSignal = NULL; | |
144 | fEventsNumber = 0; | |
145 | } | |
f67db810 | 146 | return *this; |
147 | } | |
148 | ||
149 | ||
c4d90345 | 150 | //______________________________________________________________________________ |
f67db810 | 151 | AliITSChannelDaSSD::~AliITSChannelDaSSD() |
152 | { | |
223dda26 | 153 | // Destructor |
a69c8ba0 | 154 | if (fSignal) delete [] fSignal; |
f67db810 | 155 | } |
156 | ||
157 | ||
c4d90345 | 158 | //______________________________________________________________________________ |
f67db810 | 159 | Bool_t AliITSChannelDaSSD::SetEvenetsNumber(const Long_t eventsnumber) |
160 | { | |
223dda26 | 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 { | |
c4d90345 | 169 | AliError(Form("AliITSChannelDaSSD: Error allocating memory for %i Short_t objects!", eventsnumber)); |
223dda26 | 170 | fSignal = NULL; |
171 | fEventsNumber = 0; | |
172 | return kFALSE; | |
f67db810 | 173 | } |
f67db810 | 174 | } |
175 | ||
176 | ||
c4d90345 | 177 | //______________________________________________________________________________ |
f67db810 | 178 | Bool_t AliITSChannelDaSSD::SetSignal(const Long_t eventnumber, const Short_t signal) |
179 | { | |
223dda26 | 180 | // put signal value to array |
f67db810 | 181 | if (eventnumber < fEventsNumber && fSignal) |
182 | { | |
183 | fSignal[eventnumber] = signal; | |
184 | return kTRUE; | |
185 | } | |
186 | return kFALSE; | |
187 | } |