| 1 | #ifndef MARS_MChain
|
|---|
| 2 | #define MARS_MChain
|
|---|
| 3 |
|
|---|
| 4 | #ifndef ROOT_TChain
|
|---|
| 5 | #include <TChain.h>
|
|---|
| 6 | #endif
|
|---|
| 7 |
|
|---|
| 8 | class MChain : public TChain
|
|---|
| 9 | {
|
|---|
| 10 | public:
|
|---|
| 11 | // Taken from TChain::LoadTree --- may have to be updated for different root versions
|
|---|
| 12 | enum {
|
|---|
| 13 | kCannotAccessTree = -4, // Tree not found in file
|
|---|
| 14 | kCannotAccessFile = -3, // File access impossible
|
|---|
| 15 | kOutOfRange = -2, // Event doesn't exist
|
|---|
| 16 | kNoError = 0, // LoadTree succeeded
|
|---|
| 17 | kFatalError = 1 // LoadTree succeeded, but Notify() returned fatal error
|
|---|
| 18 | };
|
|---|
| 19 |
|
|---|
| 20 | private:
|
|---|
| 21 | Bool_t fNotified;
|
|---|
| 22 | Long64_t fLastError; // <0: LoadTree failed, =0: LoadTree was ok, >0: Notify failed
|
|---|
| 23 |
|
|---|
| 24 | public:
|
|---|
| 25 | MChain() : TChain(), fNotified(kFALSE), fLastError(0) {}
|
|---|
| 26 | MChain(const char *name, const char *title="") : TChain(name, title), fNotified(kFALSE), fLastError(0) {}
|
|---|
| 27 |
|
|---|
| 28 | // Restart from scratch
|
|---|
| 29 | void ResetTree() { fTree = 0; fTreeNumber = -1; }
|
|---|
| 30 |
|
|---|
| 31 | // Function to be notified and setting the notifier
|
|---|
| 32 | virtual Bool_t Notify() { fNotified = kTRUE; return kTRUE; }
|
|---|
| 33 | virtual void SetNotify(TObject *obj) { fNotify = obj; fNotified = kFALSE; }
|
|---|
| 34 |
|
|---|
| 35 | // Overwrite LoadTree (for different root versions)
|
|---|
| 36 | Int_t LoadTree(Int_t entry) { return (Int_t)LoadTree((Long64_t)entry); }
|
|---|
| 37 | Long64_t LoadTree(Long64_t entry);
|
|---|
| 38 |
|
|---|
| 39 | // Handling for last error of LoadTree
|
|---|
| 40 | Long64_t GetLastError() const { return fLastError; };
|
|---|
| 41 | Bool_t HasFatalError() const { return fLastError==kFatalError; }
|
|---|
| 42 | Bool_t HasError() const { return fLastError==0 ? kFALSE : kTRUE; }
|
|---|
| 43 |
|
|---|
| 44 | ClassDef(MChain, 1) // Class derived from TChain to give access to Notify-return value
|
|---|
| 45 | };
|
|---|
| 46 |
|
|---|
| 47 | #endif
|
|---|