-#ifndef ALIEMCALDigitizer_H
-#define ALIEMCALDigitizer_H
+#ifndef ALIEMCALDIGITIZER_H
+#define ALIEMCALDIGITIZER_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
/* $Id$ */
//_________________________________________________________________________
-// Task Class for making SDigits in EMCAL
-//
-//*-- Author: Dmitri Peressounko(SUBATECH & KI)
+// Class that performs digitization of Summable digits from simulated data
+//
+// In addition it performs mixing of summable digits from different events.
+//
+// For each event two branches are created in TreeD:
+// "EMCAL" - list of digits
+// "AliEMCALDigitizer" - AliEMCALDigitizer with all parameters used in digitization
+//
+// Note, that one cset title for new digits branch, and repeat digitization with
+// another set of parameters.
+//
+//*-- 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 TBrowser;
+
// --- Standard library ---
// --- AliRoot header files ---
+#include "AliDigitizer.h"
+#include "AliConfig.h"
+class AliEMCALCalibData ;
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
+
+ Int_t GetDigitThreshold() const { return fDigitThreshold;}
+ //Float_t GetPedestal() const { return fPedestal; }
+ Float_t GetPinNoise() const { return fPinNoise;}
+ //Float_t GetSlope() const { return fSlope; }
+ Double_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(Int_t EMCThreshold) {fDigitThreshold = EMCThreshold;}
void SetPinNoise(Float_t PinNoise ) {fPinNoise = PinNoise;}
- void SetDigitsBranch (const char* file) ;
- void SetSDigitsBranch(const char* file) ;
+ //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);
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) ;
+ Bool_t Init();
+ void InitParameters() ;
+ void PrintDigits(Option_t * option) ;
+ void Unload() ;
+ void WriteDigits() ; // Writes Digits the current event
+ void WriteDigits(TClonesArray* digits, const char* branchName = "EMTRG"); //
+ Float_t TimeOfNoise(void) ; // Calculate time signal generated by noise
+
+ //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) ;
+ void Digits2FastOR(TClonesArray*digitsTMP, TClonesArray* digitsTRG);
+ void DigitalFastOR(Double_t time, Double_t dE, Int_t timeSamples[], Int_t nSamples);
+
+
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
-
-
- ClassDef(AliEMCALDigitizer,1) // description
-
+
+ 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 fDigitThreshold ; // Threshold for storing digits in EMC, ACD units
+ Int_t fMeanPhotonElectron ; // number of photon electrons per GeV deposited energy
+ //Float_t fPedestal ; // Calibration parameters //Not used, remove?
+ //Float_t fSlope ; // read from SDigitizer //Not used, remove?
+ Float_t fPinNoise ; // Electronics noise in EMC
+ Double_t fTimeResolution ; // Time resolution of FEE electronics
+ //Float_t fTimeThreshold ; // Threshold to start timing for given crystall //Not used, remove?
+ //Float_t fTimeSignalLength ; // Length of the timing signal //Not used, remove?
+ 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
+
+ AliEMCALCalibData * fCalibData; //Calibration data pointer
+
+ ClassDef(AliEMCALDigitizer,8) // description
};
-#endif // AliEMCALDigitizer_H
+#endif // AliEMCALDIGITIZER_H