X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliRecPoint.cxx;h=7ab6b8a999f779d9f7e5426417466fea2a52d94b;hb=039459364367f289dbf54bad6a559cc83254c4b9;hp=6197a0ad0d0cba9671faef8492dc8c73c64ce9c8;hpb=2a33668de6934fa65025ece46746a0fafd5ed6f7;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliRecPoint.cxx b/STEER/AliRecPoint.cxx index 6197a0ad0d0..7ab6b8a999f 100644 --- a/STEER/AliRecPoint.cxx +++ b/STEER/AliRecPoint.cxx @@ -13,57 +13,102 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* -$Log$ -*/ +/* $Id$ */ //-*-C++-*- //_________________________________________________________________________ -// Base Class of Cluster (empty cxx needed by Root) +// Base Class for reconstructed space points +// usually coming from the clusterisation algorithms +// run on the digits +// //*-- Author : Yves Schutz SUBATECH ////////////////////////////////////////////////////////////////////////////// -// --- ROOT system --- -#include "TObjArray.h" +// --- ROOT system --- // --- Standard library --- // --- AliRoot header files --- #include "AliRecPoint.h" +#include "AliGeometry.h" +#include "AliDigitNew.h" ClassImp(AliRecPoint) -//____________________________________________________________________________ -AliRecPoint::AliRecPoint() +//_______________________________________________________________________ +AliRecPoint::AliRecPoint(): + fAmp(0), + fGeom(0), + fIndexInList(-1), // to be set when the point is already stored + fLocPos(0,0,0), + fLocPosM(0), + fMaxDigit(100), + fMulDigit(0), + fMaxTrack(5), + fMulTrack(0), + fDigitsList(0), + fTracksList(0) { - // ctor - fAmp = 0.0 ; - - fLocPos.SetXYZ(0., 0., 0.) ; - fLocPosM = new TMatrix(3,3) ; - fMaxDigit = 100 ; - fMulDigit = 0 ; - fDigitsList = new int[fMaxDigit]; ; - fMaxTrack = 5 ; - fMulTrack = 0 ; - fTracksList = new int[fMaxTrack]; ; + // + // default ctor + // } -//____________________________________________________________________________ +//_______________________________________________________________________ +AliRecPoint::AliRecPoint(const char * ): + fAmp(0), + fGeom(0), + fIndexInList(-1), // to be set when the point is already stored + fLocPos(0,0,0), + fLocPosM(new TMatrixF(3,3)), + fMaxDigit(100), + fMulDigit(0), + fMaxTrack(5), + fMulTrack(0), + fDigitsList(new int[fMaxDigit]), + fTracksList(new int[fMaxTrack]) +{ + // + // Standard ctor + // +} + +//_______________________________________________________________________ +AliRecPoint::AliRecPoint(const AliRecPoint& recp): + TObject(recp), + fAmp(0), + fGeom(0), + fIndexInList(-1), // to be set when the point is already stored + fLocPos(0,0,0), + fLocPosM(0), + fMaxDigit(100), + fMulDigit(0), + fMaxTrack(5), + fMulTrack(0), + fDigitsList(0), + fTracksList(0) +{ + // + // Copy constructor + // + recp.Copy(*this); +} + +//_______________________________________________________________________ AliRecPoint::~AliRecPoint() { // dtor delete fLocPosM ; - if ( fDigitsList ) delete fDigitsList ; - if ( fTracksList ) delete fTracksList ; + delete [] fDigitsList ; + delete [] fTracksList ; } -//____________________________________________________________________________ +//_______________________________________________________________________ void AliRecPoint::AddDigit(AliDigitNew & digit) { // adds a digit to the digits list @@ -71,22 +116,23 @@ void AliRecPoint::AddDigit(AliDigitNew & digit) if ( fMulDigit >= fMaxDigit ) { // increase the size of the list - int * tempo = new ( int[fMaxDigit*=2] ) ; + int * tempo = new int[fMaxDigit*2]; Int_t index ; for ( index = 0 ; index < fMulDigit ; index++ ) tempo[index] = fDigitsList[index] ; - delete fDigitsList ; + delete [] fDigitsList ; fDigitsList = tempo ; } - fDigitsList[fMulDigit++]= (int) &digit ; + fDigitsList[fMulDigit] = digit.GetIndexInList() ; + fMulDigit++ ; fAmp += digit.GetAmp() ; } -//____________________________________________________________________________ +//_______________________________________________________________________ // void AliRecPoint::AddTrack(AliTrack & track) // { // // adds a digit to the digits list @@ -105,8 +151,35 @@ void AliRecPoint::AddDigit(AliDigitNew & digit) // fTracksList[fMulTrack++]= (int) &Track ; // } -//____________________________________________________________________________ -void AliRecPoint::GetCovarianceMatrix(TMatrix & mat) +//_______________________________________________________________________ +void AliRecPoint::Copy(TObject& recp) const +{ + // + // Copy *this onto pts + // + // Copy all first + if((TObject*)this != &recp) { + ((TObject*) this)->Copy(recp); + (dynamic_cast(recp)).fAmp = fAmp; + (dynamic_cast(recp)).fGeom = fGeom; + (dynamic_cast(recp)).fIndexInList = fIndexInList; + (dynamic_cast(recp)).fLocPos = fLocPos; + (dynamic_cast(recp)).fLocPosM = new TMatrixF(*fLocPosM); + (dynamic_cast(recp)).fMaxDigit = fMaxDigit; + (dynamic_cast(recp)).fMulDigit = fMulDigit; + (dynamic_cast(recp)).fMaxTrack = fMaxTrack; + (dynamic_cast(recp)).fMulTrack = fMulTrack; + + // Duplicate pointed objects + (dynamic_cast(recp)).fDigitsList = new Int_t[fMulDigit]; + memcpy((dynamic_cast(recp)).fDigitsList,fDigitsList,fMulDigit*sizeof(Int_t)); + (dynamic_cast(recp)).fTracksList = new Int_t[fMulTrack]; + memcpy((dynamic_cast(recp)).fTracksList,fTracksList,fMulTrack*sizeof(Int_t)); + } +} + +//_______________________________________________________________________ +void AliRecPoint::GetCovarianceMatrix(TMatrixF & mat) const { // returns the covariant matrix for the local position @@ -115,7 +188,7 @@ void AliRecPoint::GetCovarianceMatrix(TMatrix & mat) } //____________________________________________________________________________ -void AliRecPoint::GetLocalPosition(TVector3 & pos) +void AliRecPoint::GetLocalPosition(TVector3 & pos) const { // returns the position of the cluster in the local reference system of the sub-detector @@ -125,7 +198,7 @@ void AliRecPoint::GetLocalPosition(TVector3 & pos) } //____________________________________________________________________________ -void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrix & gmat) +void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrixF & gmat) const { // returns the position of the cluster in the global reference system of ALICE // and the uncertainty on this position @@ -135,32 +208,4 @@ void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrix & gmat) } -//______________________________________________________________________________ -void AliRecPoint::Streamer(TBuffer &R__b) -{ - // Stream an object of class AliRecPoint. - - if (R__b.IsReading()) { - Version_t R__v = R__b.ReadVersion(); if (R__v) { } - TObject::Streamer(R__b); - R__b >> fAmp; - R__b.ReadArray(fDigitsList); - R__b >> fGeom; - fLocPos.Streamer(R__b); - R__b >> fLocPosM; - R__b >> fMulDigit; - R__b >> fMulTrack; - R__b.ReadArray(fTracksList); - } else { - R__b.WriteVersion(AliRecPoint::IsA()); - TObject::Streamer(R__b); - R__b << fAmp; - R__b.WriteArray(fDigitsList, fMaxDigit); - R__b << fGeom; - fLocPos.Streamer(R__b); - R__b << fLocPosM; - R__b << fMulDigit; - R__b << fMulTrack; - R__b.WriteArray(fTracksList, fMaxTrack); - } -} +