-#ifndef ALIEMCALSDigitizer_H
-#define ALIEMCALSDigitizer_H
+#ifndef ALIEMCALSDIGITIZER_H
+#define ALIEMCALSDIGITIZER_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
-//
+// This is a TTask that makes SDigits out of Hits
+// A Summable Digits is the sum of all hits originating
+// from one in one tower of the EMCAL
+// A threshold for assignment of the primary to SDigit is applied
+//
+// SDigits need to hold the energy sum of the hits, but AliEMCALDigit
+// can (should) only store amplitude. Therefore, the SDigit energy is
+// "digitized" before being stored and must be "calibrated" back to an
+// energy before SDigits are summed to form true Digits
+//
+//
//*-- Author: Sahal Yacoob (LBL)
// based on : AliPHOSSDigitizer
//_________________________________________________________________________
-
-
+
// --- ROOT system ---
#include "TTask.h"
-#include "TString.h"
+class TBrowser;
+
// --- Standard library ---
// --- AliRoot header files ---
+#include "AliConfig.h"
class AliEMCALSDigitizer: public TTask {
public:
AliEMCALSDigitizer() ; // ctor
- AliEMCALSDigitizer(const char* HeaderFile,const char *SdigitsTitle = "Default") ;
- virtual ~AliEMCALSDigitizer() ; // dtor
+ AliEMCALSDigitizer(const char * alirunFileName, const char * eventFolderName = AliConfig::GetDefaultEventFolderName()) ;
+ AliEMCALSDigitizer(const AliEMCALSDigitizer & sd) ;
+ virtual ~AliEMCALSDigitizer(); // dtor
+
+ Int_t Digitize(Float_t energy)const; //convert energy in GeV to int amplitude
+ Float_t Calibrate(Int_t amp)const; //opposite of Digitize()
- Float_t Calibrate(Int_t amp)const {return (amp - fA)/fB ; }
- Int_t Digitize(Float_t Energy)const { return (Int_t ) ( fA + Energy*fB); }
-
- // void TestTowerID(void) ;
virtual void Exec(Option_t *option);
-
- Float_t GetPedestalParameter()const {return fA;}
- Float_t GetCalibrationParameter()const{return fB;}
- char * GetSDigitsBranch()const{return (char*) fSDigitsTitle.Data();}
- void SetSplitFile(const TString splitFileName = "EMCAL.SDigits.root" ) ;
- virtual void Print(Option_t* option) const ;
+ Int_t GetSDigitsInRun() const {return fSDigitsInRun ;}
+ virtual void Print(Option_t *option="") const;
+ void Print1(Option_t *option="all"); // *MENU*
+ void SetEventFolderName(TString name) { fEventFolderName = name ; }
+ void SetEventRange(Int_t first=0, Int_t last=-1) {fFirstEvent=first; fLastEvent=last; }
- void SetPedestalParameter(Float_t A){fA = A ;}
- void SetSlopeParameter(Float_t B){fB = B ;}
- void SetSDigitsBranch(const char * title ) ;
+ Bool_t operator == (const AliEMCALSDigitizer & sd) const ;
+ const AliEMCALSDigitizer & operator = (const AliEMCALSDigitizer & /*sd*/) {return *this ;}
- Bool_t operator == (const AliEMCALSDigitizer & sd) const ;
- Int_t Segment2TowerID(Int_t SegmentID){
- return Layer2TowerID(SegmentID,kFALSE);
-}
+ virtual void Browse(TBrowser* b);
private:
void Init() ;
+ void InitParameters() ;
void PrintSDigits(Option_t * option) ;
- Int_t Layer2TowerID(Int_t,Bool_t) ;
+ void Unload() const ;
private:
- Float_t fA ; //Pedestal parameter
- Float_t fB ; //Slope Digitizition parameters
- Float_t fPhotonElectronFactor ; // number of photon electrons per GeV
- // should be calculated independently for each layer as :
- // LightYield*LightCollectionEfficiency*LightAttenuation*APDPhotoElectronEfficiency*APDGain
-
- Int_t fNevents ; // Number of events to digitize
- Float_t fTowerPrimThreshold ; // To store primary in Tower if Elos > threshold
- Float_t fPreShowerPrimThreshold ; // To store primary if Pre Shower Elos > threshold
- TString fSDigitsTitle ; // title of SDigits branch
- TString fHeadersFile ; //input file
- Bool_t fIsInitialized ;
- TClonesArray * fSDigits ; //! list of SDigits
- TClonesArray * fHits ; //!
- TFile * fSplitFile ; //! file in which SDigits will eventually be stored
-
- ClassDef(AliEMCALSDigitizer,2) // description
-
+ Float_t fA ; // Pedestal parameter
+ Float_t fB ; // Slope Digitizition parameters
+ Float_t fECPrimThreshold ; // To store primary if EC Shower Elos > threshold
+ Bool_t fDefaultInit; //! Says if the task was created by defaut ctor (only parameters are initialized)
+ TString fEventFolderName; // event folder name
+ Bool_t fInit ; //! tells if initialisation went OK, will revent exec if not
+ Int_t fSDigitsInRun ; //! Total number of sdigits in one run
+ Int_t fFirstEvent; // first event to process
+ Int_t fLastEvent; // last event to process
+ Float_t fSampling; // See AliEMCALGeometry
+
+ ClassDef(AliEMCALSDigitizer,6) // description
};
-#endif // AliEMCALSDigitizer_H
+#endif // AliEMCALSDIGITIZER_H
+