-#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
+// November 2003 Aleksei Pavlinov : Shish-Kebab geometry
//_________________________________________________________________________
// --- ROOT system ---
-#include "TObjString.h"
-class TArrayI ;
class TClonesArray ;
+class TBrowser;
// --- Standard library ---
-#include <stdlib.h>
// --- AliRoot header files ---
#include "AliDigitizer.h"
+#include "AliConfig.h"
+class AliEMCALCalibData ;
class AliEMCALSDigitizer ;
class AliRunDigitizer ;
public:
AliEMCALDigitizer() ; // ctor
- AliEMCALDigitizer(const char *headerFile, const char * sDigitsBranchTitle = "Default", const Bool_t toSplit = kFALSE) ;
- AliEMCALDigitizer(AliRunDigitizer * ard) ;
- AliEMCALDigitizer(const AliEMCALDigitizer & dtizer)
- {( (AliEMCALDigitizer &)dtizer ).Copy(*this) ;}
+ AliEMCALDigitizer(TString alirunFileNameFile, TString eventFolderName = AliConfig::GetDefaultEventFolderName()) ;
+ AliEMCALDigitizer(const AliEMCALDigitizer & dtizer) ;
+ AliEMCALDigitizer(AliRunDigitizer * manager) ;
virtual ~AliEMCALDigitizer() ;
- void Digitize(const Int_t event); // Make Digits from SDigits stored in fSDigits
+ void Digitize(Int_t event); // Make Digits from SDigits stored in fSDigits
void Exec(Option_t *option); // Supervising method
- const Float_t GetTowerThreshold() const { return fTowerDigitThreshold;}
- const Float_t GetPedestal() const { return fPedestal; }
- const Float_t GetPinNoise() const { return fPinNoise;}
- const Float_t GetSlope() const { return fSlope; }
- const Float_t GetTimeResolution() const { return fTimeResolution ; }
- const Float_t GetTowerchannel() const { return fADCchannelTower ; }
- const Float_t GetTowerpedestal() const { return fADCpedestalTower ; }
- const Float_t GetPreShochannel() const { return fADCchannelPreSho ; }
- const Float_t GetPreShopedestal() const { return fADCpedestalPreSho ; }
-
- void SetTowerThreshold(Float_t EMCThreshold) {fTowerDigitThreshold = EMCThreshold;}
- void SetPinNoise(Float_t PinNoise ) {fPinNoise = PinNoise;}
+ Int_t GetDigitThreshold() const { return fDigitThreshold;}
+ Float_t GetPinNoise() const { return fPinNoise;}
+ Float_t GetTimeResolution(const Float_t energy) const;
+ 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) {fFirstEvent=first; fLastEvent=last; }
+ void SetDigitThreshold(Int_t EMCThreshold) {fDigitThreshold = EMCThreshold;}
+ void SetPinNoise(Float_t PinNoise ) {fPinNoise = PinNoise;}
//General
- const Int_t GetDigitsInRun() const { return fDigitsInRun; } ;
- void MixWith(char* HeaderFile) ; // Add another one file to mix
- void Print(Option_t* option)const ;
+ 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) {
+ AliEMCALDigitizer & operator = (const AliEMCALDigitizer & /*rvalue*/) {
// assignement operator requested by coding convention but not needed
- abort() ;
- return *this ;
+ Fatal("operator =", "not implemented") ;
+ return *this ;
}
+ virtual void Browse(TBrowser* b);
+
private:
Bool_t Init();
void InitParameters() ;
void PrintDigits(Option_t * option) ;
- void WriteDigits(Int_t evt) ; // Writes Digits for particular event
- 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 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) ;
+
+ 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)
- Int_t fDigitsInRun ; //! Total number of digits in one run
-
- Float_t fPedestal ; // Calibration parameters
- Float_t fSlope ; // read from SDigitizer
-
- Float_t fPinNoise ; // Electronics noise in EMC
- Float_t fTowerDigitThreshold ; // Threshold for storing digits in EMC
- Float_t fPreShowerDigitThreshold ; // Threshold for Preshower digits
-
- 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 fADCchannelTower ; // width of one ADC channel in Tower (GeV)
- Float_t fADCpedestalTower ; //
- Int_t fNADCTower ; // number of channels in Tower ADC
-
- Float_t fADCchannelPreSho ; // width of one ADC channel in Pre Shower (GeV)
- Float_t fADCpedestalPreSho ; //
- Int_t fNADCPreSho ; // number of channels in Pre Shower ADC
-
- Bool_t fToSplit ; //! Do we work in the split mode
- TFile * fSplitFile ; //! file in which Digits will eventually be stored
-
- 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 fPinNoise ; // Electronics noise in EMC
+ Double_t fTimeDelay; // Time delay to reproduce data delay
+ Double_t fTimeResolutionPar0 ; // Time resolution of FEE electronics
+ Double_t fTimeResolutionPar1 ; // Time resolution of FEE electronics
+ 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,10) // description
};
-#endif // AliEMCALDigitizer_H
+#endif // AliEMCALDIGITIZER_H