#include <Riostream.h>
#include <TMath.h>
#include "AliEMCALRawDigit.h"
#include "AliLog.h"
ClassImp(AliEMCALRawDigit)
AliEMCALRawDigit::AliEMCALRawDigit() : TObject(),
fId(-1),
fNSamples(0),
fSamples(0x0),
fAmplitude(0),
fTime(0)
{
}
AliEMCALRawDigit::AliEMCALRawDigit(Int_t id, Int_t timeSamples[], Int_t nSamples) : TObject(),
fId(id),
fNSamples(nSamples),
fSamples(0x0),
fAmplitude(0),
fTime(0)
{
fSamples = new Int_t[fNSamples];
for (Int_t i = 0; i < fNSamples; i++) fSamples[i] = timeSamples[i];
}
AliEMCALRawDigit::~AliEMCALRawDigit()
{
if(fSamples) delete [] fSamples;
}
void AliEMCALRawDigit::Clear(Option_t *)
{
if(fSamples) delete [] fSamples;
}
Bool_t AliEMCALRawDigit::GetTimeSample(const Int_t iSample, Int_t& timeBin, Int_t& amp) const
{
if (iSample > fNSamples || iSample < 0) return kFALSE;
amp = (Short_t)(fSamples[iSample] & 0xFFFF);
timeBin = (Short_t)(fSamples[iSample] >> 16 );
return kTRUE;
}
void AliEMCALRawDigit::SetTimeSamples(const Int_t timeSamples[], const Int_t nSamples)
{
if (fSamples)
{
AliDebug(1,"Samples already filled: delete first!");
fNSamples = 0;
delete [] fSamples;
}
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
{
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 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;
return rv;
}
void AliEMCALRawDigit::Print(const Option_t* ) const
{
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");
}