]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSDigitizer.h
Renove the clusterizer after Reconstruct. Use as much the runloader instead of the...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSDigitizer.h
index 3d364d799acc835139b481f90b4401d478e765f9..080d4ad2fa6676f39ea755cd760c90673d849314 100644 (file)
 
 //_________________________________________________________________________
 //  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 "TTask.h"
-class TObjString ;
+//#include "TObjString.h"
 class TArrayI ;
+class TClonesArray ; 
+
 // --- Standard library ---
 
 // --- AliRoot header files ---
+#include "AliDigitizer.h"
 class AliPHOSSDigitizer ;
+class AliRunDigitizer ;
 
-
-class AliPHOSDigitizer: public TTask {
+class AliPHOSDigitizer: public AliDigitizer {
 
 public:
   AliPHOSDigitizer() ;          // ctor
-  AliPHOSDigitizer(const char *headerFile,const char * sDigitsBranchTitle = 0) ; 
+  AliPHOSDigitizer(TString alirunFileNameFile, TString eventFolderName = AliConfig::GetDefaultEventFolderName()) ; 
+  AliPHOSDigitizer(const AliPHOSDigitizer & dtizer) ;
+  AliPHOSDigitizer(AliRunDigitizer * manager) ;
   virtual ~AliPHOSDigitizer() ;       
 
-  void    Digitize(Option_t *option);            // Make Digits from SDigits stored in fSDigits
-  void    Exec(Option_t *option);                // Supervising method
+  void    Digitize(Int_t event) ;            // Make Digits from SDigits 
+  void    Exec(Option_t *option);                  // Supervising method
 
+  //CPV parameters
   Float_t GetCPVNoise()     const { return fCPVNoise ;}
   Float_t GetCPVThreshold() const { return fCPVDigitThreshold ;}
-  Float_t GetEMCThreshold() const { return fEMCDigitThreshold;}
-  Float_t GetPedestal()     const { return fPedestal; }
-  Float_t GetPinNoise()     const { return fPinNoise;}
-  Float_t GetPPSDNoise()    const { return fPPSDNoise ;}
-  Float_t GetPPSDThreshold()const { return fPPSDDigitThreshold ;}
-  Float_t GetSlope()        const { return fSlope; }
-  char *  GetDigitsBranch ()const { return (char*)fDigitsTitle.Data() ;}
-  TClonesArray * GetHeadersFiles(){ return fHeaderFiles ;}
-  TArrayI*    GetCurrentEvents()  { return fIevent ;}
-
-  void    MixWith(char* HeaderFile, char* SDigitsTitle =0) ; // Add another one file to mix
-  virtual void    Print(Option_t* option)const ;
-  void    Reset() ;   //restarts starts event processing from 0 event(s)
+  Float_t GetCPVchannel()   const { return fADCchanelCpv; }
+  Float_t GetCPVpedestal()  const { return fADCpedestalCpv; }
 
   void    SetCPVNoise(Float_t CPVNoise)          {fCPVNoise = CPVNoise;}
   void    SetCPVThreshold(Float_t CPVThreshold)  {fCPVDigitThreshold= CPVThreshold;}
-  void    SetEMCThreshold(Float_t EMCThreshold)  {fEMCDigitThreshold = EMCThreshold;}
-  void    SetPinNoise(Float_t PinNoise )         {fPinNoise = PinNoise;}
-  void    SetPPSDNoise(Float_t PPSDNoise)        {fPPSDNoise = PPSDNoise;}
-  void    SetPPSDThreshold(Float_t PPSDThreshold){fPPSDDigitThreshold = PPSDThreshold;}
+  void    SetNCPVchannels(Int_t n)     { fNADCcpv = n; }
+  void    SetCPVchannel(Float_t width) { fADCchanelCpv = width; }
+  void    SetCPVpedestal(Float_t ped)  { fADCpedestalCpv = ped; }
 
-  void    SetDigitsBranch (const char* file) ;
-  void    SetSDigitsBranch(const char* file) ;
+
+  //EMC parameters
+  Float_t GetEMCThreshold() const { return fEMCDigitThreshold;}
+  Float_t GetEMCchannel()   const { return fADCchanelEmc; }
+  Float_t GetEMCpedestal()  const { return fADCpedestalEmc; }  
+  Float_t GetPinNoise()     const { return fPinNoise;}
+  Float_t GetTimeResolution() const { return fTimeResolution ; }
+
+  void   SetEMCThreshold(Float_t EMCThreshold)  {fEMCDigitThreshold = EMCThreshold;}
+  void   SetPinNoise(Float_t PinNoise )         {fPinNoise = PinNoise;}
+  void   SetNEMCchannels(Int_t n)      { fNADCemc = n; }
+  void   SetEMCchannel(Float_t width)  { fADCchanelEmc = width; }
+  void   SetEMCpedestal(Float_t ped)   { fADCpedestalEmc = ped ; }  
+  void   SetEventFolderName(TString name) { fEventFolderName = name ; }
+  void   SetTimeResolution(Float_t res){ fTimeResolution = res ; }  
+  void   SetEventRange(Int_t first=0, Int_t last=-1) {fFirstEvent=first; fLastEvent=last; }
+
+  //General
+  Int_t   GetDigitsInRun()  const { return fDigitsInRun ;}  
+  void    MixWith(TString alirunFileName, 
+                 TString eventFolderName = AliConfig::GetDefaultEventFolderName()) ; // Add another one file to mix
+  void    Print()const ;
+  AliPHOSDigitizer & operator = (const AliPHOSDigitizer & /*rvalue*/)  {
+    // assignement operator requested by coding convention but not needed
+    Fatal("operator =", "not implemented") ;
+    return *this ; 
+  }
 
 private:
-  Bool_t  Combinator() ;                         // makes all desirable combination sig+Bg
-  void    Init();                   
-  Bool_t  ReadSDigits() ;            // Read sdigits for particular events
-  void    WriteDigits() ;            // Writes Digits for particular event
+
+  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
+
+  //Calculate the time of crossing of the threshold by front edge
+  Float_t FrontEdgeTime(TClonesArray * ticks) const ; 
+  //Calculate digitized signal with gived ADC parameters
+  Int_t   DigitizeEnergy(Float_t energy, Int_t absId) ;
 
 private:
-  TClonesArray * fSDigitsTitles ;   // Titles of sdigits branches 
-  TClonesArray * fHeaderFiles ;     // Names of files with headers to merge 
-  TString        fDigitsTitle ;     // Title of the Digits Branch  
-  TClonesArray * fSDigits ;         // ! Lists of SDigits 
-  TClonesArray * fDigits ;          // ! Final list of digits
-  AliPHOSSDigitizer * fSDigitizer ; // ! SDigitizer to extarct some sdigitizing parameters
-  Int_t   fNinputs ;                // Number of input files
-  Bool_t  fInitialized ;            // 
-  TArrayI * fIevent ;               // events to read at the next ReadSDigits() call
-  TArrayI * fIeventMax ;            // Maximal number of events in each input file
-
-  Float_t fPedestal ;                // Calibration parameters 
-  Float_t fSlope ;                   // read from SDigitizer
+
+  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
 
   Float_t fPinNoise ;               // Electronics noise in EMC
   Float_t fEMCDigitThreshold  ;     // Threshold for storing digits in EMC
+
   Float_t fCPVNoise ;               // Noise in CPV
   Float_t fCPVDigitThreshold  ;     // Threshold for storing digits in CPV
-  Float_t fPPSDNoise ;              // Noise in PPSD
-  Float_t fPPSDDigitThreshold ;     // Threshold for storing digits in PPSD
 
 
-  ClassDef(AliPHOSDigitizer,1)  // description 
+  Float_t fTimeResolution ;         // Time resolution of FEE electronics
+  Float_t fTimeThreshold ;          // Threshold to start timing for given crystall
+  Float_t fTimeSignalLength ;       // Length of the timing signal 
+
+  Float_t fADCchanelEmc ;           // width of one ADC channel in GeV
+  Float_t fADCpedestalEmc ;         // value of the EMC ADC pedestal
+  Int_t   fNADCemc ;                // number of channels in EMC ADC
+
+  Float_t fADCchanelCpv ;           // width of one ADC channel in CPV units
+  Float_t fADCpedestalCpv ;         // value of the CPV ADC pedestal in CPV units
+  Int_t   fNADCcpv ;                // number of channels in CPV ADC
+
+  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 
+  ClassDef(AliPHOSDigitizer,3)  // description 
 
 };