7e8bda2e02f84668c81fbf39ed7f0b7d6212d30d
[u/mrichter/AliRoot.git] / ITS / AliITSModuleDaSSD.h
1 #ifndef ALIITSMODULEDASSD_H
2 #define ALIITSMODULEDASSD_H
3
4
5 #include <iostream>
6 #include "TObject.h"
7 #include "AliITSNoiseSSD.h"
8
9 #include "AliITSChannelDaSSD.h"
10
11 class AliITSModuleDaSSD : public TObject {
12   public :
13     AliITSModuleDaSSD();
14     AliITSModuleDaSSD(const Int_t numberofstrips);
15     AliITSModuleDaSSD(const Int_t numberofstrips, const Long_t eventsnumber);
16     AliITSModuleDaSSD(const UChar_t ddlID, const UChar_t ad, const UChar_t adc, const UShort_t moduleID);
17     AliITSModuleDaSSD(const AliITSModuleDaSSD& module);
18     AliITSModuleDaSSD& operator = (const AliITSModuleDaSSD& module);
19     virtual ~AliITSModuleDaSSD();
20     
21     UChar_t      GetDdlId()    const { return fDdlId; }
22     UChar_t      GetAD()       const { return fAd; }
23     UChar_t      GetADC()      const { return fAdc; }
24     UShort_t     GetModuleId() const { return fModuleId; }
25     Int_t        GetModuleRorcEquipId()   const { return fEquipId; }
26     Int_t        GetModuleRorcEquipType() const { return fEquipType; }
27     Int_t        GetNumberOfStrips() const { return fNumberOfStrips; }
28     Long_t       GetEventsNumber()   const { return fEventsNumber; }
29 //    AliITSChannelDaSSD*  GetStrip()  const { return fStrips; }
30     AliITSChannelDaSSD*  GetStrip(const Int_t stripnumber)  const 
31                                 { return (fStrips) ? fStrips[stripnumber] : NULL; }
32
33     AliITSNoiseSSD* GetCalibrationSSDModule() const;
34     
35     Bool_t  SetEventsNumber(const Long_t eventsnumber);
36     Bool_t  SetModuleIdData (const UChar_t ddlID, const UChar_t ad, const UChar_t adc, const UShort_t moduleID);
37     void    SetModuleFEEId (const UChar_t ddlID, const UChar_t ad, const UChar_t adc);
38     void    SetModuleRorcId (const Int_t equipid, const Int_t equiptype);
39     void    SetModuleId (const UShort_t moduleID) { fModuleId = moduleID; }
40     void    SetStrip(AliITSChannelDaSSD* strip, const Int_t strID) { if ((fStrips) && (strID <= fNumberOfStrips)) fStrips[strID] = strip; }
41     void    DeleteSignal() {if (fStrips) for (Int_t i = 0; i < fNumberOfStrips; i++) 
42                                             if (fStrips[i]) fStrips[i]->DeleteSignal(); fEventsNumber = 0; }
43     static Int_t GetStripsPerModuleConst() { return  fgkStripsPerModule;  }
44     static Int_t GetPNStripsPerModule()    { return  fgkPNStripsPerModule;}
45     static Int_t GetStripsPerChip()        { return  fgkStripsPerChip;    }
46
47   protected :
48     static const Int_t   fgkStripsPerModule   = 1536;
49     static const Int_t   fgkPNStripsPerModule = 768;
50     static const Int_t   fgkStripsPerChip     = 128;
51     static const UChar_t fgkMaxAdNumber       = 9;
52     static const UChar_t fgkMaxAdcNumber      = 13;
53
54     Int_t          fEquipId;        // required to access to rorc
55     Int_t          fEquipType;
56     UChar_t        fDdlId;          // index of DDL, ITS SSD: 33-48
57     UChar_t        fAd;             // index of AD module     0-9
58     UChar_t        fAdc;            // index of ADC module    0-5, 8-13
59     UShort_t       fModuleId;       // Module number          0-1697
60     
61     Int_t                 fNumberOfStrips;
62     AliITSChannelDaSSD  **fStrips;         //[fNumberOfStrips]  Array of *AliITSChannelDaSSD
63
64     Long_t            fEventsNumber;       // number of events for fsignal memory allocation
65
66   private:
67     Bool_t ForbiddenAdcNumber (const UChar_t adcn) const { return ((adcn == 6) || (adcn == 7)); }
68  
69     ClassDef(AliITSModuleDaSSD, 1) 
70  
71 };
72
73 #endif