CbmRoot
Loading...
Searching...
No Matches
CaCloneMerger.h
Go to the documentation of this file.
1/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergei Zharko [committer], Maksym Zyzak */
4
9
10#pragma once // include this header only once per compilation unit
11
12#include "CaHit.h" // For ca::HitIndex_t
13#include "CaInputData.h"
14#include "CaParameters.h"
15#include "CaSimd.h" // TEMPORARY FOR fvec, fscal
16#include "CaTrack.h"
17#include "CaVector.h"
18#include "CaWindowData.h"
19
20namespace cbm::algo::ca
21{
22 class Track;
23 class Framework;
24
28 public:
30 CloneMerger(const ca::Parameters<fvec>& pars, const fscal mass);
31
34
36 CloneMerger(const CloneMerger&) = default;
37
40
43
46
48
52 //void Exec(Vector<Track>& extTracks, Vector<ca::HitIndex_t>&, const ca::InputData& input);
53 void Exec(const ca::InputData& input, WindowData& wData);
54
55 private:
56 // ***************
57 // ** Functions **
58 // ***************
59
61 static void InvertCholesky(fvec a[15]);
62
77 static void MultiplySS(fvec const C[15], fvec const V[15], fvec K[5][5]);
78
80 static void MultiplyMS(fvec const C[5][5], fvec const V[15], fvec K[15]);
81
83 static void MultiplySR(fvec const C[15], fvec const r_in[5], fvec r_out[5]);
84
86 static void FilterTracks(fvec const r[5], fvec const C[15], fvec const m[5], fvec const V[15], fvec R[5],
87 fvec W[15], fvec* chi2);
88
89
90 // ***************
91 // ** Variables **
92 // ***************
93
95 Vector<unsigned short> fTrackFirstStation{"CloneMerger::fTrackFirstStation"};
96
98 Vector<unsigned short> fTrackLastStation{"CloneMerger::fTrackLastStation"};
99
101 Vector<ca::HitIndex_t> fTrackFirstHit{"CloneMerger::fTrackFirstHit"};
102
104 Vector<ca::HitIndex_t> fTrackLastHit{"CloneMerger::fTrackLastHit"};
105
107 Vector<unsigned short> fTrackNeighbour{"CloneMerger::fTrackNeighbour"};
108
110 Vector<fscal> fTrackChi2{"CloneMerger::fTrackChi2"};
111
113 Vector<char> fTrackIsStored{"CloneMerger::fTrackIsStored"};
114
116 Vector<char> fTrackIsDownstreamNeighbour{"CloneMerger::fTrackIsDownstreamNeighbour"};
117
118 Vector<Track> fTracksNew{"CaCloneMerger::fTracksNew"};
119
120 Vector<ca::HitIndex_t> fRecoHitsNew{"CaCloneMerger::fRecoHitsNew"};
121
124 };
125
126} // namespace cbm::algo::ca
A generic hit for the CA tracker (header)
Structure for input data to the L1 tracking algorithm (declaration)
source file for the ca::Track class
Container for all data, which are processed within a single sub-timeslice (implementation)
Vector< unsigned short > fTrackLastStation
Last station of a track.
static void MultiplySS(fvec const C[15], fvec const V[15], fvec K[5][5])
Vector< char > fTrackIsDownstreamNeighbour
Flag: is the track a downstream neighbour of another track.
fscal fDefaultMass
mass of the propagated particle [GeV/c2]
CloneMerger(const ca::Parameters< fvec > &pars, const fscal mass)
Default constructor.
Vector< Track > fTracksNew
vector of tracks after the merge
const Parameters< fvec > & fParameters
Object of Framework parameters class.
Vector< unsigned short > fTrackNeighbour
Index (TODO:??) of a track that can be merge with the given track.
Vector< ca::HitIndex_t > fRecoHitsNew
vector of track hits after the merge
static void MultiplyMS(fvec const C[5][5], fvec const V[15], fvec K[15])
void Exec(const ca::InputData &input, WindowData &wData)
Registers.
static void MultiplySR(fvec const C[15], fvec const r_in[5], fvec r_out[5])
Vector< char > fTrackIsStored
Flag: is the given track already stored to the output.
CloneMerger(CloneMerger &&)=default
Move constructor.
Vector< unsigned short > fTrackFirstStation
First station of a track.
Vector< fscal > fTrackChi2
Chi2 value of the track merging procedure.
CloneMerger & operator=(CloneMerger &&)=delete
Move assignment operator.
CloneMerger(const CloneMerger &)=default
Copy constructor.
Vector< ca::HitIndex_t > fTrackFirstHit
Index of the first hit of a track.
static void FilterTracks(fvec const r[5], fvec const C[15], fvec const m[5], fvec const V[15], fvec R[5], fvec W[15], fvec *chi2)
Vector< ca::HitIndex_t > fTrackLastHit
Index of the last hit of a track.
static void InvertCholesky(fvec a[15])
CloneMerger & operator=(const CloneMerger &)=delete
Copy assignment operator.
A container for all external parameters of the CA tracking algorithm.
Container for internal data, processed on a single time window.
constexpr fscal MuonMass
Particle masses etc used for the track fit, fscal precision.
Definition CaDefs.h:83
TODO: SZh 8.11.2022: add selection of parameterisation.
Definition CaBranch.h:14
kf::fscal fscal
Definition CaSimd.h:14