ROOT logo
/**************************************************************************
 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$  */

///////////////////////////////////////////////////////////////////////////////
///
/// This class provides storage container ITS SSD channel callibration data
/// used by DA. 
///
///////////////////////////////////////////////////////////////////////////////


#include <Riostream.h>
#include "AliITSChannelDaSSD.h"
#include "TString.h"
#include "AliLog.h"

ClassImp(AliITSChannelDaSSD)

using namespace std;

const Short_t AliITSChannelDaSSD::fgkMinStripId = 0;               // minimum strip id
const Short_t AliITSChannelDaSSD::fgkMaxStripId = 1535;            // maximum strip id

const Short_t  AliITSChannelDaSSD::fgkSignalOverflow  =  2047;      // ADC overflow value
const Short_t  AliITSChannelDaSSD::fgkSignalUnderflow = -2048;      // ADC underflow value
const UShort_t AliITSChannelDaSSD::fgkDefaultSignal   =  0x7F;      // initialization value for fNoise, fPedestal, fSignal[i]
const Float_t  AliITSChannelDaSSD::fgkUndefinedValue  =  32639.0f;  // = 0x7F7F


//______________________________________________________________________________
AliITSChannelDaSSD::AliITSChannelDaSSD() :
  fStripId(0),
  fEventsNumber(0),
  fSignal(NULL),
  fPedestal(fgkUndefinedValue),
  fNoise(fgkUndefinedValue),
  fNoiseCM(fgkUndefinedValue),
  fNOverflowEv(0)
{
// Default costructor
}


//______________________________________________________________________________
AliITSChannelDaSSD::AliITSChannelDaSSD(const UShort_t stripID) :
  fStripId(stripID),
  fEventsNumber(0),
  fSignal(NULL),
  fPedestal(fgkUndefinedValue),
  fNoise(fgkUndefinedValue),
  fNoiseCM(fgkUndefinedValue),
  fNOverflowEv(0)
{
// Costructor, initialize channal id
}


//______________________________________________________________________________
AliITSChannelDaSSD::AliITSChannelDaSSD(const UShort_t stripID, const Long_t eventsnumber) :
  fStripId(stripID),
  fEventsNumber(0),
  fSignal(NULL),
  fPedestal(fgkUndefinedValue),
  fNoise(fgkUndefinedValue),
  fNoiseCM(fgkUndefinedValue),
  fNOverflowEv(0)
{
// Costructor, initialize channal id and allocate array for events data
  if (stripID > fgkMaxStripId)
    AliWarning(Form("AliITSChannelDaSSD: Wrong StripID: %i", stripID));
  fSignal = new (nothrow) Short_t[eventsnumber];
  if (fSignal) {
    fEventsNumber = eventsnumber;
    memset(fSignal, fgkDefaultSignal, (eventsnumber * sizeof(Short_t)));
  } else {
    AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", eventsnumber));
    fSignal = NULL;
    fEventsNumber = 0;
  }
}



//______________________________________________________________________________
AliITSChannelDaSSD::AliITSChannelDaSSD(const AliITSChannelDaSSD& strip) :
  TObject(strip),
  fStripId(strip.fStripId),
  fEventsNumber(strip.fEventsNumber),
  fSignal(NULL),
  fPedestal(strip.fPedestal),
  fNoise(strip.fNoise),
  fNoiseCM(strip.fNoiseCM),
  fNOverflowEv(strip.fNOverflowEv)
{
  // copy constructor
  if ((strip.fEventsNumber > 0) && (strip.fSignal)) {
    fSignal = new (nothrow) Short_t[strip.fEventsNumber];
    if (fSignal) {
      memcpy(fSignal, strip.fSignal, (strip.fEventsNumber * sizeof(Short_t)));
    } else {
      AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", strip.fEventsNumber));
      fSignal = NULL;
      fEventsNumber = 0;
    }
  }  
}



//______________________________________________________________________________
AliITSChannelDaSSD& AliITSChannelDaSSD::operator = (const AliITSChannelDaSSD& strip)
{
// assignment operator
  if (this == &strip)  return *this;
  TObject::operator=(strip);  
  if (fSignal) { delete [] fSignal; fSignal = NULL; }
  fStripId = strip.fStripId;
  fEventsNumber = strip.fEventsNumber;
  fPedestal = strip.fPedestal;
  fNoise = strip.fNoise;
  fNoiseCM = strip.fNoiseCM;
  fNOverflowEv = strip.fNOverflowEv;
  if ((strip.fEventsNumber > 0) && (strip.fSignal)) fSignal = new (nothrow) Short_t[strip.fEventsNumber];
  else return *this;
  if (fSignal) {
    memcpy(fSignal, strip.fSignal, (strip.fEventsNumber * sizeof(Short_t)));
  } else {
    AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", strip.fEventsNumber));
    fSignal = NULL;
    fEventsNumber = 0;
  }
  return *this;
}


//______________________________________________________________________________
AliITSChannelDaSSD::~AliITSChannelDaSSD()
{
// Destructor
  if (fSignal) delete [] fSignal;
}


//______________________________________________________________________________
Bool_t AliITSChannelDaSSD::SetEvenetsNumber(const Long_t eventsnumber)
{
// Allocate array for events data
  if (fSignal) {delete [] fSignal; fSignal = NULL; }
  fSignal = new (nothrow) Short_t[eventsnumber];
  if (fSignal) {
    fEventsNumber = eventsnumber;
    memset(fSignal, fgkDefaultSignal, (eventsnumber * sizeof(Short_t)));
    return kTRUE;
  } else {
    AliError(Form("AliITSChannelDaSSD: Error allocating memory for %ld Short_t objects!", eventsnumber));
    fSignal = NULL;
    fEventsNumber = 0;
    return kFALSE;
  }
}


//______________________________________________________________________________
Bool_t AliITSChannelDaSSD::SetSignal(const Long_t eventnumber, const Short_t signal)
{
// put signal value to array 
  if (eventnumber < fEventsNumber && fSignal)
  {
     fSignal[eventnumber] = signal;
     return kTRUE;
  }
  return kFALSE;
}
 AliITSChannelDaSSD.cxx:1
 AliITSChannelDaSSD.cxx:2
 AliITSChannelDaSSD.cxx:3
 AliITSChannelDaSSD.cxx:4
 AliITSChannelDaSSD.cxx:5
 AliITSChannelDaSSD.cxx:6
 AliITSChannelDaSSD.cxx:7
 AliITSChannelDaSSD.cxx:8
 AliITSChannelDaSSD.cxx:9
 AliITSChannelDaSSD.cxx:10
 AliITSChannelDaSSD.cxx:11
 AliITSChannelDaSSD.cxx:12
 AliITSChannelDaSSD.cxx:13
 AliITSChannelDaSSD.cxx:14
 AliITSChannelDaSSD.cxx:15
 AliITSChannelDaSSD.cxx:16
 AliITSChannelDaSSD.cxx:17
 AliITSChannelDaSSD.cxx:18
 AliITSChannelDaSSD.cxx:19
 AliITSChannelDaSSD.cxx:20
 AliITSChannelDaSSD.cxx:21
 AliITSChannelDaSSD.cxx:22
 AliITSChannelDaSSD.cxx:23
 AliITSChannelDaSSD.cxx:24
 AliITSChannelDaSSD.cxx:25
 AliITSChannelDaSSD.cxx:26
 AliITSChannelDaSSD.cxx:27
 AliITSChannelDaSSD.cxx:28
 AliITSChannelDaSSD.cxx:29
 AliITSChannelDaSSD.cxx:30
 AliITSChannelDaSSD.cxx:31
 AliITSChannelDaSSD.cxx:32
 AliITSChannelDaSSD.cxx:33
 AliITSChannelDaSSD.cxx:34
 AliITSChannelDaSSD.cxx:35
 AliITSChannelDaSSD.cxx:36
 AliITSChannelDaSSD.cxx:37
 AliITSChannelDaSSD.cxx:38
 AliITSChannelDaSSD.cxx:39
 AliITSChannelDaSSD.cxx:40
 AliITSChannelDaSSD.cxx:41
 AliITSChannelDaSSD.cxx:42
 AliITSChannelDaSSD.cxx:43
 AliITSChannelDaSSD.cxx:44
 AliITSChannelDaSSD.cxx:45
 AliITSChannelDaSSD.cxx:46
 AliITSChannelDaSSD.cxx:47
 AliITSChannelDaSSD.cxx:48
 AliITSChannelDaSSD.cxx:49
 AliITSChannelDaSSD.cxx:50
 AliITSChannelDaSSD.cxx:51
 AliITSChannelDaSSD.cxx:52
 AliITSChannelDaSSD.cxx:53
 AliITSChannelDaSSD.cxx:54
 AliITSChannelDaSSD.cxx:55
 AliITSChannelDaSSD.cxx:56
 AliITSChannelDaSSD.cxx:57
 AliITSChannelDaSSD.cxx:58
 AliITSChannelDaSSD.cxx:59
 AliITSChannelDaSSD.cxx:60
 AliITSChannelDaSSD.cxx:61
 AliITSChannelDaSSD.cxx:62
 AliITSChannelDaSSD.cxx:63
 AliITSChannelDaSSD.cxx:64
 AliITSChannelDaSSD.cxx:65
 AliITSChannelDaSSD.cxx:66
 AliITSChannelDaSSD.cxx:67
 AliITSChannelDaSSD.cxx:68
 AliITSChannelDaSSD.cxx:69
 AliITSChannelDaSSD.cxx:70
 AliITSChannelDaSSD.cxx:71
 AliITSChannelDaSSD.cxx:72
 AliITSChannelDaSSD.cxx:73
 AliITSChannelDaSSD.cxx:74
 AliITSChannelDaSSD.cxx:75
 AliITSChannelDaSSD.cxx:76
 AliITSChannelDaSSD.cxx:77
 AliITSChannelDaSSD.cxx:78
 AliITSChannelDaSSD.cxx:79
 AliITSChannelDaSSD.cxx:80
 AliITSChannelDaSSD.cxx:81
 AliITSChannelDaSSD.cxx:82
 AliITSChannelDaSSD.cxx:83
 AliITSChannelDaSSD.cxx:84
 AliITSChannelDaSSD.cxx:85
 AliITSChannelDaSSD.cxx:86
 AliITSChannelDaSSD.cxx:87
 AliITSChannelDaSSD.cxx:88
 AliITSChannelDaSSD.cxx:89
 AliITSChannelDaSSD.cxx:90
 AliITSChannelDaSSD.cxx:91
 AliITSChannelDaSSD.cxx:92
 AliITSChannelDaSSD.cxx:93
 AliITSChannelDaSSD.cxx:94
 AliITSChannelDaSSD.cxx:95
 AliITSChannelDaSSD.cxx:96
 AliITSChannelDaSSD.cxx:97
 AliITSChannelDaSSD.cxx:98
 AliITSChannelDaSSD.cxx:99
 AliITSChannelDaSSD.cxx:100
 AliITSChannelDaSSD.cxx:101
 AliITSChannelDaSSD.cxx:102
 AliITSChannelDaSSD.cxx:103
 AliITSChannelDaSSD.cxx:104
 AliITSChannelDaSSD.cxx:105
 AliITSChannelDaSSD.cxx:106
 AliITSChannelDaSSD.cxx:107
 AliITSChannelDaSSD.cxx:108
 AliITSChannelDaSSD.cxx:109
 AliITSChannelDaSSD.cxx:110
 AliITSChannelDaSSD.cxx:111
 AliITSChannelDaSSD.cxx:112
 AliITSChannelDaSSD.cxx:113
 AliITSChannelDaSSD.cxx:114
 AliITSChannelDaSSD.cxx:115
 AliITSChannelDaSSD.cxx:116
 AliITSChannelDaSSD.cxx:117
 AliITSChannelDaSSD.cxx:118
 AliITSChannelDaSSD.cxx:119
 AliITSChannelDaSSD.cxx:120
 AliITSChannelDaSSD.cxx:121
 AliITSChannelDaSSD.cxx:122
 AliITSChannelDaSSD.cxx:123
 AliITSChannelDaSSD.cxx:124
 AliITSChannelDaSSD.cxx:125
 AliITSChannelDaSSD.cxx:126
 AliITSChannelDaSSD.cxx:127
 AliITSChannelDaSSD.cxx:128
 AliITSChannelDaSSD.cxx:129
 AliITSChannelDaSSD.cxx:130
 AliITSChannelDaSSD.cxx:131
 AliITSChannelDaSSD.cxx:132
 AliITSChannelDaSSD.cxx:133
 AliITSChannelDaSSD.cxx:134
 AliITSChannelDaSSD.cxx:135
 AliITSChannelDaSSD.cxx:136
 AliITSChannelDaSSD.cxx:137
 AliITSChannelDaSSD.cxx:138
 AliITSChannelDaSSD.cxx:139
 AliITSChannelDaSSD.cxx:140
 AliITSChannelDaSSD.cxx:141
 AliITSChannelDaSSD.cxx:142
 AliITSChannelDaSSD.cxx:143
 AliITSChannelDaSSD.cxx:144
 AliITSChannelDaSSD.cxx:145
 AliITSChannelDaSSD.cxx:146
 AliITSChannelDaSSD.cxx:147
 AliITSChannelDaSSD.cxx:148
 AliITSChannelDaSSD.cxx:149
 AliITSChannelDaSSD.cxx:150
 AliITSChannelDaSSD.cxx:151
 AliITSChannelDaSSD.cxx:152
 AliITSChannelDaSSD.cxx:153
 AliITSChannelDaSSD.cxx:154
 AliITSChannelDaSSD.cxx:155
 AliITSChannelDaSSD.cxx:156
 AliITSChannelDaSSD.cxx:157
 AliITSChannelDaSSD.cxx:158
 AliITSChannelDaSSD.cxx:159
 AliITSChannelDaSSD.cxx:160
 AliITSChannelDaSSD.cxx:161
 AliITSChannelDaSSD.cxx:162
 AliITSChannelDaSSD.cxx:163
 AliITSChannelDaSSD.cxx:164
 AliITSChannelDaSSD.cxx:165
 AliITSChannelDaSSD.cxx:166
 AliITSChannelDaSSD.cxx:167
 AliITSChannelDaSSD.cxx:168
 AliITSChannelDaSSD.cxx:169
 AliITSChannelDaSSD.cxx:170
 AliITSChannelDaSSD.cxx:171
 AliITSChannelDaSSD.cxx:172
 AliITSChannelDaSSD.cxx:173
 AliITSChannelDaSSD.cxx:174
 AliITSChannelDaSSD.cxx:175
 AliITSChannelDaSSD.cxx:176
 AliITSChannelDaSSD.cxx:177
 AliITSChannelDaSSD.cxx:178
 AliITSChannelDaSSD.cxx:179
 AliITSChannelDaSSD.cxx:180
 AliITSChannelDaSSD.cxx:181
 AliITSChannelDaSSD.cxx:182
 AliITSChannelDaSSD.cxx:183
 AliITSChannelDaSSD.cxx:184
 AliITSChannelDaSSD.cxx:185
 AliITSChannelDaSSD.cxx:186
 AliITSChannelDaSSD.cxx:187