// @(#)root/star:$Name: $:$Id: TPoints3D.cxx,v 1.5 2003/02/11 12:17:19 rdm Exp $
// Author: Valery Fine(fine@mail.cern.ch) 24/04/99
// $Id: TPoints3D.cxx,v 1.5 2003/02/11 12:17:19 rdm Exp $
// ***********************************************************************
// * C++ class to define the abstract array of 3D points
// * Copyright(c) 1997~1999 [BNL] Brookhaven National Laboratory, STAR, All rights reserved
// * Author Valerie Fine (fine@bnl.gov)
// * Copyright(c) 1997~1999 Valerie Fine (fine@bnl.gov)
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// *
// * Permission to use, copy, modify and distribute this software and its
// * documentation for any purpose is hereby granted without fee,
// * provided that the above copyright notice appear in all copies and
// * that both that copyright notice and this permission notice appear
// * in supporting documentation. Brookhaven National Laboratory makes no
// * representations about the suitability of this software for any
// * purpose. It is provided "as is" without express or implied warranty.
// ************************************************************************
#include "Riostream.h"
#include "TROOT.h"
#include "TClass.h"
#include "TPoints3D.h"
#include "TPointsArray3D.h"
ClassImp(TPoints3D)
//______________________________________________________________________________
// TPoints3D is an abstract class of the array of 3-dimensional points.
// It has 4 different constructors.
//
// This class has no implemenatation for Paint, Draw, and SavePrimitive methods
//
// First one, without any parameters TPoints3D(), we call 'default
// constructor' and it's used in a case that just an initialisation is
// needed (i.e. pointer declaration).
//
// Example:
// TPoints3D *pl1 = new TPoints3D;
//
//
// Second one is 'normal constructor' with, usually, one parameter
// n (number of points), and it just allocates a space for the points.
//
// Example:
// TPoints3D pl1(150);
//
//
// Third one allocates a space for the points, and also makes
// initialisation from the given array.
//
// Example:
// TPoints3D pl1(150, pointerToAnArray);
//
//
// Fourth one is, almost, similar to the constructor above, except
// initialisation is provided with three independent arrays (array of
// x coordinates, y coordinates and z coordinates).
//
// Example:
// TPoints3D pl1(150, xArray, yArray, zArray);
//
//______________________________________________________________________________
TPoints3D::TPoints3D(TPoints3DABC *points) : fPoints(points)
{
//*-*-*-*-*-*-*-*-*-*-*-*-*3-D PolyLine default constructor*-*-*-*-*-*-*-*-*-*-*
//*-* ================================
DoOwner(kFALSE);
fPoints = points;
if (!fPoints) {
fPoints = new TPointsArray3D;
DoOwner();
}
}
//______________________________________________________________________________
TPoints3D::TPoints3D(Int_t n, Option_t *option) : fPoints( new TPointsArray3D(n,option))
{
//*-*-*-*-*-*3-D PolyLine normal constructor without initialisation*-*-*-*-*-*-*
//*-* ======================================================
//*-* If n < 0 the default size (2 points) is set
//*-*
DoOwner();
}
//______________________________________________________________________________
TPoints3D::TPoints3D(Int_t n, Float_t *p, Option_t *option) : fPoints(new TPointsArray3D(n,p,option))
{
//*-*-*-*-*-*-*-*-*-*-*-*-*3-D Point3D normal constructor*-*-*-*-*-*-*-*-*-*-*-*
//*-* ===============================
//*-* If n < 0 the default size (2 points) is set
//*-*
DoOwner();
}
//______________________________________________________________________________
TPoints3D::TPoints3D(Int_t n, Float_t *x, Float_t *y, Float_t *z, Option_t *option)
: fPoints(new TPointsArray3D(n,x,y,z,option))
{
//*-*-*-*-*-*-*-*-*-*-*-*-*3-D PolyLine normal constructor*-*-*-*-*-*-*-*-*-*-*-*
//*-* ===============================
//*-* If n < 0 the default size (2 points) is set
//*-*
DoOwner();
}
//______________________________________________________________________________
TPoints3D::~TPoints3D()
{
//*-*-*-*-*-*-*-*-*-*-*-*-*3-D PolyLine default destructor*-*-*-*-*-*-*-*-*-*-*-*
//*-* ===============================
Delete();
}
//______________________________________________________________________________
TPoints3D::TPoints3D(const TPoints3D &point) : TPoints3DABC(point)
{
((TPoints3D&)point).Copy(*this);
}
//______________________________________________________________________________
void TPoints3D::Copy(TObject &obj) const
{
//*-*-*-*-*-*-*-*-*-*-*-*-*Copy this TPoints3D to another *-*-*-*-*-*-*-*-*-*-*-*
//*-* ==============================
TPoints3DABC::Copy(obj);
TPoints3D &thatObject = (TPoints3D&)obj;
thatObject.Delete();
if (thatObject.IsOwner()) {
thatObject.fPoints = new TPoints3D(GetN(),GetP(),GetOption());
(thatObject.fPoints)->SetLastPosition(GetLastPosition());
}
else
thatObject.fPoints = fPoints;
}
//______________________________________________________________________________
void TPoints3D::Delete()
{
// Delete only own object
if (fPoints && IsOwner()) delete fPoints;
fPoints = 0;
}
//______________________________________________________________________________
Bool_t TPoints3D::DoOwner(Bool_t done) {
if (done) SetBit(kIsOwner);
else ResetBit(kIsOwner);
return IsOwner();
}
//______________________________________________________________________________
void TPoints3D::ExecuteEvent(Int_t event, Int_t px, Int_t py)
{
//*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-*-*-*-*-*-*-*
//*-* =========================================
if (fPoints)
fPoints->ExecuteEvent(event,px,py);
}
//______________________________________________________________________________
void TPoints3D::ls(Option_t *option) const
{
//*-*-*-*-*-*-*-*-*-*List this 3-D polyline with its attributes*-*-*-*-*-*-*
//*-* ==========================================
TROOT::IndentLevel();
cout << IsA()->GetName() << " N=" <<GetN()<<" Option="<<option<<endl;
// IsOwner()?"Owner":"Not owner" << endl;
}
//______________________________________________________________________________
void TPoints3D::Print(Option_t *option) const
{
//*-*-*-*-*-*-*-*-*-*Dump this 3-D polyline with its attributes*-*-*-*-*-*-*-*-*
//*-* ==========================================
cout <<" " << IsA()->GetName() <<" Printing N=" <<GetN()<<" Option="<<option<<endl;
// IsOwner()?"Owner":"Not owner" << endl;
}
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.