Minor bug fix with array size and added a couple of new functions.
authornilsen <nilsen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 25 Mar 2002 10:29:55 +0000 (10:29 +0000)
committernilsen <nilsen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 25 Mar 2002 10:29:55 +0000 (10:29 +0000)
ITS/AliITSpList.cxx
ITS/AliITSpList.h

index 10e0ed3..3059669 100644 (file)
@@ -53,6 +53,7 @@ AliITSpList::AliITSpList(Int_t imax,Int_t jmax){
 
     fNi = imax;
     fNj = jmax;
+    fEnteries = 0;
     fa  = new TObjArray(fNi*fNj); // elements are zeroed by 
                                   // TObjArray creator
 }
@@ -74,6 +75,7 @@ AliITSpList::~AliITSpList(){
     fNj = 0;
     delete fa;
     fa  = 0;
+    fEnteries = 0;
 }
 //______________________________________________________________________
 void AliITSpList::ClearMap(){
@@ -85,10 +87,12 @@ void AliITSpList::ClearMap(){
     // Return:
     //    A zeroed AliITSpList class.
 
-    for(Int_t i=0;i<GetMaxIndex();i++) if(fa->At(i)!=0){
-        delete fa->At(i);
-        fa->AddAt(0,i); // zero content
-    } // end for i && if
+    fa->Delete();
+//    for(Int_t i=0;i<GetMaxIndex();i++) if(fa->At(i)!=0){
+//        delete fa->At(i);
+//        fa->AddAt(0,i); // zero content
+//    } // end for i && if
+    fEnteries = 0;
 }
 //______________________________________________________________________
 void AliITSpList::DeleteHit(Int_t i,Int_t j){
@@ -106,6 +110,7 @@ void AliITSpList::DeleteHit(Int_t i,Int_t j){
         delete fa->At(k);
         fa->AddAt(0,k); // zero content
     } // end for i && if
+    if(k==fEnteries-1) fEnteries--;
 }
 //______________________________________________________________________
 AliITSpList& AliITSpList::operator=(const AliITSpList &source){
@@ -129,6 +134,7 @@ AliITSpList& AliITSpList::operator=(const AliITSpList &source){
     this->fNi = source.fNi;
     this->fNj = source.fNj;
     this->fa = new TObjArray(*(source.fa));
+    this->fEnteries = source.fEnteries;
 
     return *this;
 }
@@ -162,7 +168,8 @@ void AliITSpList::AddItemTo(Int_t fileIndex, AliITSpListItem *pl) {
         fa->AddAt(new AliITSpListItem(-2,-1,pl->GetModule(),index,0.0),index);
     } // end if
  
-    ((AliITSpListItem*)(fa->At( index )))->AddTo( fileIndex, pl );
+    ((AliITSpListItem*)(fa->At(index)))->AddTo(fileIndex,pl);
+    if(index>=fEnteries) fEnteries = index +1;
 }
 //______________________________________________________________________
 void AliITSpList::AddSignal(Int_t i,Int_t j,Int_t trk,Int_t ht,Int_t mod,
@@ -180,13 +187,14 @@ void AliITSpList::AddSignal(Int_t i,Int_t j,Int_t trk,Int_t ht,Int_t mod,
     //    none.
     // Return:
     //    none.
+    Int_t index = GetIndex(i,j);
 
-    if(GetpListItem(i,j)==0){ // most create AliITSpListItem
-        fa->AddAt(new AliITSpListItem(trk,ht,mod,GetIndex(i,j),signal),
-                  GetIndex(i,j));
+    if(GetpListItem(index)==0){ // most create AliITSpListItem
+        fa->AddAt(new AliITSpListItem(trk,ht,mod,GetIndex(i,j),signal),index);
     }else{ // AliITSpListItem exists, just add signal to it.
-        GetpListItem(i,j)->AddSignal(trk,ht,mod,GetIndex(i,j),signal);
+        GetpListItem(index)->AddSignal(trk,ht,mod,index,signal);
     } // end if
+    if(index>=fEnteries) fEnteries = index +1;
 }
 //______________________________________________________________________
 void AliITSpList::AddNoise(Int_t i,Int_t j,Int_t mod,Double_t noise){
@@ -200,13 +208,14 @@ void AliITSpList::AddNoise(Int_t i,Int_t j,Int_t mod,Double_t noise){
     //    none.
     // Return:
     //    none.
+    Int_t index = GetIndex(i,j);
 
-    if(GetpListItem(i,j)==0){ // most create AliITSpListItem
-        fa->AddAt(new AliITSpListItem(mod,GetIndex(i,j),noise),
-                  GetIndex(i,j));
+    if(GetpListItem(index)==0){ // most create AliITSpListItem
+        fa->AddAt(new AliITSpListItem(mod,index,noise),index);
     }else{ // AliITSpListItem exists, just add signal to it.
-        GetpListItem(i,j)->AddNoise(mod,GetIndex(i,j),noise);
+        GetpListItem(index)->AddNoise(mod,index,noise);
     } // end if
+    if(index>=fEnteries) fEnteries = index +1;
 }
 //______________________________________________________________________
 
index 7677774..76dcece 100644 (file)
@@ -59,6 +59,8 @@ class AliITSpListItem: public TObject {
     void Print(ostream *os);
     // Standard ascii class read function
     void Read(istream *is);
+    // Returns max size of array for for Tracks, Hits, and signals.
+    static Int_t GetMaxKept() {return fkSize;};
 
  private:
     static const Int_t fkSize = 10; // Array sizes
@@ -112,14 +114,21 @@ class AliITSpList: public AliITSMap {
     void GetMaxMapIndex(Int_t &ni,Int_t &nj){ni=fNi;nj=fNj;return;}
     // returns the max index value.
     Int_t GetMaxIndex(){return fNi*fNj;}
+    // returns the largest non-zero entry kept in the array fa.
+    Int_t GetEntries(){return fEnteries;}
     // returns the max number of track/hit entries per cell.
-    Int_t GetNEnteries(){return 5;}
+    Int_t GetNEnteries(){return AliITSpListItem::GetMaxKept();}
     // for a give TObjArray index it returns the corresponding map index
     void  GetMapIndex(Int_t index,Int_t &i,Int_t &j){
        i = index/fNj;j = index - fNj*i;
        if(i<0||i>=fNi || j<0||j>=fNj){i=-1;j=-1; return;}
     }
     // Returns the signal+noise for a give map coordinate
+    Double_t GetSignal(Int_t index){
+       if(GetpListItem(index)==0) return 0.0;
+       return GetpListItem(index)->GetSumSignal();
+    }
+    // Returns the signal+noise for a give map coordinate
     Double_t GetSignal(Int_t i,Int_t j){
        if(GetpListItem(i,j)==0) return 0.0;
        return GetpListItem(i,j)->GetSumSignal();
@@ -181,10 +190,13 @@ class AliITSpList: public AliITSMap {
     // Returns the pointer to the TObjArray of pList Items
     TObjArray * GetpListItems(){return fa;}
     // returns the pList Item stored in the TObject array
+    AliITSpListItem* GetpListItem(Int_t index){
+       if(fa!=0)return (AliITSpListItem*) (fa->At(index));
+       else return 0;}
+    // returns the pList Item stored in the TObject array
     AliITSpListItem* GetpListItem(Int_t i,Int_t j){
        if(fa!=0)return (AliITSpListItem*) (fa->At(GetIndex(i,j)));
-       else return 0;
-    }
+       else return 0;}
 
     // Fill pList from digits. Not functional yet
     void FillMap(){;}
@@ -198,8 +210,9 @@ class AliITSpList: public AliITSMap {
  private:
     Int_t     fNi,fNj;   // The max index in i,j.
     TObjArray *fa;       // array of pList items
+    Int_t     fEnteries; // keepts track of the number of non-zero entries.
 
-    ClassDef(AliITSpList,1) // list of signals and track numbers
+    ClassDef(AliITSpList,2) // list of signals and track numbers
 };     
 // Input and output functions for standard C++ input/output.
 ostream & operator<<(ostream &os,AliITSpList &source);