ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtTabInfoTree.h
Go to the documentation of this file.
1 #ifndef ATTABINFOTREE_H
2 #define ATTABINFOTREE_H
3 
4 #include "AtDataObserver.h" // for Observer
5 #include "AtTabInfo.h" // for AtTabInfoBase
6 #include "AtViewerManagerSubject.h" // for AtTreeEntry
7 
8 #include <TFile.h>
9 #include <TString.h> // for TString
10 #include <TTree.h> // for TTree
11 #include <TTreeReader.h> // for TTreeReader
12 #include <TTreeReaderValue.h> // for TTreeReaderValue
13 
14 #include <memory> // for unique_ptr, make_unique
15 #include <string>
16 
17 namespace DataHandling {
18 class AtSubject;
19 }
20 
30 protected:
31  TTreeReader fReader;
32  std::unique_ptr<TFile> fFile{nullptr}; //< Pointer for if we are responsible for the file w/ tree
34 
35 public:
36  AtTabInfoTree(TString tree, TString fileName, DataHandling::AtTreeEntry &entryNumber);
37  AtTabInfoTree(TTree *tree, DataHandling::AtTreeEntry &entryNumber);
39 
40  std::string GetDefaultName() override { return fReader.GetTree()->GetName(); }
41  void Update(DataHandling::AtSubject *changedSubject) override;
42 
43  TTreeReader &GetReader() { return fReader; }
44  TTree *GetTree() { return fReader.GetTree(); }
45 };
46 
54 template <typename T>
56 protected:
57  TTreeReaderValue<T> fDetector;
58  std::shared_ptr<AtTabInfoTree> fTree;
59 
60 public:
61  AtTabInfoBranch(std::shared_ptr<AtTabInfoTree> tree, TString branchName)
62  : AtTabInfoBase(), fDetector(tree->GetReader(), branchName), fTree(tree)
63  {
64  }
65 
66  T *GetInfo() { return fDetector->Get(); }
67 
68  std::string GetDefaultName() override { return T::Class_Name(); }
69 };
70 
71 #endif
AtDataObserver.h
AtTabInfoTree
Tab Info object for handling a non-FairRoot TTree.
Definition: AtTabInfoTree.h:29
DataHandling::AtObserver
Definition: AtDataObserver.h:12
AtTabInfoBranch::fDetector
TTreeReaderValue< T > fDetector
Definition: AtTabInfoTree.h:57
AtTabInfoBranch::GetDefaultName
std::string GetDefaultName() override
Default name for info type.
Definition: AtTabInfoTree.h:68
AtTabInfoTree::~AtTabInfoTree
~AtTabInfoTree()
Definition: AtTabInfoTree.h:38
DataHandling::AtSubject::Detach
void Detach(AtObserver *observer)
Detach an observer to stop getting notified when this subject changes.
Definition: AtDataSubject.h:37
AtTabInfoTree::GetTree
TTree * GetTree()
Definition: AtTabInfoTree.h:44
AtTabInfoTree::fFile
std::unique_ptr< TFile > fFile
Definition: AtTabInfoTree.h:32
AtTabInfoBranch::fTree
std::shared_ptr< AtTabInfoTree > fTree
Definition: AtTabInfoTree.h:58
AtTabInfoTree::GetReader
TTreeReader & GetReader()
Definition: AtTabInfoTree.h:43
AtViewerManagerSubject.h
AtTabInfoBase
Interface for AtTabInfo classes.
Definition: AtTabInfo.h:35
AtTabInfoBranch::AtTabInfoBranch
AtTabInfoBranch(std::shared_ptr< AtTabInfoTree > tree, TString branchName)
Definition: AtTabInfoTree.h:61
AtTabInfoBranch::GetInfo
T * GetInfo()
Definition: AtTabInfoTree.h:66
DataHandling
Definition: AtDataObserver.h:4
AtTabInfoTree::Update
void Update(DataHandling::AtSubject *changedSubject) override
Definition: AtTabInfoTree.cxx:29
AtTabInfoTree::fEntryNumber
DataHandling::AtTreeEntry & fEntryNumber
Definition: AtTabInfoTree.h:33
AtTabInfoBranch
Describes a branch stored a TTree.
Definition: AtTabInfoTree.h:55
DataHandling::AtSubject
Definition: AtDataSubject.h:24
AtTabInfoTree::GetDefaultName
std::string GetDefaultName() override
Default name for info type.
Definition: AtTabInfoTree.h:40
DataHandling::AtTreeEntry
Subject for the entry number in the FairRoot tree.
Definition: AtViewerManagerSubject.h:17
AtTabInfoTree::fReader
TTreeReader fReader
Definition: AtTabInfoTree.h:31
AtTabInfoTree::AtTabInfoTree
AtTabInfoTree(TString tree, TString fileName, DataHandling::AtTreeEntry &entryNumber)
Definition: AtTabInfoTree.cxx:7
AtTabInfo.h