-#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 Digits in EMCAL
-//
+// 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
+// July 2003 Yves Schutz : NewIO
+// November 2003 Aleksei Pavlinov : Shish-Kebab geometry
//_________________________________________________________________________
// --- ROOT system ---
-#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 ;
public:
AliEMCALDigitizer() ; // ctor
- AliEMCALDigitizer(TString alirunFileNameFile, TString eventFolderName = AliConfig::fgkDefaultEventFolderName) ;
+ AliEMCALDigitizer(TString alirunFileNameFile, TString eventFolderName = AliConfig::GetDefaultEventFolderName()) ;
AliEMCALDigitizer(const AliEMCALDigitizer & dtizer) ;
AliEMCALDigitizer(AliRunDigitizer * manager) ;
virtual ~AliEMCALDigitizer() ;
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 SetDigitThreshold(Float_t EMCThreshold) {fDigitThreshold = EMCThreshold;}
- void SetPinNoise(Float_t PinNoise ) {fPinNoise = PinNoise;}
+ 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 ; }
+ Double_t GetTimeDelay() const { return fTimeDelay ; }
+ 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;}
//General
- Int_t GetDigitsInRun() const { return fDigitsInRun; }
+ Int_t GetDigitsInRun() const { return fDigitsInRun; }
void MixWith(TString alirunFileName,
- TString eventFolderName = AliConfig::fgkDefaultEventFolderName) ; // Add another one file to mix
- void Print()const ;
+ 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
return *this ;
}
+ virtual void Browse(TBrowser* b);
+
private:
Bool_t Init();
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) ;
-
+ //Float_t FrontEdgeTime(TClonesArray * ticks) ;
+
+ Float_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:
Bool_t fDefaultInit; //! Says if the task was created by defaut ctor (only parameters are initialized)
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
+ 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 fTimeDelay; // Time delay to reproduce data delay
+ 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 ; //
+ 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
-
- ClassDef(AliEMCALDigitizer,4) // description
+ 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,9) // description
};
-#endif // AliEMCALDigitizer_H
+#endif // AliEMCALDIGITIZER_H