o small fix
[u/mrichter/AliRoot.git] / TRD / AliTRDdigitizer.h
1 #ifndef ALITRDDIGITIZER_H
2 #define ALITRDDIGITIZER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ////////////////////////////////////////////////////////////////////////////
9 //                                                                        //
10 //  Produces digits from the hits information                             //
11 //                                                                        //
12 ////////////////////////////////////////////////////////////////////////////
13
14 #include "AliDigitizer.h"
15
16 class TFile;
17 class TF1;
18
19 class AliDigitizationInput;
20 class AliRunLoader;
21
22 class AliTRD;
23 class AliTRDdigitsManager;
24 class AliTRDgeometry;
25 class AliTRDarraySignal;
26 class AliTRDarrayADC;
27 class AliTRDmcmSim;
28
29 class AliTRDdigitizer : public AliDigitizer {
30
31  public:
32
33   AliTRDdigitizer();
34   AliTRDdigitizer(const Text_t *name, const Text_t *title);
35   AliTRDdigitizer(AliDigitizationInput* digInput, const Text_t *name, const Text_t *title);
36   AliTRDdigitizer(AliDigitizationInput* digInput);
37   AliTRDdigitizer(const AliTRDdigitizer &d);
38   virtual             ~AliTRDdigitizer();
39   AliTRDdigitizer     &operator=(const AliTRDdigitizer &d);
40
41   virtual void         Copy(TObject &d) const;
42           Bool_t       InitDetector();
43           void         InitOutput(Int_t iEvent);
44   virtual void         Digitize(const Option_t * option = 0);  
45
46   virtual Bool_t       Open(const Char_t *file, Int_t nEvent = 0);
47   virtual Bool_t       Open(AliRunLoader * const runLoader, Int_t nEvent = 0);
48   virtual Bool_t       MakeBranch(TTree *tree) const;
49   virtual Bool_t       WriteDigits() const;
50
51   virtual void         AddSDigitsManager(AliTRDdigitsManager *manager);
52   virtual void         DeleteSDigitsManager();
53
54   virtual Bool_t       MakeDigits();
55
56           Bool_t       SortHits(Float_t **hits, Int_t *nhit);
57           Bool_t       ConvertHits(Int_t det, const Float_t * const hits, Int_t nhit, AliTRDarraySignal *signals);
58           Bool_t       ConvertSignals(Int_t det, AliTRDarraySignal *signals);
59
60           Bool_t       Digits2SDigits(AliTRDdigitsManager * const manDig, AliTRDdigitsManager * const manSDig);
61           Bool_t       SDigits2Digits();
62           Bool_t       MergeSDigits();
63           Bool_t       ConvertSDigits();
64
65           Bool_t       Signal2ADC(Int_t det, AliTRDarraySignal *signals);
66           Bool_t       Signal2SDigits(Int_t det, AliTRDarraySignal *signals);
67           Bool_t       CopyDictionary(Int_t det);
68           void         CompressOutputArrays(Int_t det);
69
70           void         SetCompress(Int_t c = 1)                    { fCompress        = c;   }
71           void         SetSDigits(Int_t v = 1)                     { fSDigits         = v;   }
72           void         SetEvent(Int_t v = 0)                       { fEvent           = v;   }
73           void         SetManager(AliTRDdigitsManager * const man) { fDigitsManager   = man; }
74           void         SetGeometry(AliTRDgeometry * const geo)     { fGeo             = geo; }
75           void         SetMergeSignalOnly(Bool_t m = kTRUE)        { fMergeSignalOnly = m;   }
76
77   AliTRDdigitsManager *Digits() const                              { return fDigitsManager;  }
78
79           Bool_t       GetCompress() const                         { return fCompress;       }
80           Bool_t       GetSDigits() const                          { return fSDigits;        }
81
82           Int_t        Diffusion(Float_t vdrift, Double_t absdriftlength, Double_t exbvalue
83                                , Double_t &lRow, Double_t &lCol, Double_t &lTime);
84           void         RunDigitalProcessing(Int_t det = 0);
85
86  protected:
87
88   AliRunLoader        *fRunLoader;          //! Local pointer
89   AliTRDdigitsManager *fDigitsManager;      //! Manager for the output digits
90   AliTRDdigitsManager *fSDigitsManager;     //! Manager for the summed input s-digits
91   TList               *fSDigitsManagerList; //! List of managers of input s-digits
92   AliTRD              *fTRD;                //! TRD detector class
93   AliTRDgeometry      *fGeo;                //! TRD geometry
94
95   AliTRDmcmSim        *fMcmSim;             //! MCM simulation for digital processing
96
97           Int_t        fEvent;              //! Event number
98           Int_t       *fMasks;              //! Masks for the merging
99           Bool_t       fCompress;           //  Switch to keep only compressed data in memory
100           Bool_t       fSDigits;            //  Switch for the summable digits
101           Bool_t       fMergeSignalOnly;    //  Merge only detectors that contain a signal
102
103   ClassDef(AliTRDdigitizer,20)              //  Produces TRD-Digits
104
105 };
106 #endif