ROOT logo
#ifndef ALIPMDDIGITIZER_H
#define ALIPMDDIGITIZER_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
//-----------------------------------------------------//
//                                                     //
//  Header File : PMDDigitization.h, Version 00        //
//                                                     //
//  Date   : September 20 2002                         //
//                                                     //
//-----------------------------------------------------//
// Author - B.K. Nandi
//

#include "AliDigitizer.h"

class TClonesArray;
class TFile;
class TObjArray;
class TParticle;
class TTree;
class TNtuple;

class AliLoader;
class AliRunLoader;
class AliRun;
class AliDetector;
class AliPMDhit;
class AliHit;
class AliHeader;
class AliDigitizationInput;
class AliCDBManager;
class AliCDBStorage;

class AliPMDcell;
class AliPMDsdigit;
class AliPMDdigit;
class AliPMDCalibData;
class AliPMDPedestal;

class AliPMDDigitizer:public AliDigitizer
{
 public:

  AliPMDDigitizer();
  AliPMDDigitizer(const AliPMDDigitizer &digitizer);  // copy constructor
  AliPMDDigitizer &operator=(const AliPMDDigitizer &digitizer); // assign op
  AliPMDDigitizer(AliDigitizationInput* digInput);
  virtual ~AliPMDDigitizer();

  void OpengAliceFile(const char *file, Option_t *option);

  void Hits2SDigits(Int_t ievt);
  void Hits2Digits(Int_t ievt);
  void SDigits2Digits(Int_t ievt);
  void Digitize(Option_t *option);
  void MergeSDigits(Int_t filenumber, Int_t troffset);
  void TrackAssignment2CPVCell();
  void TrackAssignment2Cell();
  void MeV2ADC(Float_t mev, Float_t & adc) const;
  void AddSDigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smnumber, 
		 Int_t irow, Int_t icol, Float_t adc);
  void AddDigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smnumber, 
		Int_t irow, Int_t icol, Float_t adc);
  void  SetZPosition(Float_t zpos);
  Float_t GetZPosition() const;
  void ResetCell();
  void ResetSDigit();
  void ResetDigit();
  void ResetCellADC();
  void UnLoad(Option_t * option);

  Float_t  Gain(Int_t det, Int_t smn, Int_t row, Int_t col) const;

  AliPMDCalibData *GetCalibGain() const;
  AliPMDPedestal  *GetCalibPed() const;

 protected:
  AliRunLoader *fRunLoader;  //! Pointer to Run Loader
  AliPMDhit    *fPMDHit;     //! Pointer to specific detector hits
  AliDetector  *fPMD;        //! Get pointers to Alice detectors 
                             // and Hits containers 
  AliLoader    *fPMDLoader;  //! Pointer to specific detector loader

  AliPMDCalibData *fCalibGain;  //! Gain calibration data
  AliPMDPedestal  *fCalibPed;   //! Pedestal calibration data

  TClonesArray *fSDigits;    //! List of summable digits
  TClonesArray *fDigits;     //! List of digits

  TObjArray     fCPVCell;     //! List of cpv cells   
  TObjArray     fCell;       //! List of pmd cells
  
  Int_t   fNsdigit;          // Summable digits counter
  Int_t   fNdigit;           // Digits counter
  Int_t   fDetNo;            // Detector Number (0:PRE, 1:CPV)
  Float_t fZPos;             // z-position of the detector

  static const Int_t fgkTotUM = 24; // Total Unit modules in one detector
  static const Int_t fgkRow   = 48; // Total number of rows in one unitmodule
  static const Int_t fgkCol   = 96; // Total number of cols in one unitmodule

  Float_t fCPV[fgkTotUM][fgkRow][fgkCol]; //! CPV Array containing total edep
  Float_t fPRE[fgkTotUM][fgkRow][fgkCol]; //! PRE Array containing total edep
  
  Int_t   fCPVCounter[fgkTotUM][fgkRow][fgkCol]; //! Number of times each cell
                                                 // is fired in CPV
  Int_t   fPRECounter[fgkTotUM][fgkRow][fgkCol]; //! Number of times each cell
                                                 // is fired in PMD

  Int_t   fCPVTrackNo[fgkTotUM][fgkRow][fgkCol]; //! CPV Array containing 
                                                 //  track number
  Int_t   fPRETrackNo[fgkTotUM][fgkRow][fgkCol]; //! PRE Array containing 
                                                 //  track number

  Int_t   fCPVTrackPid[fgkTotUM][fgkRow][fgkCol]; //! CPV Array containing 
                                                 //  track number
  Int_t   fPRETrackPid[fgkTotUM][fgkRow][fgkCol]; //! PRE Array containing 
                                                 //  track number

  
  ClassDef(AliPMDDigitizer,9)    // To digitize PMD Hits
};
#endif

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