12 #ifndef ROOT_TChainIndex
13 #define ROOT_TChainIndex
39 class TChainIndex :
public TVirtualIndex {
42 class TChainIndexEntry {
45 TChainIndexEntry() : fMinIndexValue(0), fMinIndexValMinor(0),
46 fMaxIndexValue(0), fMaxIndexValMinor(0),
49 typedef std::pair<Long64_t, Long64_t> IndexValPair_t;
51 IndexValPair_t GetMinIndexValPair()
const {
return IndexValPair_t(fMinIndexValue, fMinIndexValMinor); }
52 IndexValPair_t GetMaxIndexValPair()
const {
return IndexValPair_t(fMaxIndexValue, fMaxIndexValMinor); }
53 void SetMinMaxFrom(
const TTreeIndex *index );
55 Long64_t fMinIndexValue;
56 Long64_t fMinIndexValMinor;
57 Long64_t fMaxIndexValue;
58 Long64_t fMaxIndexValMinor;
59 TVirtualIndex* fTreeIndex;
66 TTreeFormula *fMajorFormulaParent;
67 TTreeFormula *fMinorFormulaParent;
68 std::vector<TChainIndexEntry> fEntries;
70 std::pair<TVirtualIndex*, Int_t> GetSubTreeIndex(Long64_t major, Long64_t minor)
const;
71 void ReleaseSubTreeIndex(TVirtualIndex* index, Int_t treeNo)
const;
76 TChainIndex(
const TTree *T,
const char *majorname,
const char *minorname);
77 virtual ~TChainIndex();
78 virtual void Append(
const TVirtualIndex *, Bool_t delaySort = kFALSE);
79 virtual Long64_t GetEntryNumberFriend(
const TTree *parent);
80 virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor)
const;
81 virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor)
const;
82 const char *GetMajorName()
const {
return fMajorName.Data();}
83 const char *GetMinorName()
const {
return fMinorName.Data();}
84 virtual Long64_t GetN()
const {
return fEntries.size();}
85 virtual TTreeFormula *GetMajorFormulaParent(
const TTree *parent);
86 virtual TTreeFormula *GetMinorFormulaParent(
const TTree *parent);
87 virtual Bool_t IsValidFor(
const TTree *parent);
88 virtual void UpdateFormulaLeaves(
const TTree *parent);
89 virtual void SetTree(
const TTree *T);
91 ClassDef(TChainIndex,1)