Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
FPGATrackSimConstGenAlgo.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimConstGenAlgo_h
4 #define FPGATrackSimConstGenAlgo_h
5 
27 #include "GaudiKernel/ITHistSvc.h"
29 #include "FPGATrackSimObjects/FPGATrackSimTypes.h" //module_t typedef
34 
35 #include "TMatrixDfwd.h"
36 #include <string>
37 #include <vector>
38 #include <memory>
39 
42 class TTree;
43 class TH1F;
44 class TFile;
45 
46 // data structure that contain definition of geometrical constants for linear fits
48 {
49  //these are the matrices themselves
50  std::vector<double> Vd0; // impact paramers coefs
51  std::vector<double> Vcurvature; // curvature coefs
52  std::vector<double> Vphi; // phi coefs
53  std::vector<double> Vz0; // z0 coefs
54  std::vector<double> Veta; // eta coefs
55  vector2D<double> kernel; // kernel (covariance matrix). Size (ndim - npar, ndim)
56  std::vector<double> kaverages; // averages, useful to keep track of
57 
58  // these are the constant/offset values
60 
61  int real{}; // this value is greater than 0 if these constants are correctly evaulated
62 
63  geo_constants(size_t nCoords) :
64  Vd0(nCoords),
65  Vcurvature(nCoords),
66  Vphi(nCoords),
67  Vz0(nCoords),
68  Veta(nCoords),
69  kernel(nCoords - FPGATrackSimTrackPars::NPARS, nCoords),
71  pars(0),
72  real(0)
73  {
74  }
75 };
76 
77 
79 {
80  public:
81 
82  FPGATrackSimConstGenAlgo(const std::string& name, ISvcLocator* pSvcLocator);
83  virtual ~FPGATrackSimConstGenAlgo() = default;
84  StatusCode initialize() override;
85  StatusCode finalize() override;
86 
87  // Execute does not do anything for this alg. This class does not process events, everything is done in initalize
88  StatusCode execute() override;
89 
91 
92  private:
93 
95  // Handles
96 
97  ServiceHandle<IFPGATrackSimMappingSvc> m_FPGATrackSimMapping{this, "FPGATrackSimMappingSvc","FPGATrackSimMappingSvc"};
98  ServiceHandle<IFPGATrackSimEventSelectionSvc> m_EvtSel{this,"FPGATrackSimEventSelectionSvc","FPGATrackSimEventSelectionSvc"};
99  ServiceHandle<ITHistSvc> m_tHistSvc{this, "THistSvc","THistSvc"};
100 
101  const FPGATrackSimPlaneMap* m_pmap = nullptr;
102 
103 
104 
106  // Configuration
107  Gaudi::Property<std::string> m_cfpath{this, "merged_file_path", "", "merged file"};
108  Gaudi::Property<std::string> m_skipFile{this, "skip_sectors", "File with list of sectors to skip"};
109  Gaudi::Property<bool> m_Monitor{this,"Monitor",false,"flag to enable the monitor"};
110  Gaudi::Property<int> m_region{this, "region",0,"region to run"};
111  Gaudi::Property<bool> m_CheckGood2ndStage{this,"CheckGood2ndStage",true,"Check goodness of 2nd stage fit constants?"};
112  Gaudi::Property<bool> m_useHitScaleFactor{this,"UseHitScaleFactor",false,"Scale factor for hits"};
113  Gaudi::Property<bool> m_isSecondStage{this,"IsSecondStage",false,"If false, we're doing a 1st stage fit, otherwise 2nd stage"};
114  Gaudi::Property<bool> m_dumpMissingHitsConstants{this, "missHitsConsts", false, "if this is true we dump constants assuming a missing hit in each layer, too"};
115 
117  // ROOT Objects
118 
119  TFile *m_mafile = nullptr;
120  TTree *m_ctree = nullptr;
121  TTree *m_matrix_tree = nullptr;
122  TTree *m_good_tree = nullptr;
123 
124 
126  // Slice Info
127 
131 
133  // Sizes
134 
135  int m_nLayers = 0;
136  int m_nKernel = 0;
137  int m_nKAverages = 0;
138  int m_nCoords = 0;
139  int m_nCoords_2 = 0; // m_nCoords^2
140 
141 
143  // Main Storage Objects
144 
145  // These have size = # of good sectors.
146  std::vector<geo_constants> m_geo_consts;
147 
148  // These are the constants for missing hits, first index is missing hit
149  // The second index is the same as above (good sector number)
150  std::vector<std::vector<geo_constants>> m_geo_consts_with_missinghit;
151 
152  // Size = # of sectors. Which sectors to skip for generating constants.
153  std::vector<bool> m_skipList;
154 
156  // Helper Functions
157 
158  StatusCode copySliceTree(TFile *file);
160  void readSkipList(size_t nEntries);
161  void generate_constants();
162  void fillConstTree(std::vector<module_t> & modules, FPGATrackSimMatrixAccumulator & acc, geo_constants & geo);
163  bool isNAN(double value, const char* name);
164  bool failedConstants(geo_constants const & geo, std::vector<bool> const & usable);
165  void DumpConstants(std::vector<geo_constants> &geo_consts, std::string & filename);
166  void writeSectors();
167  bool GetConstants(FPGATrackSimMatrixAccumulator const &acc_norm, geo_constants &geo, int entryNumber); // use values in acc_norm
168  bool GetConstants(FPGATrackSimMatrixAccumulator const &acc_norm, geo_constants &geo, int entryNumber, std::vector<bool> const &coordsToUse, unsigned int nusable); // full method with different number of usable coordinates
169  void createMissingHitsConstants(FPGATrackSimMatrixAccumulator const & acc_norm, size_t entry);
171  geo_constants makeConsts(FPGATrackSimMatrixAccumulator const & acc, std::vector<bool> const & usable,
172  std::vector<double> const & inv_covariance,
173  std::vector<double> const & eigvals, vector2D<double> const & eigvecs);
174  std::vector<double> matrix_multiply(std::vector<double> const & A, std::vector<double> const & b);
175  void eigen(size_t n_redu, size_t n_full, TMatrixD &mtx, std::vector<bool> const & usable, std::vector<double> & eigvals_v, vector2D<double> & eigvecs_v);
176  std::vector<double> invert(size_t n_full, TMatrixD mtx, std::vector<bool> const & usable);
177  TMatrixD getReducedMatrix(size_t n, std::vector<double> const & mtx_v, std::vector<bool> const & usable, size_t nDimToUse);
178  bool isSingular(TMatrixD mtx);
179  double dot(const double* vec1, const double* vec2, size_t size);
180  geo_constants calculate_gcorth(geo_constants geo, int nCoords, std::vector<bool> const & usable);
181 
182 
183 
184 };
185 
186 #endif // FPGATrackSimConstGenAlgo_h
187 
FPGATrackSimConstGenAlgo::m_good_tree
TTree * m_good_tree
Definition: FPGATrackSimConstGenAlgo.h:122
FPGATrackSimConstGenAlgo::m_mafile
TFile * m_mafile
Definition: FPGATrackSimConstGenAlgo.h:119
FPGATrackSimConstGenAlgo::generate_constants
void generate_constants()
Definition: FPGATrackSimConstGenAlgo.cxx:258
D3PDMakerTestInstan::vec2
std::vector< D3PDTest::MyVec2 > vec2
Definition: D3PDMakerTestDict.h:14
FPGATrackSimConstGenAlgo::m_CheckGood2ndStage
Gaudi::Property< bool > m_CheckGood2ndStage
Definition: FPGATrackSimConstGenAlgo.h:111
geo_constants::kernel
vector2D< double > kernel
Definition: FPGATrackSimConstGenAlgo.h:55
FPGATrackSimConstGenAlgo::calculate_gcorth
geo_constants calculate_gcorth(geo_constants geo, int nCoords, std::vector< bool > const &usable)
Definition: FPGATrackSimConstGenAlgo.cxx:710
FPGATrackSimConstGenAlgo::~FPGATrackSimConstGenAlgo
virtual ~FPGATrackSimConstGenAlgo()=default
FPGATrackSimConstGenAlgo::eigen
void eigen(size_t n_redu, size_t n_full, TMatrixD &mtx, std::vector< bool > const &usable, std::vector< double > &eigvals_v, vector2D< double > &eigvecs_v)
Definition: FPGATrackSimConstGenAlgo.cxx:670
FPGATrackSimConstGenAlgo::isNAN
bool isNAN(double value, const char *name)
Definition: FPGATrackSimConstGenAlgo.cxx:420
FPGATrackSimTrackPars
Definition: FPGATrackSimTrackPars.h:22
FPGATrackSimConstGenAlgo::m_skipFile
Gaudi::Property< std::string > m_skipFile
Definition: FPGATrackSimConstGenAlgo.h:108
FPGATrackSimConstGenAlgo::dot
double dot(const double *vec1, const double *vec2, size_t size)
Definition: FPGATrackSimConstGenAlgo.cxx:701
FPGATrackSimConstGenAlgo::execute
StatusCode execute() override
Definition: FPGATrackSimConstGenAlgo.cxx:735
FPGATrackSimConstGenAlgo::m_nCoords
int m_nCoords
Definition: FPGATrackSimConstGenAlgo.h:138
IFPGATrackSimMappingSvc.h
FPGATrackSimConstGenAlgo::m_Monitor
Gaudi::Property< bool > m_Monitor
Definition: FPGATrackSimConstGenAlgo.h:109
FPGATrackSimConstGenAlgo::DumpConstants
void DumpConstants(std::vector< geo_constants > &geo_consts, std::string &filename)
Definition: FPGATrackSimConstGenAlgo.cxx:820
FPGATrackSimConstGenAlgo::m_sliceMax
FPGATrackSimTrackPars m_sliceMax
Definition: FPGATrackSimConstGenAlgo.h:130
FPGATrackSimConstGenAlgo::m_tHistSvc
ServiceHandle< ITHistSvc > m_tHistSvc
Definition: FPGATrackSimConstGenAlgo.h:99
athena.value
value
Definition: athena.py:124
FPGATrackSimConstGenAlgo::initialize
StatusCode initialize() override
Definition: FPGATrackSimConstGenAlgo.cxx:61
FPGATrackSimConstGenAlgo::m_region
Gaudi::Property< int > m_region
Definition: FPGATrackSimConstGenAlgo.h:110
FPGATrackSimConstGenAlgo::GetConstants
bool GetConstants(FPGATrackSimMatrixAccumulator const &acc_norm, geo_constants &geo, int entryNumber)
Definition: FPGATrackSimConstGenAlgo.cxx:333
FPGATrackSimConstGenAlgo::m_skipList
std::vector< bool > m_skipList
Definition: FPGATrackSimConstGenAlgo.h:153
FPGATrackSimConstGenAlgo::m_pmap
const FPGATrackSimPlaneMap * m_pmap
Definition: FPGATrackSimConstGenAlgo.h:101
FPGATrackSimConstGenAlgo::m_isSecondStage
Gaudi::Property< bool > m_isSecondStage
Definition: FPGATrackSimConstGenAlgo.h:113
FPGATrackSimConstGenAlgo::m_nCoords_2
int m_nCoords_2
Definition: FPGATrackSimConstGenAlgo.h:139
FPGATrackSimConstGenAlgo::matrix_multiply
std::vector< double > matrix_multiply(std::vector< double > const &A, std::vector< double > const &b)
Definition: FPGATrackSimConstGenAlgo.cxx:569
FPGATrackSimConstGenAlgo::m_nLayers
int m_nLayers
Definition: FPGATrackSimConstGenAlgo.h:135
FPGATrackSimConstGenAlgo::getReducedMatrix
TMatrixD getReducedMatrix(size_t n, std::vector< double > const &mtx_v, std::vector< bool > const &usable, size_t nDimToUse)
Removes the rows/columns specified by !usable.
Definition: FPGATrackSimConstGenAlgo.cxx:598
AthAlgorithm.h
FPGATrackSimConstGenAlgo::normalize
FPGATrackSimMatrixAccumulator normalize(FPGATrackSimMatrixAccumulator const &acc_raw)
Definition: FPGATrackSimConstGenAlgo.cxx:484
FPGATrackSimConstGenAlgo::finalize
StatusCode finalize() override
Definition: FPGATrackSimConstGenAlgo.cxx:748
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
A
FPGATrackSimConstGenAlgo::m_EvtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_EvtSel
Definition: FPGATrackSimConstGenAlgo.h:98
FPGATrackSimVectors.h
Defines several vector wrappers for homogenous multi-dimensional vectors, declared as 1D arrays for l...
vector2D< double >
FPGATrackSimConstGenAlgo::m_nKAverages
int m_nKAverages
Definition: FPGATrackSimConstGenAlgo.h:137
FPGATrackSimConstGenAlgo::m_useHitScaleFactor
Gaudi::Property< bool > m_useHitScaleFactor
Definition: FPGATrackSimConstGenAlgo.h:112
beamspotman.n
n
Definition: beamspotman.py:731
FPGATrackSimConstGenAlgo::m_sliceNBins
FPGATrackSimTrackParsI m_sliceNBins
Definition: FPGATrackSimConstGenAlgo.h:128
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
geo_constants::Vcurvature
std::vector< double > Vcurvature
Definition: FPGATrackSimConstGenAlgo.h:51
FPGATrackSimMatrixAccumulator
Definition: FPGATrackSimMatrixAccumulator.h:36
FPGATrackSimConstGenAlgo::m_geo_consts_with_missinghit
std::vector< std::vector< geo_constants > > m_geo_consts_with_missinghit
Definition: FPGATrackSimConstGenAlgo.h:150
geo_constants::Vd0
std::vector< double > Vd0
Definition: FPGATrackSimConstGenAlgo.h:50
file
TFile * file
Definition: tile_monitor.h:29
FPGATrackSimConstGenAlgo::m_geo_consts
std::vector< geo_constants > m_geo_consts
Definition: FPGATrackSimConstGenAlgo.h:146
AthenaPoolTestRead.acc
acc
Definition: AthenaPoolTestRead.py:16
FPGATrackSimConstGenAlgo::FPGATrackSimConstGenAlgo
FPGATrackSimConstGenAlgo(const std::string &name, ISvcLocator *pSvcLocator)
Definition: FPGATrackSimConstGenAlgo.cxx:55
geo_constants::pars
FPGATrackSimTrackPars pars
Definition: FPGATrackSimConstGenAlgo.h:59
FPGATrackSimConstGenAlgo::failedConstants
bool failedConstants(geo_constants const &geo, std::vector< bool > const &usable)
Definition: FPGATrackSimConstGenAlgo.cxx:433
AthAlgorithm
Definition: AthAlgorithm.h:47
FPGATrackSimConstGenAlgo
Definition: FPGATrackSimConstGenAlgo.h:79
FPGATrackSimPlaneMap
Definition: FPGATrackSimPlaneMap.h:62
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
FPGATrackSimConstGenAlgo::m_sliceMin
FPGATrackSimTrackPars m_sliceMin
Definition: FPGATrackSimConstGenAlgo.h:129
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
FPGATrackSimConstGenAlgo::isSingular
bool isSingular(TMatrixD mtx)
Definition: FPGATrackSimConstGenAlgo.cxx:582
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
geo_constants::geo_constants
geo_constants(size_t nCoords)
Definition: FPGATrackSimConstGenAlgo.h:63
geo_constants::Vz0
std::vector< double > Vz0
Definition: FPGATrackSimConstGenAlgo.h:53
FPGATrackSimConstGenAlgo::m_ctree
TTree * m_ctree
Definition: FPGATrackSimConstGenAlgo.h:120
FPGATrackSimConstGenAlgo::createMissingHitsConstants
void createMissingHitsConstants(FPGATrackSimMatrixAccumulator const &acc_norm, size_t entry)
Definition: FPGATrackSimConstGenAlgo.cxx:295
FPGATrackSimConstGenAlgo::m_matrix_tree
TTree * m_matrix_tree
Definition: FPGATrackSimConstGenAlgo.h:121
FPGATrackSimConstGenAlgo::makeConsts
geo_constants makeConsts(FPGATrackSimMatrixAccumulator const &acc, std::vector< bool > const &usable, std::vector< double > const &inv_covariance, std::vector< double > const &eigvals, vector2D< double > const &eigvecs)
Definition: FPGATrackSimConstGenAlgo.cxx:521
geo_constants::Veta
std::vector< double > Veta
Definition: FPGATrackSimConstGenAlgo.h:54
FPGATrackSimConstGenAlgo::m_nKernel
int m_nKernel
Definition: FPGATrackSimConstGenAlgo.h:136
FPGATrackSimConstGenAlgo::invert
std::vector< double > invert(size_t n_full, TMatrixD mtx, std::vector< bool > const &usable)
Inverts a reduced matrix, then pads with zeros to recover a full-sized matrix.
Definition: FPGATrackSimConstGenAlgo.cxx:631
FPGATrackSimConstGenAlgo::bookHistograms
StatusCode bookHistograms()
Definition: FPGATrackSimConstGenAlgo.cxx:116
IFPGATrackSimEventSelectionSvc.h
FPGATrackSimConstGenAlgo::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimConstGenAlgo.h:97
LArCellConditions.geo
bool geo
Definition: LArCellConditions.py:46
geo_constants
Definition: FPGATrackSimConstGenAlgo.h:48
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
geo_constants::real
int real
Definition: FPGATrackSimConstGenAlgo.h:61
NPARS
#define NPARS
Definition: GraphTest.cxx:20
FPGATrackSimConstGenAlgo::writeSectors
void writeSectors()
Definition: FPGATrackSimConstGenAlgo.cxx:773
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
FPGATrackSimTrackParsI
Definition: FPGATrackSimTrackPars.h:56
FPGATrackSimConstGenAlgo::readSkipList
void readSkipList(size_t nEntries)
Definition: FPGATrackSimConstGenAlgo.cxx:232
dqBeamSpot.nEntries
int nEntries
Definition: dqBeamSpot.py:73
FPGATrackSimConstGenAlgo::m_dumpMissingHitsConstants
Gaudi::Property< bool > m_dumpMissingHitsConstants
Definition: FPGATrackSimConstGenAlgo.h:114
geo_constants::Vphi
std::vector< double > Vphi
Definition: FPGATrackSimConstGenAlgo.h:52
FPGATrackSimConstGenAlgo::prepareOutputTree
StatusCode prepareOutputTree()
Definition: FPGATrackSimConstGenAlgo.cxx:191
geo_constants::kaverages
std::vector< double > kaverages
Definition: FPGATrackSimConstGenAlgo.h:56
FPGATrackSimTypes.h
FPGATrackSimConstGenAlgo::copySliceTree
StatusCode copySliceTree(TFile *file)
Definition: FPGATrackSimConstGenAlgo.cxx:135
FPGATrackSimConstGenAlgo::m_cfpath
Gaudi::Property< std::string > m_cfpath
Definition: FPGATrackSimConstGenAlgo.h:107
FPGATrackSimTrackPars.h
Structs that store the 5 track parameters.
FPGATrackSimConstGenAlgo::fillConstTree
void fillConstTree(std::vector< module_t > &modules, FPGATrackSimMatrixAccumulator &acc, geo_constants &geo)
Definition: FPGATrackSimConstGenAlgo.cxx:367
ServiceHandle< IFPGATrackSimMappingSvc >