#include "AliITSUSDigit.h"
ClassImp(AliITSUSDigit)
+using std::istream;
+using std::swap;
+using namespace TMath;
+
// Addapted from ITS/AliITSpListItem, ruben.shahoyan@cern.ch
//______________________________________________________________________
AliITSUSDigit::AliITSUSDigit()
-: fModule(0)
+: fChip(0)
,fNTracks(0)
+ ,fROCycle(0)
,fTsignal(0.0)
,fNoise(0.0)
,fSignalAfterElect(0.0)
{
// Default constructor
+ for (int i=kBuffSize;i--;) {
+ fTrack[i] = -2;
+ fHits[i] = -1;
+ fSignal[i] = 0;
+ }
}
//______________________________________________________________________
-AliITSUSDigit::AliITSUSDigit(UInt_t module,UInt_t index,Double_t noise)
- :fModule(module)
+AliITSUSDigit::AliITSUSDigit(UInt_t chip,UInt_t index,Double_t noise,Int_t roCycle)
+ :fChip(chip)
,fNTracks(0)
+ ,fROCycle(roCycle)
,fTsignal(0.0)
,fNoise(noise)
,fSignalAfterElect(0.0)
}
//______________________________________________________________________
-AliITSUSDigit::AliITSUSDigit(Int_t track,Int_t hit,UInt_t module,UInt_t index,Double_t signal)
- :fModule(module)
+AliITSUSDigit::AliITSUSDigit(Int_t track,Int_t hit,UInt_t chip,UInt_t index,Double_t signal,Int_t roCycle)
+ :fChip(chip)
,fNTracks(1)
+ ,fROCycle(roCycle)
,fTsignal(signal)
,fNoise(0.0)
,fSignalAfterElect(0.0)
// Inputs:
// Int_t track The track number which produced this signal
// Int_t hit The hit number which produced this signal
- // Int_t module The module where this signal occurred
+ // Int_t chip The chip where this signal occurred
// Int_t index The cell index where this signal occurred
// Double_t signal The value of the signal (ionization)
+ // Int_t roCycle Read-Out cycle
SetUniqueID(index);
fTrack[0] = track;
fHits[0] = hit;
//______________________________________________________________________
AliITSUSDigit::AliITSUSDigit(const AliITSUSDigit &source)
:TObject(source)
- ,fModule(source.fModule)
+ ,fChip(source.fChip)
,fNTracks(source.fNTracks)
+ ,fROCycle(source.fROCycle)
,fTsignal(source.fTsignal)
,fNoise(source.fNoise)
,fSignalAfterElect(source.fSignalAfterElect)
// Inputs:
// Int_t track The track number which produced this signal
// Int_t hit The hit number which produced this signal
- // Int_t module The module where this signal occurred
+ // Int_t chip The chip where this signal occurred
// Int_t index The cell index where this signal occurred
// Double_t signal The value of the signal (ionization)
Int_t i,j;
Bool_t flg=kFALSE;
//
- if (TMath::Abs(signal)>2147483647.0) {
+ if (Abs(signal)>2147483647.0) {
//PH 2147483647 is the max. integer
//PH This apparently is a problem which needs investigation
AliWarning(Form("Too big or too small signal value %f",signal));
- signal = TMath::Sign((Double_t)2147483647,signal);
+ signal = Sign((Double_t)2147483647,signal);
}
//
fTsignal += signal; // Keep track of sum signal.
}
//
// new entry add it in order.
- // if this signal is <= smallest then don't add it.
- if (fNTracks==(kBuffSize-1) && signal <= fSignal[kBuffSize-1]) return;
+ if (fNTracks==(kBuffSize-1) && signal<=fSignal[kBuffSize-1]) return; // if this signal is <= smallest then don't add it.
//
for (i=fNTracks;i--;) {
- if (signal > fSignal[i]) {
- fSignal[i+1] = fSignal[i];
- fTrack[i+1] = fTrack[i];
- fHits[i+1] = fHits[i];
+ if (signal > fSignal[i]) { // shift smaller signals to the end of the list
+ if (i<kBuffSize-2) { // (if there is a space...)
+ fSignal[i+1] = fSignal[i];
+ fTrack[i+1] = fTrack[i];
+ fHits[i+1] = fHits[i];
+ }
} else {
fSignal[i+1] = signal;
fTrack[i+1] = track;
fHits[i+1] = hit;
- fNTracks++;
+ if (fNTracks<kBuffSize-1) fNTracks++;
return; // put it in the right place, now exit.
} // end if
} // end if; end for i
void AliITSUSDigit::Add(const AliITSUSDigit *pl)
{
// Adds the contents of pl to this
- // pl could come from different module and index
+ // pl could come from different chip and index
Double_t sigT = 0.0;
for(int i=pl->GetNTracks();i--;) {
double sig = pl->GetSignal(i);
void AliITSUSDigit::Print(Option_t*) const
{
// print itself
- printf("Mod: %4d Index:%7d Ntr:%2d | TotSignal:%.2e Noise:%.2e |",
- fModule,GetUniqueID(),fNTracks,fTsignal,fNoise);
+ printf("Mod: %4d Index:%7d Ntr:%2d | TotSignal:%.2e Noise:%.2e ROCycle: %d|",
+ fChip,GetUniqueID(),fNTracks,fTsignal,fNoise,fROCycle);
for (int i=0;i<fNTracks;i++) printf("%d(%.2e) |",fTrack[i],fSignal[i]); printf("\n");
}