Line data Source code
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 118 : 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 0 : AliITSChannelDaSSD::AliITSChannelDaSSD() :
46 0 : fStripId(0),
47 0 : fEventsNumber(0),
48 0 : fSignal(NULL),
49 0 : fPedestal(fgkUndefinedValue),
50 0 : fNoise(fgkUndefinedValue),
51 0 : fNoiseCM(fgkUndefinedValue),
52 0 : fNOverflowEv(0)
53 0 : {
54 : // Default costructor
55 0 : }
56 :
57 :
58 : //______________________________________________________________________________
59 0 : AliITSChannelDaSSD::AliITSChannelDaSSD(const UShort_t stripID) :
60 0 : fStripId(stripID),
61 0 : fEventsNumber(0),
62 0 : fSignal(NULL),
63 0 : fPedestal(fgkUndefinedValue),
64 0 : fNoise(fgkUndefinedValue),
65 0 : fNoiseCM(fgkUndefinedValue),
66 0 : fNOverflowEv(0)
67 0 : {
68 : // Costructor, initialize channal id
69 0 : }
70 :
71 :
72 : //______________________________________________________________________________
73 0 : AliITSChannelDaSSD::AliITSChannelDaSSD(const UShort_t stripID, const Long_t eventsnumber) :
74 0 : fStripId(stripID),
75 0 : fEventsNumber(0),
76 0 : fSignal(NULL),
77 0 : fPedestal(fgkUndefinedValue),
78 0 : fNoise(fgkUndefinedValue),
79 0 : fNoiseCM(fgkUndefinedValue),
80 0 : fNOverflowEv(0)
81 0 : {
82 : // Costructor, initialize channal id and allocate array for events data
83 0 : if (stripID > fgkMaxStripId)
84 0 : AliWarning(Form("AliITSChannelDaSSD: Wrong StripID: %i", stripID));
85 0 : fSignal = new (nothrow) Short_t[eventsnumber];
86 0 : if (fSignal) {
87 0 : fEventsNumber = eventsnumber;
88 0 : memset(fSignal, fgkDefaultSignal, (eventsnumber * sizeof(Short_t)));
89 0 : } else {
90 0 : AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", eventsnumber));
91 0 : fSignal = NULL;
92 0 : fEventsNumber = 0;
93 : }
94 0 : }
95 :
96 :
97 :
98 : //______________________________________________________________________________
99 : AliITSChannelDaSSD::AliITSChannelDaSSD(const AliITSChannelDaSSD& strip) :
100 0 : TObject(strip),
101 0 : fStripId(strip.fStripId),
102 0 : fEventsNumber(strip.fEventsNumber),
103 0 : fSignal(NULL),
104 0 : fPedestal(strip.fPedestal),
105 0 : fNoise(strip.fNoise),
106 0 : fNoiseCM(strip.fNoiseCM),
107 0 : fNOverflowEv(strip.fNOverflowEv)
108 0 : {
109 : // copy constructor
110 0 : if ((strip.fEventsNumber > 0) && (strip.fSignal)) {
111 0 : fSignal = new (nothrow) Short_t[strip.fEventsNumber];
112 0 : if (fSignal) {
113 0 : memcpy(fSignal, strip.fSignal, (strip.fEventsNumber * sizeof(Short_t)));
114 0 : } else {
115 0 : AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", strip.fEventsNumber));
116 0 : fSignal = NULL;
117 0 : fEventsNumber = 0;
118 : }
119 : }
120 0 : }
121 :
122 :
123 :
124 : //______________________________________________________________________________
125 : AliITSChannelDaSSD& AliITSChannelDaSSD::operator = (const AliITSChannelDaSSD& strip)
126 : {
127 : // assignment operator
128 0 : if (this == &strip) return *this;
129 0 : TObject::operator=(strip);
130 0 : if (fSignal) { delete [] fSignal; fSignal = NULL; }
131 0 : fStripId = strip.fStripId;
132 0 : fEventsNumber = strip.fEventsNumber;
133 0 : fPedestal = strip.fPedestal;
134 0 : fNoise = strip.fNoise;
135 0 : fNoiseCM = strip.fNoiseCM;
136 0 : fNOverflowEv = strip.fNOverflowEv;
137 0 : if ((strip.fEventsNumber > 0) && (strip.fSignal)) fSignal = new (nothrow) Short_t[strip.fEventsNumber];
138 0 : else return *this;
139 0 : if (fSignal) {
140 0 : memcpy(fSignal, strip.fSignal, (strip.fEventsNumber * sizeof(Short_t)));
141 0 : } else {
142 0 : AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", strip.fEventsNumber));
143 0 : fSignal = NULL;
144 0 : fEventsNumber = 0;
145 : }
146 0 : return *this;
147 0 : }
148 :
149 :
150 : //______________________________________________________________________________
151 : AliITSChannelDaSSD::~AliITSChannelDaSSD()
152 0 : {
153 : // Destructor
154 0 : if (fSignal) delete [] fSignal;
155 0 : }
156 :
157 :
158 : //______________________________________________________________________________
159 : Bool_t AliITSChannelDaSSD::SetEvenetsNumber(const Long_t eventsnumber)
160 : {
161 : // Allocate array for events data
162 0 : if (fSignal) {delete [] fSignal; fSignal = NULL; }
163 0 : fSignal = new (nothrow) Short_t[eventsnumber];
164 0 : if (fSignal) {
165 0 : fEventsNumber = eventsnumber;
166 0 : memset(fSignal, fgkDefaultSignal, (eventsnumber * sizeof(Short_t)));
167 0 : return kTRUE;
168 : } else {
169 0 : AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", eventsnumber));
170 0 : fSignal = NULL;
171 0 : fEventsNumber = 0;
172 0 : return kFALSE;
173 : }
174 0 : }
175 :
176 :
177 : //______________________________________________________________________________
178 : Bool_t AliITSChannelDaSSD::SetSignal(const Long_t eventnumber, const Short_t signal)
179 : {
180 : // put signal value to array
181 0 : if (eventnumber < fEventsNumber && fSignal)
182 : {
183 0 : fSignal[eventnumber] = signal;
184 0 : return kTRUE;
185 : }
186 0 : return kFALSE;
187 0 : }
|