ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtTabMain.h
Go to the documentation of this file.
1 #ifndef ATTABMAIN_H
2 #define ATTABMAIN_H
3 #include "AtDataObserver.h" // for Observer
4 #include "AtTabBase.h" // for AtTabBase
5 #include "AtViewerManagerSubject.h" // for AtPadNum
6 
7 #include <Rtypes.h> // for Int_t, THashConsistencyHolder
8 #include <TAttMarker.h> // for TAttMarker, kFullDotMedium
9 #include <TEveElement.h> // for TEveElement
10 #include <TEveEventManager.h> // for TEveEventManager
11 #include <TEvePointSet.h> // for TEvePointSet
12 
13 #include <memory> // for make_unique, unique_ptr
14 #include <string> // for string
15 #include <utility> // for move
16 #include <vector> // for vector
17 
18 class AtHit;
19 class AtTrack;
20 class TBuffer; // lines 19-19
21 class TCanvas; // lines 24-24
22 class TClass; // lines 20-20
23 class TEveWindowSlot;
24 class TH1I; // lines 28-28
25 class TH2Poly; // lines 27-27
26 class TMemberInspector; // lines 21-21
27 namespace DataHandling {
28 class AtSubject;
29 }
30 
35 protected:
36  using TEvePointSetPtr = std::unique_ptr<TEvePointSet>;
37  using TEveEventManagerPtr = std::unique_ptr<TEveEventManager>;
38 
39  TEveEventManagerPtr fEveEvent{std::make_unique<TEveEventManager>("AtEvent")};
40  TEvePointSetPtr fHitSet{std::make_unique<TEvePointSet>("Hits")}; //< AtEvent Hit Set
41 
42  TEveEventManagerPtr fEvePatternEvent{std::make_unique<TEveEventManager>("AtPatternEvent")};
43  TEvePointSetPtr fNoiseHitSet{std::make_unique<TEvePointSet>("Noise")}; //< AtPatternEvent Noise Set
44  std::vector<TEvePointSetPtr> fPatternHitSets;
45  std::vector<TEveElement> fPatterns;
46 
47  Int_t fThreshold{0}; //< Min charge to draw hit
48  Int_t fMaxHitMulti{10}; //< Max hits in a pad for hit to be drawn
49 
50  TAttMarker fHitAttr{kPink, kFullDotMedium, 1};
51 
52  TCanvas *fCvsPadPlane{nullptr};
53  TH2Poly *fPadPlane{nullptr};
54 
55  TCanvas *fCvsPadWave{nullptr};
56  TH1I *fPadWave{nullptr};
62 
63 public:
64  AtTabMain();
65  ~AtTabMain();
66  void InitTab() override;
67 
68  void Exec() override{};
69  void Update(DataHandling::AtSubject *sub) override;
70 
71  void DumpEvent(std::string file);
72 
73  void SetThreshold(Int_t val) { fThreshold = val; }
74  void SetHitAttributes(TAttMarker attr) { fHitAttr = std::move(attr); }
75  void SetMultiHit(Int_t hitMax) { fMaxHitMulti = hitMax; }
76 
81  static void SelectPad();
82 
83 protected:
84  void MakeTab(TEveWindowSlot *slot) override;
85 
86  // Sets the default render state for TEveEventManagers
87  virtual void UpdateRenderState();
88  Color_t GetTrackColor(int i);
89  void SetPointsFromHits(TEvePointSet &hitSet, const std::vector<std::unique_ptr<AtHit>> &hits);
90  void SetPointsFromHits(TEvePointSet &hitSet, const std::vector<AtHit *> &hits);
91  void SetPointsFromTrack(TEvePointSet &hitSet, const AtTrack &track);
92 
93 private:
94  // Functions to draw the initial canvases
95  void DrawPadPlane();
96  void DrawPadWave();
97 
98  bool DrawWave(Int_t PadNum);
99 
100  // Update hit sets
101  void UpdatePadPlane();
102  void UpdateEventElements();
103  void UpdatePatternEventElements();
104 
105  void ExpandNumPatterns(int num);
106 
107  ClassDefOverride(AtTabMain, 1)
108 };
109 
110 #endif
AtDataObserver.h
AtTabMain::fRawEventBranch
DataHandling::AtBranch * fRawEventBranch
Definition: AtTabMain.h:59
AtTabMain::UpdateRenderState
virtual void UpdateRenderState()
Definition: AtTabMain.cxx:206
DataHandling::AtObserver
Definition: AtDataObserver.h:12
AtTabMain::DumpEvent
void DumpEvent(std::string file)
Definition: AtTabMain.cxx:187
AtTabMain
Main tab in viewer for 3D and pad selection.
Definition: AtTabMain.h:34
AtTabMain::fEntry
DataHandling::AtTreeEntry * fEntry
Definition: AtTabMain.h:61
AtTabMain::AtTabMain
AtTabMain()
Definition: AtTabMain.cxx:62
AtTabMain::TEveEventManagerPtr
std::unique_ptr< TEveEventManager > TEveEventManagerPtr
Definition: AtTabMain.h:37
DataHandling::AtBranch
Subject for the branch in the FairRoot tree.
Definition: AtViewerManagerSubject.h:38
AtTabMain::SetThreshold
void SetThreshold(Int_t val)
Definition: AtTabMain.h:73
AtTabMain::fEventBranch
DataHandling::AtBranch * fEventBranch
Definition: AtTabMain.h:58
AtTabMain::fPatternEventBranch
DataHandling::AtBranch * fPatternEventBranch
Definition: AtTabMain.h:60
AtTabMain::fMaxHitMulti
Int_t fMaxHitMulti
Definition: AtTabMain.h:48
DataHandling::AtSimpleType
Subject for any simple type.
Definition: AtDataSubject.h:51
AtTabMain::SetHitAttributes
void SetHitAttributes(TAttMarker attr)
Definition: AtTabMain.h:74
AtTabMain::fPatternHitSets
std::vector< TEvePointSetPtr > fPatternHitSets
Definition: AtTabMain.h:44
AtTabMain::fCvsPadPlane
TCanvas * fCvsPadPlane
Definition: AtTabMain.h:52
AtTabMain::SetPointsFromTrack
void SetPointsFromTrack(TEvePointSet &hitSet, const AtTrack &track)
Definition: AtTabMain.cxx:322
AtTabMain::fPadPlane
TH2Poly * fPadPlane
Definition: AtTabMain.h:53
AtTabMain::Exec
void Exec() override
Called after the run's Exec() to update tab.
Definition: AtTabMain.h:68
AtTabMain::MakeTab
void MakeTab(TEveWindowSlot *slot) override
Create the gui components of the tab in the passed window slot.
Definition: AtTabMain.cxx:375
AtTabMain::SetPointsFromHits
void SetPointsFromHits(TEvePointSet &hitSet, const std::vector< std::unique_ptr< AtHit >> &hits)
Definition: AtTabMain.cxx:290
AtViewerManagerSubject.h
AtTabMain::fPatterns
std::vector< TEveElement > fPatterns
Definition: AtTabMain.h:45
AtTabMain::fCvsPadWave
TCanvas * fCvsPadWave
Definition: AtTabMain.h:55
AtTabMain::SetMultiHit
void SetMultiHit(Int_t hitMax)
Definition: AtTabMain.h:75
AtTabMain::GetTrackColor
Color_t GetTrackColor(int i)
Definition: AtTabMain.cxx:129
AtTabMain::~AtTabMain
~AtTabMain()
Definition: AtTabMain.cxx:83
AtTrack
Definition: AtTrack.h:25
AtTabMain::InitTab
void InitTab() override
Definition: AtTabMain.cxx:92
DataHandling
Definition: AtDataObserver.h:4
AtTabBase.h
AtTabBase
Definition: AtTabBase.h:27
AtTabMain::fHitSet
TEvePointSetPtr fHitSet
Definition: AtTabMain.h:40
DataHandling::AtSubject
Definition: AtDataSubject.h:24
AtTabMain::TEvePointSetPtr
std::unique_ptr< TEvePointSet > TEvePointSetPtr
Definition: AtTabMain.h:36
AtTabMain::fEvePatternEvent
TEveEventManagerPtr fEvePatternEvent
Definition: AtTabMain.h:42
DataHandling::AtTreeEntry
Subject for the entry number in the FairRoot tree.
Definition: AtViewerManagerSubject.h:17
AtTabMain::fThreshold
Int_t fThreshold
Definition: AtTabMain.h:47
AtTabMain::fNoiseHitSet
TEvePointSetPtr fNoiseHitSet
Definition: AtTabMain.h:43
AtTabMain::SelectPad
static void SelectPad()
Definition: AtTabMain.cxx:440
AtTabMain::fPadWave
TH1I * fPadWave
Definition: AtTabMain.h:56
AtTabMain::fHitAttr
TAttMarker fHitAttr
Definition: AtTabMain.h:50
AtTabMain::Update
void Update(DataHandling::AtSubject *sub) override
Definition: AtTabMain.cxx:139
AtHit
Point in space with charge.
Definition: AtHit.h:27
AtTabMain::fEveEvent
TEveEventManagerPtr fEveEvent
Definition: AtTabMain.h:39
AtTabMain::fPadNum
DataHandling::AtPadNum * fPadNum
Definition: AtTabMain.h:57