* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-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
fAmp += digit.GetAmp() ;
}
-//____________________________________________________________________________
+//_______________________________________________________________________
// void AliRecPoint::AddTrack(AliTrack & track)
// {
// // adds a digit to the digits list
// 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<TObject&>(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
}
//____________________________________________________________________________
-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
}
//____________________________________________________________________________
-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
}
-//______________________________________________________________________________
-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 >> fIndexInList;
- R__b >> fMulDigit;
- fDigitsList = new Int_t[fMulDigit] ;
- R__b.ReadFastArray(fDigitsList, fMulDigit);
- R__b >> fGeom;
- fLocPos.Streamer(R__b);
- R__b >> fLocPosM;
- R__b >> fMulTrack;
- fTracksList = new Int_t[fMulTrack] ;
- R__b.ReadFastArray(fTracksList, fMulTrack);
- } else {
- R__b.WriteVersion(AliRecPoint::IsA());
- TObject::Streamer(R__b);
- R__b << fAmp;
- R__b << fIndexInList;
- R__b << fMulDigit;
- R__b.WriteFastArray(fDigitsList, fMulDigit);
- R__b << fGeom;
- fLocPos.Streamer(R__b);
- R__b << fLocPosM;
- R__b << fMulTrack;
- R__b.WriteFastArray(fTracksList, fMulTrack);
- }
-}