Using detector quality flag (taken from ALICE logbook) to decide whether to rpodcue...
[u/mrichter/AliRoot.git] / ZDC / AliZDCDigitizer.h
1 #ifndef ALIZDCDIGITIZER_H
2 #define ALIZDCDIGITIZER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ////////////////////////////////////////////////
9 //              Digitizer class for ZDC       //
10 ////////////////////////////////////////////////
11
12 #include "AliDigitizer.h"
13 #include "AliCDBManager.h"
14 #include "AliCDBStorage.h"
15 #include "AliZDCPedestals.h"
16
17 class TFile;
18 class AliDigitizationInput;
19
20 class AliZDC;
21 class AliZDCHit;
22 class AliZDCDigit;
23
24 class AliZDCDigitizer: public AliDigitizer {
25
26 public:
27   AliZDCDigitizer();
28   AliZDCDigitizer(AliDigitizationInput* digInput);
29   virtual ~AliZDCDigitizer();
30    
31   virtual Bool_t Init();
32   virtual void Digitize(Option_t* option=0);    
33
34   //  PM gain
35   void    SetPMGain(Int_t det, Int_t pmDet, Int_t pmGain)
36     {fPMGain[det][pmDet] = pmGain;}
37   Float_t GetPMGain(Int_t det, Int_t pmDet) const
38     {return fPMGain[det][pmDet];}
39   //  Conversion factor from charge to ADC channels
40   //          F = 1.6E-19 / Resolution [Coulomb/ch]
41   void    SetADCRes(Int_t *adcRes) {for (Int_t i=0;i<2;i++) fADCRes[i] = adcRes[i];}
42   //  Two conversion factor are needed for ADC CAEN V965 
43   Float_t GetADCRes(Int_t i) const {return fADCRes[i];}
44   
45   void    SetCalibrationOn() {fIsCalibration=1;}  
46   AliCDBStorage    *SetStorage(const char* uri);
47   AliZDCPedestals  *GetPedData() const; 
48   
49   void    SetSpectators2Track() {fSpectators2Track=kTRUE;}
50   void    SetBeamEnergy(Float_t beamEnergy) {fBeamEnergy = beamEnergy;}
51
52   // Added for p-A simulations
53   void    SetpAsystem() {fIspASystem=kTRUE;}
54
55   // Added for RELDIS
56   void    SetRELDISGenerator() {fIsRELDISgen=kTRUE;}
57
58   void    SpectatorSignal(Int_t SpecType, Int_t numEvents, Float_t pm[3][5]);
59
60
61 private:
62
63   AliZDCDigitizer(const AliZDCDigitizer&);
64   AliZDCDigitizer& operator=(const AliZDCDigitizer&);
65
66   void    CalculatePMTGains();
67   void    ReadPMTGains();
68
69   void    Fragmentation(Float_t impPar, Int_t specN, Int_t specP,
70                         Int_t &freeSpecN, Int_t &freeSpecP) const;
71
72   Int_t   Phe2ADCch(Int_t Detector, Int_t Quadrant, Float_t Light, 
73                     Int_t Res) const;
74   Int_t   Pedestal(Int_t Detector, Int_t Quadrant, Int_t Res) const;
75
76   Float_t fPMGain[5][5];        // PM gain
77   Float_t fADCRes[2];           // ADC conversion factors
78   Int_t   fIsCalibration;       // !=0 if simulation creates calibration data
79   Bool_t  fIsSignalInADCGate;   // true if signal in ADC gate
80   Float_t fFracLostSignal;      // fraction of lost signal
81   
82   AliZDCPedestals  *fPedData;   //! pedestal calibration data
83   
84   Bool_t  fSpectators2Track;    // should digitizer track spectators
85   Float_t fBeamEnergy;          // beam energy
86   TString fBeamType;            // beam type
87   
88   // Added for p-A simulations
89   Bool_t  fIspASystem;          // true if collision system is p-A
90
91   // Added for RELDIS
92   Bool_t  fIsRELDISgen;         // true if generator is RELDIS
93   
94   TFile  *fSpectatorData;       // pointer to stored spectator data files
95        
96   ClassDef(AliZDCDigitizer, 15)     // digitizer for ZDC
97 };    
98 #endif