Coding conventions
[u/mrichter/AliRoot.git] / ITS / AliITSHandleDaSSD.h
1 #ifndef ALIITSHANDLEDASSD_H
2 #define ALIITSHANDLEDASSD_H
3
4 /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6 /*                                                                        */
7 /* $Id$ */
8
9 #include "TObject.h"
10 #include "AliITSModuleDaSSD.h"
11
12 ///////////////////////////////////////////////////////////////////////////////
13 ///
14 /// This class provides ITS SSD data handling
15 /// used by DA. 
16 ///
17 ///////////////////////////////////////////////////////////////////////////////
18
19 class TObjArray;
20
21 class AliITSHandleDaSSD : public TObject {
22   public :
23     AliITSHandleDaSSD();
24     explicit AliITSHandleDaSSD(const Int_t numberofmodules);
25     AliITSHandleDaSSD(const AliITSHandleDaSSD& ssdadldc);
26     AliITSHandleDaSSD& operator = (const AliITSHandleDaSSD& ssdadldc);
27     virtual ~AliITSHandleDaSSD();
28
29     Int_t        GetNumberOfModules() const { return fNumberOfModules; }
30
31     AliITSModuleDaSSD* GetModule (const UChar_t ddlID, const UChar_t ad, const UChar_t adc) const;
32     AliITSModuleDaSSD* GetModule (const Int_t index) const 
33                                {if ((fModules) && (index < fNumberOfModules)) return fModules[index]; else return NULL;}
34     AliITSChannelDaSSD* GetStrip (const UChar_t ddlID, const UChar_t ad, const UChar_t adc, const UShort_t stripID) const;
35     TObjArray*  GetCalibrationSSDLDC()  const;
36     Bool_t      SaveCalibrationSSDLDC(std::string& dafname) const;
37     
38     Bool_t  SetNumberOfModules (const Int_t numberofmodules);
39     Bool_t  SetModule(AliITSModuleDaSSD *const module, const Int_t index); 
40     Bool_t  ReadCalibrationDataFile (const char* fileName, const Long_t eventsnumber);
41
42     virtual Bool_t  CalculatePedestal();
43     virtual Bool_t  CalculateNoise();
44     virtual Bool_t  CalculateNoiseCM();
45
46     void    DeleteSignal() { if (fModules) for (Int_t i = 0; i < fNumberOfModules; i++) if (fModules[i]) fModules[i]->DeleteSignal();}
47
48     static Int_t GetNumberOfSSDModulesConst() { return fgkNumberOfSSDModules; }
49
50   protected :
51     static const Int_t fgkNumberOfSSDModules = 1698;   // Number of SSD modules in ITS
52
53     Int_t                fNumberOfModules;       // number of AliITSModuleDaSSD to allocate
54     AliITSModuleDaSSD  **fModules;               //[fNumberOfModules]  array of all SSD 1698 Modules (2608128 strips)
55     UInt_t               fLdcId;                 //  LDC number, read from header
56     UInt_t               fRunId;                 //  Run number, read from header
57
58   private :
59     Bool_t   CalculateCM(const Int_t modind, const Int_t stripind, Float_t* const cm);
60     Bool_t   RelocateModules();
61     Bool_t   SignalOutOfRange (const Short_t signal) const { return (signal >= AliITSChannelDaSSD::GetOverflowConst()); }
62
63     ClassDef(AliITSHandleDaSSD, 1)
64
65 };
66
67 #endif