X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EMCAL%2FAliEMCALRawDigit.cxx;h=307489aa1d954efc036ed5238e147e7754701593;hb=aa113f3d9cb4a8dbbd05cf3dddffe5b2e92c5885;hp=a7a8910a489a541b5faa721da26fe78cd8e09dcb;hpb=916f1e76c5ffee7c7ed6214b883f65b4b6df3adf;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/AliEMCALRawDigit.cxx b/EMCAL/AliEMCALRawDigit.cxx index a7a8910a489..307489aa1d9 100644 --- a/EMCAL/AliEMCALRawDigit.cxx +++ b/EMCAL/AliEMCALRawDigit.cxx @@ -12,16 +12,21 @@ * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ +/* + + + + + Author: R. GUERNANE LPSC Grenoble CNRS/IN2P3 +*/ // --- ROOT system --- #include #include -// --- Standard library --- - // --- AliRoot header files --- - #include "AliEMCALRawDigit.h" +#include "AliLog.h" ClassImp(AliEMCALRawDigit) @@ -29,7 +34,9 @@ ClassImp(AliEMCALRawDigit) AliEMCALRawDigit::AliEMCALRawDigit() : TObject(), fId(-1), fNSamples(0), -fSamples(0x0) +fSamples(0x0), +fAmplitude(0), +fTime(0) { // default ctor } @@ -38,39 +45,35 @@ fSamples(0x0) AliEMCALRawDigit::AliEMCALRawDigit(Int_t id, Int_t timeSamples[], Int_t nSamples) : TObject(), fId(id), fNSamples(nSamples), -fSamples(0x0) +fSamples(0x0), +fAmplitude(0), +fTime(0) { // - fSamples = new Int_t[fNSamples] ; - for (Int_t i=0; i < fNSamples; i++) fSamples[i] = timeSamples[i]; + fSamples = new Int_t[fNSamples]; + for (Int_t i = 0; i < fNSamples; i++) fSamples[i] = timeSamples[i]; } //____________________________________________________________________________ -AliEMCALRawDigit::AliEMCALRawDigit(const AliEMCALRawDigit& digit) : TObject(),//AliDigitNew(digit), -fId(digit.fId), -fNSamples(digit.fNSamples), -fSamples(0x0) - +AliEMCALRawDigit::~AliEMCALRawDigit() { - // Copy ctor - // Data members of the base class (AliNewDigit) - -// fAmp = digit.fAmp; -// fIndexInList = digit.fIndexInList; - fSamples = new Int_t[fNSamples]; - for (Int_t i=0; i < digit.fNSamples; i++) fSamples[i] = digit.fSamples[i]; + //dtor, delete array of time samples + if(fSamples) delete [] fSamples; } //____________________________________________________________________________ -AliEMCALRawDigit::~AliEMCALRawDigit() +void AliEMCALRawDigit::Clear(Option_t *) { - // Delete array of time samples - delete [] fSamples; + // clear, delete array of time samples + if(fSamples) delete [] fSamples; } + //____________________________________________________________________________ Bool_t AliEMCALRawDigit::GetTimeSample(const Int_t iSample, Int_t& timeBin, Int_t& amp) const { + // returns the time and amplitude of a given time sample and if the sample was ok + if (iSample > fNSamples || iSample < 0) return kFALSE; amp = fSamples[iSample] & 0xFFF; @@ -80,48 +83,84 @@ Bool_t AliEMCALRawDigit::GetTimeSample(const Int_t iSample, Int_t& timeBin, Int_ } //____________________________________________________________________________ -void AliEMCALRawDigit::Print(const Option_t* /*opt*/) const +void AliEMCALRawDigit::SetTimeSamples(const Int_t timeSamples[], const Int_t nSamples) { - printf("===\nDigit id: %4d / %d Time Samples: \n",fId,fNSamples); - for (Int_t i=0; i < fNSamples; i++) + // Sets the time samples + + if (fSamples) { - Int_t timeBin, amp; - GetTimeSample(i, timeBin, amp); - printf("(%d,%d) ",timeBin,amp); + AliDebug(1,"Samples already filled: delete first!"); + fNSamples = 0; + delete [] fSamples; } - printf("\n"); + fNSamples = nSamples; + fSamples = new Int_t[fNSamples]; + for (Int_t i = 0; i < fNSamples; i++) fSamples[i] = timeSamples[i]; +} + +//____________________________________________________________________________ +Bool_t AliEMCALRawDigit::GetMaximum(Int_t& amplitude, Int_t& time) const +{ + // Checks the maximum amplitude in the time sample + + if (!fNSamples) + { + AliDebug(1,"Digit has no time sample"); + return kFALSE; + } + + amplitude = 0; + for (Int_t i = 0; i < fNSamples; i++) + { + Int_t t, a; + if (GetTimeSample(i, t, a)) + { + if (a > amplitude) + { + amplitude = a; + time = t; + } + } + } + + return kTRUE; } //____________________________________________________________________________ -Int_t AliEMCALRawDigit::Compare(const TObject* obj) const +Int_t AliEMCALRawDigit::Compare(const TObject * obj) const { // Compares two digits with respect to its Id // to sort according increasing Id - - Int_t rv; - - AliEMCALRawDigit* digit = (AliEMCALRawDigit *)obj; - - Int_t iddiff = fId - digit->GetId(); - - if ( iddiff > 0 ) - rv = 1; - else if ( iddiff < 0 ) + + Int_t rv=0; + + AliEMCALRawDigit* digit = (AliEMCALRawDigit*)obj; + + Int_t iddiff = fId - digit->GetId(); + + if (iddiff > 0) + rv = 1; + else if (iddiff < 0) rv = -1; else - rv = 0; - + rv = 0; + return rv; } //____________________________________________________________________________ -Bool_t AliEMCALRawDigit::operator==(AliEMCALRawDigit const & digit) const +void AliEMCALRawDigit::Print(const Option_t* /*opt*/) const { - // Two digits are equal if they have the same Id + // print - if(fId == digit.fId) - return kTRUE; - else - return kFALSE; + printf("===\n| Digit id: %4d / %d Time Samples: \n",fId,fNSamples); + for (Int_t i=0; i < fNSamples; i++) + { + Int_t timeBin=-1, amp=0; + GetTimeSample(i, timeBin, amp); + printf("| (%d,%d) ",timeBin,amp); + } + + printf("\n"); }