]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDdigitizer.h
re-activate contrib code
[u/mrichter/AliRoot.git] / TRD / AliTRDdigitizer.h
index 95bde794f02ce0fc55545b748aabbb5370c6910d..304fa8b677f6431c1eb8ae7e91ee605a2bf164c6 100644 (file)
 
 /* $Id$ */
 
-#include <TNamed.h>
+////////////////////////////////////////////////////////////////////////////
+//                                                                        //
+//  Produces digits from the hits information                             //
+//                                                                        //
+////////////////////////////////////////////////////////////////////////////
 
-// Time response function of the preamp
-Double_t TRFlandau(Double_t *x, Double_t *par);
+#include "AliDigitizer.h"
 
 class TFile;
 class TF1;
 
+class AliDigitizationInput;
+class AliRunLoader;
+
 class AliTRD;
 class AliTRDdigitsManager;
 class AliTRDgeometry;
+class AliTRDarraySignal;
+class AliTRDarrayADC;
+class AliTRDmcmSim;
 
-///////////////////////////////////////////////////////
-//  Produces digits from the hits information        //
-///////////////////////////////////////////////////////
-
-class AliTRDdigitizer : public TNamed {
+class AliTRDdigitizer : public AliDigitizer {
 
  public:
 
   AliTRDdigitizer();
-  AliTRDdigitizer(const Text_t* name, const Text_t* title);
+  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             ~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 void         Copy(TObject &d);
-  virtual void         Init();
-  virtual Bool_t       Open(const Char_t *name, Int_t nEvent = 0);
   virtual Bool_t       MakeDigits();
-  virtual Bool_t       WriteDigits();
-  virtual Bool_t       InitDetector();
-
-  virtual void         SetGasGain(Float_t gasgain)      { fGasGain       = gasgain;  };
-  virtual void         SetNoise(Float_t noise)          { fNoise         = noise;    };
-  virtual void         SetChipGain(Float_t chipgain)    { fChipGain      = chipgain; };
-  virtual void         SetADCoutRange(Float_t range)    { fADCoutRange   = range;    };
-  virtual void         SetADCinRange(Float_t range)     { fADCinRange    = range;    };
-  virtual void         SetADCthreshold(Int_t thresh)    { fADCthreshold  = thresh;   };
-  virtual void         SetDiffusion(Int_t diffOn = 1)   { fDiffusionOn   = diffOn;   };
-  virtual void         SetDiffusionT(Float_t diff)      { fDiffusionT    = diff;     };
-  virtual void         SetDiffusionL(Float_t diff)      { fDiffusionL    = diff;     };
-  virtual void         SetElAttach(Int_t elOn = 1)      { fElAttachOn    = elOn;     };
-  virtual void         SetElAttachProp(Float_t prop)    { fElAttachProp  = prop;     };
-  virtual void         SetExB(Int_t exbOn = 1)          { fExBOn         = exbOn;    };
-  virtual void         SetOmegaTau(Float_t ot)          { fOmegaTau      = ot;       };
-  virtual void         SetPadResponse(Int_t prfOn = 1)  { fPRFOn         = prfOn;    };
-  virtual void         SetPRF(TF1 *prf);
-  virtual void         SetTimeResponse(Int_t trfOn = 1) { fTRFOn         = trfOn;    };
-  virtual void         SetTRF(TF1 *trf);
-  virtual void         SetDriftVelocity(Float_t v)      { fDriftVelocity = v;        };
-  virtual void         SetCompress(Int_t c = 1)         { fCompress      = c;        };
-  virtual void         SetVerbose(Int_t v = 1)          { fVerbose       = v;        };
-
-  AliTRDdigitsManager *Digits() const                   { return fDigits;            };
-
-  virtual Float_t      GetGasGain() const               { return fGasGain;           };
-  virtual Float_t      GetNoise() const                 { return fNoise;             };
-  virtual Float_t      GetChipGain() const              { return fChipGain;          };
-  virtual Float_t      GetADCoutRange() const           { return fADCoutRange;       };
-  virtual Float_t      GetADCinRange() const            { return fADCinRange;        };
-  virtual Int_t        GetADCthreshold() const          { return fADCthreshold;      };
-  virtual Float_t      GetDiffusionT() const            { return fDiffusionT;        };
-  virtual Float_t      GetDiffusionL() const            { return fDiffusionL;        };
-  virtual Float_t      GetElAttachProp() const          { return fElAttachProp;      };
-  virtual Float_t      GetOmegaTau() const              { return fOmegaTau;          };
-  virtual TF1         *GetPadResponse() const           { return fPRF;               };
-  virtual TF1         *GetTimeResponse() const          { return fTRF;               };
-  virtual Float_t      GetDriftVelocity() const         { return fDriftVelocity;     };
-  virtual Bool_t       GetCompress() const              { return fCompress;          };
+
+          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:
 
-  TFile               *fInputFile;       //! ALIROOT-filename
-  AliTRDdigitsManager *fDigits;          //! TRD digits manager
-  AliTRD              *fTRD;             //! TRD detector class
-  AliTRDgeometry      *fGeo;             //! TRD geometry
-  
-  Int_t                fEvent;           //! Event number
-
-  Float_t              fGasGain;         // Gas gain
-  Float_t              fNoise;           // Electronics noise
-  Float_t              fChipGain;        // Electronics gain
-  Float_t              fADCoutRange;     // ADC output range (number of channels)
-  Float_t              fADCinRange;      // ADC input range (input charge)
-  Int_t                fADCthreshold;    // ADC threshold in ADC channel
-  Int_t                fDiffusionOn;     // Switch for the diffusion
-  Float_t              fDiffusionT;      // Diffusion in transverse direction
-  Float_t              fDiffusionL;      // Diffusion in longitudinal direction
-  Int_t                fElAttachOn;      // Switch for the electron attachment
-  Float_t              fElAttachProp;    // Propability for electron attachment (for 1m)
-  Int_t                fExBOn;           // Switch for the ExB effects
-  Float_t              fOmegaTau;        // Tangens of the Lorentz angle 
-  Float_t              fLorentzFactor;   // Factor due to Lorentz force
-  Int_t                fPRFOn;           // Switch for the pad response
-  TF1                 *fPRF;             // Pad response function
-  Int_t                fTRFOn;           // Switch for the time response
-  TF1                 *fTRF;             // Time response function of the shaper
-  Float_t             *fTRFint;          //!Integrated time response
-  Int_t                fTRFbin;          // Number of bins for the TRF
-  Float_t              fTRFlo;           // Lower boundary of the TRF
-  Float_t              fTRFhi;           // Higher boundary of the TRF
-  Float_t              fTRFwid;          // Bin width of the integrated TRF
-  Float_t              fDriftVelocity;   // Drift velocity (cm / mus)
-  Bool_t               fCompress;        // Switch to keep only compressed data in memory
-  Int_t                fVerbose;         // Sets the verbose level
-
- private:
-
-  virtual Int_t        Diffusion(Float_t driftlength, Float_t *xyz);
-  virtual Int_t        ExB(Float_t driftlength, Float_t *xyz);  
-  virtual Int_t        PadResponse(Float_t signal, Float_t dist, Float_t *pad);
-  virtual Float_t      TimeResponse(Float_t time);  
-  virtual Bool_t       CheckDetector(Int_t plane, Int_t chamber, Int_t sector);
-  virtual void         IntegrateTRF();
-
-  ClassDef(AliTRDdigitizer,2)            // Produces TRD-Digits
+  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