]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSChannelDaSSD.cxx
new version of SSD DA and related classes (O. Borysov)
[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 %i 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(strip.fSignal),
104   fPedestal(strip.fPedestal),
105   fNoise(strip.fNoise),
106   fNoiseCM(strip.fNoiseCM),
107   fNOverflowEv(strip.fNOverflowEv)
108 {
109   // copy constructor
110
111   AliFatal("AliITSChannelDaSSD, copy constructor not implemented");
112 }
113
114
115
116 //______________________________________________________________________________
117 AliITSChannelDaSSD& AliITSChannelDaSSD::operator = (const AliITSChannelDaSSD& strip)
118 {
119 // assignment operator
120
121   AliFatal("operator =, assignment operator not implemented");
122   return *this;
123 }
124
125
126 //______________________________________________________________________________
127 AliITSChannelDaSSD::~AliITSChannelDaSSD()
128 {
129 // Destructor
130   if (fSignal) 
131   {
132      delete [] fSignal;
133   }
134 }
135
136
137 //______________________________________________________________________________
138 Bool_t AliITSChannelDaSSD::SetEvenetsNumber(const Long_t eventsnumber)
139 {
140 // Allocate array for events data
141   if (fSignal) {delete [] fSignal; fSignal = NULL; }
142   fSignal = new (nothrow) Short_t[eventsnumber];
143   if (fSignal) {
144     fEventsNumber = eventsnumber;
145     memset(fSignal, fgkDefaultSignal, (eventsnumber * sizeof(Short_t)));
146     return kTRUE;
147   } else {
148     AliError(Form("AliITSChannelDaSSD: Error allocating memory for %i Short_t objects!", eventsnumber));
149     fSignal = NULL;
150     fEventsNumber = 0;
151     return kFALSE;
152   }
153 }
154
155
156 //______________________________________________________________________________
157 Bool_t AliITSChannelDaSSD::SetSignal(const Long_t eventnumber, const Short_t signal)
158 {
159 // put signal value to array 
160   if (eventnumber < fEventsNumber && fSignal)
161   {
162      fSignal[eventnumber] = signal;
163      return kTRUE;
164   }
165   return kFALSE;
166 }