HLT (temporary?) excluded from processing, as no files are produced by HLT DA for...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSRawDigiProducer.h
1 #ifndef ALIPHOSRAWDIGIPRODUCER_H
2 #define ALIPHOSRAWDIGIPRODUCER_H
3 /* Copyright(c) 2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                          */
5
6 /* $Id$ */
7
8 //This class produces PHOS digits of one event
9 //using AliPHOSRawFitter. See cxx source for use case.
10
11 class AliPHOSCalibData ;
12 class AliPHOSDigit ;
13 class AliPHOSGeometry ;
14 class AliPHOSPulseGenerator;
15 class AliRawReader;
16 class AliCaloRawStreamV3;
17 class AliPHOSRawFitterv0;
18
19 #include "AliAltroMapping.h"
20 #include "TObject.h"
21
22 class AliPHOSRawDigiProducer: public TObject {
23
24 public:
25
26   AliPHOSRawDigiProducer() ;
27   AliPHOSRawDigiProducer(AliRawReader *rawReader, AliAltroMapping **mapping = NULL);
28   AliPHOSRawDigiProducer(const AliPHOSRawDigiProducer &dp);
29   AliPHOSRawDigiProducer& operator= (const AliPHOSRawDigiProducer &dp);
30  
31   virtual ~AliPHOSRawDigiProducer(); 
32
33   void MakeDigits(TClonesArray *digits, AliPHOSRawFitterv0* fitter);
34
35   void SetEmcMinAmp(Float_t emcMin) { fEmcMinE=emcMin; }
36   void SetCpvMinAmp(Float_t cpvMin) { fCpvMinE=cpvMin; }
37   void SetSampleQualityCut(Float_t qcut) { fSampleQualityCut=qcut; }
38
39 protected:
40
41   void GetCalibrationParameters() ; //Extract calibration parameters from DB
42   void CleanDigits(TClonesArray* digits) ; //remove digits below threshold and bad ones
43   
44   Bool_t IsInEMC(AliPHOSDigit* digit) const ; //tests if digit belongs to EMC
45   Bool_t IsInCPV(AliPHOSDigit* digit) const ;
46
47   Double_t CalibrateE(Double_t amp, Int_t* relId, Bool_t isLowGain) ; //calibrate energy 
48   Double_t CalibrateT(Double_t amp, Int_t* relId, Bool_t isLowGain) ; //calibrate time
49
50 private:
51   Float_t fEmcMinE ;                 // minimum energy of digit (ADC)
52   Float_t fCpvMinE ;                 // minimum energy of digit (ADC)
53   Float_t fSampleQualityCut;         // Cut on sample shapes: 0: no samples; 1: default parameterization; 999: accept even obviously bad
54   Float_t fSampleToSec ;             // Conversion coeff from sample time step to seconds
55   Int_t fEmcCrystals ;               //  number of EMC crystals
56   AliPHOSGeometry * fGeom ;          //! PHOS geometry
57   static AliPHOSCalibData * fgCalibData ;     //! Calibration database if avalable
58   AliPHOSPulseGenerator   * fPulseGenerator ; //! Class with pulse shape parameters
59   AliRawReader            * fRawReader;       //! Raw data reader
60   AliCaloRawStreamV3      * fRawStream;       //! Calorimeter decoder of ALTRO format
61   Int_t *fADCValuesLG;               //! Array og low-gain ALTRO samples
62   Int_t *fADCValuesHG;               //! Array og high-gain ALTRO samples
63
64   ClassDef(AliPHOSRawDigiProducer,7)
65 };
66
67 #endif