- delete [] kkk;
-
-
- Int_t * end = new Int_t[AliITSgeomTGeo::GetNLayers()];
- for(Int_t i=0;i<AliITSgeomTGeo::GetNLayers();i++){
- if(listlayer[i]->GetEntries()==0) end[i]=1;
- else end[i]=listlayer[i]->GetEntries();
- }
-
- TClonesArray* listSA = new TClonesArray("AliITStrackSA");
- TClonesArray &tri = *listSA;
- Int_t nlist=0;
-
- if(end[0]==0) end[0]=1; //for tracks with cluster on layer 0 missing
- for(Int_t l1=0;l1<end[0];l1++){ //loop on layer 1
- AliITSRecPoint* cl0 = (AliITSRecPoint*)listlayer[0]->At(l1);
- Double_t x1,y1,z1,sx1,sy1,sz1;
- Double_t x2,y2,z2,sx2,sy2,sz2;
- AliITSRecPoint* p1=0;
- AliITSRecPoint* p2=0;
- Int_t index1=clind0[l1];
- Int_t index2=0;
- Int_t mrk1 = mark0[l1];
- Int_t mrk2 = 0;
- Int_t lay1=0;
- Int_t lay2=1;
- Int_t module1=-1;
- for(Int_t l2=0;l2<end[1];l2++){ //loop on layer 2
- AliITSRecPoint* cl1 = (AliITSRecPoint*)listlayer[1]->At(l2);
- index2=clind1[l2];
- mrk2 = mark1[l2];
- for(Int_t l3=0;l3<end[2];l3++){ //loop on layer 3
- AliITSRecPoint* cl2 = (AliITSRecPoint*)listlayer[2]->At(l3);
-
- if(cl0==0 && cl1!=0) {
- p1=cl1;
- p2=cl2;
- index1=clind1[l2];mrk1=mark1[l2];
- index2=clind2[l3];mrk2=mark2[l3];
- lay1=1;
- lay2=2;
- module1 = p1->GetDetectorIndex()+firstmod[1];
- }
- if(cl0!=0 && cl1==0){
- p1=cl0;
- p2=cl2;index2=clind2[l3];mrk2=mark2[l3];
- lay1=0;
- lay2=2;
- module1 = p1->GetDetectorIndex()+firstmod[0];
- }
- if(cl0!=0 && cl1!=0){
- p1=cl0;
- p2=cl1;
- lay1=0;
- lay2=1;
- module1 = p1->GetDetectorIndex()+firstmod[0];
- }
-
- Int_t cln1=mrk1;
- Int_t cln2=mrk2;
- AliITSclusterTable* arr1 = (AliITSclusterTable*)GetClusterCoord(lay1,cln1);
- AliITSclusterTable* arr2 = (AliITSclusterTable*)GetClusterCoord(lay2,cln2);
- x1 = arr1->GetX();
- x2 = arr2->GetX();
- y1 = arr1->GetY();
- y2 = arr2->GetY();
- z1 = arr1->GetZ();
- z2 = arr2->GetZ();
- sx1 = arr1->GetSx();
- sx2 = arr2->GetSx();
- sy1 = arr1->GetSy();
- sy2 = arr2->GetSy();
- sz1 = arr1->GetSz();
- sz2 = arr2->GetSz();
-
- Int_t layer,ladder,detector;
- AliITSgeomTGeo::GetModuleId(module1,layer,ladder,detector);
- Float_t yclu1 = p1->GetY();
- Float_t zclu1 = p1->GetZ();
- Double_t cv=Curvature(primaryVertex[0],primaryVertex[1],x1,y1,x2,y2);
- Double_t tgl2 = (z2-z1)/TMath::Sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
- Double_t phi2 = TMath::ATan2((y2-y1),(x2-x1));
-
- for(Int_t l4=0;l4<end[3];l4++){ //loop on layer 4
- AliITSRecPoint* cl3 = (AliITSRecPoint*)listlayer[3]->At(l4);
- for(Int_t l5=0;l5<end[4];l5++){ //loop on layer 5
- AliITSRecPoint* cl4 = (AliITSRecPoint*)listlayer[4]->At(l5);
- for(Int_t l6=0;l6<end[5];l6++){ //loop on layer 6
- AliITSRecPoint* cl5 = (AliITSRecPoint*)listlayer[5]->At(l6);
- AliITStrackSA* trac = new AliITStrackSA(layer,ladder,detector,yclu1,zclu1,phi2,tgl2,cv,1);
-
- if(cl5!=0) {
- trac->AddClusterV2(5,(clind5[l6] & 0x0fffffff)>>0);
- trac->AddClusterMark(5,mark5[l6]);
- }
- if(cl4!=0){
- trac->AddClusterV2(4,(clind4[l5] & 0x0fffffff)>>0);
- trac->AddClusterMark(4,mark4[l5]);
- }
- if(cl3!=0){
- trac->AddClusterV2(3,(clind3[l4] & 0x0fffffff)>>0);
- trac->AddClusterMark(3,mark3[l4]);
- }
- if(cl2!=0){
- trac->AddClusterV2(2,(clind2[l3] & 0x0fffffff)>>0);
- trac->AddClusterMark(2,mark2[l3]);
- }
- if(cl1!=0){
- trac->AddClusterV2(1,(clind1[l2] & 0x0fffffff)>>0);
- trac->AddClusterMark(1,mark1[l2]);
- }
- if(cl0!=0){
- trac->AddClusterV2(0,(clind0[l1] & 0x0fffffff)>>0);
- trac->AddClusterMark(0,mark0[l1]);
- }
- //fit with Kalman filter using AliITStrackerMI::RefitAt()
-