ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
EFTracking
FPGATrackSim
FPGATrackSimBanks
FPGATrackSimBanks
FPGATrackSimFitConstantBank.h
Go to the documentation of this file.
1
// Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3
#ifndef FPGATrackSimFITCONSTANTBANK_H
4
#define FPGATrackSimFITCONSTANTBANK_H
5
6
#include <Eigen/StdVector>
7
// cppcheck-suppress unknownMacro
8
EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(Eigen::MatrixXf)
9
#include <Eigen/Core>
10
#include <Eigen/LU>
11
12
#include <bitset>
13
#include <iomanip>
14
#include <fstream>
15
16
#include "
AthenaBaseComps/AthMessaging.h
"
17
#include "
FPGATrackSimObjects/FPGATrackSimVectors.h
"
18
#include "
FPGATrackSimMaps/FPGATrackSimPlaneMap.h
"
19
20
class
FPGATrackSimTrack
;
21
22
23
class
FPGATrackSimFitConstantBank
:
public
AthMessaging
24
{
25
public
:
26
27
// missing plane -1 means we guess hits, we don't have separate banks for a missing plane
28
FPGATrackSimFitConstantBank
(
FPGATrackSimPlaneMap
const
* pmap,
int
ncoords, std::string
const
& fname,
bool
isFirstStage,
float
phishift,
int
missingPlane = -1);
29
31
// Simple Getters
32
33
int
getBankID
()
const
{
return
m_bankID
; }
34
int
getNConstr
()
const
{
return
m_nconstr
; }
35
int
getNCoords
()
const
{
return
m_ncoords
; }
36
int
getNPars
()
const
{
return
m_npars
; }
37
int
getNSectors
()
const
{
return
m_nsectors
; }
38
int
getMissingPlane
()
const
{
return
m_missingPlane
; }
39
40
41
bool
getIsGood
(
sector_t
sector)
const
{
return
m_sector_good
[sector]; }
42
float
getFitConst
(
int
isec,
int
ipar)
const
{
return
m_fit_const
(isec, ipar); }
43
float
getFitPar
(
int
isec,
int
ipar,
int
icoord)
const
{
return
m_fit_pars
(isec, ipar, icoord); }
44
float
getKaverage
(
int
isec,
int
iconstr )
const
{
return
m_kaverage
(isec, iconstr); }
45
float
getKernel
(
int
isec,
int
iconstr,
int
icoord)
const
{
return
m_kernel
(isec, iconstr, icoord); }
46
48
// Main Interface
49
50
bool
linfit
(
sector_t
sector,
FPGATrackSimTrack
& track,
bool
isSecondStage)
const
;
51
void
linfit_chisq
(
sector_t
sector,
FPGATrackSimTrack
&trk)
const
;
52
void
linfit_pars_eval
(
sector_t
sector,
FPGATrackSimTrack
&trk)
const
;
53
int
missing_point_guess
(
sector_t
sector,
FPGATrackSimTrack
&track,
bool
isFirstStage,
bool
doExtrapolation)
const
;
54
55
void
invlinfit
(
sector_t
sector,
FPGATrackSimTrack
&track,
double
const
*constr)
const
;
56
void
setIdealCoordFit
(
bool
v) {
m_isIdealCoordFit
= v;}
57
void
setPhiShift
(
float
v) {
m_phiShift
= v;}
58
59
private
:
60
61
FPGATrackSimPlaneMap
const
*
m_pmap
=
nullptr
;
62
64
// Configuration
65
66
int
m_bankID
;
// ID of the related pattern bank
67
int
m_nsectors
;
// number of sectors in this bank
68
int
m_npars
= 0;
// numbers of parameters
69
int
m_ncoords
;
// number of coordinates used in the linear fit
70
int
m_nconstr
;
// number of constraints: m_ncoords-m_npars
71
int
m_npixcy
;
// number of 2d coordinates
72
float
m_phiShift
;
// amount to shift phi of hits
73
int
m_missingPlane
;
// plane that is missing
74
// bool m_isFirstStage; // is this a first stage fit?
75
bool
m_isIdealCoordFit
;
// fitting for ideal coordinates? by default always true for now
76
78
// Data
79
80
std::vector<int>
m_missid
;
// ids of the missing coordinates, [ncoords]
81
82
// these are what we read in
83
// they are also used in the inverse function since that is not for the hardware but for bank generation
84
std::vector<bool>
m_sector_good
;
//[m_nsectors] false if all constants are 0
85
vector3D<float>
m_fit_pars
;
//[m_nsectors][m_npars][m_ncoords] fit parameters
86
vector2D<float>
m_fit_const
;
//[m_nsectors][m_npars] parameter offset in this sector
87
vector3D<float>
m_kernel
;
//[m_nsectors][m_nconstr][m_ncoords] covariance matrix
88
vector2D<float>
m_kaverage
;
//[m_nsectors][m_nconstr]
89
90
vector2D<float>
m_maj_a
;
// offset for missing coordinate
91
vector3D<float>
m_maj_kk
;
// for majority fits
92
vector3D<float>
m_maj_invkk
;
// for majority inverse
93
94
std::vector<Eigen::MatrixXf, Eigen::aligned_allocator<Eigen::MatrixXf>>
m_invfit_consts
;
95
96
vector2D<int>
m_WCs
;
//[m_nsectors][m_ncoords] which coordinates are WCs
97
98
100
// Helper Functions
101
102
void
readHeader
(std::ifstream & geocfile);
103
void
readSectorInfo
(std::ifstream & geocfile);
104
void
calculateMajority
();
105
void
prepareInvFitConstants
();
106
107
};
108
109
110
#endif
// FPGATrackSimFITCONSTANTBANK_H
AthMessaging.h
FPGATrackSimPlaneMap.h
Maps physical layers to logical layers.
sector_t
int32_t sector_t
Definition
FPGATrackSimTypes.h:21
FPGATrackSimVectors.h
Defines several vector wrappers for homogenous multi-dimensional vectors, declared as 1D arrays for l...
AthMessaging::AthMessaging
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
Definition
AthMessaging.cxx:13
FPGATrackSimFitConstantBank::m_maj_a
vector2D< float > m_maj_a
Definition
FPGATrackSimFitConstantBank.h:90
FPGATrackSimFitConstantBank::setIdealCoordFit
void setIdealCoordFit(bool v)
Definition
FPGATrackSimFitConstantBank.h:56
FPGATrackSimFitConstantBank::m_sector_good
std::vector< bool > m_sector_good
Definition
FPGATrackSimFitConstantBank.h:84
FPGATrackSimFitConstantBank::m_bankID
int m_bankID
Definition
FPGATrackSimFitConstantBank.h:66
FPGATrackSimFitConstantBank::linfit_pars_eval
void linfit_pars_eval(sector_t sector, FPGATrackSimTrack &trk) const
Definition
FPGATrackSimFitConstantBank.cxx:515
FPGATrackSimFitConstantBank::calculateMajority
void calculateMajority()
Definition
FPGATrackSimFitConstantBank.cxx:174
FPGATrackSimFitConstantBank::m_fit_pars
vector3D< float > m_fit_pars
Definition
FPGATrackSimFitConstantBank.h:85
FPGATrackSimFitConstantBank::getIsGood
bool getIsGood(sector_t sector) const
Definition
FPGATrackSimFitConstantBank.h:41
FPGATrackSimFitConstantBank::m_invfit_consts
std::vector< Eigen::MatrixXf, Eigen::aligned_allocator< Eigen::MatrixXf > > m_invfit_consts
Definition
FPGATrackSimFitConstantBank.h:94
FPGATrackSimFitConstantBank::FPGATrackSimFitConstantBank
FPGATrackSimFitConstantBank(FPGATrackSimPlaneMap const *pmap, int ncoords, std::string const &fname, bool isFirstStage, float phishift, int missingPlane=-1)
Definition
FPGATrackSimFitConstantBank.cxx:22
FPGATrackSimFitConstantBank::m_maj_kk
vector3D< float > m_maj_kk
Definition
FPGATrackSimFitConstantBank.h:91
FPGATrackSimFitConstantBank::readHeader
void readHeader(std::ifstream &geocfile)
Definition
FPGATrackSimFitConstantBank.cxx:63
FPGATrackSimFitConstantBank::m_missid
std::vector< int > m_missid
Definition
FPGATrackSimFitConstantBank.h:80
FPGATrackSimFitConstantBank::m_ncoords
int m_ncoords
Definition
FPGATrackSimFitConstantBank.h:69
FPGATrackSimFitConstantBank::getNPars
int getNPars() const
Definition
FPGATrackSimFitConstantBank.h:36
FPGATrackSimFitConstantBank::m_maj_invkk
vector3D< float > m_maj_invkk
Definition
FPGATrackSimFitConstantBank.h:92
FPGATrackSimFitConstantBank::getMissingPlane
int getMissingPlane() const
Definition
FPGATrackSimFitConstantBank.h:38
FPGATrackSimFitConstantBank::m_missingPlane
int m_missingPlane
Definition
FPGATrackSimFitConstantBank.h:73
FPGATrackSimFitConstantBank::linfit_chisq
void linfit_chisq(sector_t sector, FPGATrackSimTrack &trk) const
Definition
FPGATrackSimFitConstantBank.cxx:476
FPGATrackSimFitConstantBank::getKaverage
float getKaverage(int isec, int iconstr) const
Definition
FPGATrackSimFitConstantBank.h:44
FPGATrackSimFitConstantBank::getBankID
int getBankID() const
Definition
FPGATrackSimFitConstantBank.h:33
FPGATrackSimFitConstantBank::prepareInvFitConstants
void prepareInvFitConstants()
Definition
FPGATrackSimFitConstantBank.cxx:216
FPGATrackSimFitConstantBank::getFitConst
float getFitConst(int isec, int ipar) const
Definition
FPGATrackSimFitConstantBank.h:42
FPGATrackSimFitConstantBank::invlinfit
void invlinfit(sector_t sector, FPGATrackSimTrack &track, double const *constr) const
This method uses the track parameters and additional constraints to use the constants to calculate th...
Definition
FPGATrackSimFitConstantBank.cxx:557
FPGATrackSimFitConstantBank::m_npars
int m_npars
Definition
FPGATrackSimFitConstantBank.h:68
FPGATrackSimFitConstantBank::m_isIdealCoordFit
bool m_isIdealCoordFit
Definition
FPGATrackSimFitConstantBank.h:75
FPGATrackSimFitConstantBank::getKernel
float getKernel(int isec, int iconstr, int icoord) const
Definition
FPGATrackSimFitConstantBank.h:45
FPGATrackSimFitConstantBank::readSectorInfo
void readSectorInfo(std::ifstream &geocfile)
Definition
FPGATrackSimFitConstantBank.cxx:109
FPGATrackSimFitConstantBank::getFitPar
float getFitPar(int isec, int ipar, int icoord) const
Definition
FPGATrackSimFitConstantBank.h:43
FPGATrackSimFitConstantBank::m_WCs
vector2D< int > m_WCs
Definition
FPGATrackSimFitConstantBank.h:96
FPGATrackSimFitConstantBank::m_pmap
FPGATrackSimPlaneMap const * m_pmap
Definition
FPGATrackSimFitConstantBank.h:61
FPGATrackSimFitConstantBank::getNConstr
int getNConstr() const
Definition
FPGATrackSimFitConstantBank.h:34
FPGATrackSimFitConstantBank::m_nsectors
int m_nsectors
Definition
FPGATrackSimFitConstantBank.h:67
FPGATrackSimFitConstantBank::m_fit_const
vector2D< float > m_fit_const
Definition
FPGATrackSimFitConstantBank.h:86
FPGATrackSimFitConstantBank::getNCoords
int getNCoords() const
Definition
FPGATrackSimFitConstantBank.h:35
FPGATrackSimFitConstantBank::m_npixcy
int m_npixcy
Definition
FPGATrackSimFitConstantBank.h:71
FPGATrackSimFitConstantBank::setPhiShift
void setPhiShift(float v)
Definition
FPGATrackSimFitConstantBank.h:57
FPGATrackSimFitConstantBank::getNSectors
int getNSectors() const
Definition
FPGATrackSimFitConstantBank.h:37
FPGATrackSimFitConstantBank::m_nconstr
int m_nconstr
Definition
FPGATrackSimFitConstantBank.h:70
FPGATrackSimFitConstantBank::linfit
bool linfit(sector_t sector, FPGATrackSimTrack &track, bool isSecondStage) const
Definition
FPGATrackSimFitConstantBank.cxx:309
FPGATrackSimFitConstantBank::m_kernel
vector3D< float > m_kernel
Definition
FPGATrackSimFitConstantBank.h:87
FPGATrackSimFitConstantBank::missing_point_guess
int missing_point_guess(sector_t sector, FPGATrackSimTrack &track, bool isFirstStage, bool doExtrapolation) const
Definition
FPGATrackSimFitConstantBank.cxx:332
FPGATrackSimFitConstantBank::m_phiShift
float m_phiShift
Definition
FPGATrackSimFitConstantBank.h:72
FPGATrackSimFitConstantBank::m_kaverage
vector2D< float > m_kaverage
Definition
FPGATrackSimFitConstantBank.h:88
FPGATrackSimPlaneMap
Definition
FPGATrackSimPlaneMap.h:62
FPGATrackSimTrack
Definition
FPGATrackSimTrack.h:23
vector2D
Definition
FPGATrackSimVectors.h:28
vector3D
Definition
FPGATrackSimVectors.h:124
Generated on
for ATLAS Offline Software by
1.17.0