ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtTabPad.h
Go to the documentation of this file.
1 #ifndef ATTABPAD_H
2 #define ATTABPAD_H
3 
4 #include "AtDataObserver.h"
5 #include "AtTabCanvas.h"
6 #include "AtViewerManagerSubject.h" // for AtPadNum
7 
8 #include <Rtypes.h> // for Int_t, Bool_t, THashConsistencyHolder, Color_t
9 #include <TString.h> // for TString
10 
11 #include <memory> // for unique_ptr
12 #include <string> // for string
13 #include <unordered_map>
14 #include <utility> // for pair
15 #include <vector> // for vector
16 
17 class TEveWindowSlot;
18 class TBuffer;
19 class TClass;
20 class TMemberInspector;
21 class TF1;
22 class AtPad;
23 class TH1D;
24 
25 namespace DataHandling {
26 class AtSubject;
27 }
28 
34 protected:
36  using TF1Vec = std::vector<std::unique_ptr<TF1>>;
37 
40  std::unordered_map<Int_t, std::pair<PadDrawType, TH1D *>> fDrawMap;
41  std::unordered_map<Int_t, std::string> fAugNames; //< Augment and Aux pad names
43 
44  std::unordered_map<Int_t, TF1Vec> fDrawHits; //< Draw representation of hits on trace in these TPads
45 
46 public:
47  AtTabPad(int nRow = 1, int nCol = 1, TString name = "AtPad");
48  ~AtTabPad();
49  void InitTab() override;
50  void Exec() override;
51  void Update(DataHandling::AtSubject *sub) override;
52 
53  void DrawADC(int row = 0, int col = 0); //< Draw adc in current pad
54  void DrawRawADC(int row = 0, int col = 0); //< Draw raw adc in current pad
55  void DrawArrayAug(TString augName, int row = 0, int col = 0); //< Draw an array augment current pad
56  void DrawAuxADC(TString auxName, int row = 0, int col = 0); //< Draw an aux pad
57  void DrawFPN(int row = 0, int col = 0); //< Draw adc in current pad
58 
63  void DrawHits(int row = 0, int col = 0);
64 
65 protected:
66  void MakeTab(TEveWindowSlot *) override;
67 
68 private:
69  void SetDraw(Int_t pos, PadDrawType type);
70  void DrawPad();
71  void DrawAdc(TH1D *hist, const AtPad &pad);
72  void DrawFPN(TH1D *hist, const AtPad &pad);
73  void DrawRawAdc(TH1D *hist, const AtPad &pad);
74  void DrawArrayAug(TH1D *hist, const AtPad &pad, TString augName);
75  void DrawHit(const AtPad &pad, TF1Vec &funcs);
76  // void DrawHit(TPad *canv, const AtHit &hit);
77 
78  void UpdateCvsPad();
79  std::string GetName(int pos, PadDrawType type);
80  // Functions for drawing hits
81 
82  ClassDefOverride(AtTabPad, 1)
83 };
84 
85 #endif
AtTabPad::~AtTabPad
~AtTabPad()
Definition: AtTabPad.cxx:43
AtTabCanvas.h
AtDataObserver.h
AtTabPad::PadDrawType::kArrAug
@ kArrAug
DataHandling::AtObserver
Definition: AtDataObserver.h:12
AtTabPad::PadDrawType::kADC
@ kADC
AtTabPad::PadDrawType::kFPN
@ kFPN
AtTabPad::InitTab
void InitTab() override
Definition: AtTabPad.cxx:48
AtTabPad::fAugNames
std::unordered_map< Int_t, std::string > fAugNames
Let root handle hist memory.
Definition: AtTabPad.h:41
DataHandling::AtSimpleType
Subject for any simple type.
Definition: AtDataSubject.h:51
AtTabPad::fDrawHits
std::unordered_map< Int_t, TF1Vec > fDrawHits
Definition: AtTabPad.h:44
AtTabPad::DrawRawADC
void DrawRawADC(int row=0, int col=0)
Definition: AtTabPad.cxx:241
AtTabPad::PadDrawType
PadDrawType
Definition: AtTabPad.h:35
AtTabPad::AtTabPad
AtTabPad(int nRow=1, int nCol=1, TString name="AtPad")
Definition: AtTabPad.cxx:35
AtTabPad
Definition: AtTabPad.h:33
AtTabPad::Exec
void Exec() override
Called after the run's Exec() to update tab.
Definition: AtTabPad.cxx:68
AtViewerManagerSubject.h
AtTabPad::fPadNum
DataHandling::AtPadNum * fPadNum
Definition: AtTabPad.h:42
AtTabPad::DrawFPN
void DrawFPN(int row=0, int col=0)
Definition: AtTabPad.cxx:236
AtTabPad::TF1Vec
std::vector< std::unique_ptr< TF1 > > TF1Vec
Definition: AtTabPad.h:36
AtTabPad::Update
void Update(DataHandling::AtSubject *sub) override
Definition: AtTabPad.cxx:92
DataHandling
Definition: AtDataObserver.h:4
AtTabPad::PadDrawType::kAuxPad
@ kAuxPad
AtTabPad::DrawHits
void DrawHits(int row=0, int col=0)
Definition: AtTabPad.cxx:227
AtTabPad::DrawADC
void DrawADC(int row=0, int col=0)
Definition: AtTabPad.cxx:231
AtTabCanvas
Abstract class for a tab composed of a single TCanvas.
Definition: AtTabCanvas.h:20
AtTabPad::MakeTab
void MakeTab(TEveWindowSlot *) override
Create the gui components of the tab in the passed window slot.
Definition: AtTabPad.cxx:63
AtTabPad::DrawArrayAug
void DrawArrayAug(TString augName, int row=0, int col=0)
Definition: AtTabPad.cxx:246
AtTabPad::PadDrawType::kRawADC
@ kRawADC
DataHandling::AtSubject
Definition: AtDataSubject.h:24
AtPad
Container class for AtPadBase objects.
Definition: AtPad.h:38
AtTabPad::DrawAuxADC
void DrawAuxADC(TString auxName, int row=0, int col=0)
Definition: AtTabPad.cxx:252
AtTabPad::fDrawMap
std::unordered_map< Int_t, std::pair< PadDrawType, TH1D * > > fDrawMap
Definition: AtTabPad.h:40