X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSclusterTable.cxx;h=9c287c25251c56ec911eaf7cff8e192f9f7423e0;hb=e9ef0fc2638908781ac3e4ec2b4484b82fb94548;hp=fc14343ad5355914829d0de56a54e006cc728bbd;hpb=13918578a89cd15afc6043940cdccb7b4baee42f;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSclusterTable.cxx b/ITS/AliITSclusterTable.cxx index fc14343ad53..9c287c25251 100644 --- a/ITS/AliITSclusterTable.cxx +++ b/ITS/AliITSclusterTable.cxx @@ -23,191 +23,44 @@ // -Function FillArrayLabel fills an array wich contains, for each // // particle label, and for each layer, the information on clusters: // // 0 if there is no cluster, 1 if there is a cluster with this label. // -// This function is used to define trackable tracks. // +// This function is used to define trackable tracks. // +// -Function FillArrayCoorAngles fills arrays wich contains, for each // +// layer, the global coordinates, errors on x,y,z and angles lambda // +// and phi for each cluster // /////////////////////////////////////////////////////////////////////////// +#include #include "AliITSclusterTable.h" -#include "AliITSclusterV2.h" -#include "AliITSgeom.h" -#include "AliITStrackerSA.h" -#include -#include -#include ClassImp(AliITSclusterTable) -//__________________________________________________________ -AliITSclusterTable::AliITSclusterTable(){ -// Default constructor - fDet=0; - fNCl = 0; - fLbl=0; - fGeom = 0; - fTracker = 0; -} - -//__________________________________________________________ -AliITSclusterTable::AliITSclusterTable(AliITSgeom* geom, AliITStrackerSA* tracker) { -// Standard constructor - fDet=0; - Int_t nm = geom->GetIndexMax(); - fNCl = new Int_t[nm]; - for(Int_t i=0;iGetIndexMax(); - if(fDet){ - for (Int_t i=0; iGetIndexMax(); - fDet = new TArrayI*[nm]; - fTracker->SetEventNumber(evnumber); - fTracker->LoadClusters(clusterTree); - - TArrayI** vect = new TArrayI*[fGeom->GetNlayers()]; - - Int_t firstmod[fGeom->GetNlayers()+1]; - firstmod[fGeom->GetNlayers()]=fGeom->GetIndexMax(); // upper limit - for(Int_t nlayer=0;nlayerGetNlayers();nlayer++){ - firstmod[nlayer] = fGeom->GetModuleIndex(nlayer+1,1,1); - Int_t ncl = fTracker->GetNumberOfClustersLayer(nlayer); - vect[nlayer]=new TArrayI(ncl); - for(Int_t j=0;jGetClusterLayer(nlayer,j); - vect[nlayer]->AddAt(cl->GetDetectorIndex()+firstmod[nlayer],j); - } - } - - TBranch *brancht=(TBranch*)clusterTree->GetBranch("Clusters"); - if(!brancht) Warning("FillArray","No cluster branch"); - TClonesArray* clus = new TClonesArray("AliITSclusterV2",10000); - brancht->SetAddress(&clus); - - - for(Int_t mod=0;modGetEvent(mod); - Int_t ncl = clus->GetEntries(); - fDet[mod] = new TArrayI(ncl); - fNCl[mod]= ncl; - Int_t nlr = FindIndex(fGeom->GetNlayers(),firstmod,mod); - if(nlr<0){ - Fatal("FillArray","Wrong module number %d . Limits: %d , %d",mod,firstmod[0],firstmod[fGeom->GetNlayers()+1]); - return; - } - else { - for(Int_t n=0;nGetSize();n++){ - Int_t mm=vect[nlr]->At(n); - if(mm==mod) {fDet[mod]->AddAt(n,nc); nc+=1; } - } - } - } - - - fTracker->UnloadClusters(); - - for(Int_t n=0;nGetNlayers();n++)delete vect[n]; - delete vect; -} - -//_________________________________________________________________ -void AliITSclusterTable::FillArrayLabel(const Int_t numberofparticles,TTree* clusterTree,Int_t evnumber){ - // - - - fLbl = new TArrayI*[numberofparticles]; - fTracker->SetEventNumber(evnumber); - fTracker->LoadClusters(clusterTree); - const Int_t knm =fGeom->GetNlayers(); - for(Int_t nlab=0;nlabGetNumberOfClustersLayer(nlayer); - while(ncl--){ - AliITSclusterV2* cl = fTracker->GetClusterLayer(nlayer,ncl); - if(cl->IsUsed()==1) continue; - if(cl->GetLabel(0)==nlab || cl->GetLabel(1)==nlab || cl->GetLabel(2)==nlab){ - nn[nlayer]+=1; - cl->Use(); - break; - } - } - fLbl[nlab]->AddAt(nn[nlayer],nlayer); - } - } +//_______________________________________________________________ +AliITSclusterTable::AliITSclusterTable():TObject(), +fOrInd(0), +fX(0), +fY(0), +fZ(0), +fSx(0), +fSy(0), +fSz(0), +fPhi(0), +fLam(0){ + //Default constructor - fTracker->UnloadClusters(); } - //_______________________________________________________________ -Int_t AliITSclusterTable::ThisParticleIsTrackable(Int_t label,Int_t numberofpoints){ - - //Returns 1 if particle with label "label" is trackable. - - Int_t nb=0; - for(Int_t i=0;iGetNlayers();i++){ - Int_t ncl = fLbl[label]->At(i); - if(ncl>0) nb++; - } - if(nb>=numberofpoints) return 1; - else return 0; +AliITSclusterTable::AliITSclusterTable(Float_t x, Float_t y, Float_t z, Float_t sx, Float_t sy, Float_t sz, Double_t phi, Double_t lambda, Int_t index): +fOrInd(index), +fX(x), +fY(y), +fZ(z), +fSx(sx), +fSy(sy), +fSz(sz), +fPhi(phi), +fLam(lambda){ + //Default constructor } -//_______________________________________________________________ -Int_t AliITSclusterTable::FindIndex(Int_t ndim, Int_t *ptr, Int_t value){ -// ptr[ndim+1] is an array of integers -// ndim is its dimension minus 1 -// value is a number such as: ptr[0]<=value < ptr[ndim] -// if ptr[i]<=value=ptr[k] && value