X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFSDigit.cxx;h=88f1faad9339d44f878d70e5848ef51da7d00f28;hb=29c7a3d01fc2a35d44dd27f40ae7b1937919a179;hp=5ed787dffee9acad4c2b9807f0f1e92994457fd4;hpb=655e379fccf84b600659b6651cfeb8a0bdc9892d;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFSDigit.cxx b/TOF/AliTOFSDigit.cxx index 5ed787dffee..88f1faad933 100644 --- a/TOF/AliTOFSDigit.cxx +++ b/TOF/AliTOFSDigit.cxx @@ -23,19 +23,14 @@ // fStrip : strips number // // fPadx : pad number along x // // fPadz : pad number along z // -// fTdc : TArrayF of TDC values // -// fAdc : TArrayF of ADC values // +// fTdc : TArrayI of TDC values // +// fAdc : TArrayI of ADC values // // // // Getters, setters and member functions defined here // // // // -- Authors: F. Pierella, A. Seganti, D. Vicinanza // //_________________________________________________________________________// -#include "TArrayF.h" -#include "TArrayI.h" - -#include "AliLog.h" - #include "AliTOFGeometry.h" #include "AliTOFSDigit.h" @@ -59,7 +54,7 @@ AliTOFSDigit::AliTOFSDigit(): } //////////////////////////////////////////////////////////////////////// -AliTOFSDigit::AliTOFSDigit(Int_t tracknum, Int_t *vol,Float_t *digit): +AliTOFSDigit::AliTOFSDigit(Int_t tracknum, Int_t *vol,Int_t *digit): TObject(), fSector(-1), fPlate(-1), @@ -81,9 +76,9 @@ AliTOFSDigit::AliTOFSDigit(Int_t tracknum, Int_t *vol,Float_t *digit): fPadx = vol[3]; fPadz = vol[4]; fNDigits = 1; - fTdc = new TArrayF(fNDigits); + fTdc = new TArrayI(fNDigits); (*fTdc)[0] = digit[0]; - fAdc = new TArrayF(fNDigits); + fAdc = new TArrayI(fNDigits); (*fAdc)[0] = digit[1]; fTracks = new TArrayI(kMAXDIGITS*fNDigits); (*fTracks)[0] = tracknum; @@ -94,13 +89,13 @@ AliTOFSDigit::AliTOFSDigit(Int_t tracknum, Int_t *vol,Float_t *digit): //////////////////////////////////////////////////////////////////////// AliTOFSDigit::AliTOFSDigit(const AliTOFSDigit & digit): - TObject(), - fSector(-1), - fPlate(-1), - fStrip(-1), - fPadx(-1), - fPadz(-1), - fNDigits(0), + TObject(digit), + fSector(digit.fSector), + fPlate(digit.fPlate), + fStrip(digit.fStrip), + fPadx(digit.fPadx), + fPadz(digit.fPadz), + fNDigits(digit.fNDigits), fTdc(0x0), fAdc(0x0), fTracks(0x0) @@ -108,14 +103,8 @@ AliTOFSDigit::AliTOFSDigit(const AliTOFSDigit & digit): // // copy ctor for AliTOFSDigit object // - fSector = digit.fSector; - fPlate = digit.fPlate; - fStrip = digit.fStrip; - fPadx = digit.fPadx; - fPadz = digit.fPadz; - fNDigits = digit.fNDigits; - fTdc = new TArrayF(*digit.fTdc); - fAdc = new TArrayF(*digit.fAdc); + fTdc = new TArrayI(*digit.fTdc); + fAdc = new TArrayI(*digit.fAdc); fTracks = new TArrayI(*digit.fTracks); } @@ -125,22 +114,27 @@ AliTOFSDigit& AliTOFSDigit::operator=(const AliTOFSDigit & digit) // // copy ctor for AliTOFSDigit object // - this->fSector = digit.fSector; - this->fPlate = digit.fPlate; - this->fStrip = digit.fStrip; - this->fPadx = digit.fPadx; - this->fPadz = digit.fPadz; - this->fNDigits = digit.fNDigits; - this->fTdc = digit.fTdc; - this->fAdc = digit.fAdc; - this->fTracks = digit.fTracks; + + if (this == &digit) + return *this; + + TObject::operator=(digit); + fSector = digit.fSector; + fPlate = digit.fPlate; + fStrip = digit.fStrip; + fPadx = digit.fPadx; + fPadz = digit.fPadz; + fNDigits = digit.fNDigits; + fTdc = digit.fTdc; + fAdc = digit.fAdc; + fTracks = digit.fTracks; return *this; } //////////////////////////////////////////////////////////////////////// AliTOFSDigit::AliTOFSDigit(Int_t sector, Int_t plate, Int_t strip, Int_t padx, - Int_t padz, Float_t tdc, Float_t adc): + Int_t padz, Int_t tdc, Int_t adc): fSector(sector), fPlate(plate), fStrip(strip), @@ -154,9 +148,9 @@ AliTOFSDigit::AliTOFSDigit(Int_t sector, Int_t plate, Int_t strip, Int_t padx, // // Constructor for sdigit // - fTdc = new TArrayF(fNDigits); + fTdc = new TArrayI(fNDigits); (*fTdc)[0] = tdc; - fAdc = new TArrayF(fNDigits); + fAdc = new TArrayI(fNDigits); (*fAdc)[0] = adc; // no tracks were specified, set them to -1 fTracks = new TArrayI(kMAXDIGITS*fNDigits); @@ -188,7 +182,7 @@ void AliTOFSDigit::Update(Float_t tdcbin, Int_t tdc, Int_t adc, Int_t track) // Int_t sameTime = -1; - Float_t tdcwindow=((Float_t)AliTOFGeometry::TimeDiff())/tdcbin; + Float_t tdcwindow = AliTOFGeometry::DeadTime()/tdcbin; for (Int_t i = 0; i < fNDigits; i++) { if (TMath::Abs(tdc-fTdc->At(i)) < tdcwindow) { sameTime = i; @@ -196,22 +190,34 @@ void AliTOFSDigit::Update(Float_t tdcbin, Int_t tdc, Int_t adc, Int_t track) } } - if (sameTime >= 0) { - (*fAdc)[sameTime] += static_cast(adc); - // update track - find the first -1 value and replace it by the - // track number - for (Int_t iTrack=0; iTrack= 0) { // another time measurement happens during the + // dead time of the hit pad => it corresponds + // to the same time measurement + (*fAdc)[sameTime] += adc; + + // update track index array in case the current digit track index + // is different from -1 + if (track!=-1) { + + //Find the first -1 value of the track index array and replace + //it by the current digit track index + for (Int_t iTrack=0; iTrackSet(fNDigits); @@ -220,9 +226,9 @@ void AliTOFSDigit::Update(Float_t tdcbin, Int_t tdc, Int_t adc, Int_t track) (*fAdc)[fNDigits-1] = adc; fTracks->Set(fNDigits*kMAXDIGITS); (*fTracks)[(fNDigits-1)*kMAXDIGITS] = track; - for (Int_t i = 1; i GetNDigits(); + Float_t tdcbin = AliTOFGeometry::TdcBinWidth();// [ps] hardwired for the time being + + Int_t track = -1; + Int_t adc = -1; + Int_t tdc = -1; + // start loop on all sdig locations + Int_t nlocations = sdig->GetNDigits(); for (Int_t j = 0; j < nlocations; j++) { - Float_t tdcbin = AliTOFGeometry::TdcBinWidth();// [ps] hardwired for the time being - Int_t tdc=(Int_t)sdig->GetTdc(j); - Int_t adc=(Int_t)sdig->GetAdc(j); + tdc = (Int_t)sdig->GetTdc(j); + adc = (Int_t)sdig->GetAdc(j); + // getting here only the first track number - Int_t track=GetTrack(j,0); - - - Int_t sameTime = -1; - Float_t tdcwindow=((Float_t)AliTOFGeometry::TimeDiff())/tdcbin; - for (Int_t i = 0; i < fNDigits; i++) { - if (TMath::Abs(tdc-fTdc->At(i)) < tdcwindow) { - sameTime = i; - break; - } - } - - if (sameTime >= 0) { - (*fAdc)[sameTime] += static_cast(adc); - // update track - find the first -1 value and replace it by the - // track number - for (Int_t iTrack=0; iTrackSet(fNDigits); - (*fTdc)[fNDigits-1] = tdc; - fAdc->Set(fNDigits); - (*fAdc)[fNDigits-1] = adc; - fTracks->Set(fNDigits*kMAXDIGITS); - (*fTracks)[(fNDigits-1)*kMAXDIGITS] = track; - for (Int_t i = 1; i = 0) + //Int_t track = GetTrack(j,0); + + // getting here all the track numbers + for (Int_t iTrack = 0; iTrackGetTrack(j,iTrack); + Update(tdcbin, tdc, adc, track); + } // end loop on tracks + } // end loop on sdig locations + + } //////////////////////////////////////////////////////////////////////// @@ -299,15 +280,14 @@ AliTOFSDigit::~AliTOFSDigit() //////////////////////////////////////////////////////////////////////// -Int_t AliTOFSDigit::GetTotPad(AliTOFGeometry *tofGeom) const +Int_t AliTOFSDigit::GetTotPad() const { // // Get the "total" index of the pad inside a Sector // starting from the digits data. // - Int_t pad = 2*fPadx + fPadz; - //Int_t pad = fPadx+AliTOFGeometry::NpadX()*fPadz; + Int_t pad = AliTOFGeometry::NpadZ()*fPadx + fPadz; Int_t before=0; switch(fPlate){ @@ -315,16 +295,16 @@ Int_t AliTOFSDigit::GetTotPad(AliTOFGeometry *tofGeom) const //before = 0; break; case 1: - before = tofGeom->NStripC(); + before = AliTOFGeometry::NStripC(); break; case 2: - before = AliTOFGeometry::NStripB() + tofGeom->NStripC(); + before = AliTOFGeometry::NStripB() + AliTOFGeometry::NStripC(); break; case 3: - before = AliTOFGeometry::NStripA() + AliTOFGeometry::NStripB() + tofGeom->NStripC(); + before = AliTOFGeometry::NStripA() + AliTOFGeometry::NStripB() + AliTOFGeometry::NStripC(); break; case 4: - before = AliTOFGeometry::NStripA() + 2*AliTOFGeometry::NStripB() + tofGeom->NStripC(); + before = AliTOFGeometry::NStripA() + 2*AliTOFGeometry::NStripB() + AliTOFGeometry::NStripC(); break; }