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
|
---|