NAIA  1.1.1
UnbExtHit.h
Go to the documentation of this file.
1 
7 #ifndef NAIA_UNBEXTHIT_H
8 #define NAIA_UNBEXTHIT_H
9 
10 // gbatch headers
11 #ifdef ENABLE_PRODUCTION_CODE
12 #include "root.h"
13 #endif
14 
16 #include "Containers/Tof.h"
17 #include "Containers/TrdK.h"
18 #include "Containers/Utils.h"
19 
20 #include <array>
21 #include <map>
22 #include <vector>
23 
24 namespace NAIA {
25 
29 template <class T> using HitChargeVariable = std::map<TrTrack::ChargeRecoType, T>;
30 
36 class UnbExtHitBaseData : public TObject {
37 public:
42  enum class ExtHit : char { L1 = 0, L9 = 1 };
43 
44 #ifdef ENABLE_PRODUCTION_CODE
45  bool Fill(AMSEventR *evPtr, bool use_trd = false);
46 
47  void SetBeta(double beta) { _beta = beta; }
48  void SetMC(bool isMC) { _isMC = isMC; }
49 #endif
50 
55  void Clear();
56 
61  void Dump() const;
62 
68  [[nodiscard]] bool IsHitPresent(ExtHit hit) const { return m_hits.find(hit) != end(m_hits); }
69 
76  int ChargeStatus(ExtHit hit) { return m_hits[hit].ChargeStatus; }
77 
84  float HitPosX(ExtHit hit) { return m_hits[hit].HitPosX; }
85 
92  float HitPosY(ExtHit hit) { return m_hits[hit].HitPosY; }
93 
101  float Charge(ExtHit hit, TrTrack::ChargeRecoType chType) { return m_hits[hit].Charge[chType]; }
102 
103  const TofBaseData *tofBase = nullptr;
104  const TrdKBaseData *trdBase = nullptr;
105 
106  struct HitData {
107  int ChargeStatus = 0xFFFFFFFF;
108 
109  float HitPosX = std::numeric_limits<float>::max();
110  float HitPosY = std::numeric_limits<float>::max();
111 
113  };
114 
115 private:
116  bool _isMC = false;
117  float _beta = 1.0f;
118 
119  std::map<ExtHit, HitData> m_hits;
120 
121  ClassDef(UnbExtHitBaseData, 1)
122 };
123 
132 class UnbExtHitBase : public OnDemandContainer<UnbExtHitBase>, public UnbExtHitBaseData {
133 public:
134  static const std::string BranchName;
135 
137 };
138 
139 } // namespace NAIA
140 #endif
NAIA::UnbExtHitBaseData::trdBase
const TrdKBaseData * trdBase
needed to get basic info without computing twice
Definition: UnbExtHit.h:104
NAIA::end
NAIAChain::EventItr end(NAIAChain &chain)
Definition: NAIAChain.h:298
NAIA::UnbExtHitBaseData::tofBase
const TofBaseData * tofBase
Definition: UnbExtHit.h:103
NAIA::UnbExtHitBaseData::ExtHit::L1
@ L1
NAIA::UnbExtHitBaseData
Container class for base unbiased external hits info.
Definition: UnbExtHit.h:36
NAIA::UnbExtHitBaseData::Dump
void Dump() const
Dump on screen container content.
Definition: UnbExtHit.cpp:15
NAIA::HitChargeVariable
std::map< TrTrack::ChargeRecoType, T > HitChargeVariable
Definition: UnbExtHit.h:29
NAIA::UnbExtHitBaseData::_beta
float _beta
Definition: UnbExtHit.h:117
NAIA::UnbExtHitBase::BranchName
static const std::string BranchName
Definition: UnbExtHit.h:134
NAIA
Definition: Event.h:13
NAIA::OnDemandContainer
Mixin class to add "read-on-demand" behavior to an existing container class.
Definition: OnDemandContainer.h:44
Utils.h
NAIA::UnbExtHitBaseData::_isMC
bool _isMC
Definition: UnbExtHit.h:116
NAIA::UnbExtHitBaseData::ChargeStatus
int ChargeStatus(ExtHit hit)
Get the charge status for required hit.
Definition: UnbExtHit.h:76
NAIA::UnbExtHitBase
Accessor class for base unbiased external hits info.
Definition: UnbExtHit.h:132
NAIA::UnbExtHitBaseData::IsHitPresent
bool IsHitPresent(ExtHit hit) const
Checks if there is a hit on required layer.
Definition: UnbExtHit.h:68
NAIA::UnbExtHitBaseData::HitData::ChargeStatus
int ChargeStatus
Definition: UnbExtHit.h:107
NAIA::UnbExtHitBaseData::HitData::HitPosY
float HitPosY
Definition: UnbExtHit.h:110
NAIA::UnbExtHitBaseData::HitPosX
float HitPosX(ExtHit hit)
Hit position, X side.
Definition: UnbExtHit.h:84
NAIA::UnbExtHitBaseData::Charge
float Charge(ExtHit hit, TrTrack::ChargeRecoType chType)
Hit charge.
Definition: UnbExtHit.h:101
NAIA::UnbExtHitBaseData::ExtHit::L9
@ L9
NAIA::UnbExtHitBaseData::HitData
needed to get basic info without computing twice
Definition: UnbExtHit.h:106
NAIA::TofBaseData
Container class for base Tof info.
Definition: Tof.h:46
NAIA::UnbExtHitBaseData::Clear
void Clear()
Clear container content.
Definition: UnbExtHit.cpp:9
Tof.h
Tof container class description.
TrdK.h
TrdK container class description.
NAIA::UnbExtHitBaseData::HitData::Charge
HitChargeVariable< float > Charge
Definition: UnbExtHit.h:112
NAIA::UnbExtHitBaseData::HitPosY
float HitPosY(ExtHit hit)
Hit position, Y side.
Definition: UnbExtHit.h:92
NAIA::UnbExtHitBaseData::ExtHit
ExtHit
Handy enum to distinguish L1 and L9.
Definition: UnbExtHit.h:42
NAIA::TrdKBaseData
Container class for base Trd info.
Definition: TrdK.h:57
NAIA::TrTrack::ChargeRecoType
ChargeRecoType
Definition: Utils.h:90
NAIA::UnbExtHitBaseData::m_hits
std::map< ExtHit, HitData > m_hits
Definition: UnbExtHit.h:119
NAIA::UnbExtHitBase::UnbExtHitBase
UnbExtHitBase()
Definition: UnbExtHit.h:136
NAIA::UnbExtHitBaseData::HitData::HitPosX
float HitPosX
Definition: UnbExtHit.h:109
OnDemandContainer.h
OnDemandContainer container class description.