ROOT logo
#ifndef ALITRDDIGITIZER_H
#define ALITRDDIGITIZER_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  Produces digits from the hits information                             //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include "AliDigitizer.h"

class TFile;
class TF1;

class AliDigitizationInput;
class AliRunLoader;

class AliTRD;
class AliTRDdigitsManager;
class AliTRDgeometry;
class AliTRDarraySignal;
class AliTRDarrayADC;
class AliTRDmcmSim;

class AliTRDdigitizer : public AliDigitizer {

 public:

  AliTRDdigitizer();
  AliTRDdigitizer(const Text_t *name, const Text_t *title);
  AliTRDdigitizer(AliDigitizationInput* digInput, const Text_t *name, const Text_t *title);
  AliTRDdigitizer(AliDigitizationInput* digInput);
  AliTRDdigitizer(const AliTRDdigitizer &d);
  virtual             ~AliTRDdigitizer();
  AliTRDdigitizer     &operator=(const AliTRDdigitizer &d);

  virtual void         Copy(TObject &d) const;
          Bool_t       InitDetector();
          void         InitOutput(Int_t iEvent);
  virtual void         Digitize(const Option_t * option = 0);  

  virtual Bool_t       Open(const Char_t *file, Int_t nEvent = 0);
  virtual Bool_t       Open(AliRunLoader * const runLoader, Int_t nEvent = 0);
  virtual Bool_t       MakeBranch(TTree *tree) const;
  virtual Bool_t       WriteDigits() const;

  virtual void         AddSDigitsManager(AliTRDdigitsManager *manager);
  virtual void         DeleteSDigitsManager();

  virtual Bool_t       MakeDigits();

          Bool_t       SortHits(Float_t **hits, Int_t *nhit);
          Bool_t       ConvertHits(Int_t det, const Float_t * const hits, Int_t nhit, AliTRDarraySignal *signals);
          Bool_t       ConvertSignals(Int_t det, AliTRDarraySignal *signals);

          Bool_t       Digits2SDigits(AliTRDdigitsManager * const manDig, AliTRDdigitsManager * const manSDig);
          Bool_t       SDigits2Digits();
          Bool_t       MergeSDigits();
          Bool_t       ConvertSDigits();

          Bool_t       Signal2ADC(Int_t det, AliTRDarraySignal *signals);
          Bool_t       Signal2SDigits(Int_t det, AliTRDarraySignal *signals);
          Bool_t       CopyDictionary(Int_t det);
	  void         CompressOutputArrays(Int_t det);

          void         SetCompress(Int_t c = 1)                    { fCompress        = c;   }
          void         SetSDigits(Int_t v = 1)                     { fSDigits         = v;   }
          void         SetEvent(Int_t v = 0)                       { fEvent           = v;   }
          void         SetManager(AliTRDdigitsManager * const man) { fDigitsManager   = man; }
          void         SetGeometry(AliTRDgeometry * const geo)     { fGeo             = geo; }
          void         SetMergeSignalOnly(Bool_t m = kTRUE)        { fMergeSignalOnly = m;   }

  AliTRDdigitsManager *Digits() const                              { return fDigitsManager;  }

          Bool_t       GetCompress() const                         { return fCompress;       }
          Bool_t       GetSDigits() const                          { return fSDigits;        }

          Int_t        Diffusion(Float_t vdrift, Double_t absdriftlength, Double_t exbvalue
                               , Double_t &lRow, Double_t &lCol, Double_t &lTime);
	  void         RunDigitalProcessing(Int_t det = 0);

 protected:

  AliRunLoader        *fRunLoader;          //! Local pointer
  AliTRDdigitsManager *fDigitsManager;      //! Manager for the output digits
  AliTRDdigitsManager *fSDigitsManager;     //! Manager for the summed input s-digits
  TList               *fSDigitsManagerList; //! List of managers of input s-digits
  AliTRD              *fTRD;                //! TRD detector class
  AliTRDgeometry      *fGeo;                //! TRD geometry

  AliTRDmcmSim        *fMcmSim;             //! MCM simulation for digital processing

          Int_t        fEvent;              //! Event number
          Int_t       *fMasks;              //! Masks for the merging
          Bool_t       fCompress;           //  Switch to keep only compressed data in memory
          Bool_t       fSDigits;            //  Switch for the summable digits
          Bool_t       fMergeSignalOnly;    //  Merge only detectors that contain a signal

  ClassDef(AliTRDdigitizer,20)              //  Produces TRD-Digits

};
#endif
 AliTRDdigitizer.h:1
 AliTRDdigitizer.h:2
 AliTRDdigitizer.h:3
 AliTRDdigitizer.h:4
 AliTRDdigitizer.h:5
 AliTRDdigitizer.h:6
 AliTRDdigitizer.h:7
 AliTRDdigitizer.h:8
 AliTRDdigitizer.h:9
 AliTRDdigitizer.h:10
 AliTRDdigitizer.h:11
 AliTRDdigitizer.h:12
 AliTRDdigitizer.h:13
 AliTRDdigitizer.h:14
 AliTRDdigitizer.h:15
 AliTRDdigitizer.h:16
 AliTRDdigitizer.h:17
 AliTRDdigitizer.h:18
 AliTRDdigitizer.h:19
 AliTRDdigitizer.h:20
 AliTRDdigitizer.h:21
 AliTRDdigitizer.h:22
 AliTRDdigitizer.h:23
 AliTRDdigitizer.h:24
 AliTRDdigitizer.h:25
 AliTRDdigitizer.h:26
 AliTRDdigitizer.h:27
 AliTRDdigitizer.h:28
 AliTRDdigitizer.h:29
 AliTRDdigitizer.h:30
 AliTRDdigitizer.h:31
 AliTRDdigitizer.h:32
 AliTRDdigitizer.h:33
 AliTRDdigitizer.h:34
 AliTRDdigitizer.h:35
 AliTRDdigitizer.h:36
 AliTRDdigitizer.h:37
 AliTRDdigitizer.h:38
 AliTRDdigitizer.h:39
 AliTRDdigitizer.h:40
 AliTRDdigitizer.h:41
 AliTRDdigitizer.h:42
 AliTRDdigitizer.h:43
 AliTRDdigitizer.h:44
 AliTRDdigitizer.h:45
 AliTRDdigitizer.h:46
 AliTRDdigitizer.h:47
 AliTRDdigitizer.h:48
 AliTRDdigitizer.h:49
 AliTRDdigitizer.h:50
 AliTRDdigitizer.h:51
 AliTRDdigitizer.h:52
 AliTRDdigitizer.h:53
 AliTRDdigitizer.h:54
 AliTRDdigitizer.h:55
 AliTRDdigitizer.h:56
 AliTRDdigitizer.h:57
 AliTRDdigitizer.h:58
 AliTRDdigitizer.h:59
 AliTRDdigitizer.h:60
 AliTRDdigitizer.h:61
 AliTRDdigitizer.h:62
 AliTRDdigitizer.h:63
 AliTRDdigitizer.h:64
 AliTRDdigitizer.h:65
 AliTRDdigitizer.h:66
 AliTRDdigitizer.h:67
 AliTRDdigitizer.h:68
 AliTRDdigitizer.h:69
 AliTRDdigitizer.h:70
 AliTRDdigitizer.h:71
 AliTRDdigitizer.h:72
 AliTRDdigitizer.h:73
 AliTRDdigitizer.h:74
 AliTRDdigitizer.h:75
 AliTRDdigitizer.h:76
 AliTRDdigitizer.h:77
 AliTRDdigitizer.h:78
 AliTRDdigitizer.h:79
 AliTRDdigitizer.h:80
 AliTRDdigitizer.h:81
 AliTRDdigitizer.h:82
 AliTRDdigitizer.h:83
 AliTRDdigitizer.h:84
 AliTRDdigitizer.h:85
 AliTRDdigitizer.h:86
 AliTRDdigitizer.h:87
 AliTRDdigitizer.h:88
 AliTRDdigitizer.h:89
 AliTRDdigitizer.h:90
 AliTRDdigitizer.h:91
 AliTRDdigitizer.h:92
 AliTRDdigitizer.h:93
 AliTRDdigitizer.h:94
 AliTRDdigitizer.h:95
 AliTRDdigitizer.h:96
 AliTRDdigitizer.h:97
 AliTRDdigitizer.h:98
 AliTRDdigitizer.h:99
 AliTRDdigitizer.h:100
 AliTRDdigitizer.h:101
 AliTRDdigitizer.h:102
 AliTRDdigitizer.h:103
 AliTRDdigitizer.h:104
 AliTRDdigitizer.h:105
 AliTRDdigitizer.h:106