Using new/delete for arrays with variable size (Sun,HP)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 7 Dec 2003 11:36:25 +0000 (11:36 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 7 Dec 2003 11:36:25 +0000 (11:36 +0000)
ITS/AliITSclusterTable.cxx
ITS/AliITStrackerSA.cxx

index fc14343..0e52ed3 100644 (file)
@@ -107,7 +107,7 @@ void AliITSclusterTable::FillArray(TTree* clusterTree,Int_t evnumber){
 
   TArrayI** vect = new TArrayI*[fGeom->GetNlayers()];
   
-  Int_t firstmod[fGeom->GetNlayers()+1];
+  Int_t * firstmod = new Int_t[fGeom->GetNlayers()+1];
   firstmod[fGeom->GetNlayers()]=fGeom->GetIndexMax();  // upper limit
   for(Int_t nlayer=0;nlayer<fGeom->GetNlayers();nlayer++){
     firstmod[nlayer] = fGeom->GetModuleIndex(nlayer+1,1,1);
@@ -149,6 +149,7 @@ void AliITSclusterTable::FillArray(TTree* clusterTree,Int_t evnumber){
 
   for(Int_t n=0;n<fGeom->GetNlayers();n++)delete vect[n];
   delete vect;
+  delete [] firstmod;
 }
 
 //_________________________________________________________________
@@ -162,7 +163,8 @@ void AliITSclusterTable::FillArrayLabel(const Int_t numberofparticles,TTree* clu
   const Int_t knm =fGeom->GetNlayers();
   for(Int_t nlab=0;nlab<numberofparticles;nlab++){
     fLbl[nlab] = new TArrayI(knm);
-    Int_t nn[knm]; for(Int_t i=0;i<knm;i++)nn[i]=0;
+    Int_t * nn = new Int_t[knm]; 
+    for(Int_t i=0;i<knm;i++)nn[i]=0;
     for(Int_t nlayer=0;nlayer<knm;nlayer++){
       Int_t ncl = fTracker->GetNumberOfClustersLayer(nlayer);
       while(ncl--){
@@ -176,6 +178,7 @@ void AliITSclusterTable::FillArrayLabel(const Int_t numberofparticles,TTree* clu
       }     
       fLbl[nlab]->AddAt(nn[nlayer],nlayer);
     }
+    delete [] nn;
   }
 
   fTracker->UnloadClusters();
index 1724b85..e0cd647 100644 (file)
@@ -216,7 +216,7 @@ void AliITStrackerSA::FindTracks(TTree *clusterTree, TTree *out,Int_t evnumber,c
   else branch->SetAddress(&outrack);
 
   
-  Int_t firstmod[fGeom->GetNlayers()];
+  Int_t * firstmod = new Int_t[fGeom->GetNlayers()];
   for(Int_t i=0;i<fGeom->GetNlayers();i++){
     firstmod[i]=fGeom->GetModuleIndex(i+1,1,1);
   }
@@ -244,7 +244,7 @@ void AliITStrackerSA::FindTracks(TTree *clusterTree, TTree *out,Int_t evnumber,c
       fPoint2[0]=x;
       fPoint2[1]=y;
       
-      Int_t nn[fGeom->GetNlayers()];//counter for clusters on each layer
+      Int_t * nn = new Int_t[fGeom->GetNlayers()];//counter for clusters on each layer
       for(Int_t i=0;i<fGeom->GetNlayers();i++){        nn[i]=0;}
       nn[0] = SearchClusters(0,fPhiWin[nloop],fLambdaWin[nloop],trs,primaryVertex[2],primaryVertex[1],primaryVertex[0],pflag,fTable);
       nn[1] = SearchClusters(1,fPhiWin[nloop],fLambdaWin[nloop],trs,primaryVertex[2],primaryVertex[1],primaryVertex[0],pflag,fTable);
@@ -322,7 +322,7 @@ void AliITStrackerSA::FindTracks(TTree *clusterTree, TTree *out,Int_t evnumber,c
    
   if(!sixpoints){
     //   counter for clusters on each layer  
-    Int_t *nn = new Int_t[fGeom->GetNlayers()-1];      
+    Int_t * nn = new Int_t[fGeom->GetNlayers()-1];      
     for(Int_t nloop=0;nloop<fNloop;nloop++){
       AliITSlayer &layer2=fgLayers[1]; //loop on layer 2
       Int_t ncl2=layer2.GetNumberOfClusters();
@@ -392,9 +392,10 @@ void AliITStrackerSA::FindTracks(TTree *clusterTree, TTree *out,Int_t evnumber,c
        delete trs;
       }//end loop on clusters of layer2
     }
-    delete []nn;
+    delete [] nn;
   }  //end opt="5/6"  
 
+  delete [] firstmod;
 
   UnloadClusters();
 }
@@ -435,7 +436,7 @@ AliITStrackV2* AliITStrackerSA::FitTrack(AliITStrackSA* tr,Double_t *primaryVert
   TString choice(opt);
   Bool_t sixpoints= choice.Contains("6/6");
   
-  Int_t firstmod[fGeom->GetNlayers()];
+  Int_t * firstmod = new Int_t[fGeom->GetNlayers()];
   for(Int_t i=0;i<fGeom->GetNlayers();i++){
     firstmod[i]=fGeom->GetModuleIndex(i+1,1,1);
   }  
@@ -454,7 +455,7 @@ AliITStrackV2* AliITStrackerSA::FitTrack(AliITStrackSA* tr,Double_t *primaryVert
   TArrayI clind4(20);
   TArrayI clind5(20);
 
-  Int_t nnn[fGeom->GetNlayers()];
+  Int_t * nnn = new Int_t[fGeom->GetNlayers()];
   for(Int_t i=0;i<fGeom->GetNlayers();i++)nnn[i]=0;
   
   for(Int_t ncl=0;ncl<nclusters;ncl++){
@@ -469,9 +470,10 @@ AliITStrackV2* AliITStrackerSA::FitTrack(AliITStrackSA* tr,Double_t *primaryVert
     if(lay==4) { listlayer[4]->AddLast(cl); clind4[nnn[4]]=index;nnn[4]++;}
     if(lay==5) { listlayer[5]->AddLast(cl); clind5[nnn[5]]=index;nnn[5]++;}    
   }
+  delete [] nnn;
 
  
-  Int_t end[fGeom->GetNlayers()];
+  Int_t * end = new Int_t[fGeom->GetNlayers()];
   for(Int_t i=0;i<fGeom->GetNlayers();i++){
     if(listlayer[i]->GetEntries()==0) end[i]=1;
     else end[i]=listlayer[i]->GetEntries();
@@ -611,6 +613,8 @@ AliITStrackV2* AliITStrackerSA::FitTrack(AliITStrackSA* tr,Double_t *primaryVert
     delete[] errs;    
   }//end loop layer 1
 
+  delete [] end;
+
   Int_t dim=listoftracks->GetEntries();
   if(dim==0){
     delete listoftracks;
@@ -624,7 +628,7 @@ AliITStrackV2* AliITStrackerSA::FitTrack(AliITStrackSA* tr,Double_t *primaryVert
   AliITStrackV2* otrack =(AliITStrackV2*)FindTrackLowChiSquare(listoftracks,dim);
 
   if(otrack==0) return 0;
-  Int_t indexc[fGeom->GetNlayers()];
+  Int_t * indexc = new Int_t[fGeom->GetNlayers()];
   for(Int_t i=0;i<fGeom->GetNlayers();i++) indexc[i]=0;
   for(Int_t nind=0;nind<otrack->GetNumberOfClusters();nind++){
     indexc[nind] = otrack->GetClusterIndex(nind);
@@ -641,6 +645,7 @@ AliITStrackV2* AliITStrackerSA::FitTrack(AliITStrackSA* tr,Double_t *primaryVert
     labl[1]=cl5->GetLabel(1);
     labl[2]=cl5->GetLabel(2);
   }
+  delete [] indexc;
   if(otrack->GetNumberOfClusters()==(fGeom->GetNlayers()-1)){
     labl[0]=-1;
     labl[1]=-1;
@@ -665,6 +670,7 @@ AliITStrackV2* AliITStrackerSA::FitTrack(AliITStrackSA* tr,Double_t *primaryVert
     delete listlayer[i];
   }
   delete listlayer; 
+  delete [] firstmod;
   return otrack;
 
 }
@@ -689,7 +695,7 @@ Int_t AliITStrackerSA::SearchClusters(Int_t layer,Double_t phiwindow,Double_t la
   //function used to to find the clusters associated to the track
   Int_t nc=0;
   AliITSlayer &lay = fgLayers[layer];
-  Int_t firstmod[fGeom->GetNlayers()];
+  Int_t * firstmod = new Int_t[fGeom->GetNlayers()];
   for(Int_t i=0;i<fGeom->GetNlayers();i++){
     firstmod[i]=fGeom->GetModuleIndex(i+1,1,1);
   }
@@ -772,6 +778,7 @@ Int_t AliITStrackerSA::SearchClusters(Int_t layer,Double_t phiwindow,Double_t la
 
   }
   delete list;
+  delete [] firstmod;
   return nc;
 
 }
@@ -899,8 +906,8 @@ AliITStrackV2* AliITStrackerSA::FindTrackLowChiSquare(TObjArray* tracklist, Int_
     return trk;
   }
   if(dim==0) return 0;
-  Double_t chi2[dim];
-  Int_t index[dim];
+  Double_t * chi2 = new Double_t[dim];
+  Int_t * index = new Int_t[dim];
   for(Int_t i=0;i<dim;i++){
     AliITStrackV2* trk = (AliITStrackV2*)tracklist->At(i);
     chi2[i]=trk->GetChi2();
@@ -924,6 +931,8 @@ AliITStrackV2* AliITStrackerSA::FindTrackLowChiSquare(TObjArray* tracklist, Int_
   }
 
   AliITStrackV2* trk = (AliITStrackV2*)tracklist->At(index[dim-1]);
+  delete [] chi2;
+  delete [] index;
   return trk;
   
 }