]>
Commit | Line | Data |
---|---|---|
61e0abb5 | 1 | #ifndef ALIEMCALDIGIT_H |
2 | #define ALIEMCALDIGIT_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | //_________________________________________________________________________ | |
ffa6d63b | 9 | // EMCAL digit: |
10 | // | |
11 | // A Digit is the sum of energy in a Tower (Hit sum) and stores information, about primaries | |
fdebddeb | 12 | // and entering particle contributing to a Digit |
61e0abb5 | 13 | // |
ffa6d63b | 14 | //*-- Author: Sahal Yacoob (LBL) |
15 | // based on : AliPHOSDigit | |
16 | //___________________________________________________________________________ | |
61e0abb5 | 17 | |
18 | // --- ROOT system --- | |
19 | ||
20 | #include "TObject.h" | |
21 | ||
22 | // --- Standard library --- | |
23 | ||
24 | // --- AliRoot header files --- | |
61e0abb5 | 25 | #include "AliDigitNew.h" |
26 | ||
27 | class AliEMCALDigit : public AliDigitNew { | |
28 | ||
29 | friend ostream& operator << ( ostream& , const AliEMCALDigit&) ; | |
30 | ||
31 | public: | |
32 | ||
33 | AliEMCALDigit() ; | |
2cd0ffda | 34 | AliEMCALDigit(Int_t primary, Int_t iparent, Int_t id, Float_t digEnergy, Float_t time, Int_t type,Int_t index = -1, Float_t chi2=0, Int_t ndf=0, Float_t dE = 0) ; |
61e0abb5 | 35 | AliEMCALDigit(const AliEMCALDigit & digit) ; |
36 | virtual ~AliEMCALDigit() ; | |
37 | ||
38 | Bool_t operator==(const AliEMCALDigit &rValue) const; | |
0a4cb131 | 39 | AliEMCALDigit operator+(const AliEMCALDigit &rValue) ; |
40 | AliEMCALDigit operator*(Float_t factor) ; | |
14ce0a6e | 41 | const AliEMCALDigit& operator = (const AliEMCALDigit &) {return *this;} |
f4a4dc82 | 42 | enum digitType{kUnknown=-1, kHG=0, kLG=1, kLGnoHG=2, kTrigger=3}; |
e0dc3f7d | 43 | |
44 | void Clear(const Option_t*) ; | |
829ba234 | 45 | Int_t Compare(const TObject * obj) const ; |
46 | Float_t GetAmplitude() const { if(!fAmp)return fAmpFloat ; else return fAmp ;}//Keep backward compatibility. | |
47 | Float_t GetEta() const ; | |
48 | Int_t GetNprimary() const { return fNprimary ;} | |
49 | Int_t GetPrimary(Int_t index) const ; | |
af5bdd85 | 50 | Float_t GetDEPrimary(Int_t index) const ; |
829ba234 | 51 | Int_t GetNiparent() const { return fNiparent ;} |
52 | Int_t GetIparent(Int_t index) const ; | |
53 | Float_t GetDEParent(Int_t index) const ; | |
54 | Float_t GetPhi() const ; | |
55 | Float_t GetTime(void) const { return fTime ;} | |
56 | Float_t GetTimeR(void) const { return fTimeR ;} | |
57 | Float_t GetChi2(void) const { return fChi2 ;} | |
58 | Int_t GetNDF(void) const { return fNDF ;} | |
59 | Bool_t IsSortable() const { return kTRUE ;} | |
f4a4dc82 | 60 | Int_t GetType() const { return fDigitType ;} |
829ba234 | 61 | |
f4a4dc82 | 62 | void SetAmp(Int_t amp) { fAmp = amp ;} //old |
63 | void SetAmplitude(Float_t amp) { fAmpFloat = amp ;} | |
64 | void SetId(Int_t idt) { fId = idt ;} | |
65 | void SetTime(Float_t time) { fTime = time ;} | |
66 | void SetTimeR(Float_t time) { fTimeR = time ;} | |
67 | void SetChi2(Float_t chi) { fChi2 = chi ;} | |
68 | void SetNDF(Int_t ndf) { fNDF = ndf ;} | |
69 | void SetType(Int_t t) { fDigitType = t ;} | |
fdebddeb | 70 | void ShiftPrimary(Int_t shift); // shift to separate different TreeK in merging |
8a84b948 | 71 | |
829ba234 | 72 | //Raw time sample |
73 | //ALTRO | |
f4a4dc82 | 74 | Int_t GetNALTROSamplesLG() const {if(fDigitType==kLG)return fNSamples; else return 0;} |
829ba234 | 75 | Bool_t GetALTROSampleLG(const Int_t iSample, Int_t& timeBin, Int_t& amp) const; |
f4a4dc82 | 76 | Int_t GetNALTROSamplesHG() const {if(fDigitType==kHG) return fNSamplesHG; else return 0;} |
829ba234 | 77 | Bool_t GetALTROSampleHG(const Int_t iSample, Int_t& timeBin, Int_t& amp) const; |
78 | //FALTRO, trigger. Same data members as Low Gain | |
79 | Int_t GetNFALTROSamples() const | |
f4a4dc82 | 80 | {if(fDigitType==kTrigger) return fNSamples; else return 0;} |
829ba234 | 81 | Bool_t GetFALTROSample(const Int_t iSample, Int_t& timeBin, Int_t& amp) const ; |
82 | ||
83 | void SetALTROSamplesHG (const Int_t nSamplesHG, Int_t *samplesHG); | |
84 | void SetALTROSamplesLG (const Int_t nSamplesLG, Int_t *samplesLG); | |
f4a4dc82 | 85 | void SetFALTROSamples (const Int_t nSamples, Int_t *samples) { if(fDigitType==kTrigger) SetALTROSamplesLG(nSamples, samples);} |
88cb7938 | 86 | |
8a84b948 | 87 | void SetCalibAmp(Float_t amp) { fAmpCalib = amp; } |
88 | Double_t GetCalibAmp() const { return fAmpCalib; } | |
89 | ||
829ba234 | 90 | void Print(const Option_t* /*opt*/) const; |
91 | ||
92 | private: | |
93 | ||
94 | Float_t fAmpFloat; // Cell amplitude, float | |
95 | Int_t fNSamples; // Number of time samples, Low Gain for ALTRO, used also for FALTRO | |
96 | Int_t* fSamples; //[fNSamples], list of time bin constents, Low Gain for ALTRO, used also for FALTRO | |
97 | Int_t fNSamplesHG; // Number of time samples, High Gain for ALTRO | |
98 | Int_t* fSamplesHG; //[fNSamples], list of time bin constents, High Gain for ALTRO, used also for FALTRO | |
99 | ||
61e0abb5 | 100 | Int_t fNprimary ; // Number of primaries |
88d764f0 | 101 | Int_t fNMaxPrimary ; // Max Number of primaries |
102 | Int_t *fPrimary ; //[fNMaxPrimary] Array of primaries | |
af5bdd85 | 103 | Float_t *fDEPrimary; //[fNMaxPrimary] Array of primary energy contributions |
61e0abb5 | 104 | |
105 | Int_t fNiparent ; // Number of initial parents | |
88d764f0 | 106 | Int_t fNMaxiparent ; // Max Number of parents |
107 | Int_t *fIparent ; //[fNMaxiparent] Array of parents | |
af5bdd85 | 108 | Float_t *fDEParent; //[fNMaxiparent] Array of parent energy contributions |
0c22a365 | 109 | Int_t fMaxIter ; // Number to Increment Maxiparent, and MaxPrimary if default is not sufficient |
814ad4bf | 110 | Float_t fTime ; // Calculated time |
04f0bda3 | 111 | Float_t fTimeR ; // Earliest time: to be used by Digits2Raw |
829ba234 | 112 | //Fit quality parameters |
113 | Float_t fChi2; // Fit Chi aquare | |
f4a4dc82 | 114 | Int_t fNDF; // Fit Number of Degrees of Freedom |
829ba234 | 115 | |
f4a4dc82 | 116 | Int_t fDigitType; // This is a trigger digit(0), HG (1) or LG (3) |
8a84b948 | 117 | Float_t fAmpCalib; //!Calibrated energy |
61e0abb5 | 118 | |
8a84b948 | 119 | ClassDef(AliEMCALDigit,6) // Digit in EMCAL |
61e0abb5 | 120 | } ; |
121 | ||
122 | #endif // ALIEMCALDIGIT_H |