Line data Source code
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 0 : void SetCompress(Int_t c = 1) { fCompress = c; }
71 2 : void SetSDigits(Int_t v = 1) { fSDigits = v; }
72 0 : void SetEvent(Int_t v = 0) { fEvent = v; }
73 0 : void SetManager(AliTRDdigitsManager * const man) { fDigitsManager = man; }
74 0 : void SetGeometry(AliTRDgeometry * const geo) { fGeo = geo; }
75 0 : void SetMergeSignalOnly(Bool_t m = kTRUE) { fMergeSignalOnly = m; }
76 :
77 0 : AliTRDdigitsManager *Digits() const { return fDigitsManager; }
78 :
79 0 : Bool_t GetCompress() const { return fCompress; }
80 0 : 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 6292 : ClassDef(AliTRDdigitizer,20) // Produces TRD-Digits
104 :
105 : };
106 : #endif
|