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

/* $Id$ */

/* History of cvs commits:
 *
 * $Log$
 * Revision 1.37  2007/10/10 09:05:10  schutz
 * Changing name QualAss to QA
 *
 * Revision 1.36  2007/09/30 17:08:20  schutz
 * Introducing the notion of QA data acquisition cycle (needed by online)
 *
 * Revision 1.35  2007/08/07 14:12:03  kharlov
 * Quality assurance added (Yves Schutz)
 *
 * Revision 1.34  2006/04/29 20:25:30  hristov
 * Decalibration is implemented (Yu.Kharlov)
 *
 * Revision 1.33  2005/05/28 14:19:04  schutz
 * Compilation warnings fixed by T.P.
 *
 */

//_________________________________________________________________________
//  Task Class for making SDigits in PHOS      
// Class performs digitization of Summable digits (in the PHOS case this is just
// sum of contributions of all primary particles into given cell). 
// In addition it performs mixing of summable digits from different events.
//                  
//*-- Author: Dmitri Peressounko(SUBATECH & KI)


// --- ROOT system ---
//#include "TObjString.h"
class TArrayI ;
class TClonesArray ; 

// --- Standard library ---

// --- AliRoot header files ---
#include "AliDigitizer.h"
#include "AliConfig.h"
#include "AliPHOSPulseGenerator.h"
class AliDigitizationInput ;
class AliPHOSCalibData ; 

class AliPHOSDigitizer: public AliDigitizer {

public:
  AliPHOSDigitizer() ;          // ctor
  AliPHOSDigitizer(TString alirunFileNameFile, TString eventFolderName = AliConfig::GetDefaultEventFolderName()) ; 
  AliPHOSDigitizer(AliDigitizationInput * digInput) ;
  virtual ~AliPHOSDigitizer() ;       

  void    Digitize(Int_t event) ;            // Make Digits from SDigits 
  void    Digitize(Option_t *option);                  // Supervising method

  void   SetEventRange(Int_t first=0, Int_t last=-1) {fFirstEvent=first; fLastEvent=last; }

  //General
  Int_t   GetDigitsInRun()  const { return fDigitsInRun ;}  

  void    Print(const Option_t * = "")const ;
 
private:
  AliPHOSDigitizer(const AliPHOSDigitizer & dtizer) ;
  AliPHOSDigitizer & operator = (const AliPHOSDigitizer & /*rvalue*/);

  virtual Bool_t Init() ; 
  void    InitParameters() ; 
  void    PrintDigits(Option_t * option) ;
  void    Unload() ; 
  void    WriteDigits() ;                     // Writes Digits for the current event
  Float_t TimeOfNoise(void) const;            // Calculate time signal generated by noise

  Float_t TimeResolution(Float_t energy) ;    //TOF resolution

  //Calculate the time of crossing of the threshold by front edge
  //  Float_t FrontEdgeTime(TClonesArray * ticks) const ; 
  //Calculate digitized signal with gived ADC parameters
  Float_t Calibrate(Float_t amp, Int_t absId) ;
  Float_t CalibrateT(Float_t time, Int_t absId) ;
  void    Decalibrate(AliPHOSDigit * digit);
  Int_t   DigitizeCPV(Float_t charge, Int_t absId) ;

private:

  Bool_t  fDefaultInit;             //! Says if the task was created by defaut ctor (only parameters are initialized)
  Int_t   fDigitsInRun ;            //! Total number of digits in one run
  Bool_t  fInit ;                   //! To avoid overwriting existing files

  Int_t   fInput ;                  // Number of files to merge
  TString * fInputFileNames ;       //[fInput] List of file names to merge 
  TString * fEventNames ;           //[fInput] List of event names to merge

  Int_t   fEmcCrystals ;            // Number of EMC crystalls in the given geometry

  TString fEventFolderName;         // skowron: name of EFN to read data from in stand alone mode
  Int_t   fFirstEvent;              // first event to process
  Int_t   fLastEvent;               // last  event to process 
  AliPHOSCalibData* fcdb;           //! Calibration parameters DB

  Int_t fEventCounter ;             //! counts the events processed

  AliPHOSPulseGenerator *fPulse;    //! Pulse shape generator
  Int_t *fADCValuesLG;              //! Array of low-gain ALTRO samples
  Int_t *fADCValuesHG;              //! Array of high-gain ALTRO samples
  
  ClassDef(AliPHOSDigitizer,5)  // description 

};


#endif // AliPHOSDigitizer_H
 AliPHOSDigitizer.h:1
 AliPHOSDigitizer.h:2
 AliPHOSDigitizer.h:3
 AliPHOSDigitizer.h:4
 AliPHOSDigitizer.h:5
 AliPHOSDigitizer.h:6
 AliPHOSDigitizer.h:7
 AliPHOSDigitizer.h:8
 AliPHOSDigitizer.h:9
 AliPHOSDigitizer.h:10
 AliPHOSDigitizer.h:11
 AliPHOSDigitizer.h:12
 AliPHOSDigitizer.h:13
 AliPHOSDigitizer.h:14
 AliPHOSDigitizer.h:15
 AliPHOSDigitizer.h:16
 AliPHOSDigitizer.h:17
 AliPHOSDigitizer.h:18
 AliPHOSDigitizer.h:19
 AliPHOSDigitizer.h:20
 AliPHOSDigitizer.h:21
 AliPHOSDigitizer.h:22
 AliPHOSDigitizer.h:23
 AliPHOSDigitizer.h:24
 AliPHOSDigitizer.h:25
 AliPHOSDigitizer.h:26
 AliPHOSDigitizer.h:27
 AliPHOSDigitizer.h:28
 AliPHOSDigitizer.h:29
 AliPHOSDigitizer.h:30
 AliPHOSDigitizer.h:31
 AliPHOSDigitizer.h:32
 AliPHOSDigitizer.h:33
 AliPHOSDigitizer.h:34
 AliPHOSDigitizer.h:35
 AliPHOSDigitizer.h:36
 AliPHOSDigitizer.h:37
 AliPHOSDigitizer.h:38
 AliPHOSDigitizer.h:39
 AliPHOSDigitizer.h:40
 AliPHOSDigitizer.h:41
 AliPHOSDigitizer.h:42
 AliPHOSDigitizer.h:43
 AliPHOSDigitizer.h:44
 AliPHOSDigitizer.h:45
 AliPHOSDigitizer.h:46
 AliPHOSDigitizer.h:47
 AliPHOSDigitizer.h:48
 AliPHOSDigitizer.h:49
 AliPHOSDigitizer.h:50
 AliPHOSDigitizer.h:51
 AliPHOSDigitizer.h:52
 AliPHOSDigitizer.h:53
 AliPHOSDigitizer.h:54
 AliPHOSDigitizer.h:55
 AliPHOSDigitizer.h:56
 AliPHOSDigitizer.h:57
 AliPHOSDigitizer.h:58
 AliPHOSDigitizer.h:59
 AliPHOSDigitizer.h:60
 AliPHOSDigitizer.h:61
 AliPHOSDigitizer.h:62
 AliPHOSDigitizer.h:63
 AliPHOSDigitizer.h:64
 AliPHOSDigitizer.h:65
 AliPHOSDigitizer.h:66
 AliPHOSDigitizer.h:67
 AliPHOSDigitizer.h:68
 AliPHOSDigitizer.h:69
 AliPHOSDigitizer.h:70
 AliPHOSDigitizer.h:71
 AliPHOSDigitizer.h:72
 AliPHOSDigitizer.h:73
 AliPHOSDigitizer.h:74
 AliPHOSDigitizer.h:75
 AliPHOSDigitizer.h:76
 AliPHOSDigitizer.h:77
 AliPHOSDigitizer.h:78
 AliPHOSDigitizer.h:79
 AliPHOSDigitizer.h:80
 AliPHOSDigitizer.h:81
 AliPHOSDigitizer.h:82
 AliPHOSDigitizer.h:83
 AliPHOSDigitizer.h:84
 AliPHOSDigitizer.h:85
 AliPHOSDigitizer.h:86
 AliPHOSDigitizer.h:87
 AliPHOSDigitizer.h:88
 AliPHOSDigitizer.h:89
 AliPHOSDigitizer.h:90
 AliPHOSDigitizer.h:91
 AliPHOSDigitizer.h:92
 AliPHOSDigitizer.h:93
 AliPHOSDigitizer.h:94
 AliPHOSDigitizer.h:95
 AliPHOSDigitizer.h:96
 AliPHOSDigitizer.h:97
 AliPHOSDigitizer.h:98
 AliPHOSDigitizer.h:99
 AliPHOSDigitizer.h:100
 AliPHOSDigitizer.h:101
 AliPHOSDigitizer.h:102
 AliPHOSDigitizer.h:103
 AliPHOSDigitizer.h:104
 AliPHOSDigitizer.h:105
 AliPHOSDigitizer.h:106
 AliPHOSDigitizer.h:107
 AliPHOSDigitizer.h:108
 AliPHOSDigitizer.h:109
 AliPHOSDigitizer.h:110
 AliPHOSDigitizer.h:111
 AliPHOSDigitizer.h:112
 AliPHOSDigitizer.h:113
 AliPHOSDigitizer.h:114
 AliPHOSDigitizer.h:115
 AliPHOSDigitizer.h:116
 AliPHOSDigitizer.h:117
 AliPHOSDigitizer.h:118