ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtTabEnergyLoss.h
Go to the documentation of this file.
1 #ifndef ATTABENERGYLOSS_H
2 #define ATTABENERGYLOSS_H
3 #include "AtDataObserver.h" // for AtObserver
4 #include "AtDataSubject.h" // for AtSimpleType, AtSubject (ptr only)
5 #include "AtFissionEvent.h"
6 #include "AtPadReference.h" // for AtPadReference
7 #include "AtRawEvent.h"
8 #include "AtTabCanvas.h"
9 #include "AtTabInfo.h" // for AtTabInfoFairRoot
10 
11 #include <Math/Point3D.h>
12 #include <Math/Point3Dfwd.h> // for XYZPoint
13 #include <Math/Vector3D.h>
14 #include <Math/Vector3Dfwd.h> // for XYZVector
15 #include <Rtypes.h> // for Color_t
16 #include <THStack.h>
17 
18 #include <array> // for array
19 #include <memory> // for unique_ptr
20 #include <vector> // for vector
21 
22 class AtHit;
23 class TF1;
24 class TH1F;
25 namespace DataHandling {
26 class AtTreeEntry;
27 }
28 namespace DataHandling {
29 class AtBranch;
30 }
36 protected:
39  using TH1Ptr = std::unique_ptr<TH1F>;
40  using HitVector = std::vector<AtHit *>;
41 
42  AtTabInfoFairRoot<AtRawEvent> fRawEvent; //< Points to selected RawEventBranch
43  AtTabInfoFairRoot<AtFissionEvent> fFissionEvent; //< Fision event to analyse
44 
45  DataHandling::AtTreeEntry &fEntry; //< Tracks current entry
46  DataHandling::AtSimpleType<float> fBinWidth; //< Width of binning in mm
47 
51  DataHandling::AtSimpleType<int> fTBtoAvg; //< Number of TB from track start to average for ratio.
52 
53  // Helpful things
54  const std::array<Color_t, 2> fHistColors = {9, 31};
55 
56  THStack dEdxStack{"hs", "Stacked dE/dx curves"};
57  std::array<TH1Ptr, 2> dEdx;
58 
59  THStack dEdxStackZ{"hsz", "Stacked dE/dx curves bin in Z"};
60  std::array<TH1Ptr, 2> dEdxZ;
61 
62  // Histograms to fill with charge sum
63  THStack dEdxStackSum{"hsSum", "dQ/dZ (summing charge)"};
64  std::array<TH1Ptr, 2> fSumQ;
65 
66  THStack dEdxStackFit{"hsFit", "dQ/dZ (summing gaussian fits)"};
67  std::array<TH1Ptr, 2> fSumFit;
68 
69  TH1Ptr fRatioQ; //<Ratio of max(fSumQ)/min(fSumQ)
70  TH1Ptr fRatioFit; //<Ratio of max(fSumFit)/min(fSumFit)
71  TH1Ptr fProxy; //<Proxy for Z in an event
72  TH1Ptr fZHist; //<Z in an event
73 
74  std::array<float, 2> fTrackStart{};
75  std::array<AtHit *, 2> fFirstHit{nullptr, nullptr}; //< First hit calculated according to the gaussian fits
76 
77  std::unique_ptr<TF1> fRatioFunc;
78  std::unique_ptr<TF1> fProxyFunc;
79  std::unique_ptr<TF1> fZFunc;
80 
81  std::vector<AtPadReference> fVetoPads;
82 
83 public:
86  void InitTab() override;
87  void Exec() override{};
88  void Update(DataHandling::AtSubject *sub) override;
89 
90  static float GetZ(int Zcn, float proxy);
91 
92 private:
93  void SetStyle(std::array<TH1Ptr, 2> &hists, THStack &stack);
94  void Update();
95  void setdEdX();
96  double getHitDistanceFromVertex(const AtHit &hit);
97  double getHitDistanceFromVertexAlongZ(const AtHit &hit);
98 
99  void FillSums(float threshold = 15);
100 
101  void FillRatio();
102 };
103 
104 #endif //#ifndef ATTABENERGYLOSS_H
AtTabCanvas.h
AtDataObserver.h
AtRawEvent.h
DataHandling::AtObserver
Definition: AtDataObserver.h:12
AtTabEnergyLoss::fFirstHit
std::array< AtHit *, 2 > fFirstHit
Definition: AtTabEnergyLoss.h:75
AtTabEnergyLoss::fZFunc
std::unique_ptr< TF1 > fZFunc
Definition: AtTabEnergyLoss.h:79
AtTabEnergyLoss::fSumFit
std::array< TH1Ptr, 2 > fSumFit
Definition: AtTabEnergyLoss.h:67
DataHandling::AtBranch
Subject for the branch in the FairRoot tree.
Definition: AtViewerManagerSubject.h:38
AtFissionEvent.h
AtPadReference.h
AtTabEnergyLoss::fVetoPads
std::vector< AtPadReference > fVetoPads
Definition: AtTabEnergyLoss.h:81
AtTabEnergyLoss::~AtTabEnergyLoss
~AtTabEnergyLoss()
Definition: AtTabEnergyLoss.cxx:98
AtTabEnergyLoss::dEdxStackFit
THStack dEdxStackFit
Definition: AtTabEnergyLoss.h:66
XYZVector
ROOT::Math::XYZVector XYZVector
Definition: AtFindVertex.h:20
AtTabEnergyLoss::dEdxStack
THStack dEdxStack
Definition: AtTabEnergyLoss.h:56
DataHandling::AtSimpleType< float >
AtTabEnergyLoss::fTrackStart
std::array< float, 2 > fTrackStart
Definition: AtTabEnergyLoss.h:74
AtTabEnergyLoss::fSumQ
std::array< TH1Ptr, 2 > fSumQ
Definition: AtTabEnergyLoss.h:64
AtTabEnergyLoss::fFissionEvent
AtTabInfoFairRoot< AtFissionEvent > fFissionEvent
Definition: AtTabEnergyLoss.h:43
AtTabEnergyLoss::XYZPoint
ROOT::Math::XYZPoint XYZPoint
Definition: AtTabEnergyLoss.h:38
AtTabEnergyLoss::fProxy
TH1Ptr fProxy
Definition: AtTabEnergyLoss.h:71
AtTabEnergyLoss
Class to calculate dE/dx for fission fragments (but possibly generally).
Definition: AtTabEnergyLoss.h:35
XYZPoint
ROOT::Math::XYZPoint XYZPoint
Definition: AtPatternCircle2D.h:18
AtTabEnergyLoss::InitTab
void InitTab() override
Definition: AtTabEnergyLoss.cxx:103
AtTabEnergyLoss::fRatioFunc
std::unique_ptr< TF1 > fRatioFunc
Definition: AtTabEnergyLoss.h:77
AtTabEnergyLoss::fHistColors
const std::array< Color_t, 2 > fHistColors
Definition: AtTabEnergyLoss.h:54
AtTabEnergyLoss::GetZ
static float GetZ(int Zcn, float proxy)
Definition: AtTabEnergyLoss.cxx:157
AtTabEnergyLoss::dEdxStackSum
THStack dEdxStackSum
Definition: AtTabEnergyLoss.h:63
AtTabEnergyLoss::fZHist
TH1Ptr fZHist
Definition: AtTabEnergyLoss.h:72
AtDataSubject.h
DataHandling
Definition: AtDataObserver.h:4
AtTabEnergyLoss::fSigmaFromHit
DataHandling::AtSimpleType< float > fSigmaFromHit
Definition: AtTabEnergyLoss.h:50
AtTabEnergyLoss::dEdxStackZ
THStack dEdxStackZ
Definition: AtTabEnergyLoss.h:59
AtTabEnergyLoss::fProxyFunc
std::unique_ptr< TF1 > fProxyFunc
Definition: AtTabEnergyLoss.h:78
AtTabEnergyLoss::fBinWidth
DataHandling::AtSimpleType< float > fBinWidth
Definition: AtTabEnergyLoss.h:46
AtTabEnergyLoss::fTBtoAvg
DataHandling::AtSimpleType< int > fTBtoAvg
Definition: AtTabEnergyLoss.h:51
AtTabEnergyLoss::fRatioFit
TH1Ptr fRatioFit
Definition: AtTabEnergyLoss.h:70
AtTabEnergyLoss::XYZVector
ROOT::Math::XYZVector XYZVector
Definition: AtTabEnergyLoss.h:37
AtTabEnergyLoss::TH1Ptr
std::unique_ptr< TH1F > TH1Ptr
Definition: AtTabEnergyLoss.h:39
AtTabCanvas
Abstract class for a tab composed of a single TCanvas.
Definition: AtTabCanvas.h:20
AtTabInfoFairRoot< AtRawEvent >
AtTabEnergyLoss::Exec
void Exec() override
Called after the run's Exec() to update tab.
Definition: AtTabEnergyLoss.h:87
DataHandling::AtSubject
Definition: AtDataSubject.h:24
AtTabEnergyLoss::dEdx
std::array< TH1Ptr, 2 > dEdx
Definition: AtTabEnergyLoss.h:57
AtTabEnergyLoss::fRatioQ
TH1Ptr fRatioQ
Definition: AtTabEnergyLoss.h:69
DataHandling::AtTreeEntry
Subject for the entry number in the FairRoot tree.
Definition: AtViewerManagerSubject.h:17
AtTabEnergyLoss::AtTabEnergyLoss
AtTabEnergyLoss(DataHandling::AtBranch &fissionBranch)
Definition: AtTabEnergyLoss.cxx:41
AtTabEnergyLoss::fEntry
DataHandling::AtTreeEntry & fEntry
Definition: AtTabEnergyLoss.h:45
AtTabEnergyLoss::HitVector
std::vector< AtHit * > HitVector
Definition: AtTabEnergyLoss.h:40
AtTabEnergyLoss::dEdxZ
std::array< TH1Ptr, 2 > dEdxZ
Definition: AtTabEnergyLoss.h:60
AtTabInfo.h
AtTabEnergyLoss::fRawEvent
AtTabInfoFairRoot< AtRawEvent > fRawEvent
Definition: AtTabEnergyLoss.h:42
AtHit
Point in space with charge.
Definition: AtHit.h:27