Changing once more (hopefully we get it correct this time...) the logic to trig the...
[u/mrichter/AliRoot.git] / ITS / AliITSChannelDaSSD.cxx
CommitLineData
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
31ClassImp(AliITSChannelDaSSD)
32
33using namespace std;
34
c4d90345 35const Short_t AliITSChannelDaSSD::fgkMinStripId = 0; // minimum strip id
36const Short_t AliITSChannelDaSSD::fgkMaxStripId = 1535; // maximum strip id
37
61a57d07 38const Short_t AliITSChannelDaSSD::fgkSignalOverflow = 2047; // ADC overflow value
39const Short_t AliITSChannelDaSSD::fgkSignalUnderflow = -2048; // ADC underflow value
40const UShort_t AliITSChannelDaSSD::fgkDefaultSignal = 0x7F; // initialization value for fNoise, fPedestal, fSignal[i]
41const Float_t AliITSChannelDaSSD::fgkUndefinedValue = 32639.0f; // = 0x7F7F
f67db810 42
c4d90345 43
44//______________________________________________________________________________
f67db810 45AliITSChannelDaSSD::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 59AliITSChannelDaSSD::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 73AliITSChannelDaSSD::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 99AliITSChannelDaSSD::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 125AliITSChannelDaSSD& 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 151AliITSChannelDaSSD::~AliITSChannelDaSSD()
152{
223dda26 153// Destructor
a69c8ba0 154 if (fSignal) delete [] fSignal;
f67db810 155}
156
157
c4d90345 158//______________________________________________________________________________
f67db810 159Bool_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 178Bool_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}