X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSVertexerCosmics.cxx;h=b4e554c397a889103a07c2d5ff6a1248826d6c2c;hb=920b0f4b598078ab7bd76042d54462a41a18a8a7;hp=2578e29e2951ecec27743719aeea4a56dc03caf1;hpb=7e33c4e630e6568cba6ee4169a5a3f5e43e9741a;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSVertexerCosmics.cxx b/ITS/AliITSVertexerCosmics.cxx index 2578e29e295..b4e554c397a 100644 --- a/ITS/AliITSVertexerCosmics.cxx +++ b/ITS/AliITSVertexerCosmics.cxx @@ -14,10 +14,9 @@ **************************************************************************/ #include +#include #include "AliLog.h" #include "AliESDVertex.h" -#include "AliRunLoader.h" -#include "AliITSLoader.h" #include "AliITSgeomTGeo.h" #include "AliITSRecPoint.h" #include "AliITSReconstructor.h" @@ -83,20 +82,14 @@ fMinDist2Vtxs(0) SetMinDist2Vtxs(); } //-------------------------------------------------------------------------- -AliESDVertex* AliITSVertexerCosmics::FindVertexForCurrentEvent(Int_t evnumber) +AliESDVertex* AliITSVertexerCosmics::FindVertexForCurrentEvent(TTree *itsClusterTree) { // Defines the AliESDVertex for the current event fCurrentVertex = 0; - AliRunLoader *rl =AliRunLoader::GetRunLoader(); - AliITSLoader* itsLoader = (AliITSLoader*)rl->GetLoader("ITSLoader"); - itsLoader->LoadRecPoints(); - rl->GetEvent(evnumber); - - TTree *rpTree = itsLoader->TreeR(); TClonesArray *recpoints=new TClonesArray("AliITSRecPoint",10000); - rpTree->SetBranchAddress("ITSRecPoints",&recpoints); + itsClusterTree->SetBranchAddress("ITSRecPoints",&recpoints); Int_t lay,lad,det; @@ -107,19 +100,21 @@ AliESDVertex* AliITSVertexerCosmics::FindVertexForCurrentEvent(Int_t evnumber) // Search for innermost layer with at least two clusters // on two different modules Int_t ilayer=0,ilayer2=0; - while(ilayer<6) { + Int_t nHitModulesSPDinner=0; + while(ilayerGetLayersToSkip(ilayer)) { ilayer++; continue; } Int_t nHitModules=0; for(Int_t imodule=fFirst[ilayer]; imodule<=fLast[ilayer]; imodule++) { - rpTree->GetEvent(imodule); + itsClusterTree->GetEvent(imodule); AliITSgeomTGeo::GetModuleId(imodule,lay,lad,det); lay -= 1; // AliITSgeomTGeo gives layer from 1 to 6, we want 0 to 5 if(lay!=ilayer) AliFatal("Layer mismatch!"); if(recpoints->GetEntriesFast()>0) nHitModules++; } + if(ilayer==0) nHitModulesSPDinner=nHitModules; if(nHitModules>=2) break; ilayer++; } @@ -131,12 +126,12 @@ AliESDVertex* AliITSVertexerCosmics::FindVertexForCurrentEvent(Int_t evnumber) } // try tracklet on SPD2 and point on SPD1 - if(ilayer==1 && ilayer2>5 && !AliITSReconstructor::GetRecoParam()->GetLayersToSkip(0)) {ilayer=0; ilayer2=1;} + if(ilayer==1 && !AliITSReconstructor::GetRecoParam()->GetLayersToSkip(0) && + nHitModulesSPDinner>0) { ilayer=0; ilayer2=1; } if(ilayer>4 || ilayer2>5) { AliWarning("Not enough clusters"); delete recpoints; - itsLoader->UnloadRecPoints(); fCurrentVertex = new AliESDVertex(pos,err,"cosmics"); fCurrentVertex->SetTitle("cosmics fake vertex (failed)"); fCurrentVertex->SetNContributors(ncontributors); @@ -153,7 +148,7 @@ AliESDVertex* AliITSVertexerCosmics::FindVertexForCurrentEvent(Int_t evnumber) Int_t nclOutLayStored=0; Int_t nRecPoints,nRecPointsInnLay=0; - Float_t gc[3],gcov[5]; + Float_t gc[3],gcov[6]; Float_t matchOutLayValue; Float_t distxyInnLay,distxyInnLayBest=0.; @@ -165,7 +160,7 @@ AliESDVertex* AliITSVertexerCosmics::FindVertexForCurrentEvent(Int_t evnumber) // Collect clusters in the selected layer and the outer one for(Int_t imodule=fFirst[ilayer]; imodule<=fLast[ilayer2]; imodule++) { - rpTree->GetEvent(imodule); + itsClusterTree->GetEvent(imodule); AliITSgeomTGeo::GetModuleId(imodule,lay,lad,det); lay -= 1; // AliITSgeomTGeo gives layer from 1 to 6, we want 0 to 5 nRecPoints=recpoints->GetEntriesFast(); @@ -201,7 +196,6 @@ AliESDVertex* AliITSVertexerCosmics::FindVertexForCurrentEvent(Int_t evnumber) //AliFatal("More than arrSize clusters per layer"); AliWarning("Too many clusters per layer"); delete recpoints; - itsLoader->UnloadRecPoints(); fCurrentVertex = new AliESDVertex(pos,err,"cosmics"); fCurrentVertex->SetTitle("cosmics fake vertex (failed)"); fCurrentVertex->SetNContributors(ncontributors); @@ -214,7 +208,7 @@ AliESDVertex* AliITSVertexerCosmics::FindVertexForCurrentEvent(Int_t evnumber) Int_t i1InnLay,i2InnLay,iOutLay; // build fake vertices - printf("Building tracklets on layer %d\n",ilayer); + //printf("Building tracklets on layer %d\n",ilayer); // InnLay - first cluster for(i1InnLay=0; i1InnLaySetTitle("cosmics fake vertex"); fCurrentVertex->SetNContributors(ncontributors); //fCurrentVertex->Print(); + if(fComputeMultiplicity) FindMultiplicity(itsClusterTree); delete recpoints; - itsLoader->UnloadRecPoints(); return fCurrentVertex; } -//------------------------------------------------------------------------- -void AliITSVertexerCosmics::FindVertices() -{ - // computes the vertices of the events in the range FirstEvent - LastEvent - AliRunLoader *rl = AliRunLoader::GetRunLoader(); - AliITSLoader* itsLoader = (AliITSLoader*) rl->GetLoader("ITSLoader"); - itsLoader->ReloadRecPoints(); - for(Int_t i=fFirstEvent;i<=fLastEvent;i++){ - // printf("Processing event %d\n",i); - rl->GetEvent(i); - FindVertexForCurrentEvent(i); - if(fCurrentVertex){ - WriteCurrentVertex(); - } - } -} + //------------------------------------------------------------------------- void AliITSVertexerCosmics::PrintStatus() const {