calibration function added
[u/mrichter/AliRoot.git] / PMD / AliPMDDigitizer.h
1 #ifndef ALIPMDDIGITIZER_H
2 #define ALIPMDDIGITIZER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5 //-----------------------------------------------------//
6 //                                                     //
7 //  Header File : PMDDigitization.h, Version 00        //
8 //                                                     //
9 //  Date   : September 20 2002                         //
10 //                                                     //
11 //-----------------------------------------------------//
12
13
14 #include "AliDigitizer.h"
15
16 class TClonesArray;
17 class TFile;
18 class TObjArray;
19 class TParticle;
20 class TTree;
21 class TNtuple;
22
23 class AliLoader;
24 class AliRunLoader;
25 class AliRun;
26 class AliDetector;
27 class AliPMDhit;
28 class AliHit;
29 class AliHeader;
30 class AliRunDigitizer;
31 class AliCDBManager;
32 class AliCDBStorage;
33
34 class AliPMDcell;
35 class AliPMDsdigit;
36 class AliPMDdigit;
37 class AliPMDCalibData;
38
39 class AliPMDDigitizer:public AliDigitizer
40 {
41  public:
42
43   AliPMDDigitizer();
44   AliPMDDigitizer(AliRunDigitizer *manager);
45   virtual ~AliPMDDigitizer();
46
47   void OpengAliceFile(const char *file, Option_t *option);
48
49   void Hits2SDigits(Int_t ievt);
50   void Hits2Digits(Int_t ievt);
51   void SDigits2Digits(Int_t ievt);
52   void Exec(Option_t *option);
53   void MergeSDigits(Int_t filenumber, Int_t troffset);
54   void TrackAssignment2Cell();
55   void MeV2ADC(Float_t mev, Float_t & adc) const;
56   void AddSDigit(Int_t trnumber, Int_t det, Int_t smnumber, 
57                  Int_t irow, Int_t icol, Float_t adc);
58   void AddDigit(Int_t trnumber, Int_t det, Int_t smnumber, 
59                 Int_t irow, Int_t icol, Float_t adc);
60   void  SetZPosition(Float_t zpos);
61   Float_t GetZPosition() const;
62   void ResetCell();
63   void ResetSDigit();
64   void ResetDigit();
65   void ResetCellADC();
66   void UnLoad(Option_t * option);
67
68   Float_t  Gain(Int_t det, Int_t smn, Int_t row, Int_t col) const;
69
70   AliPMDCalibData *GetCalibData() const;
71
72  protected:
73   AliRunLoader *fRunLoader;  //! Pointer to Run Loader
74   AliPMDhit    *fPMDHit;     //! Pointer to specific detector hits
75   AliDetector  *fPMD;        //! Get pointers to Alice detectors 
76                              // and Hits containers 
77   AliLoader    *fPMDLoader;  //! Pointer to specific detector loader
78
79   AliPMDCalibData *fCalibData;  //! calibration data
80
81   TClonesArray *fSDigits;    //! List of summable digits
82   TClonesArray *fDigits;     //! List of digits
83
84   TObjArray     fCell;       //! List of pmd cells
85
86   Int_t   fNsdigit;          // Summable digits counter
87   Int_t   fNdigit;           // Digits counter
88   Int_t   fDetNo;            // Detector Number (0:PRE, 1:CPV)
89   Float_t fZPos;             // z-position of the detector
90
91   static const Int_t fgkTotUM = 24; // Total Unit modules in one detector
92   static const Int_t fgkRow   = 48; // Total number of rows in one unitmodule
93   static const Int_t fgkCol   = 96; // Total number of cols in one unitmodule
94   Float_t fCPV[fgkTotUM][fgkRow][fgkCol]; //! CPV Array containing total edep
95   Float_t fPRE[fgkTotUM][fgkRow][fgkCol]; //! PRE Array containing total edep
96   Int_t   fPRECounter[fgkTotUM][fgkRow][fgkCol]; //! Number of times each cell
97                                                  // is fired in PMD
98   Int_t   fPRETrackNo[fgkTotUM][fgkRow][fgkCol]; //! PRE Array containing track number
99   Int_t   fCPVTrackNo[fgkTotUM][fgkRow][fgkCol]; //! CPV Array containing track number
100
101
102   ClassDef(AliPMDDigitizer,6)    // To digitize PMD Hits
103 };
104 #endif
105