CbmRoot
Loading...
Searching...
No Matches
CaTripletConstructorSW.h
Go to the documentation of this file.
1/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergey Gorbunov [committer] */
4
8
9#pragma once // include this header only once per compilation unit
10
11#include "CaFramework.h"
12#include "CaGridEntry.h"
13#include "CaTriplet.h"
14#include "CaVector.h"
15#include "CaWindowData.h"
16#include "KfFieldRegion.h"
17#include "KfSetup.h"
18#include "KfSimd.h"
19#include "KfTrackKalmanFilter.h"
20#include "KfTrackParam.h"
21
22namespace cbm::algo::ca
23{
24
27 class alignas(kf::VcMemAlign) TripletConstructorSW {
28
29 public:
31
34 TripletConstructorSW(const ca::Framework& framework, const ca::Parameters<fvec>& pars, WindowData& wData,
35 const fscal mass, const ca::TrackingMode& mode);
36
39
42
45
48
51
53 void CreateTripletsForHit(Vector<ca::Triplet>& tripletsOut, int istal, int istam, int istar, ca::HitIndex_t ihl);
54
55 private:
57 typedef std::tuple<Vector<ca::HitIndex_t>, Vector<ca::HitIndex_t>, Vector<fscal>> Triplet_t;
58
59 bool InitStations(int istal, int istam, int istar);
60
63
66 void FindTripletHits();
67
69 void FitTriplets(Vector<ca::Triplet>& tripletsOut);
70
71 void CollectHits(Vector<ca::HitIndex_t>& collectedHits, const SearchWindowMap::SearchWindow& area2D, fscal time,
72 fscal timeRange, const int iSta, const fscal areaExtension, const int maxNhits, const McMatch& mc);
73
74 int FindClosestHitWithMc(const SearchWindowMap::SearchWindow& area2D, const int iSta, const McMatch& mc);
75
76
77 private:
86
87 bool fIsTargetField{false};
88
89 // Number of stations situated in field region (MVD + STS in CBM)
91
92 int fIstaL{-1};
93 int fIstaM{-1};
94 int fIstaR{-1};
95
96 const kf::ActiveLayer<fvec>* fStaL{nullptr};
97 const kf::ActiveLayer<fvec>* fStaM{nullptr};
98 const kf::ActiveLayer<fvec>* fStaR{nullptr};
99
102
103 // Persistent storage for triplet tracks and hits
105
106 // Persistent storage for doublet tracks and hits
108
109 private:
110 static constexpr bool fDebugDublets = false; // print debug info for dublets
111 static constexpr bool fDebugTriplets = false; // print debug info for triplets
112 static constexpr bool fDebugCollectHits = false; // print debug info for CollectHits
113 };
114
115} // namespace cbm::algo::ca
Container for all data, which are processed within a single sub-timeslice (implementation)
Magnetic flux density interpolation along the track vs. z-coordinate (header)
Setup representation for the Kalman-filter framework (header)
Implementation selection for the SIMD utilities (VS or pseudo)
Track fit utilities for the CA tracking based on the Kalman filter.
A container for all external parameters of the CA tracking algorithm.
void CreateTripletsForHit(Vector< ca::Triplet > &tripletsOut, int istal, int istam, int istar, ca::HitIndex_t ihl)
---— FUNCTIONAL PART ---—
fscal fDefaultMass
mass of the propagated particle [GeV/c2]
TripletConstructorSW & operator=(const TripletConstructorSW &)=delete
Copy assignment operator.
TripletConstructorSW(TripletConstructorSW &&)=delete
Move constructor.
const SearchWindowMapContainer & fSwMaps
Search windows.
TripletConstructorSW(const ca::Framework &framework, const ca::Parameters< fvec > &pars, WindowData &wData, const fscal mass, const ca::TrackingMode &mode)
---— Constructors and destructor ---—
void FitTriplets(Vector< ca::Triplet > &tripletsOut)
Fit triplets on station.
int FindClosestHitWithMc(const SearchWindowMap::SearchWindow &area2D, const int iSta, const McMatch &mc)
bool InitStations(int istal, int istam, int istar)
const kf::ActiveLayer< fvec > * fStaM
mid station
bool fIsTargetField
is the magnetic field present at the target
const Parameters< fvec > & fParameters
Object of Framework parameters class.
void CollectHits(Vector< ca::HitIndex_t > &collectedHits, const SearchWindowMap::SearchWindow &area2D, fscal time, fscal timeRange, const int iSta, const fscal areaExtension, const int maxNhits, const McMatch &mc)
TripletConstructorSW(const TripletConstructorSW &)=delete
Copy constructor.
const cbm::algo::kf::Setup< fvec > & fSetup
Reference to the setup.
const kf::ActiveLayer< fvec > * fStaR
right station
~TripletConstructorSW()=default
Destructor.
const cbm::algo::kf::Field< fvec > & fField
Reference to field.
std::tuple< Vector< ca::HitIndex_t >, Vector< ca::HitIndex_t >, Vector< fscal > > Triplet_t
TripletConstructorSW & operator=(TripletConstructorSW &&)=delete
Move assignment operator.
void SuppressDoubletClones()
Find the doublets. Reformat data in the portion of doublets.
const kf::ActiveLayer< fvec > * fStaL
left station
const ca::Framework & fFramework
Reference to the Framework object.
ca::HitIndex_t fIhitL
index of the left hit in fAlgo->fWindowHits
Container for internal data, processed on a single time window.
Properties of an active surface of the layer.
Magnetic field region, corresponding to a hit triplet.
Magnetic field manager class.
Definition KfField.h:272
KF-framework representation of the detector setup.
Definition KfSetup.h:37
constexpr fscal MuonMass
Particle masses etc used for the track fit, fscal precision.
Definition CaDefs.h:90
TODO: SZh 8.11.2022: add selection of parameterisation.
Definition CaBranch.h:14
kf::fscal fscal
Definition CaSimd.h:14
unsigned int HitIndex_t
Index of ca::Hit.
Definition CaHit.h:27