X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=STEER%2FAliRecPoint.cxx;h=b074af3f864ae5d74dcf3f7db8bda763c28a8fe6;hp=94bba4372dca0d231d1bf05469d598efc1ef3a52;hb=acd848976f35aa0d797a794f59e7d83f4bfa2c8c;hpb=712d65280c3bce95887dc0418dff92ebae3375d9 diff --git a/STEER/AliRecPoint.cxx b/STEER/AliRecPoint.cxx index 94bba4372dc..b074af3f864 100644 --- a/STEER/AliRecPoint.cxx +++ b/STEER/AliRecPoint.cxx @@ -13,71 +13,102 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* -$Log$ -Revision 1.3 2000/03/20 14:22:25 fca -New version to support new PHOS code - -Revision 1.2 2000/02/15 09:43:54 fca -Corrections -- a bug in the streamer (wrong size of the arrays) -- replace Read/WriteArray by Read/WriteFastArray (suggestion R.Brun) - -Revision 1.1 1999/12/17 09:01:14 fca -Y.Schutz new classes for reconstruction - -*/ +/* $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]; ; - fIndexInList = -1 ; // to be set when the point is already stored + // + // 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 TMatrix(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 @@ -101,7 +132,7 @@ void AliRecPoint::AddDigit(AliDigitNew & digit) fAmp += digit.GetAmp() ; } -//____________________________________________________________________________ +//_______________________________________________________________________ // void AliRecPoint::AddTrack(AliTrack & track) // { // // adds a digit to the digits list @@ -120,8 +151,35 @@ void AliRecPoint::AddDigit(AliDigitNew & digit) // fTracksList[fMulTrack++]= (int) &Track ; // } -//____________________________________________________________________________ -void AliRecPoint::GetCovarianceMatrix(TMatrix & mat) +//_______________________________________________________________________ +void AliRecPoint::Copy(AliRecPoint& recp) const +{ + // + // Copy *this onto pts + // + // Copy all first + if(this != &recp) { + ((TObject*) this)->Copy(dynamic_cast(recp)); + recp.fAmp = fAmp; + recp.fGeom = fGeom; + recp.fIndexInList = fIndexInList; + recp.fLocPos = fLocPos; + recp.fLocPosM = new TMatrix(*fLocPosM); + recp.fMaxDigit = fMaxDigit; + recp.fMulDigit = fMulDigit; + recp.fMaxTrack = fMaxTrack; + recp.fMulTrack = fMulTrack; + + // Duplicate pointed objects + recp.fDigitsList = new Int_t[fMulDigit]; + memcpy(recp.fDigitsList,fDigitsList,fMulDigit*sizeof(Int_t)); + recp.fTracksList = new Int_t[fMulTrack]; + memcpy(recp.fTracksList,fTracksList,fMulTrack*sizeof(Int_t)); + } +} + +//_______________________________________________________________________ +void AliRecPoint::GetCovarianceMatrix(TMatrix & mat) const { // returns the covariant matrix for the local position @@ -130,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 @@ -140,7 +198,7 @@ void AliRecPoint::GetLocalPosition(TVector3 & pos) } //____________________________________________________________________________ -void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrix & gmat) +void AliRecPoint::GetGlobalPosition(TVector3 & gpos, TMatrix & gmat) const { // returns the position of the cluster in the global reference system of ALICE // and the uncertainty on this position