ROOT logo
AliRoot » EMCAL » AliEMCALDigitizer

class AliEMCALDigitizer: public AliDigitizer



 Class performs digitization of Summable digits from simulated data

 In addition it performs mixing/embedding of summable digits from different events.

 For each event 3 branches are created in TreeD:
   "EMCAL" - list of digits
   "EMCALTRG" - list of trigger digits
   "AliEMCALDigitizer" - AliEMCALDigitizer with all parameters used in digitization




*-- Author: Sahal Yacoob (LBL)
 based on : AliEMCALDigitizer
 Modif:
  August 2002 Yves Schutz: clone PHOS as closely as possible and intoduction
                           of new IO (a la PHOS)
  November 2003 Aleksei Pavlinov : adopted for Shish-Kebab geometry
  July 2011 GCB: Digitizer modified to accomodate embedding.
                 Time calibration added. Decalibration possibility of energy and time added

Function Members (Methods)

public:
AliEMCALDigitizer()
AliEMCALDigitizer(const AliEMCALDigitizer& dtizer)
AliEMCALDigitizer(AliDigitizationInput* manager)
AliEMCALDigitizer(TString alirunFileNameFile, TString eventFolderName = AliConfig::GetDefaultEventFolderName())
virtual~AliEMCALDigitizer()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTObject::Delete(Option_t* option = "")MENU
voidDigitize(Int_t event)
virtual voidDigitize(Option_t* option)
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Int_tGetDigitsInRun() const
Int_tGetDigitThreshold() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Float_tGetECAchannel() const
Float_tGetECApedestal() const
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Float_tGetPinNoise() const
Bool_tAliDigitizer::GetRegionOfInterest() const
Double_tGetTimeDelay() const
Float_tGetTimeNoise() const
Float_tGetTimeResolution(const Float_t energy) const
Double_tGetTimeResolutionPar0() const
Double_tGetTimeResolutionPar1() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliEMCALDigitizer&operator=(const AliEMCALDigitizer&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* option = "") const
voidPrint1(Option_t* option)MENU
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetDigitThreshold(Int_t EMCThreshold)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetEventRange(Int_t first = 0, Int_t last = -1)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetPinNoise(Float_t pinNoise)
voidSetTimeNoise(Float_t timeNoise)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidAliDigitizer::Copy(TObject& dig) const
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Int_tAliDigitizer::GetNInputStreams() const
voidTObject::MakeZombie()
private:
voidCalibrateADCTime(Float_t& adc, Float_t& time, const Int_t AbsId)
voidDecalibrateTrigger(AliEMCALDigit* digit)
voidDigitalFastOR(Double_t time, Double_t dE, Int_t* timeSamples, Int_t nSamples)
voidDigitizeEnergyTime(Float_t& energy, Float_t& time, const Int_t AbsId)
voidDigits2FastOR(TClonesArray* digitsTMP, TClonesArray* digitsTRG)
virtual Bool_tInit()
voidInitParameters()
Bool_tIsDead(AliEMCALDigit* digit)
Bool_tIsDead(Int_t absId)
voidPrintDigits(Option_t* option)
Float_tTimeOfNoise()
voidUnload()
voidWriteDigits()
voidWriteDigits(TClonesArray* digits, const char* branchName = "EMTRG")

Data Members

protected:
AliDigitizationInput*AliDigitizer::fDigInput! Pointer to the Digitizer input
TStringTNamed::fNameobject identifier
TStringTNamed::fTitleobject title
private:
Float_tfADCchannelECcalibration width of one ADC channel in EC section (GeV)
Float_tfADCchannelECDecaldecalibration width of one ADC channel in EC section (GeV)
Float_tfADCpedestalECcalibration pedestal for one ADC channel
AliEMCALCalibData*fCalibDataCalibration data pointer
Bool_tfDefaultInit! Says if the task was created by defaut ctor (only parameters are initialized)
Int_tfDigitThresholdThreshold for storing digits in EMC, ACD units
Int_tfDigitsInRun! Total number of digits in one run
TStringfEventFolderNameskowron: name of EFN to read data from in stand alone mode
TString*fEventNames[fInput] List of event names to merge
Int_tfFirstEventfirst event to process
Float_tfGainFluctuationscorrect fMeanPhotonElectron by the gain fluctuations
Bool_tfInit! To avoid overwriting existing files
Int_tfInputNumber of files to merge
TString*fInputFileNames[fInput] List of file names to merge
Int_tfLastEventlast event to process
Int_tfMeanPhotonElectronnumber of photon electrons per GeV deposited energy
Int_tfNADCECnumber of channels in EC section ADC
Float_tfPinNoiseElectronics noise in EMC, APD
AliEMCALSDigitizer*fSDigitizerSDigitization object
Float_tfTimeChannelcalibration time width for one channel
Float_tfTimeChannelDecalcalibration time width for one channel
Double_tfTimeDelayTime delay to reproduce data delay
Double_tfTimeNoiseElectronics noise in EMC, time
Double_tfTimeResolutionPar0Time resolution of FEE electronics
Double_tfTimeResolutionPar1Time resolution of FEE electronics

Class Charts

Inheritance Chart:
TNamed
AliDigitizer
AliEMCALDigitizer

Function documentation

AliEMCALDigitizer()
 ctor
AliEMCALDigitizer(TString alirunFileNameFile, TString eventFolderName = AliConfig::GetDefaultEventFolderName())
 ctor
AliEMCALDigitizer(const AliEMCALDigitizer& dtizer)
 copyy ctor
AliEMCALDigitizer(AliDigitizationInput* manager)
 ctor Init() is called by RunDigitizer
~AliEMCALDigitizer()
dtor
void Digitize(Int_t event)
 Makes the digitization of the collected summable digits
 for this it first creates the array of all EMCAL modules
 filled with noise and after that adds contributions from
 SDigits. This design helps to avoid scanning over the
 list of digits to add  contribution of any new SDigit.

 JLK 26-Jun-2008
 Note that SDigit energy info is stored as an amplitude, so we
 must call the Calibrate() method of the SDigitizer to convert it
 back to an energy in GeV before adding it to the Digit

void DigitizeEnergyTime(Float_t& energy, Float_t& time, const Int_t AbsId)
 JLK 26-June-2008
 Returns digitized value of the energy in a cell absId
 using the calibration constants stored in the OCDB
 or default values if no CalibData object is found.
 This effectively converts everything to match the dynamic range
 of the real data we will collect

 Load Geometry
void DecalibrateTrigger(AliEMCALDigit* digit)
 Decalibrate, used in Trigger digits
void CalibrateADCTime(Float_t& adc, Float_t& time, const Int_t AbsId)
 Returns the energy in a cell absId with a given adc value
 using the calibration constants stored in the OCDB. Time also corrected from parameter in OCDB
 Used in case of embedding, transform ADC counts from real event into energy
 so that we can add the energy of the simulated sdigits which are in energy
 units.
 Same as in AliEMCALClusterizer::Calibrate() but here we do not reject channels being marked as hot
 or with time out of window
void Digitize(Option_t* option)
 Steering method to process digitization for events
 in the range from fFirstEvent to fLastEvent.
 This range is optionally set by SetEventRange().
 if fLastEvent=-1, then process events until the end.
 by default fLastEvent = fFirstEvent (process only one event)
Float_t GetTimeResolution(const Float_t energy) const
 Assign a smeared time to the digit, from observed distribution in LED system (?).
 From F. Blanco
void Digits2FastOR(TClonesArray* digitsTMP, TClonesArray* digitsTRG)
 FEE digits afterburner to produce TRG digits
 we are only interested in the FEE digit deposited energy
 to be converted later into a voltage value
void DigitalFastOR(Double_t time, Double_t dE, Int_t* timeSamples, Int_t nSamples)
 parameters:
 id: 0..95
Bool_t Init()
 Makes all memory allocations
void InitParameters()
 Parameter initialization for digitizer
void Print1(Option_t* option)
void Print(Option_t* option = "") const
 Print Digitizer's parameters
void PrintDigits(Option_t* option)
utility method for printing digit information
Float_t TimeOfNoise(void)
 Calculates the time signal generated by noise
printf("Time noise %e\n",fTimeNoise);
void Unload()
 Unloads the SDigits and Digits
void WriteDigits()
 Check if branch already exists:
   if yes, exit without writing: ROOT TTree does not support overwriting/updating of
      already existing branches.
   else creates branch with Digits, named "EMCAL", title "...",
      and branch "AliEMCALDigitizer", with the same title to keep all the parameters
      and names of files, from which digits are made.
void WriteDigits(TClonesArray* digits, const char* branchName = "EMTRG")
 overloaded method
Bool_t IsDead(AliEMCALDigit* digit)
 Check if cell is defined as dead, so that it is not included
 input is digit
Bool_t IsDead(Int_t absId)
 Check if cell absID is defined as dead, so that it is not included
Int_t GetDigitThreshold() const
{ return fDigitThreshold ; }
Float_t GetPinNoise() const
{ return fPinNoise ; }
Float_t GetTimeNoise() const
{ return fTimeNoise ; }
Double_t GetTimeResolutionPar0() const
{ return fTimeResolutionPar0 ; }
Double_t GetTimeResolutionPar1() const
{ return fTimeResolutionPar1 ; }
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)
void SetDigitThreshold(Int_t EMCThreshold)
{ fDigitThreshold = EMCThreshold ; }
void SetPinNoise(Float_t pinNoise)
{ fPinNoise = pinNoise ; }
void SetTimeNoise(Float_t timeNoise)
{ fTimeNoise = timeNoise ; }
Int_t GetDigitsInRun() const
General
{ return fDigitsInRun; }