CbmRoot
Loading...
Searching...
No Matches
CaQa.h
Go to the documentation of this file.
1/* Copyright (C) 2023-2025 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergei Zharko [committer] */
4
9
10#pragma once
11
12#include "CaEnumArray.h"
13#include "CaHit.h" // for HitIndex_t
14#include "CaTimesliceHeader.h"
15#include "CaVector.h"
16#include "qa/QaTaskHeader.h"
17
18namespace cbm::algo
19{
20 namespace qa
21 {
22 class H1D;
23 class H2D;
24 class Manager;
25 } // namespace qa
26 namespace ca
27 {
28 template<typename DataT>
29 class Parameters;
30 class InputData;
31 class Track;
32 } // namespace ca
33} // namespace cbm::algo
34
35namespace cbm::algo::ca
36{
40 class Qa : public qa::TaskHeader {
42 enum class EHitSet
43 {
44 Input,
45 Used,
46 END
47 };
48
50 template<typename T>
52
55
56 public:
60 Qa(const std::unique_ptr<qa::Manager>& pManager, std::string_view name) : qa::TaskHeader(pManager, name) {}
61
64 Qa() = default;
65
67 Qa(const Qa&) = delete;
68
70 Qa(Qa&&) = delete;
71
73 ~Qa() = default;
74
76 Qa& operator=(const Qa&) = delete;
77
79 Qa& operator=(Qa&&) = delete;
80
82 void Exec();
83
85 void Init();
86
90 bool CheckInit() const;
91
94 void RegisterInputData(const InputData* pInputData) { fpInputData = pInputData; }
95
98 void RegisterTracks(const Vector<Track>* pvTracks) { fpvTracks = pvTracks; }
99
102 void RegisterRecoHitIndices(const Vector<HitIndex_t>* pvRecoHits) { fpvRecoHits = pvRecoHits; }
103
106 void RegisterParameters(const Parameters<fvec>* pParameters) { fpParameters = pParameters; }
107
108 private:
112 void FillHitDistributionsForHitSet(EHitSet hitSet, const ca::Hit& hit);
113
114 // parameters
115 static constexpr double kXYZMargin = 0.05;
116 static constexpr int knHitSets = 2;
117 static constexpr int knTrkParPoints = 2;
118 static constexpr int knStaMax = 16;
119 static constexpr bool kDebug = false;
120 static constexpr int kOriginB = 100;
121 static constexpr double kOriginL = -10.;
122 static constexpr double kOriginU = +10.;
123
124 double fMinHitTime = std::numeric_limits<double>::max();
125 double fMaxHitTime = std::numeric_limits<double>::lowest();
126
128 const InputData* fpInputData = nullptr;
129 const Vector<Track>* fpvTracks = nullptr;
131
132 // Hit distributions
133 using OccupHistContainer_t = std::vector<HitSetArray_t<qa::H2D*>>;
137
138 std::vector<qa::Prof2D*> fvphHitUsageXY;
139
142
143 std::vector<HitSetArray_t<qa::H1D*>> fvphHitTime;
144
145 // Track distributions
146 std::array<qa::H1D*, knTrkParPoints> fvphTrkTheta = {{0}};
147 std::array<qa::H1D*, knTrkParPoints> fvphTrkPhi = {{0}};
148 std::array<qa::H1D*, knTrkParPoints> fvphTrkChi2Ndf = {{0}};
149 std::array<qa::H2D*, knTrkParPoints> fvphTrkPhiTheta = {{0}};
150
154 };
155} // namespace cbm::algo::ca
Implementation of cbm::algo::ca::EnumArray class.
A generic hit for the CA tracker (header)
A structure to keep all the common information on the timeslice coming from tracking.
CbmStsAlgoFindClusters::InputData InputData
A header for a particular QA task, must be inherited by a given QA task.
Class of arrays, which can be accessed by an enum class entry as an index.
ca::Hit class describes a generic hit for the CA tracker
Definition CaHit.h:32
A container for all external parameters of the CA tracking algorithm.
std::vector< HitSetArray_t< qa::H2D * > > OccupHistContainer_t
Definition CaQa.h:133
void Exec()
QA execution function.
Definition CaQa.cxx:314
void RegisterParameters(const Parameters< fvec > *pParameters)
Registers tracking parameters object.
Definition CaQa.h:106
bool CheckInit() const
Check initialization.
Definition CaQa.cxx:30
std::vector< HitSetArray_t< qa::H1D * > > fvphHitTime
Time distribution of hits.
Definition CaQa.h:143
OccupHistContainer_t fvphHitOccupXY
hist: Hit occupancy in different stations in XY plane
Definition CaQa.h:134
static constexpr double kOriginL
Track X(Y) at origin: lower bound [cm].
Definition CaQa.h:121
const Vector< Track > * fpvTracks
Pointer to tracks vector.
Definition CaQa.h:129
static constexpr int knStaMax
Max number of stations (histogram binning)
Definition CaQa.h:118
std::array< qa::H1D *, knTrkParPoints > fvphTrkPhi
hist: phi at first/last hit
Definition CaQa.h:147
void Init()
Initializes the QA.
Definition CaQa.cxx:54
void FillHitDistributionsForHitSet(EHitSet hitSet, const ca::Hit &hit)
Fills hit distributions.
Definition CaQa.cxx:392
static constexpr HitSetArray_t< EHitSet > kHitSets
Array of EHitSet entries for iteration.
Definition CaQa.h:54
HitSetArray_t< qa::H1D * > fvphHitBackKeyIndex
Indices of back hit keys.
Definition CaQa.h:141
std::vector< qa::Prof2D * > fvphHitUsageXY
prof: Hit usage in different stations in XY plane
Definition CaQa.h:138
static constexpr double kXYZMargin
Margin for occupancy distributions in XY plane.
Definition CaQa.h:115
double fMinHitTime
Definition CaQa.h:124
HitSetArray_t< qa::H1D * > fvphHitFrontKeyIndex
Indices of front hit keys.
Definition CaQa.h:140
Qa(const Qa &)=delete
Copy constructor.
static constexpr int knTrkParPoints
Number of track points to build par distributions.
Definition CaQa.h:117
Qa & operator=(Qa &&)=delete
Move assignment operator.
Qa(const std::unique_ptr< qa::Manager > &pManager, std::string_view name)
Constructor.
Definition CaQa.h:60
const Vector< HitIndex_t > * fpvRecoHits
Pointer to reco hit indices.
Definition CaQa.h:130
qa::H2D * fphTrkOriginXY
hist: origin of tracks in x-y plane [cm]
Definition CaQa.h:151
qa::H1D * fphTrkNofHits
hist: number of hits in track
Definition CaQa.h:153
static constexpr int knHitSets
Number of hit sets: input/used.
Definition CaQa.h:116
OccupHistContainer_t fvphHitOccupZX
hist: Hit occupancy in different stations in ZX plane
Definition CaQa.h:135
qa::H2D * fphTrkFstLstSta
hist: fst vs lst station index
Definition CaQa.h:152
Qa()=default
Constructor from the configuration object.
Qa(Qa &&)=delete
Move constructor.
double fMaxHitTime
Definition CaQa.h:125
const InputData * fpInputData
Pointer to input data.
Definition CaQa.h:128
static constexpr double kOriginU
Track X(Y) at origin: upper bound [cm].
Definition CaQa.h:122
~Qa()=default
Destructor.
static constexpr bool kDebug
Additional histograms.
Definition CaQa.h:119
Qa & operator=(const Qa &)=delete
Copy assignment operator.
void RegisterRecoHitIndices(const Vector< HitIndex_t > *pvRecoHits)
Registers reco hits indices vector.
Definition CaQa.h:102
OccupHistContainer_t fvphHitOccupZY
hist: Hit occupancy in different stations in ZY plane
Definition CaQa.h:136
std::array< qa::H1D *, knTrkParPoints > fvphTrkChi2Ndf
hist: chi2/NDF at first/last hit
Definition CaQa.h:148
std::array< qa::H2D *, knTrkParPoints > fvphTrkPhiTheta
hist: theta vs. phi at first/last hit
Definition CaQa.h:149
std::array< qa::H1D *, knTrkParPoints > fvphTrkTheta
hist: theta at first/last hit
Definition CaQa.h:146
void RegisterInputData(const InputData *pInputData)
Registers tracking input data object.
Definition CaQa.h:94
static constexpr int kOriginB
Track X(Y) at origin: n bins.
Definition CaQa.h:120
const Parameters< fvec > * fpParameters
Pointer to tracking parameters.
Definition CaQa.h:127
EHitSet
Hit set entries.
Definition CaQa.h:43
@ Used
Hits used in tracks.
void RegisterTracks(const Vector< Track > *pvTracks)
Registers track vector.
Definition CaQa.h:98
1D-histogram
2D-histogram
A central class to manage the histogram storage and sending to the histogram server.
Definition QaManager.h:20
An interface to the qa::Manager.
TaskHeader(const std::unique_ptr< Manager > &pManager, std::string_view name)
Constructor.
TODO: SZh 8.11.2022: add selection of parameterisation.
Definition CaBranch.h:14