]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSModuleDaSSD.h
update of data handling classes for SSD calibration
[u/mrichter/AliRoot.git] / ITS / AliITSModuleDaSSD.h
1 #ifndef ALIITSMODULEDASSD_H
2 #define ALIITSMODULEDASSD_H
3
4
5 /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
6  * See cxx source for full Copyright notice                               */
7 /*                                                                        */
8 /* $Id:$ */
9 ///////////////////////////////////////////////////////////////////////////////
10 ///
11 /// This class provides storage container ITS SSD module calibration data
12 /// used by DA. 
13 ///
14 ///////////////////////////////////////////////////////////////////////////////
15
16 #include "TObject.h"
17 #include "TArrayF.h"
18 #include "AliITSChannelDaSSD.h"
19
20 class AliITSNoiseSSD;
21 class AliITSPedestalSSD;
22 class AliITSBadChannelsSSD;
23
24 class AliITSModuleDaSSD : public TObject {
25   public :
26     AliITSModuleDaSSD();
27     AliITSModuleDaSSD(const Int_t numberofstrips);
28     AliITSModuleDaSSD(const Int_t numberofstrips, const Long_t eventsnumber);
29     AliITSModuleDaSSD(const UChar_t ddlID, const UChar_t ad, const UChar_t adc, const UShort_t moduleID);
30     AliITSModuleDaSSD(const AliITSModuleDaSSD& module);
31     AliITSModuleDaSSD& operator = (const AliITSModuleDaSSD& module);
32     virtual ~AliITSModuleDaSSD();
33     
34     UChar_t      GetDdlId()    const { return fDdlId; }
35     UChar_t      GetAD()       const { return fAd; }
36     UChar_t      GetADC()      const { return fAdc; }
37     Short_t      GetModuleId() const { return fModuleId; }
38     Int_t        GetModuleRorcEquipId()   const { return fEquipId; }
39     Int_t        GetModuleRorcEquipType() const { return fEquipType; }
40     Int_t        GetNumberOfStrips() const { return fNumberOfStrips; }
41     Long_t       GetEventsNumber()   const { return fEventsNumber; }
42     Float_t*     GetCM(const Int_t chipn)   const { return chipn < fNumberOfChips ? fCm[chipn].GetArray() : NULL; }
43     Float_t      GetCM(const Int_t chipn, const Long_t evn)   const;
44     TArrayF*     GetCm() const { return fCm; }
45     Int_t        GetNumberOfChips() const  { return fNumberOfChips; }
46     AliITSChannelDaSSD*  GetStrip(const Int_t stripnumber)  const 
47                                 { return (fStrips) ? fStrips[stripnumber] : NULL; }
48     AliITSNoiseSSD*       GetCalibrationNoise() const;
49     AliITSPedestalSSD*    GetCalibrationPedestal() const;
50     AliITSBadChannelsSSD* GetCalibrationBadChannels() const;
51     Bool_t  SetEventsNumber(const Long_t eventsnumber);
52     Bool_t  SetNumberOfStrips(const Int_t numberofstrips);
53     Bool_t  SetNumberOfChips(const Int_t nchips);
54     Bool_t  SetModuleIdData (const UChar_t ddlID, const UChar_t ad, const UChar_t adc, const Short_t moduleID);
55     void    SetModuleFEEId (const UChar_t ddlID, const UChar_t ad, const UChar_t adc);
56     void    SetModuleRorcId (const Int_t equipid, const Int_t equiptype);
57     void    SetModuleId (const Short_t moduleID) { fModuleId = moduleID; }
58     void    SetStrip(AliITSChannelDaSSD* strip, const Int_t strID) { if ((fStrips) && (strID <= fNumberOfStrips)) fStrips[strID] = strip; }
59     void    SetCM (Float_t* cm, const Int_t chipn)  { if (chipn < fNumberOfChips) fCm[chipn].Set(fCm[chipn].GetSize(), cm); }
60     Bool_t  SetCM (const Float_t cm, const Int_t chipn, const Int_t evn);
61     void    DeleteCM () {if (fCm) { delete [] fCm; fNumberOfChips = 0; fCm = NULL; } }
62     void    DeleteSignal() {if (fStrips) for (Int_t i = 0; i < fNumberOfStrips; i++) 
63                                             if (fStrips[i]) fStrips[i]->DeleteSignal(); fEventsNumber = 0; }
64     static Int_t GetStripsPerModuleConst() { return  fgkStripsPerModule;  }
65     static Int_t GetPNStripsPerModule()    { return  fgkPNStripsPerModule;}
66     static Int_t GetStripsPerChip()        { return  fgkStripsPerChip;    }
67     static Int_t GetChipsPerModuleConst()  { return  fgkChipsPerModule;   }
68
69   protected :
70     static const Int_t   fgkStripsPerModule;    // Number of strips per SSD module
71     static const Int_t   fgkPNStripsPerModule;  // Number of N/P strips per SSD module
72     static const Int_t   fgkStripsPerChip;      // Number of strips per chip HAL25
73     static const UChar_t fgkMaxAdNumber;        // MAx SSD FEROM AD number
74     static const UChar_t fgkMaxAdcNumber;       // MAx SSD FEROM ADC number
75     static const Int_t   fgkChipsPerModule;     // Number of HAL25 chips per SSD module
76
77     Int_t          fEquipId;        // required to access to rorc
78     Int_t          fEquipType;      // fEquipType, required to access to rorc
79     UChar_t        fDdlId;          // index of DDL, ITS SSD: 33-48
80     UChar_t        fAd;             // index of AD module     0-9
81     UChar_t        fAdc;            // index of ADC module    0-5, 8-13
82     Short_t        fModuleId;       // Module number          500-2197
83     
84     Int_t                 fNumberOfStrips;     // Number of AliITSChannelDaSSD* allocated
85     AliITSChannelDaSSD  **fStrips;             //[fNumberOfStrips]  Array of *AliITSChannelDaSSD
86     
87     Int_t                 fNumberOfChips;      // Number of TArrayF objects allocated for CM   
88     TArrayF              *fCm;                 //[fNumberOfChips]    CM
89
90     Long_t            fEventsNumber;           // number of events for fsignal memory allocation
91
92   private:
93     Bool_t ForbiddenAdcNumber (const UChar_t adcn) const { return ((adcn == 6) || (adcn == 7)); }
94  
95     ClassDef(AliITSModuleDaSSD, 2) 
96  
97 };
98
99 #endif