]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSpList.cxx
Made a new abstract base class; AliL3HoughBaseTransformer for different implementations
[u/mrichter/AliRoot.git] / ITS / AliITSpList.cxx
index 3059669be3b14005e165f81cd9e1f309e399c45f..ace7ecf5e4f5ec306037100eb627351117f8def1 100644 (file)
@@ -88,10 +88,12 @@ void AliITSpList::ClearMap(){
     //    A zeroed AliITSpList class.
 
     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
+    /*
+    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;
 }
 //______________________________________________________________________
@@ -168,7 +170,7 @@ 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;
 }
 //______________________________________________________________________
@@ -190,7 +192,7 @@ void AliITSpList::AddSignal(Int_t i,Int_t j,Int_t trk,Int_t ht,Int_t mod,
     Int_t index = GetIndex(i,j);
 
     if(GetpListItem(index)==0){ // most create AliITSpListItem
-        fa->AddAt(new AliITSpListItem(trk,ht,mod,GetIndex(i,j),signal),index);
+        fa->AddAt(new AliITSpListItem(trk,ht,mod,index,signal),index);
     }else{ // AliITSpListItem exists, just add signal to it.
         GetpListItem(index)->AddSignal(trk,ht,mod,index,signal);
     } // end if
@@ -239,6 +241,7 @@ AliITSpListItem::AliITSpListItem(){
     } // end if i
     fTsignal = 0.0;
     fNoise   = 0.0;
+    fSignalAfterElect = 0.0;
 }
 //______________________________________________________________________
 AliITSpListItem::AliITSpListItem(Int_t module,Int_t index,Double_t noise){
@@ -260,6 +263,7 @@ AliITSpListItem::AliITSpListItem(Int_t module,Int_t index,Double_t noise){
         this->fHits[i]   = -1;
     } // end if i
     this->fTsignal = 0.0;
+    this->fSignalAfterElect = 0.0;
     this->fNoise   = noise;
 }
 //______________________________________________________________________
@@ -289,6 +293,7 @@ AliITSpListItem::AliITSpListItem(Int_t track,Int_t hit,Int_t module,
     } // end if i
     this->fTsignal = signal;
     this->fNoise   = 0.0;
+    this->fSignalAfterElect   = 0.0;
 }
 //______________________________________________________________________
 AliITSpListItem::~AliITSpListItem(){
@@ -332,6 +337,7 @@ AliITSpListItem& AliITSpListItem::operator=(const AliITSpListItem &source){
     } // end if i
     this->fTsignal = source.fTsignal;
     this->fNoise   = source.fNoise;
+    this->fSignalAfterElect   = source.fSignalAfterElect;
 
     return *this;
 }
@@ -369,7 +375,8 @@ void AliITSpListItem::AddSignal(Int_t track,Int_t hit,Int_t module,
         Warning("AddSignal","index=%d != findex=%d or module=%d != fmodule=%d",
                  index,findex,module,fmodule);
     fTsignal += signal; // Keep track of sum signal.
-    for(i=0;i<fkSize;i++) if( track==fTrack[i] && hit==fHits[i]){
+
+    for(i=0;i<fkSize;i++) if( track==fTrack[i] && hit==fHits[i] ){
         fSignal[i] += signal;
         flg = kTRUE;
     } // end for i & if.
@@ -426,11 +433,52 @@ void AliITSpListItem::AddNoise(Int_t module,Int_t index,Double_t noise){
     //    none.
 
     if(findex!=index || fmodule!=module) 
-        Warning("AddSignal","index=%d != findex=%d or module=%d != fmodule=%d",
+        Warning("AddNoise","index=%d != findex=%d or module=%d != fmodule=%d",
             index,findex,module,fmodule);
     fNoise += noise; // Keep track of sum signal.
 }
 //______________________________________________________________________
+void AliITSpListItem::AddSignalAfterElect(Int_t module,Int_t index,Double_t signal){
+    // Adds signal after electronics to this existing list.
+    // Inputs:
+    //    Int_t module   The module where this noise occurred
+    //    Int_t index    The cell index where this noise occurred
+    //    Double_t signal The value of the signal.
+    // Outputs:
+    //    none.
+    // Return:
+    //    none.
+
+    if(findex!=index || fmodule!=module) 
+        Warning("AddSignalAfterElect","index=%d != findex=%d or module=%d "
+               "!= fmodule=%d",index,findex,module,fmodule);
+    fSignalAfterElect += signal; // Keep track of sum signal.
+}
+//______________________________________________________________________
+void AliITSpListItem::Add(AliITSpListItem *pl){
+    // Adds the contents of pl to this
+    // pl could come from different module and index 
+    // Inputs:
+    //    AliITSpListItem *pl  an AliITSpListItem to be added to this class.
+    // Outputs:
+    //    none.
+    // Return:
+    //    none.
+    Int_t i;
+    Double_t sig  = 0.0;
+    Double_t sigT = 0.0;
+
+    for(i=0;i<pl->GetNsignals();i++){
+        sig = pl->GetSignal(i); 
+        if( sig <= 0.0 ) break; // no more signals
+        AddSignal(pl->GetTrack(i),pl->GetHit(i),fmodule,findex,sig);
+        sigT += sig;
+    } // end for i
+    fTsignal += (pl->fTsignal - sigT);
+    fNoise   += pl->fNoise;
+    return;
+}
+//______________________________________________________________________
 void AliITSpListItem::AddTo(Int_t fileIndex,AliITSpListItem *pl){
     // Adds the contents of pl to this with track number off set given by
     // fileIndex.
@@ -442,16 +490,19 @@ void AliITSpListItem::AddTo(Int_t fileIndex,AliITSpListItem *pl){
     // Return:
     //    none.
     Int_t i,trk;
-    Double_t sig=0.0;
+    Double_t sig  = 0.0;
 
+    Int_t module = pl->GetModule();
+    Int_t index  = pl->GetIndex();
     for(i=0;i<pl->GetNsignals();i++){
+        sig = pl->GetSignal(i); 
+        if( sig <= 0.0 ) break; // no more signals
         trk = pl->GetTrack(i);
-        trk += fileIndex;
-        this->AddSignal(trk,pl->GetHit(i),pl->GetModule(),
-                           pl->GetIndex(),pl->GetSignal(i));
-        sig += pl->GetSignal(i);
+        trk += fileIndex; 
+        AddSignal(trk,pl->GetHit(i),module,index,sig);
     } // end for i
-    this->fNoise   += pl->fNoise;
+    fSignalAfterElect += (pl->fSignalAfterElect + pl->fNoise - fNoise);
+    fNoise = pl->fNoise;
     return;
 }
 //______________________________________________________________________
@@ -465,7 +516,7 @@ Int_t AliITSpListItem::ShiftIndex(Int_t in,Int_t trk){
     // Return:
     //    Int_t The track number with the file number in the upper bits.
     Int_t si = sizeof(Int_t) * 8;
-    UInt_t uin,utrk; // use UInt_t to avoid integer overflow-> goes negative.
+    UInt_t uin,utrk; // use UInt_t to avoid interger overflow-> goes negative.
 
     uin = in;
     utrk = trk;
@@ -490,7 +541,7 @@ void AliITSpListItem::Print(ostream *os){
     for(i=0;i<fkSize;i++) *os << fTrack[i] <<",";
     for(i=0;i<fkSize;i++) *os << fHits[i] <<",";
     for(i=0;i<fkSize;i++) *os << fSignal[i] <<",";
-    *os << fTsignal <<","<< fNoise;
+    *os << fTsignal <<","<< fNoise << "," << fSignalAfterElect;
 }
 //______________________________________________________________________
 void AliITSpListItem::Read(istream *is){
@@ -508,7 +559,7 @@ void AliITSpListItem::Read(istream *is){
     for(i=0;i<fkSize&&i<iss;i++) *is >> fTrack[i];
     for(i=0;i<fkSize&&i<iss;i++) *is >> fHits[i];
     for(i=0;i<fkSize&&i<iss;i++) *is >> fSignal[i];
-    *is >> fTsignal >> fNoise;
+    *is >> fTsignal >> fNoise >> fSignalAfterElect;
 }
 //______________________________________________________________________
 ostream &operator<<(ostream &os,AliITSpListItem &source){