ROOT logo
#ifndef ALIITSCHANNELDASSD_H
#define ALIITSCHANNELDASSD_H

/* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
/*                                                                        */
/* $Id$ */

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

#include "TObject.h"


class AliITSChannelDaSSD : public TObject {
  public :
    AliITSChannelDaSSD();
    explicit AliITSChannelDaSSD(const UShort_t stripId);
    AliITSChannelDaSSD(const UShort_t stripId, const Long_t eventsnumber);
    AliITSChannelDaSSD(const AliITSChannelDaSSD& strip);
    AliITSChannelDaSSD& operator = (const AliITSChannelDaSSD& strip);
    virtual ~AliITSChannelDaSSD();
    
    UShort_t  GetStripId() const { return fStripId; }
    Long_t    GetEventsNumber() const { return fEventsNumber; }
    Short_t*  GetSignal()  const { return fSignal; }
    Short_t   GetSignal(const Long_t eventnumber)  const 
                           { return (eventnumber < fEventsNumber && fSignal) ? *(fSignal+eventnumber) : fgkDefaultSignal; }
    
    Float_t  GetPedestal() const { return fPedestal; }
    Float_t  GetNoise()    const { return fNoise;    }
    Float_t  GetNoiseCM()  const { return fNoiseCM;  }
    Long_t   GetOverflowNumber() const { return fNOverflowEv; }
    Bool_t   CheckNoise()   const { return (fNoise < fgkUndefinedValue) ? kTRUE : kFALSE; }
    Bool_t   CheckNoiseCM() const { return (fNoiseCM < fgkUndefinedValue) ? kTRUE : kFALSE; }

    Bool_t    SetEvenetsNumber(const Long_t eventsnumber);
    Bool_t    SetSignal(const Long_t eventnumber, const Short_t signal);
    void      SetStripId(const UShort_t stripId) { fStripId = stripId; }

    void      SetPedestal(Float_t pedestal) { fPedestal = pedestal; }
    void      SetNoise(Float_t noise)   { fNoise = noise; }
    void      SetNoiseCM(Float_t noise) { fNoiseCM = noise; }
    void      SetOverflowNumber(Long_t ovn) {fNOverflowEv = ovn; }
    void      ClearNoise() { if (fNoise < fgkUndefinedValue) fNoise = fgkUndefinedValue; }
    void      ClearNoiseCM() { if (fNoiseCM < fgkUndefinedValue) fNoiseCM = fgkUndefinedValue; }
    void      ClearPedestal() { if (fPedestal < fgkUndefinedValue) fPedestal = fgkUndefinedValue; }
    void      ClearSignal() { if (fSignal) for (Int_t i = 0; i < fEventsNumber; i++) 
                                             fSignal[i] = 0x100 * fgkDefaultSignal + fgkDefaultSignal; }
    void      DeleteSignal() { if (fSignal) { delete [] fSignal; fSignal = NULL; fEventsNumber = 0;} }

    static  Short_t  GetOverflowConst()  { return fgkSignalOverflow;  }
    static  Short_t  GetUnderflowConst() { return fgkSignalUnderflow; }
    static  Float_t  GetUndefinedValue() { return fgkUndefinedValue;  }
    static  Short_t  GetMaxStripIdConst(){ return fgkMaxStripId;      }

  protected :
    static const Short_t fgkMinStripId;         // minimum strip id
    static const Short_t fgkMaxStripId;         // maximum strip id

    static const Short_t  fgkSignalOverflow;     // ADC overflow value
    static const Short_t  fgkSignalUnderflow;    // ADC underflow value
    static const UShort_t fgkDefaultSignal;      // initialization value for fNoise, fPedestal, fSignal[i]
    static const Float_t  fgkUndefinedValue;     // constant value which indicates that fNoise, fPedestal is undefined
  
    UShort_t          fStripId;             //  channel = strip number within SSD module 0-1535
    Long_t            fEventsNumber;        //  number of events for fSignal memory allocation
    Short_t          *fSignal;              //! array of signal data
    
    Float_t           fPedestal;            //  pedestal
    Float_t           fNoise;               //  noise
    Float_t           fNoiseCM;             //  noise with CM correction
    Long_t            fNOverflowEv;         //  Number of events which exceed the pedestal calculation threshold
		      
    ClassDef(AliITSChannelDaSSD, 3)
};

#endif
 AliITSChannelDaSSD.h:1
 AliITSChannelDaSSD.h:2
 AliITSChannelDaSSD.h:3
 AliITSChannelDaSSD.h:4
 AliITSChannelDaSSD.h:5
 AliITSChannelDaSSD.h:6
 AliITSChannelDaSSD.h:7
 AliITSChannelDaSSD.h:8
 AliITSChannelDaSSD.h:9
 AliITSChannelDaSSD.h:10
 AliITSChannelDaSSD.h:11
 AliITSChannelDaSSD.h:12
 AliITSChannelDaSSD.h:13
 AliITSChannelDaSSD.h:14
 AliITSChannelDaSSD.h:15
 AliITSChannelDaSSD.h:16
 AliITSChannelDaSSD.h:17
 AliITSChannelDaSSD.h:18
 AliITSChannelDaSSD.h:19
 AliITSChannelDaSSD.h:20
 AliITSChannelDaSSD.h:21
 AliITSChannelDaSSD.h:22
 AliITSChannelDaSSD.h:23
 AliITSChannelDaSSD.h:24
 AliITSChannelDaSSD.h:25
 AliITSChannelDaSSD.h:26
 AliITSChannelDaSSD.h:27
 AliITSChannelDaSSD.h:28
 AliITSChannelDaSSD.h:29
 AliITSChannelDaSSD.h:30
 AliITSChannelDaSSD.h:31
 AliITSChannelDaSSD.h:32
 AliITSChannelDaSSD.h:33
 AliITSChannelDaSSD.h:34
 AliITSChannelDaSSD.h:35
 AliITSChannelDaSSD.h:36
 AliITSChannelDaSSD.h:37
 AliITSChannelDaSSD.h:38
 AliITSChannelDaSSD.h:39
 AliITSChannelDaSSD.h:40
 AliITSChannelDaSSD.h:41
 AliITSChannelDaSSD.h:42
 AliITSChannelDaSSD.h:43
 AliITSChannelDaSSD.h:44
 AliITSChannelDaSSD.h:45
 AliITSChannelDaSSD.h:46
 AliITSChannelDaSSD.h:47
 AliITSChannelDaSSD.h:48
 AliITSChannelDaSSD.h:49
 AliITSChannelDaSSD.h:50
 AliITSChannelDaSSD.h:51
 AliITSChannelDaSSD.h:52
 AliITSChannelDaSSD.h:53
 AliITSChannelDaSSD.h:54
 AliITSChannelDaSSD.h:55
 AliITSChannelDaSSD.h:56
 AliITSChannelDaSSD.h:57
 AliITSChannelDaSSD.h:58
 AliITSChannelDaSSD.h:59
 AliITSChannelDaSSD.h:60
 AliITSChannelDaSSD.h:61
 AliITSChannelDaSSD.h:62
 AliITSChannelDaSSD.h:63
 AliITSChannelDaSSD.h:64
 AliITSChannelDaSSD.h:65
 AliITSChannelDaSSD.h:66
 AliITSChannelDaSSD.h:67
 AliITSChannelDaSSD.h:68
 AliITSChannelDaSSD.h:69
 AliITSChannelDaSSD.h:70
 AliITSChannelDaSSD.h:71
 AliITSChannelDaSSD.h:72
 AliITSChannelDaSSD.h:73
 AliITSChannelDaSSD.h:74
 AliITSChannelDaSSD.h:75
 AliITSChannelDaSSD.h:76
 AliITSChannelDaSSD.h:77
 AliITSChannelDaSSD.h:78
 AliITSChannelDaSSD.h:79
 AliITSChannelDaSSD.h:80
 AliITSChannelDaSSD.h:81
 AliITSChannelDaSSD.h:82