]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliEMCALDigitizer.h
Transition from chi2 to chi2/NDF.
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALDigitizer.h
index cb6978c1f7fae03d54f0b53701ddbf13389ca372..13ab83700bbf78f7c8cef87c54cda9572e30e65a 100644 (file)
 /* $Id$ */
 
 //_________________________________________________________________________
-//  Task Class for making SDigits in EMCAL      
+//  Task Class for making Digits in EMCAL      
 //                  
-//*-- Author: Dmitri Peressounko(SUBATECH & KI)
+//*-- Author: Sahal Yacoob (LBL)
+// based on : AliPHOSDigit
+// July     2003 Yves Schutz : NewIO 
+// November 2003 Aleksei Pavlinov : Shish-Kebab geometry 
+//_________________________________________________________________________ 
 
 
 // --- ROOT system ---
-#include "TTask.h"
 #include "TObjString.h"
 class TArrayI ;
+class TClonesArray ; 
+class TList;
+class TBrowser;
+
 // --- Standard library ---
 
 // --- AliRoot header files ---
+#include "AliDigitizer.h"
+#include "AliConfig.h"
+#include "AliEMCALCalibData.h"
 class AliEMCALSDigitizer ;
+class AliRunDigitizer ;
 
-
-class AliEMCALDigitizer: public TTask {
+class AliEMCALDigitizer: public AliDigitizer {
 
 public:
   AliEMCALDigitizer() ;          // ctor
-  AliEMCALDigitizer(const char *headerFile,const char * sDigitsBranchTitle = 0) ; 
+  AliEMCALDigitizer(TString alirunFileNameFile, TString eventFolderName = AliConfig::GetDefaultEventFolderName()) ;  
+  AliEMCALDigitizer(const AliEMCALDigitizer & dtizer) ;
+  AliEMCALDigitizer(AliRunDigitizer * manager) ;
   virtual ~AliEMCALDigitizer() ;       
 
-  void    Digitize(Option_t *option);            // Make Digits from SDigits stored in fSDigits
-  void    Exec(Option_t *option);                // Supervising method
-
-  Float_t GetEMCThreshold() const { return fEMCDigitThreshold;}
-  Float_t GetPedestal()     const { return fPedestal; }
-  Float_t GetPinNoise()     const { return fPinNoise;}
-  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)
-
-  void    SetEMCThreshold(Float_t EMCThreshold)  {fEMCDigitThreshold = EMCThreshold;}
+  void    Digitize(Int_t event);          // Make Digits from SDigits stored in fSDigits
+  void    Exec(Option_t *option);               // Supervising method
+
+  Float_t GetDigitThreshold() const { return fDigitThreshold;}
+  Float_t GetPedestal()       const { return fPedestal; }
+  Float_t GetPinNoise()       const { return fPinNoise;}
+  Float_t GetSlope()          const { return fSlope; }
+  Float_t GetTimeResolution() const { return fTimeResolution ; }
+  Float_t GetECAchannel()     const { return fADCchannelEC ; }
+  Float_t GetECApedestal()    const { return fADCpedestalEC ; }
+ void   SetEventRange(Int_t first=0, Int_t last=-1) {fFirstEvent=first; fLastEvent=last; }
+  void    SetDigitThreshold(Float_t EMCThreshold)  {fDigitThreshold = EMCThreshold;}
   void    SetPinNoise(Float_t PinNoise )         {fPinNoise = PinNoise;}
 
-  void    SetDigitsBranch (const char* file) ;
-  void    SetSDigitsBranch(const char* file) ;
-
-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
-  void    PrintDigits(Option_t * option) ;
+  //General
+  Int_t   GetDigitsInRun()  const { return fDigitsInRun; } 
+  void  MixWith(TString alirunFileName, 
+               TString eventFolderName = AliConfig::GetDefaultEventFolderName()) ; // Add another one file to mix
+  void  Print(Option_t* option="") const ;
+  void  Print1(Option_t * option); // *MENU*
+  AliEMCALDigitizer & operator = (const AliEMCALDigitizer & /*rvalue*/)  {
+    // assignement operator requested by coding convention but not needed
+   Fatal("operator =", "not implemented") ;  
+   return *this ; 
+  }
+
+  virtual void Browse(TBrowser* b);
+  // hists
+  void   SetControlHists(Int_t var=0) {fControlHists=var;}
+  Int_t  GetControlHist() const {return fControlHists;}
+  TList *GetListOfHists() {return fHists;}
+  TList* BookControlHists(int var=0);
+  void   SaveHists(const char* name="RF/TRD1/Digitizations/DigiVar?",
+  Bool_t kSingleKey=kTRUE, const char* opt="RECREATE"); // *MENU*
 
 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
-  AliEMCALSDigitizer * 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
-
-  Float_t fPinNoise ;               // Electronics noise in EMC
-  Float_t fEMCDigitThreshold  ;     // Threshold for storing digits in EMC
 
+  Bool_t  Init();                   
+  void    InitParameters() ; 
+  void    PrintDigits(Option_t * option) ;
+  void    Unload() ; 
+  void    WriteDigits() ;         // Writes Digits the current event
+  Float_t TimeOfNoise(void) ;     // Calculate time signal generated by noise
 
-  ClassDef(AliEMCALDigitizer,1)  // description 
+  //Calculate the time of crossing of the threshold by front edge
+  Float_t FrontEdgeTime(TClonesArray * ticks) ;
+  Int_t   DigitizeEnergy(Float_t energy, 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
+
+  Float_t fDigitThreshold  ;      // Threshold for storing digits in EMC
+  Int_t   fMeanPhotonElectron ;   // number of photon electrons per GeV deposited energy 
+  Float_t fPedestal ;             // Calibration parameters 
+  Float_t fSlope ;                // read from SDigitizer
+  Float_t fPinNoise ;             // Electronics noise in EMC
+  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 fADCchannelEC ;         // width of one ADC channel in EC section (GeV)
+  Float_t fADCpedestalEC ;        // pedestal for one ADC channel
+  Int_t   fNADCEC ;               // number of channels in EC section 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
+  // Control hists
+  Int_t   fControlHists;          //!
+  TList  *fHists;                 //!
+  AliEMCALCalibData * fCalibData; //Calibration data pointer
+
+  ClassDef(AliEMCALDigitizer,6)  // description 
 };