#include <TClonesArray.h>
#include "AliITSdigitSPD.h"
#include "AliITSFOSignalsSPD.h"
+#include "AliITSRecPointContainer.h"
ClassImp(AliITSClusterFinderV2SPD)
}
//__________________________________________________________________________
-void AliITSClusterFinderV2SPD::RawdataToClusters(AliRawReader* rawReader, TClonesArray** clusters){
+void AliITSClusterFinderV2SPD::RawdataToClusters(AliRawReader* rawReader){
//------------------------------------------------------------
// This function creates ITS clusters from raw data
//------------------------------------------------------------
rawReader->Reset();
AliITSRawStreamSPD inputSPD(rawReader);
- FindClustersSPD(&inputSPD, clusters);
+ FindClustersSPD(&inputSPD);
}
//__________________________________________________________________________
for(Int_t ipix = 0; ipix<cal->GetNrBad(); ipix++){
Int_t row, col;
cal->GetBadPixel(ipix,row,col);
- printf(" module %d row %d col %d \n",iModule,row,col);
+ //PH printf(" module %d row %d col %d \n",iModule,row,col);
Int_t index = (row+1) * nzbins + (col+1);
bins[index].SetQ(0);
Int_t nclu=0;
for(Int_t iBin =0; iBin < maxBins;iBin++){
if(bins[iBin].IsUsed()) continue;
- Int_t nBins = 0;
+ Int_t nBins = 0;
Int_t idxBins[200];
FindCluster(iBin,nzbins,bins,nBins,idxBins);
if (nBins == 200){
zmin=dig->GetCoord1();
zmax=zmin;
}
- if(iModule == 24 || iModule == 25) printf("\n");
+ //PH if(iModule == 24 || iModule == 25) printf("\n");
for (Int_t idx = 0; idx < nBins; idx++) {
Int_t iy;
Int_t iz;
idy=ymax-ymin+1;
idz=zmax-zmin+1;
}
-
+
for(Int_t iiz=zmin; iiz<=zmax;iiz+=idz){
for(Int_t iiy=ymin;iiy<=ymax;iiy+=idy){
q+= qBin;
}// for idx
if(ndigits==0) continue;
+
y /= q;
z /= q;
y -= fHwSPD;
Int_t info[3] = {ymax-ymin+1,zmax-zmin+1,fNlayer[iModule]};
if(!rawdata){
AliITSRecPoint cl(milab,hit,info);
+ cl.SetType(nBins);
fDetTypeRec->AddRecPoint(cl);
}
else{
Int_t label[4]={milab[0],milab[1],milab[2],milab[3]};
+ AliITSRecPoint cl(label, hit,info);
+ cl.SetType(nBins);
new (clusters->AddrAt(nclu))
- AliITSRecPoint(label, hit,info);
+ AliITSRecPoint(cl);
}
nclu++;
}// for iiy
}
//__________________________________________________________________________
-void AliITSClusterFinderV2SPD::FindClustersSPD(AliITSRawStreamSPD* input,
- TClonesArray** clusters)
+void AliITSClusterFinderV2SPD::FindClustersSPD(AliITSRawStreamSPD* input)
{
//------------------------------------------------------------
// SPD cluster finder for raw data (this method is called once per event)
// Now also fills fast-or fired map
//------------------------------------------------------------
-
+
+ AliITSRecPointContainer* rpc = AliITSRecPointContainer::Instance();
Int_t nClustersSPD = 0;
Int_t kNzBins = fNzSPD + 2;
Int_t kNyBins = fNySPD + 2;
// when all data from a module was read, search for clusters
if (bins) {
- clusters[iModule] = new TClonesArray("AliITSRecPoint");
- Int_t nClusters = ClustersSPD(bins,0,clusters[iModule],kMaxBin,kNzBins,iModule,kTRUE);
+ TClonesArray* clusters = rpc->UncheckedGetClusters(iModule);
+ Int_t nClusters = ClustersSPD(bins,0,clusters,kMaxBin,kNzBins,iModule,kTRUE);
nClustersSPD += nClusters;
bins = NULL;
}
memcpy(binsSPD,binsSPDInit,sizeof(AliBin)*kMaxBin);
}
- if (next) {
+ if (next && bins) {
// fill the current digit into the bins array
Int_t index = (input->GetCoord2()+1) * kNzBins + (input->GetCoord1()+1);
bins[index].SetIndex(index);
delete [] binsSPDInit;
delete [] binsSPD;
- // AliDebug(1,Form("found clusters in ITS SPD: %d", nClustersSPD));
- Info("FindClustersSPD", "found clusters in ITS SPD: %d", nClustersSPD);
+ AliDebug(1,Form("found clusters in ITS SPD: %d", nClustersSPD));
+
// Fill the FastOr fired map
for (UInt_t eq=0; eq<20; eq++) {