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

/* $Id$ */

//This class produces PHOS digits of one event
//using AliPHOSRawFitter. See cxx source for use case.

class AliPHOSCalibData ;
class AliPHOSDigit ;
class AliPHOSGeometry ;
class AliPHOSPulseGenerator;
class AliRawReader;
class AliCaloRawStreamV3;
class AliPHOSRawFitterv0;

#include "AliAltroMapping.h"
#include "TObject.h"

class AliPHOSRawDigiProducer: public TObject {

public:

  AliPHOSRawDigiProducer() ;
  AliPHOSRawDigiProducer(AliRawReader *rawReader, AliAltroMapping **mapping = NULL);
  AliPHOSRawDigiProducer(const AliPHOSRawDigiProducer &dp);
  AliPHOSRawDigiProducer& operator= (const AliPHOSRawDigiProducer &dp);
 
  virtual ~AliPHOSRawDigiProducer(); 

  void MakeDigits(TClonesArray *digits, AliPHOSRawFitterv0* fitter);
  void MakeDigits(TClonesArray *digits, TClonesArray *tmpDigLG, AliPHOSRawFitterv0* fitter);

  void SetEmcMinAmp(Float_t emcMin) { fEmcMinE=emcMin; }
  void SetCpvMinAmp(Float_t cpvMin) { fCpvMinE=cpvMin; }
  void SetSampleQualityCut(Float_t qcut) { fSampleQualityCut=qcut; }

protected:

  void GetCalibrationParameters() ; //Extract calibration parameters from DB
  void CleanDigits(TClonesArray* digits) ; //remove digits below threshold and bad ones
  
  Bool_t IsInEMC(AliPHOSDigit* digit) const ; //tests if digit belongs to EMC
  Bool_t IsInCPV(AliPHOSDigit* digit) const ;

  Double_t CalibrateE(Double_t amp, Int_t* relId, Bool_t isLowGain) ; //calibrate energy 
  Double_t CalibrateT(Double_t amp, Int_t* relId, Bool_t isLowGain) ; //calibrate time

private:
  Float_t fEmcMinE ;                 // minimum energy of digit (ADC)
  Float_t fCpvMinE ;                 // minimum energy of digit (ADC)
  Float_t fSampleQualityCut;         // Cut on sample shapes: 0: no samples; 1: default parameterization; 999: accept even obviously bad
  Float_t fSampleToSec ;             // Conversion coeff from sample time step to seconds
  Int_t fEmcCrystals ;               //  number of EMC crystals
  AliPHOSGeometry * fGeom ;          //! PHOS geometry
  static AliPHOSCalibData * fgCalibData ;     //! Calibration database if avalable
  AliPHOSPulseGenerator   * fPulseGenerator ; //! Class with pulse shape parameters
  AliRawReader            * fRawReader;       //! Raw data reader
  AliCaloRawStreamV3      * fRawStream;       //! Calorimeter decoder of ALTRO format
  Int_t *fADCValuesLG;               //! Array og low-gain ALTRO samples
  Int_t *fADCValuesHG;               //! Array og high-gain ALTRO samples

  ClassDef(AliPHOSRawDigiProducer,7)
};

#endif
 AliPHOSRawDigiProducer.h:1
 AliPHOSRawDigiProducer.h:2
 AliPHOSRawDigiProducer.h:3
 AliPHOSRawDigiProducer.h:4
 AliPHOSRawDigiProducer.h:5
 AliPHOSRawDigiProducer.h:6
 AliPHOSRawDigiProducer.h:7
 AliPHOSRawDigiProducer.h:8
 AliPHOSRawDigiProducer.h:9
 AliPHOSRawDigiProducer.h:10
 AliPHOSRawDigiProducer.h:11
 AliPHOSRawDigiProducer.h:12
 AliPHOSRawDigiProducer.h:13
 AliPHOSRawDigiProducer.h:14
 AliPHOSRawDigiProducer.h:15
 AliPHOSRawDigiProducer.h:16
 AliPHOSRawDigiProducer.h:17
 AliPHOSRawDigiProducer.h:18
 AliPHOSRawDigiProducer.h:19
 AliPHOSRawDigiProducer.h:20
 AliPHOSRawDigiProducer.h:21
 AliPHOSRawDigiProducer.h:22
 AliPHOSRawDigiProducer.h:23
 AliPHOSRawDigiProducer.h:24
 AliPHOSRawDigiProducer.h:25
 AliPHOSRawDigiProducer.h:26
 AliPHOSRawDigiProducer.h:27
 AliPHOSRawDigiProducer.h:28
 AliPHOSRawDigiProducer.h:29
 AliPHOSRawDigiProducer.h:30
 AliPHOSRawDigiProducer.h:31
 AliPHOSRawDigiProducer.h:32
 AliPHOSRawDigiProducer.h:33
 AliPHOSRawDigiProducer.h:34
 AliPHOSRawDigiProducer.h:35
 AliPHOSRawDigiProducer.h:36
 AliPHOSRawDigiProducer.h:37
 AliPHOSRawDigiProducer.h:38
 AliPHOSRawDigiProducer.h:39
 AliPHOSRawDigiProducer.h:40
 AliPHOSRawDigiProducer.h:41
 AliPHOSRawDigiProducer.h:42
 AliPHOSRawDigiProducer.h:43
 AliPHOSRawDigiProducer.h:44
 AliPHOSRawDigiProducer.h:45
 AliPHOSRawDigiProducer.h:46
 AliPHOSRawDigiProducer.h:47
 AliPHOSRawDigiProducer.h:48
 AliPHOSRawDigiProducer.h:49
 AliPHOSRawDigiProducer.h:50
 AliPHOSRawDigiProducer.h:51
 AliPHOSRawDigiProducer.h:52
 AliPHOSRawDigiProducer.h:53
 AliPHOSRawDigiProducer.h:54
 AliPHOSRawDigiProducer.h:55
 AliPHOSRawDigiProducer.h:56
 AliPHOSRawDigiProducer.h:57
 AliPHOSRawDigiProducer.h:58
 AliPHOSRawDigiProducer.h:59
 AliPHOSRawDigiProducer.h:60
 AliPHOSRawDigiProducer.h:61
 AliPHOSRawDigiProducer.h:62
 AliPHOSRawDigiProducer.h:63
 AliPHOSRawDigiProducer.h:64
 AliPHOSRawDigiProducer.h:65
 AliPHOSRawDigiProducer.h:66
 AliPHOSRawDigiProducer.h:67
 AliPHOSRawDigiProducer.h:68