#include "AliTPCclusterKr.h"
#include "AliCluster.h"
#include "AliTPCvtpr.h"
#include "TObjArray.h"
#include "TMath.h"
#include "TArrayI.h"
ClassImp(AliTPCclusterKr)
AliTPCclusterKr::AliTPCclusterKr()
:AliCluster(),
fMax(),
fADCcluster(0),
fSec(0),
fNPads(0),
fNRows(0),
fTimebins1D(0),
fPads1D(0),
fPadRMS(0),
fRowRMS(0),
fTimebinRMS(0),
fSize(0),
fCenterX(0),
fCenterY(0),
fCenterT(0),
fCluster(0),
fTimeStamp(0),
fRun(0)
{
fCluster=new TObjArray();
}
AliTPCclusterKr::AliTPCclusterKr(const AliTPCclusterKr ¶m)
:AliCluster(param),
fMax(),
fADCcluster(0),
fSec(0),
fNPads(0),
fNRows(0),
fTimebins1D(0),
fPads1D(0),
fPadRMS(0),
fRowRMS(0),
fTimebinRMS(0),
fSize(0),
fCenterX(0),
fCenterY(0),
fCenterT(0),
fCluster(0),
fTimeStamp(0),
fRun(0)
{
fADCcluster = param.fADCcluster;
fSec = param.fSec ;
fNPads = param.fNPads;
fNRows = param.fNRows;
fMax = param.fMax;
fCenterX = param.fCenterX;
fCenterY = param.fCenterY;
fCenterT = param.fCenterT;
fCluster=new TObjArray(*(param.fCluster));
fSize = param.fSize;
fTimebins1D = param.fTimebins1D;
fPads1D = param.fPads1D;
fPadRMS = param.fPadRMS;
fRowRMS = param.fRowRMS;
fTimebinRMS = param.fTimebinRMS;
fTimeStamp = param.fTimeStamp;
fRun = param.fRun;
}
AliTPCclusterKr &AliTPCclusterKr::operator = (const AliTPCclusterKr & param)
{
if (this == ¶m) return (*this);
(AliCluster&)(*this) = (AliCluster&)param;
fADCcluster = param.fADCcluster;
fSec = param.fSec ;
fNPads = param.fNPads;
fNRows = param.fNRows;
fMax = param.fMax;
fCenterX = param.fCenterX;
fCenterY = param.fCenterY;
fCenterT = param.fCenterT;
delete fCluster;
fCluster=new TObjArray(*(param.fCluster));
fSize=param.fSize;
fTimebins1D = param.fTimebins1D;
fPads1D = param.fPads1D;
fPadRMS = param.fPadRMS;
fRowRMS = param.fRowRMS;
fTimebinRMS = param.fTimebinRMS;
fTimeStamp = param.fTimeStamp;
fRun = param.fRun;
return (*this);
}
AliTPCclusterKr::~AliTPCclusterKr()
{
if(fCluster) {
fCluster->SetOwner(kTRUE);
fCluster->Delete();
delete fCluster;
}
fCluster=0;
}
void AliTPCclusterKr::SetCenter(){
Double_t rX=0;
Double_t rY=0;
Double_t rT=0;
Short_t adc;
fADCcluster=0;
for(Int_t iter = 0; iter < fCluster->GetEntriesFast(); ++iter) {
AliTPCvtpr *iclus=(AliTPCvtpr *)fCluster->At(iter);
adc = (iclus)->GetAdc();
fADCcluster+=adc;
rX += ((iclus)->GetX() * adc);
rY += ((iclus)->GetY() * adc);
rT += ((iclus)->GetT() * adc);
}
if(fADCcluster){
fCenterX=rX/fADCcluster;
fCenterY=rY/fADCcluster;
fCenterT=rT/fADCcluster;
}
return;
}
void AliTPCclusterKr::SetPadRMS(){
TArrayI *array= new TArrayI(fCluster->GetEntriesFast());
for(Int_t i=0;i<fCluster->GetEntriesFast();i++)
{
array->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetPad(),i);
}
fPadRMS=TMath::RMS(array->GetSize(),array->GetArray());
delete array;
return;
}
void AliTPCclusterKr::SetRowRMS(){
TArrayI *array= new TArrayI(fCluster->GetEntriesFast());
for(Int_t i=0;i<fCluster->GetEntriesFast();i++)
{
array->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetRow(),i);
}
fRowRMS=TMath::RMS(array->GetSize(),array->GetArray());
delete array;
return;
}
void AliTPCclusterKr::SetTimebinRMS(){
TArrayI *array= new TArrayI(fCluster->GetEntriesFast());
for(Int_t i=0;i<fCluster->GetEntriesFast();i++)
{
array->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetTime(),i);
}
fTimebinRMS=TMath::RMS(array->GetSize(),array->GetArray());
delete array;
return;
}
void AliTPCclusterKr::SetRMS(){
TArrayI *arrayPad = new TArrayI(fCluster->GetEntriesFast());
TArrayI *arrayRow = new TArrayI(fCluster->GetEntriesFast());
TArrayI *arrayTime= new TArrayI(fCluster->GetEntriesFast());
for(Int_t i=0;i<fCluster->GetEntriesFast();i++)
{
arrayPad->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetPad(),i);
arrayRow->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetRow(),i);
arrayTime->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetTime(),i);
}
fPadRMS=TMath::RMS(arrayPad->GetSize(),arrayPad->GetArray());
fRowRMS=TMath::RMS(arrayRow->GetSize(),arrayRow->GetArray());
fTimebinRMS=TMath::RMS(arrayTime->GetSize(),arrayTime->GetArray());
delete arrayPad;
delete arrayRow;
delete arrayTime;
return;
}
void AliTPCclusterKr::Set1D(){
Short_t maxTime=0;
Short_t minTime=1000;
Short_t maxPad=0;
Short_t minPad=1000;
for(Int_t i=0;i<fCluster->GetEntriesFast();i++)
{
if(((AliTPCvtpr *)(fCluster->At(i)))->GetPad()>maxPad)maxPad =((AliTPCvtpr *)(fCluster->At(i)))->GetPad();
if(((AliTPCvtpr *)(fCluster->At(i)))->GetPad()<minPad)minPad =((AliTPCvtpr *)(fCluster->At(i)))->GetPad();
if(((AliTPCvtpr *)(fCluster->At(i)))->GetTime()>maxTime)maxTime=((AliTPCvtpr *)(fCluster->At(i)))->GetTime();
if(((AliTPCvtpr *)(fCluster->At(i)))->GetTime()<minTime)minTime=((AliTPCvtpr *)(fCluster->At(i)))->GetTime();
}
fPads1D=maxPad-minPad+1;
fTimebins1D=maxTime-minTime+1;
return;
}