X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSClusterFinderV2SPD.cxx;h=fc33d7659408cd004bf0239ae63e2353db4479a0;hb=909eee575ce9f77645113230cc0acd685d40bc71;hp=cda2cda345cc04f179ebeef3858f4fa0baf6f00c;hpb=7d62fb642e8e534a0745ecf2706ee54afa6ffa5c;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSClusterFinderV2SPD.cxx b/ITS/AliITSClusterFinderV2SPD.cxx index cda2cda345c..fc33d765940 100644 --- a/ITS/AliITSClusterFinderV2SPD.cxx +++ b/ITS/AliITSClusterFinderV2SPD.cxx @@ -16,35 +16,36 @@ // Implementation of the ITS clusterer V2 class // // // // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch // +// Unfolding switch from AliITSRecoParam: D. Elia, INFN Bari // // // -/////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// +#include "AliITSCalibrationSPD.h" #include "AliITSClusterFinderV2SPD.h" -#include "AliITSclusterV2.h" +#include "AliITSRecPoint.h" +#include "AliITSgeomTGeo.h" #include "AliITSDetTypeRec.h" +#include "AliITSReconstructor.h" #include "AliRawReader.h" #include "AliITSRawStreamSPD.h" - #include -#include "AliITSgeom.h" #include "AliITSdigitSPD.h" ClassImp(AliITSClusterFinderV2SPD) -extern AliRun *gAlice; - -AliITSClusterFinderV2SPD::AliITSClusterFinderV2SPD(AliITSgeom* geom):AliITSClusterFinderV2(geom){ +AliITSClusterFinderV2SPD::AliITSClusterFinderV2SPD(AliITSDetTypeRec* dettyp):AliITSClusterFinder(dettyp), +fLastSPD1(AliITSgeomTGeo::GetModuleIndex(2,1,1)-1), +fNySPD(256), +fNzSPD(160), +fYpitchSPD(0.0050), +fZ1pitchSPD(0.0425), +fZ2pitchSPD(0.0625), +fHwSPD(0.64), +fHlSPD(3.48){ //Default constructor - fITSgeom = geom; - fLastSPD1=fITSgeom->GetModuleIndex(2,1,1)-1; - - fNySPD=256; fNzSPD=160; - fYpitchSPD=0.0050; - fZ1pitchSPD=0.0425; fZ2pitchSPD=0.0625; - fHwSPD=0.64; fHlSPD=3.48; fYSPD[0]=0.5*fYpitchSPD; for (Int_t m=1; mGetCalibrationModel(iModule); + // Loop on bad pixels and reset them + for(Int_t ipix = 0; ipixGetNrBad(); ipix++){ + Int_t row, col; + cal->GetBadPixel(ipix,row,col); + Int_t index = (row+1) * nzbins + (col+1); + bins[index].SetQ(0); + bins[index].SetMask(0xFFFFFFFE); + } Int_t nclu=0; for(Int_t iBin =0; iBin < maxBins;iBin++){ if(bins[iBin].IsUsed()) continue; @@ -152,6 +173,13 @@ Int_t AliITSClusterFinderV2SPD::ClustersSPD(AliBin* bins, TClonesArray* digits,T if((iModule <= fLastSPD1) &&idy<3) idy=3; if((iModule > fLastSPD1) &&idy<4) idy=4; Int_t idz=3; + + // Switch the unfolding OFF/ON + if(!repa->GetUseUnfoldingInClusterFinderSPD()) { + 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){ @@ -174,7 +202,7 @@ Int_t AliITSClusterFinderV2SPD::ClustersSPD(AliBin* bins, TClonesArray* digits,T if(TMath::Abs(iz-iiz)>0.75*idz) continue; } ndigits++; - Float_t qBin; + Float_t qBin=0.; if(rawdata) qBin = bins[idxBins[idx]].GetQ(); if(!rawdata){ AliITSdigitSPD* dig = (AliITSdigitSPD*)digits->UncheckedAt(idxBins[idx]); @@ -189,23 +217,28 @@ Int_t AliITSClusterFinderV2SPD::ClustersSPD(AliBin* bins, TClonesArray* digits,T z /= q; y -= fHwSPD; z -= fHlSPD; + Float_t hit[5]; //y,z,sigma(y)^2, sigma(z)^2, charge - hit[0] = -(-y+fYshift[iModule]); - if(iModule <= fLastSPD1) hit[0] = -hit[0]; - hit[1] = -z+fZshift[iModule]; + { + Double_t loc[3]={y,0.,z},trk[3]={0.,0.,0.}; + mT2L->MasterToLocal(loc,trk); + hit[0]=trk[1]; + hit[1]=trk[2]; + } hit[2] = fYpitchSPD*fYpitchSPD/12.; hit[3] = fZ1pitchSPD*fZ1pitchSPD/12.; - hit[4] = (zmax-zmin+1)*100 + (ymax-ymin+1); + hit[4] = 1.; + if(!rawdata) milab[3]=fNdet[iModule]; Int_t info[3] = {ymax-ymin+1,zmax-zmin+1,fNlayer[iModule]}; if(!rawdata){ - AliITSclusterV2 cl(milab,hit,info); - fDetTypeRec->AddClusterV2(cl); + AliITSRecPoint cl(milab,hit,info); + fDetTypeRec->AddRecPoint(cl); } else{ Int_t label[4]={milab[0],milab[1],milab[2],milab[3]}; new (clusters->AddrAt(nclu)) - AliITSclusterV2(label, hit,info); + AliITSRecPoint(label, hit,info); } nclu++; }// for iiy @@ -218,7 +251,7 @@ Int_t AliITSClusterFinderV2SPD::ClustersSPD(AliBin* bins, TClonesArray* digits,T -void AliITSClusterFinderV2SPD::FindClustersSPD(AliITSRawStream* input, +void AliITSClusterFinderV2SPD::FindClustersSPD(AliITSRawStreamSPD* input, TClonesArray** clusters) { //------------------------------------------------------------ @@ -240,7 +273,7 @@ void AliITSClusterFinderV2SPD::FindClustersSPD(AliITSRawStream* input, // when all data from a module was read, search for clusters if (bins) { - clusters[iModule] = new TClonesArray("AliITSclusterV2"); + clusters[iModule] = new TClonesArray("AliITSRecPoint"); Int_t nClusters = ClustersSPD(bins,0,clusters[iModule],kMaxBin,kNzBins,iModule,kTRUE); nClustersSPD += nClusters; bins = NULL; @@ -258,9 +291,23 @@ void AliITSClusterFinderV2SPD::FindClustersSPD(AliITSRawStream* input, bins[index].SetQ(1); } + // get the FastOr bit map + fDetTypeRec->ResetFastOrFiredMap(); + for(UInt_t eq=0; eq<20; eq++) { + for(UInt_t hs=0; hs<6; hs++) { + for(UInt_t chip=0; chip<10; chip++) { + if(input->GetFastOrSignal(eq,hs,chip)) { + UInt_t chipKey = input->GetOfflineChipKeyFromOnline(eq,hs,chip); + fDetTypeRec->SetFastOrFiredMap(chipKey); + } + } + } + } + delete [] binsSPDInit; delete [] binsSPD; + // AliDebug(1,Form("found clusters in ITS SPD: %d", nClustersSPD)); Info("FindClustersSPD", "found clusters in ITS SPD: %d", nClustersSPD); } @@ -289,8 +336,8 @@ void AliITSClusterFinderV2SPD::FindClustersSPD(TClonesArray *digits) { bins[index].SetMask(1); } - ClustersSPD(bins,digits,0,kMAXBIN,kNzBins,fModule,kFALSE); + Int_t nClustersSPD = ClustersSPD(bins,digits,0,kMAXBIN,kNzBins,fModule,kFALSE); delete [] bins; -} - + AliDebug(1,Form("found clusters in ITS SPD: %d", nClustersSPD)); +}