Logo ROOT  
Reference Guide
TChainIndex.h
Go to the documentation of this file.
1// @(#)root/treeplayer:$Id$
2// Author: Marek Biskup 07/06/2005
3
4/*************************************************************************
5 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TChainIndex
13#define ROOT_TChainIndex
14
15
16//////////////////////////////////////////////////////////////////////////
17//
18// TChainIndex
19//
20// A Chain Index with majorname and minorname.
21// It uses tree indices of all the trees in the chain instead of building
22// a new index.
23// The index values from the first tree should be less then
24// all the index values from the second tree, and so on.
25// If a tree in the chain doesn't have an index the index will be created
26// and kept inside this chain index.
27//
28//////////////////////////////////////////////////////////////////////////
29
30
31#include "TVirtualIndex.h"
32
33#include <vector>
34
35class TTreeFormula;
36class TTreeIndex;
37class TChain;
38
39class TChainIndex : public TVirtualIndex {
40
41public:
43 // holds a description of indices of trees in the chain.
44 public:
47 fTreeIndex(0) {}
48
49 typedef std::pair<Long64_t, Long64_t> IndexValPair_t;
50
53 void SetMinMaxFrom(const TTreeIndex *index );
54
55 Long64_t fMinIndexValue; // the minimum value of the index (upper bits)
56 Long64_t fMinIndexValMinor; // the minimum value of the index (lower bits)
57 Long64_t fMaxIndexValue; // the maximum value of the index (upper bits)
58 Long64_t fMaxIndexValMinor; // the maximum value of the index (lower bits)
59 TVirtualIndex* fTreeIndex; // the tree index in case it was created in the constructor,
60 // otherwise 0
61 };
62protected:
63
64 TString fMajorName; // Index major name
65 TString fMinorName; // Index minor name
66 TTreeFormula *fMajorFormulaParent; //! Pointer to major TreeFormula in Parent tree (if any)
67 TTreeFormula *fMinorFormulaParent; //! Pointer to minor TreeFormula in Parent tree (if any)
68 std::vector<TChainIndexEntry> fEntries; // descriptions of indices of trees in the chain.
69
70 std::pair<TVirtualIndex*, Int_t> GetSubTreeIndex(Long64_t major, Long64_t minor) const;
71 void ReleaseSubTreeIndex(TVirtualIndex* index, Int_t treeNo) const;
72 void DeleteIndices();
73
76
77public:
79 TChainIndex(const TTree *T, const char *majorname, const char *minorname);
80 virtual ~TChainIndex();
81 virtual void Append(const TVirtualIndex *, Bool_t delaySort = kFALSE);
82 virtual Long64_t GetEntryNumberFriend(const TTree *parent);
83 virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor) const;
84 virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor) const;
85 const char *GetMajorName() const {return fMajorName.Data();}
86 const char *GetMinorName() const {return fMinorName.Data();}
87 virtual Long64_t GetN() const {return fEntries.size();}
88 virtual Bool_t IsValidFor(const TTree *parent);
89 virtual void UpdateFormulaLeaves(const TTree *parent);
90 virtual void SetTree(const TTree *T);
91
92 ClassDef(TChainIndex,1) //A Tree Index with majorname and minorname.
93};
94
95#endif
96
const Bool_t kFALSE
Definition: RtypesCore.h:90
bool Bool_t
Definition: RtypesCore.h:61
long long Long64_t
Definition: RtypesCore.h:71
#define ClassDef(name, id)
Definition: Rtypes.h:322
Holds a description of indices of trees in the chain.
Definition: TChainIndex.h:42
std::pair< Long64_t, Long64_t > IndexValPair_t
Definition: TChainIndex.h:49
IndexValPair_t GetMaxIndexValPair() const
Definition: TChainIndex.h:52
TVirtualIndex * fTreeIndex
Definition: TChainIndex.h:59
void SetMinMaxFrom(const TTreeIndex *index)
Definition: TChainIndex.cxx:34
IndexValPair_t GetMinIndexValPair() const
Definition: TChainIndex.h:51
A Chain Index.
Definition: TChainIndex.h:39
std::vector< TChainIndexEntry > fEntries
Pointer to minor TreeFormula in Parent tree (if any)
Definition: TChainIndex.h:68
TTreeFormula * fMinorFormulaParent
Pointer to major TreeFormula in Parent tree (if any)
Definition: TChainIndex.h:67
virtual Bool_t IsValidFor(const TTree *parent)
Return kTRUE if index can be applied to the TTree.
virtual void UpdateFormulaLeaves(const TTree *parent)
Updates the parent formulae.
const char * GetMajorName() const
Definition: TChainIndex.h:85
virtual ~TChainIndex()
The destructor.
virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor) const
See TTreeIndex::GetEntryNumberWithBestIndex for details.
virtual Long64_t GetEntryNumberFriend(const TTree *parent)
See TTreeIndex::GetEntryNumberFriend for description.
virtual Long64_t GetN() const
Definition: TChainIndex.h:87
TString fMinorName
Definition: TChainIndex.h:65
std::pair< TVirtualIndex *, Int_t > GetSubTreeIndex(Long64_t major, Long64_t minor) const
Returns a TVirtualIndex for a tree which holds the entry with the specified major and minor values an...
virtual void Append(const TVirtualIndex *, Bool_t delaySort=kFALSE)
Add an index to this chain.
virtual void SetTree(const TTree *T)
See TTreeIndex::SetTree.
void ReleaseSubTreeIndex(TVirtualIndex *index, Int_t treeNo) const
Releases the tree index got using GetSubTreeIndex.
TChainIndex()
Default constructor for TChainIndex.
Definition: TChainIndex.cxx:47
void DeleteIndices()
Delete all the indices which were built by this object.
virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor) const
Returns the entry number with given index values.
TString fMajorName
Definition: TChainIndex.h:64
TTreeFormula * fMajorFormulaParent
Definition: TChainIndex.h:66
TTreeFormula * GetMajorFormulaParent(const TTree *parent)
Return a pointer to the TreeFormula corresponding to the majorname in parent tree T.
const char * GetMinorName() const
Definition: TChainIndex.h:86
TTreeFormula * GetMinorFormulaParent(const TTree *parent)
Return a pointer to the TreeFormula corresponding to the minorname in parent tree T.
A chain is a collection of files containing TTree objects.
Definition: TChain.h:34
Basic string class.
Definition: TString.h:131
const char * Data() const
Definition: TString.h:364
Used to pass a selection expression to the Tree drawing routine.
Definition: TTreeFormula.h:58
A Tree Index with majorname and minorname.
Definition: TTreeIndex.h:29
A TTree represents a columnar dataset.
Definition: TTree.h:78
Abstract interface for Tree Index.
Definition: TVirtualIndex.h:30
double T(double x)
Definition: ChebyshevPol.h:34