// @(#)root/star:$Name: $:$Id: TTablePoints.h,v 1.2 2003/01/27 20:41:36 brun Exp $
// Author: Valery Fine 14/05/99 (E-mail: fine@bnl.gov)
/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
// $Id: TTablePoints.h,v 1.2 2003/01/27 20:41:36 brun Exp $
#ifndef ROOT_TTablePoints
#define ROOT_TTablePoints
// ***********************************************************************
// * Observer to draw use ant TTable object as an element of "event" geometry
// * 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 "TPoints3DABC.h"
#include "TTableSorter.h"
#include "TTable.h"
class TTablePoints : public TPoints3DABC
{
protected:
TTableSorter *fTableSorter;
const void *fKey; // pointer to key value to select rows
Int_t fFirstRow; // The first row to take in account
Int_t fSize;
void *fRows; // Pointer the first row of the STAF table
virtual void SetTablePointer(void *table);
TTablePoints();
public:
TTablePoints(TTableSorter *sorter,const void *key,Option_t *opt="");
TTablePoints(TTableSorter *sorter, Int_t keyIndex,Option_t *opt="");
~TTablePoints(){}
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
virtual Int_t GetLastPosition()const;
virtual Float_t GetX(Int_t idx) const = 0;
virtual Float_t GetY(Int_t idx) const = 0;
virtual Float_t GetZ(Int_t idx) const = 0;
virtual void *GetTable();
virtual Option_t *GetOption() const { return 0;}
virtual Int_t Indx(Int_t sortedIndx) const;
virtual Int_t SetLastPosition(Int_t idx);
virtual void SetOption(Option_t *){;}
virtual Int_t SetPoint(Int_t, Float_t, Float_t, Float_t ){return -1;}
virtual Int_t SetPoints(Int_t , Float_t *, Option_t *){return -1;}
virtual Int_t Size() const;
ClassDef(TTablePoints,0) // Defines the TTable as an element of "event" geometry
};
//____________________________________________________________________________
inline void TTablePoints::SetTablePointer(void *table){ fRows = table;}
//____________________________________________________________________________
// return the index of the origial row by its index from the sorted table
inline Int_t TTablePoints::Indx(Int_t sortedIndx) const
{return fTableSorter?fTableSorter->GetIndex(fFirstRow+sortedIndx):-1;}
//____________________________________________________________________________
// return the pointer to the original table object
inline void *TTablePoints::GetTable(){
void *ret = 0;
if (fTableSorter) {
TTable *t = fTableSorter->GetTable();
if (t) ret = t->GetArray();
}
return ret;
}
//____________________________________________________________________________
inline Int_t TTablePoints::Size() const { return fSize;}
//____________________________________________________________________________
inline Int_t TTablePoints::GetLastPosition() const {return Size()-1;}
//____________________________________________________________________________
inline Int_t TTablePoints::SetLastPosition(Int_t idx)
{
Int_t pos = GetLastPosition();
fSize = TMath::Min(pos,idx)+1;
return pos;
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1