// 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;
}
//______________________________________________________________________
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;
}
//______________________________________________________________________
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
} // end if i
fTsignal = 0.0;
fNoise = 0.0;
+ fSignalAfterElect = 0.0;
}
//______________________________________________________________________
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;
}
//______________________________________________________________________
} // end if i
this->fTsignal = signal;
this->fNoise = 0.0;
+ this->fSignalAfterElect = 0.0;
}
//______________________________________________________________________
AliITSpListItem::~AliITSpListItem(){
} // end if i
this->fTsignal = source.fTsignal;
this->fNoise = source.fNoise;
+ this->fSignalAfterElect = source.fSignalAfterElect;
return *this;
}
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.
// 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.
// 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;
}
//______________________________________________________________________
// 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;
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){
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){
return ( (i>=0&&i<fkSize-1) ? fSignal[i] : 0.0);}
virtual Double_t GetSignal(){
return fTsignal;}
+ virtual Double_t GetSignalAfterElect(){
+ return fSignalAfterElect;}
// Returns the Sum/Total signal
virtual Double_t GetSumSignal() const {return fTsignal+fNoise;}
// Returns the noise
// Addes track number and signal to this existing list.
virtual void AddSignal(Int_t track,Int_t hit,Int_t module,
Int_t index,Double_t signal);
+ // Adds signal after electronics to this existing list.
+ virtual void AddSignalAfterElect(Int_t module,Int_t index,Double_t signal);
// Addes noise to this existing list.
virtual void AddNoise(Int_t module,Int_t index,Double_t noise);
// Returns track number.
// Returns index number.
virtual Int_t GetIndex(){
return findex;}
+ // Adds the contents of pl to this
+ virtual void Add(AliITSpListItem *pl);
// Adds the contents of pl to this with track number off set given by
// fileIndex.
virtual void AddTo(Int_t fileIndex,AliITSpListItem *pl);
Double_t fSignal[fkSize]; //[fkSize] Signals
Double_t fTsignal; // Total signal (no noise)
Double_t fNoise; // Total noise, coupling, ...
+ Double_t fSignalAfterElect; // Signal after electronics
ClassDef(AliITSpListItem,2) // Item list of signals and track numbers
};
TObjArray *fa; // array of pList items
Int_t fEnteries; // keepts track of the number of non-zero entries.
- ClassDef(AliITSpList,2) // list of signals and track numbers
+ ClassDef(AliITSpList,3) // list of signals and track numbers
};
// Input and output functions for standard C++ input/output.
ostream & operator<<(ostream &os,AliITSpList &source);