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

/* $Id$ */

////////////////////////////////////////////////
//  		Digitizer class for ZDC	      //
////////////////////////////////////////////////

#include "AliDigitizer.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliZDCPedestals.h"

class TFile;
class AliDigitizationInput;

class AliZDC;
class AliZDCHit;
class AliZDCDigit;

class AliZDCDigitizer: public AliDigitizer {

public:
  AliZDCDigitizer();
  AliZDCDigitizer(AliDigitizationInput* digInput);
  virtual ~AliZDCDigitizer();
   
  virtual Bool_t Init();
  virtual void Digitize(Option_t* option=0);    

  //  PM gain
  void    SetPMGain(Int_t det, Int_t pmDet, Int_t pmGain)
    {fPMGain[det][pmDet] = pmGain;}
  Float_t GetPMGain(Int_t det, Int_t pmDet) const
    {return fPMGain[det][pmDet];}
  //  Conversion factor from charge to ADC channels
  //	      F = 1.6E-19 / Resolution [Coulomb/ch]
  void    SetADCRes(Int_t *adcRes) {for (Int_t i=0;i<2;i++) fADCRes[i] = adcRes[i];}
  //  Two conversion factor are needed for ADC CAEN V965 
  Float_t GetADCRes(Int_t i) const {return fADCRes[i];}
  
  void	  SetCalibrationOn() {fIsCalibration=1;}  
  AliCDBStorage    *SetStorage(const char* uri);
  AliZDCPedestals  *GetPedData() const; 
  
  void    SetSpectators2Track() {fSpectators2Track=kTRUE;}
  void    SetBeamEnergy(Float_t beamEnergy) {fBeamEnergy = beamEnergy;}

  // Added for p-A simulations
  void    SetpAsystem() {fIspASystem=kTRUE;}

  // Added for RELDIS
  void    SetRELDISGenerator() {fIsRELDISgen=kTRUE;}

  void    SpectatorSignal(Int_t SpecType, Int_t numEvents, Float_t pm[3][5]);


private:

  AliZDCDigitizer(const AliZDCDigitizer&);
  AliZDCDigitizer& operator=(const AliZDCDigitizer&);

  void    CalculatePMTGains();
  void    ReadPMTGains();

  void    Fragmentation(Float_t impPar, Int_t specN, Int_t specP,
                        Int_t &freeSpecN, Int_t &freeSpecP) const;

  Int_t   Phe2ADCch(Int_t Detector, Int_t Quadrant, Float_t Light, 
                    Int_t Res) const;
  Int_t   Pedestal(Int_t Detector, Int_t Quadrant, Int_t Res) const;

  Float_t fPMGain[5][5];      	// PM gain
  Float_t fADCRes[2];	      	// ADC conversion factors
  Int_t   fIsCalibration; 	// !=0 if simulation creates calibration data
  Bool_t  fIsSignalInADCGate;   // true if signal in ADC gate
  Float_t fFracLostSignal;      // fraction of lost signal
  
  AliZDCPedestals  *fPedData; 	//! pedestal calibration data
  
  Bool_t  fSpectators2Track;    // should digitizer track spectators
  Float_t fBeamEnergy;          // beam energy
  TString fBeamType;		// beam type
  
  // Added for p-A simulations
  Bool_t  fIspASystem;       	// true if collision system is p-A

  // Added for RELDIS
  Bool_t  fIsRELDISgen;  	// true if generator is RELDIS
  
  TFile  *fSpectatorData;	// pointer to stored spectator data files
       
  ClassDef(AliZDCDigitizer, 15)     // digitizer for ZDC
};    
#endif
 AliZDCDigitizer.h:1
 AliZDCDigitizer.h:2
 AliZDCDigitizer.h:3
 AliZDCDigitizer.h:4
 AliZDCDigitizer.h:5
 AliZDCDigitizer.h:6
 AliZDCDigitizer.h:7
 AliZDCDigitizer.h:8
 AliZDCDigitizer.h:9
 AliZDCDigitizer.h:10
 AliZDCDigitizer.h:11
 AliZDCDigitizer.h:12
 AliZDCDigitizer.h:13
 AliZDCDigitizer.h:14
 AliZDCDigitizer.h:15
 AliZDCDigitizer.h:16
 AliZDCDigitizer.h:17
 AliZDCDigitizer.h:18
 AliZDCDigitizer.h:19
 AliZDCDigitizer.h:20
 AliZDCDigitizer.h:21
 AliZDCDigitizer.h:22
 AliZDCDigitizer.h:23
 AliZDCDigitizer.h:24
 AliZDCDigitizer.h:25
 AliZDCDigitizer.h:26
 AliZDCDigitizer.h:27
 AliZDCDigitizer.h:28
 AliZDCDigitizer.h:29
 AliZDCDigitizer.h:30
 AliZDCDigitizer.h:31
 AliZDCDigitizer.h:32
 AliZDCDigitizer.h:33
 AliZDCDigitizer.h:34
 AliZDCDigitizer.h:35
 AliZDCDigitizer.h:36
 AliZDCDigitizer.h:37
 AliZDCDigitizer.h:38
 AliZDCDigitizer.h:39
 AliZDCDigitizer.h:40
 AliZDCDigitizer.h:41
 AliZDCDigitizer.h:42
 AliZDCDigitizer.h:43
 AliZDCDigitizer.h:44
 AliZDCDigitizer.h:45
 AliZDCDigitizer.h:46
 AliZDCDigitizer.h:47
 AliZDCDigitizer.h:48
 AliZDCDigitizer.h:49
 AliZDCDigitizer.h:50
 AliZDCDigitizer.h:51
 AliZDCDigitizer.h:52
 AliZDCDigitizer.h:53
 AliZDCDigitizer.h:54
 AliZDCDigitizer.h:55
 AliZDCDigitizer.h:56
 AliZDCDigitizer.h:57
 AliZDCDigitizer.h:58
 AliZDCDigitizer.h:59
 AliZDCDigitizer.h:60
 AliZDCDigitizer.h:61
 AliZDCDigitizer.h:62
 AliZDCDigitizer.h:63
 AliZDCDigitizer.h:64
 AliZDCDigitizer.h:65
 AliZDCDigitizer.h:66
 AliZDCDigitizer.h:67
 AliZDCDigitizer.h:68
 AliZDCDigitizer.h:69
 AliZDCDigitizer.h:70
 AliZDCDigitizer.h:71
 AliZDCDigitizer.h:72
 AliZDCDigitizer.h:73
 AliZDCDigitizer.h:74
 AliZDCDigitizer.h:75
 AliZDCDigitizer.h:76
 AliZDCDigitizer.h:77
 AliZDCDigitizer.h:78
 AliZDCDigitizer.h:79
 AliZDCDigitizer.h:80
 AliZDCDigitizer.h:81
 AliZDCDigitizer.h:82
 AliZDCDigitizer.h:83
 AliZDCDigitizer.h:84
 AliZDCDigitizer.h:85
 AliZDCDigitizer.h:86
 AliZDCDigitizer.h:87
 AliZDCDigitizer.h:88
 AliZDCDigitizer.h:89
 AliZDCDigitizer.h:90
 AliZDCDigitizer.h:91
 AliZDCDigitizer.h:92
 AliZDCDigitizer.h:93
 AliZDCDigitizer.h:94
 AliZDCDigitizer.h:95
 AliZDCDigitizer.h:96
 AliZDCDigitizer.h:97
 AliZDCDigitizer.h:98