ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtViewerManager.h
Go to the documentation of this file.
1 #ifndef ATVIEWERMANAGER_H
2 #define ATVIEWERMANAGER_H
3 
4 #include "AtDataObserver.h"
5 #include "AtRawEvent.h"
6 #include "AtTabInfo.h"
8 
9 #include <Rtypes.h>
10 #include <TString.h> // for TString
11 
12 #include <map> // for map
13 #include <memory> // for shared_ptr, unique_ptr
14 #include <vector>
15 
16 class AtEventSidebar;
17 class AtMap; // lines 29-29
18 class AtTabBase; // lines 31-31
19 class FairTask; // lines 19-19
20 class TBuffer; // lines 20-20
21 class TClass; // lines 23-23
22 class TMemberInspector; // lines 26-26
23 namespace DataHandling {
24 class AtSubject;
25 }
34 private:
35  using TabVec = std::vector<std::unique_ptr<AtTabBase>>;
36 
38  DataHandling::AtTreeEntry fEntry{0}; //< Observing
39  DataHandling::AtBranch fRawEventBranch{}; //< Not observing
40  DataHandling::AtBranch fEventBranch{}; //< Not observing
41  DataHandling::AtBranch fPatternEventBranch{}; //< Not observing
42  DataHandling::AtPadNum fPadNum{-1}; //< Not Observing
43 
44  AtEventSidebar *fSidebar;
45  AtEventSidebar *fBasebar;
46 
47  std::shared_ptr<AtMap> fMap;
48  std::map<TString, std::vector<TString>> fBranchNames; //< fBranchNames[type] = {list of branches}
49  TabVec fTabs;
50 
51  bool fCheckGood{false}; //< Check if the event is good and skip if not when using next and prev
52  std::unique_ptr<AtTabInfoFairRoot<AtRawEvent>> fCheckEvt{nullptr};
53 
54  static AtViewerManager *fInstance;
55 
56 public:
57  AtViewerManager(std::shared_ptr<AtMap> map);
59 
60  void AddTask(FairTask *task);
61  void AddTab(std::unique_ptr<AtTabBase> tab);
62 
63  void Init();
64  virtual void Update(DataHandling::AtSubject *) override;
65 
66  AtMap *GetMap() { return fMap.get(); }
67  AtEventSidebar *GetSidebar() { return fSidebar; }
68  std::map<TString, std::vector<TString>> const &GetBranchNames() const { return fBranchNames; }
69 
70  /*** Data handlers owned by AtViewerManager ***/
71  DataHandling::AtBranch &GetRawEventBranch() { return fRawEventBranch; }
72  DataHandling::AtBranch &GetEventBranch() { return fEventBranch; }
73  DataHandling::AtBranch &GetPatternEventBranch() { return fPatternEventBranch; }
75  DataHandling::AtPadNum &GetPadNum() { return fPadNum; }
76 
78  {
79  fCheckGood = true;
80  fCheckEvt = std::make_unique<AtTabInfoFairRoot<AtRawEvent>>(branch);
81  }
82 
87  virtual void GotoEvent(Int_t event) { fEntry.Set(event); }
88  void NextEvent();
89  void PrevEvent();
90 
91  static AtViewerManager *Instance();
92 
93 private:
94  void GenerateBranchLists();
95  void GotoEventImpl();
96 
97  ClassDef(AtViewerManager, 1);
98 };
99 
100 #endif
AtMap
Definition: AtMap.h:33
AtDataObserver.h
DataHandling::AtTreeEntry::Set
void Set(long entry)
Definition: AtViewerManagerSubject.cxx:10
AtRawEvent.h
AtViewerManager::AddTask
void AddTask(FairTask *task)
Definition: AtViewerManager.cxx:88
DataHandling::AtObserver
Definition: AtDataObserver.h:12
AtViewerManager::GotoEvent
virtual void GotoEvent(Int_t event)
Definition: AtViewerManager.h:87
AtViewerManager::AtViewerManager
AtViewerManager(std::shared_ptr< AtMap > map)
Definition: AtViewerManager.cxx:48
DataHandling::AtBranch
Subject for the branch in the FairRoot tree.
Definition: AtViewerManagerSubject.h:38
AtViewerManager::AddTab
void AddTab(std::unique_ptr< AtTabBase > tab)
Definition: AtViewerManager.cxx:92
AtViewerManager::Init
void Init()
Definition: AtViewerManager.cxx:97
AtViewerManager::PrevEvent
void PrevEvent()
Definition: AtViewerManager.cxx:186
AtViewerManager::GetSidebar
AtEventSidebar * GetSidebar()
Definition: AtViewerManager.h:67
DataHandling::AtSimpleType< int >
AtViewerManager::Instance
static AtViewerManager * Instance()
Definition: AtViewerManager.cxx:43
AtViewerManager::~AtViewerManager
~AtViewerManager()
Definition: AtViewerManager.cxx:82
AtViewerManager::SetCheckBranch
void SetCheckBranch(DataHandling::AtBranch &branch)
Definition: AtViewerManager.h:77
AtViewerManager::GetRawEventBranch
DataHandling::AtBranch & GetRawEventBranch()
Definition: AtViewerManager.h:71
AtViewerManager::NextEvent
void NextEvent()
Definition: AtViewerManager.cxx:175
AtViewerManager::GetPatternEventBranch
DataHandling::AtBranch & GetPatternEventBranch()
Definition: AtViewerManager.h:73
AtViewerManager::GetCurrentEntry
DataHandling::AtTreeEntry & GetCurrentEntry()
Definition: AtViewerManager.h:74
AtViewerManager::GetPadNum
DataHandling::AtPadNum & GetPadNum()
Definition: AtViewerManager.h:75
AtViewerManagerSubject.h
AtViewerManager::GetMap
AtMap * GetMap()
Definition: AtViewerManager.h:66
AtViewerManager::GetEventBranch
DataHandling::AtBranch & GetEventBranch()
Definition: AtViewerManager.h:72
DataHandling
Definition: AtDataObserver.h:4
AtViewerManager::Update
virtual void Update(DataHandling::AtSubject *) override
Definition: AtViewerManager.cxx:168
AtEventSidebar
Definition: AtEventSidebar.h:15
AtViewerManager::GetBranchNames
std::map< TString, std::vector< TString > > const & GetBranchNames() const
Definition: AtViewerManager.h:68
AtTabBase
Definition: AtTabBase.h:27
AtViewerManager
Definition: AtViewerManager.h:33
DataHandling::AtSubject
Definition: AtDataSubject.h:24
DataHandling::AtTreeEntry
Subject for the entry number in the FairRoot tree.
Definition: AtViewerManagerSubject.h:17
AtTabInfo.h