|
ATLAS Offline Software
|
#include <FPGATrackSimConstGenAlgo.h>
|
| FPGATrackSimConstGenAlgo (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual | ~FPGATrackSimConstGenAlgo ()=default |
|
StatusCode | initialize () override |
|
StatusCode | finalize () override |
|
StatusCode | execute () override |
|
StatusCode | bookHistograms () |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
StatusCode | copySliceTree (TFile *file) |
|
StatusCode | prepareOutputTree () |
|
void | readSkipList (size_t nEntries) |
|
void | generate_constants () |
|
void | fillConstTree (std::vector< module_t > &modules, FPGATrackSimMatrixAccumulator &acc, geo_constants &geo) |
|
bool | isNAN (double value, const char *name) |
|
bool | failedConstants (geo_constants const &geo, std::vector< bool > const &usable) |
|
void | DumpConstants (std::vector< geo_constants > &geo_consts, std::string &filename) |
|
void | writeSectors () |
|
bool | GetConstants (FPGATrackSimMatrixAccumulator const &acc_norm, geo_constants &geo, int entryNumber) |
|
bool | GetConstants (FPGATrackSimMatrixAccumulator const &acc_norm, geo_constants &geo, int entryNumber, std::vector< bool > const &coordsToUse, unsigned int nusable) |
|
void | createMissingHitsConstants (FPGATrackSimMatrixAccumulator const &acc_norm, size_t entry) |
|
FPGATrackSimMatrixAccumulator | normalize (FPGATrackSimMatrixAccumulator const &acc_raw) |
|
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) |
|
std::vector< double > | matrix_multiply (std::vector< double > const &A, std::vector< double > const &b) |
|
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) |
|
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. More...
|
|
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. More...
|
|
bool | isSingular (TMatrixD mtx) |
|
double | dot (const double *vec1, const double *vec2, size_t size) |
|
geo_constants | calculate_gcorth (geo_constants geo, int nCoords, std::vector< bool > const &usable) |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
ServiceHandle< IFPGATrackSimMappingSvc > | m_FPGATrackSimMapping {this, "FPGATrackSimMappingSvc","FPGATrackSimMappingSvc"} |
|
ServiceHandle< ITHistSvc > | m_tHistSvc {this, "THistSvc","THistSvc"} |
|
const FPGATrackSimPlaneMap * | m_pmap = nullptr |
|
Gaudi::Property< std::string > | m_cfpath {this, "merged_file_path", "", "merged file"} |
|
Gaudi::Property< std::string > | m_skipFile {this, "skip_sectors", "File with list of sectors to skip"} |
|
Gaudi::Property< bool > | m_Monitor {this,"Monitor",false,"flag to enable the monitor"} |
|
Gaudi::Property< int > | m_region {this, "region",0,"region to run"} |
|
Gaudi::Property< bool > | m_CheckGood2ndStage {this,"CheckGood2ndStage",true,"Check goodness of 2nd stage fit constants?"} |
|
Gaudi::Property< bool > | m_useHitScaleFactor {this,"UseHitScaleFactor",false,"Scale factor for hits"} |
|
Gaudi::Property< bool > | m_isSecondStage {this,"IsSecondStage",false,"If false, we're doing a 1st stage fit, otherwise 2nd stage"} |
|
Gaudi::Property< bool > | m_dumpMissingHitsConstants {this, "missHitsConsts", false, "if this is true we dump constants assuming a missing hit in each layer, too"} |
|
TFile * | m_mafile = nullptr |
|
TTree * | m_ctree = nullptr |
|
TTree * | m_matrix_tree = nullptr |
|
TTree * | m_good_tree = nullptr |
|
TH1F * | m_h_vc = nullptr |
|
TH1F * | m_h_vd = nullptr |
|
TH1F * | m_h_vf = nullptr |
|
TH1F * | m_h_vz = nullptr |
|
TH1F * | m_h_veta = nullptr |
|
FPGATrackSimTrackParsI | m_sliceNBins |
|
FPGATrackSimTrackPars | m_sliceMin |
|
FPGATrackSimTrackPars | m_sliceMax |
|
int | m_nLayers = 0 |
|
int | m_nKernel = 0 |
|
int | m_nKAverages = 0 |
|
int | m_nCoords = 0 |
|
int | m_nCoords_2 = 0 |
|
std::vector< geo_constants > | m_geo_consts |
|
std::vector< std::vector< geo_constants > > | m_geo_consts_with_missinghit |
|
std::vector< bool > | m_skipList |
|
DataObjIDColl | m_extendedExtraObjects |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 79 of file FPGATrackSimConstGenAlgo.h.
◆ StoreGateSvc_t
◆ FPGATrackSimConstGenAlgo()
FPGATrackSimConstGenAlgo::FPGATrackSimConstGenAlgo |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~FPGATrackSimConstGenAlgo()
virtual FPGATrackSimConstGenAlgo::~FPGATrackSimConstGenAlgo |
( |
| ) |
|
|
virtualdefault |
◆ bookHistograms()
StatusCode FPGATrackSimConstGenAlgo::bookHistograms |
( |
| ) |
|
◆ calculate_gcorth()
Definition at line 684 of file FPGATrackSimConstGenAlgo.cxx.
688 if (!usable[
i])
continue;
691 auto project = [&](std::vector<double> & hit_x_par,
double &
par)
693 double pr =
dot(hit_x_par.data(),
geo.kernel[
i], nCoords) /
norm;
694 for (
int j = 0; j < nCoords; j++) hit_x_par[j] += -
geo.kernel(
i,j) *
pr;
◆ copySliceTree()
StatusCode FPGATrackSimConstGenAlgo::copySliceTree |
( |
TFile * |
file | ) |
|
|
private |
Definition at line 124 of file FPGATrackSimConstGenAlgo.cxx.
127 TTree *old_tree = (TTree*)
file->Get(
"slice");
148 old_tree->GetEntry(0);
151 TTree *new_tree =
new TTree(
"slice",
"Slice boundaries");
176 return StatusCode::SUCCESS;
◆ createMissingHitsConstants()
Definition at line 284 of file FPGATrackSimConstGenAlgo.cxx.
289 if (!acc_norm.coords_usable[missing])
296 unsigned int nusable = acc_norm.nusable() - 1;
297 std::vector<bool> coordsToUse = acc_norm.coords_usable;
298 coordsToUse[missing] =
false;
302 coordsToUse[missing+1] =
false;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ dot()
double FPGATrackSimConstGenAlgo::dot |
( |
const double * |
vec1, |
|
|
const double * |
vec2, |
|
|
size_t |
size |
|
) |
| |
|
private |
◆ DumpConstants()
void FPGATrackSimConstGenAlgo::DumpConstants |
( |
std::vector< geo_constants > & |
geo_consts, |
|
|
std::string & |
filename |
|
) |
| |
|
private |
Definition at line 794 of file FPGATrackSimConstGenAlgo.cxx.
796 FILE *const_file = fopen(
filename.c_str(),
"w");
798 fprintf(const_file,
"! *** RECONSTRUCTION GEOMETRY CONSTANTS ***\n");
799 fprintf(const_file,
"\n");
800 fprintf(const_file,
"Version 2 ! File format version number\n");
801 fprintf(const_file,
"\n");
802 fprintf(const_file,
"! *** PHI is now in GLOBAL coordinate system ***\n");
803 fprintf(const_file,
" NPLANES\n");
805 fprintf(const_file,
" NSECTORS\n");
806 fprintf(const_file,
"%zu\n",geo_consts.size());
807 fprintf(const_file,
" NDIM\n");
808 fprintf(const_file,
" 2\n");
812 for (
size_t sector = 0; sector < geo_consts.size(); sector++)
815 fprintf(const_file,
"sector\n");
816 fprintf(const_file,
"%zu\n", sector);
818 fprintf(const_file,
" Vc \n");
820 fprintf(const_file,
"%e\n",geo_consts[sector].Vcurvature[
i]);
823 fprintf(const_file,
" Vd \n");
825 fprintf(const_file,
"%e\n",geo_consts[sector].Vd0[
i]);
828 fprintf(const_file,
" Vf \n");
830 fprintf(const_file,
"%e\n",geo_consts[sector].Vphi[
i]);
833 fprintf(const_file,
" Vz0 \n");
835 fprintf(const_file,
"%e\n",geo_consts[sector].Vz0[
i]);
838 fprintf(const_file,
" Vo \n");
840 fprintf(const_file,
"%e\n",geo_consts[sector].Veta[
i]);
843 fprintf(const_file,
"kaverages\n");
845 fprintf(const_file,
"%e\n",
m_geo_consts[sector].kaverages[
i]);
848 fprintf(const_file,
"kernel\n");
851 fprintf(const_file,
"%e\n",geo_consts[sector].kernel(
i, j));
855 fprintf(const_file,
"Cc\n");
856 fprintf(const_file,
"%e\n",geo_consts[sector].
pars.qOverPt);
858 fprintf(const_file,
"Cd\n");
859 fprintf(const_file,
"%e\n",geo_consts[sector].
pars.d0);
861 fprintf(const_file,
"Cf\n");
862 fprintf(const_file,
"%e\n",geo_consts[sector].
pars.phi);
864 fprintf(const_file,
"Cz0\n");
865 fprintf(const_file,
"%e\n",geo_consts[sector].
pars.z0);
867 fprintf(const_file,
"Co\n");
868 fprintf(const_file,
"%e\n",geo_consts[sector].
pars.eta);
◆ eigen()
void FPGATrackSimConstGenAlgo::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 |
|
) |
| |
|
private |
Definition at line 644 of file FPGATrackSimConstGenAlgo.cxx.
648 TVectorD eigvals_redu;
649 TMatrixD eigvecs_redu = mtx.EigenVectors(eigvals_redu);
652 eigvals_full.resize(n_full, 0);
653 eigvecs_full.resize(n_full, n_full, 0);
657 size_t j_redu = n_redu - 1;
658 for (
size_t i_full = 0; i_full < n_full; i_full++)
660 if (!usable[i_full])
continue;
663 for (
size_t j_full = 0; j_full < n_full; j_full++)
665 if (!usable[j_full])
continue;
666 eigvecs_full(i_full, j_full) = eigvecs_redu[i_redu][j_redu];
669 eigvals_full[i_full] = eigvals_redu[j_redu];
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode FPGATrackSimConstGenAlgo::execute |
( |
| ) |
|
|
override |
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ failedConstants()
◆ fillConstTree()
Definition at line 356 of file FPGATrackSimConstGenAlgo.cxx.
358 float coverage =
static_cast<float>(
acc.track_bins.size());
359 m_ctree->SetBranchAddress(
"sectorID",
acc.FTK_modules.data());
360 m_ctree->SetBranchAddress(
"hashID", modules.data());
361 m_ctree->SetBranchAddress(
"nhit", &coverage);
363 m_ctree->SetBranchAddress(
"Cc", &
geo.pars.qOverPt);
364 m_ctree->SetBranchAddress(
"Cd", &
geo.pars.d0);
365 m_ctree->SetBranchAddress(
"Cf", &
geo.pars.phi);
366 m_ctree->SetBranchAddress(
"Cz0", &
geo.pars.z0);
367 m_ctree->SetBranchAddress(
"Co", &
geo.pars.eta);
369 m_ctree->SetBranchAddress(
"Vc",
geo.Vcurvature.data());
370 m_ctree->SetBranchAddress(
"Vd",
geo.Vd0.data());
371 m_ctree->SetBranchAddress(
"Vf",
geo.Vphi.data());
372 m_ctree->SetBranchAddress(
"Vz0",
geo.Vz0.data());
373 m_ctree->SetBranchAddress(
"Vo",
geo.Veta.data());
375 m_ctree->SetBranchAddress(
"kaverages",
geo.kaverages.data());
376 m_ctree->SetBranchAddress(
"kernel",
geo.kernel.data());
◆ finalize()
StatusCode FPGATrackSimConstGenAlgo::finalize |
( |
| ) |
|
|
override |
◆ generate_constants()
void FPGATrackSimConstGenAlgo::generate_constants |
( |
| ) |
|
|
private |
◆ GetConstants() [1/2]
◆ GetConstants() [2/2]
Definition at line 327 of file FPGATrackSimConstGenAlgo.cxx.
336 std::vector<double> inv_covariance =
invert(
m_nCoords, mtx_reduced, coordsToUse);
339 std::vector<double> eigvals;
342 eigen(nusable,
m_nCoords, mtx_reduced, coordsToUse, eigvals, eigvecs);
345 geo =
makeConsts(acc_norm, coordsToUse, inv_covariance, eigvals, eigvecs);
◆ getReducedMatrix()
TMatrixD FPGATrackSimConstGenAlgo::getReducedMatrix |
( |
size_t |
n, |
|
|
std::vector< double > const & |
mtx_v, |
|
|
std::vector< bool > const & |
usable, |
|
|
size_t |
nDimToUse |
|
) |
| |
|
private |
Removes the rows/columns specified by !usable.
- Parameters
-
n | - Initial size of matrix |
mtx_v | - Matrix to be reduced (size n*n) |
usable | - Which rows/columns are to be kept (size n) |
nDimToUse | - Must be count(usable), size of output matrix |
Definition at line 572 of file FPGATrackSimConstGenAlgo.cxx.
574 TMatrixD mtx(
n,
n, mtx_v.data());
575 TMatrixD newmtx(nDimToUse, nDimToUse);
578 for (
size_t i = 0;
i <
n;
i++)
580 if (!usable[
i])
continue;
583 for (
size_t j = 0; j <
n; j++)
585 if (!usable[j])
continue;
586 newmtx[counteri][counterj] = mtx[
i][j];
589 assert(counterj == nDimToUse);
592 assert(counteri == nDimToUse);
◆ initialize()
StatusCode FPGATrackSimConstGenAlgo::initialize |
( |
| ) |
|
|
override |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ invert()
std::vector< double > FPGATrackSimConstGenAlgo::invert |
( |
size_t |
n_full, |
|
|
TMatrixD |
mtx, |
|
|
std::vector< bool > const & |
usable |
|
) |
| |
|
private |
Inverts a reduced matrix, then pads with zeros to recover a full-sized matrix.
- Parameters
-
n_full | - Size of full (output) system |
mtx | - A reduced matrix to be inverted (size n_redu * n_redu) |
usable | - Which rows/columns were kept (size n_full, count(usable == n_redu)) |
Definition at line 605 of file FPGATrackSimConstGenAlgo.cxx.
608 std::vector<double> inv(n_full * n_full);
613 for (
size_t i = 0;
i < n_full;
i++)
615 if (!usable[
i])
continue;
618 for (
size_t j = 0; j < n_full; j++)
620 if (!usable[j])
continue;
621 inv[
i*n_full + j] = mtx[counteri][counterj];
◆ isNAN()
bool FPGATrackSimConstGenAlgo::isNAN |
( |
double |
value, |
|
|
const char * |
name |
|
) |
| |
|
private |
◆ isSingular()
bool FPGATrackSimConstGenAlgo::isSingular |
( |
TMatrixD |
mtx | ) |
|
|
private |
◆ makeConsts()
Definition at line 495 of file FPGATrackSimConstGenAlgo.cxx.
499 size_t nCoords =
acc.hit_coords.size();
510 if (!usable[
i])
continue;
511 for (
size_t j = 0; j < nCoords; j++)
513 if (!usable[j])
continue;
515 geo.kernel(
i, j) = eigvecs(
i, j) / sqrt(eigvals[
i]);
517 geo.kaverages[
i] += -
geo.kernel(
i, j) *
acc.hit_coords[j];
522 for (
size_t i = 0;
i < nCoords;
i++)
525 geo.pars.qOverPt += -
geo.Vcurvature[
i] *
acc.hit_coords[
i];
531 geo.real =
static_cast<int>(
acc.track_bins.size());
◆ matrix_multiply()
std::vector< double > FPGATrackSimConstGenAlgo::matrix_multiply |
( |
std::vector< double > const & |
A, |
|
|
std::vector< double > const & |
b |
|
) |
| |
|
private |
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ normalize()
Definition at line 458 of file FPGATrackSimConstGenAlgo.cxx.
461 double coverage =
static_cast<double>(
acc.track_bins.size());
462 size_t nCoords =
acc.hit_coords.size();
465 acc.pars[
i] /= coverage;
467 for (
unsigned i = 0;
i < nCoords;
i++)
469 acc.hit_coords[
i] /= coverage;
471 else acc.coords_usable[
i] =
true;
475 for (
unsigned i = 0;
i < nCoords;
i++)
477 acc.hit_x_QoP[
i] = (
acc.hit_x_QoP[
i] -
acc.hit_coords[
i] *
acc.pars.qOverPt * coverage) / (coverage-1);
478 acc.hit_x_d0[
i] = (
acc.hit_x_d0[
i] -
acc.hit_coords[
i] *
acc.pars.d0 * coverage) / (coverage-1);
479 acc.hit_x_z0[
i] = (
acc.hit_x_z0[
i] -
acc.hit_coords[
i] *
acc.pars.z0 * coverage) / (coverage-1);
480 acc.hit_x_phi[
i] = (
acc.hit_x_phi[
i] -
acc.hit_coords[
i] *
acc.pars.phi * coverage) / (coverage-1);
481 acc.hit_x_eta[
i] = (
acc.hit_x_eta[
i] -
acc.hit_coords[
i] *
acc.pars.eta * coverage) / (coverage-1);
484 for (
unsigned j =
i ; j < nCoords; ++j)
486 acc.covariance[j * nCoords +
i] =
acc.covariance[
i * nCoords + j] =
487 (
acc.covariance[
i * nCoords + j] -
acc.hit_coords[
i] *
acc.hit_coords[j] * coverage) / (coverage-1);
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ prepareOutputTree()
StatusCode FPGATrackSimConstGenAlgo::prepareOutputTree |
( |
| ) |
|
|
private |
Definition at line 180 of file FPGATrackSimConstGenAlgo.cxx.
188 std::string tree_title =
"Ambank " +
std::to_string(0) +
" constants";
189 m_ctree =
new TTree(tree_name.c_str(), tree_title.c_str());
197 m_ctree->Branch(
"sectorID", &anInt,
"sectorID[nplane]/I");
198 m_ctree->Branch(
"hashID", &anInt,
"hashID[nplane]/I");
199 m_ctree->Branch(
"nhit", &aFloat,
"nhit/F");
201 m_ctree->Branch(
"Cd", &aDouble,
"Cd/D");
202 m_ctree->Branch(
"Cc", &aDouble,
"Cc/D");
203 m_ctree->Branch(
"Cf", &aDouble,
"Cf/D");
204 m_ctree->Branch(
"Cz0", &aDouble,
"Cz0/D");
205 m_ctree->Branch(
"Co", &aDouble,
"Co/D");
207 m_ctree->Branch(
"Vc", &aDouble,
"Vc[ndim]/D");
208 m_ctree->Branch(
"Vd", &aDouble,
"Vd[ndim]/D");
209 m_ctree->Branch(
"Vf", &aDouble,
"Vf[ndim]/D");
210 m_ctree->Branch(
"Vz0", &aDouble,
"Vz0[ndim]/D");
211 m_ctree->Branch(
"Vo", &aDouble,
"Vo[ndim]/D");
213 m_ctree->Branch(
"kernel", &aDouble,
"kernel[nkernel]/D");
214 m_ctree->Branch(
"kaverages", &aDouble,
"kaverages[nkaverages]/D");
217 return StatusCode::SUCCESS;
◆ readSkipList()
void FPGATrackSimConstGenAlgo::readSkipList |
( |
size_t |
nEntries | ) |
|
|
private |
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ writeSectors()
void FPGATrackSimConstGenAlgo::writeSectors |
( |
| ) |
|
|
private |
Definition at line 747 of file FPGATrackSimConstGenAlgo.cxx.
757 FILE *sector_file = fopen(sector_filename.c_str(),
"w");
758 FILE *sectorHW_file = fopen(sectorHW_filename.c_str(),
"w");
765 while (
reader.nextEntry())
768 size_t sector =
reader.getEntry();
770 fprintf(sector_file,
"%zu ", sector);
771 fprintf(sectorHW_file,
"%zu ", sector);
774 fprintf(sector_file,
"%d ",
acc.FTK_modules[
i]);
775 fprintf(sectorHW_file,
"%d ",
reader.getModules()[
i]);
777 fprintf(sector_file,
"0 %zu",
acc.track_bins.size());
778 fprintf(sector_file,
"\n");
779 fprintf(sectorHW_file,
"0 %zu",
acc.track_bins.size());
780 fprintf(sectorHW_file,
"\n");
787 fclose(sectorHW_file);
789 slice.saveSlices(slice_filename);
◆ m_cfpath
Gaudi::Property<std::string> FPGATrackSimConstGenAlgo::m_cfpath {this, "merged_file_path", "", "merged file"} |
|
private |
◆ m_CheckGood2ndStage
Gaudi::Property<bool> FPGATrackSimConstGenAlgo::m_CheckGood2ndStage {this,"CheckGood2ndStage",true,"Check goodness of 2nd stage fit constants?"} |
|
private |
◆ m_ctree
TTree* FPGATrackSimConstGenAlgo::m_ctree = nullptr |
|
private |
◆ m_detStore
◆ m_dumpMissingHitsConstants
Gaudi::Property<bool> FPGATrackSimConstGenAlgo::m_dumpMissingHitsConstants {this, "missHitsConsts", false, "if this is true we dump constants assuming a missing hit in each layer, too"} |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_FPGATrackSimMapping
◆ m_geo_consts
std::vector<geo_constants> FPGATrackSimConstGenAlgo::m_geo_consts |
|
private |
◆ m_geo_consts_with_missinghit
std::vector<std::vector<geo_constants> > FPGATrackSimConstGenAlgo::m_geo_consts_with_missinghit |
|
private |
◆ m_good_tree
TTree* FPGATrackSimConstGenAlgo::m_good_tree = nullptr |
|
private |
◆ m_h_vc
TH1F* FPGATrackSimConstGenAlgo::m_h_vc = nullptr |
|
private |
◆ m_h_vd
TH1F* FPGATrackSimConstGenAlgo::m_h_vd = nullptr |
|
private |
◆ m_h_veta
TH1F* FPGATrackSimConstGenAlgo::m_h_veta = nullptr |
|
private |
◆ m_h_vf
TH1F* FPGATrackSimConstGenAlgo::m_h_vf = nullptr |
|
private |
◆ m_h_vz
TH1F* FPGATrackSimConstGenAlgo::m_h_vz = nullptr |
|
private |
◆ m_isSecondStage
Gaudi::Property<bool> FPGATrackSimConstGenAlgo::m_isSecondStage {this,"IsSecondStage",false,"If false, we're doing a 1st stage fit, otherwise 2nd stage"} |
|
private |
◆ m_mafile
TFile* FPGATrackSimConstGenAlgo::m_mafile = nullptr |
|
private |
◆ m_matrix_tree
TTree* FPGATrackSimConstGenAlgo::m_matrix_tree = nullptr |
|
private |
◆ m_Monitor
Gaudi::Property<bool> FPGATrackSimConstGenAlgo::m_Monitor {this,"Monitor",false,"flag to enable the monitor"} |
|
private |
◆ m_nCoords
int FPGATrackSimConstGenAlgo::m_nCoords = 0 |
|
private |
◆ m_nCoords_2
int FPGATrackSimConstGenAlgo::m_nCoords_2 = 0 |
|
private |
◆ m_nKAverages
int FPGATrackSimConstGenAlgo::m_nKAverages = 0 |
|
private |
◆ m_nKernel
int FPGATrackSimConstGenAlgo::m_nKernel = 0 |
|
private |
◆ m_nLayers
int FPGATrackSimConstGenAlgo::m_nLayers = 0 |
|
private |
◆ m_pmap
◆ m_region
Gaudi::Property<int> FPGATrackSimConstGenAlgo::m_region {this, "region",0,"region to run"} |
|
private |
◆ m_skipFile
Gaudi::Property<std::string> FPGATrackSimConstGenAlgo::m_skipFile {this, "skip_sectors", "File with list of sectors to skip"} |
|
private |
◆ m_skipList
std::vector<bool> FPGATrackSimConstGenAlgo::m_skipList |
|
private |
◆ m_sliceMax
◆ m_sliceMin
◆ m_sliceNBins
◆ m_tHistSvc
ServiceHandle<ITHistSvc> FPGATrackSimConstGenAlgo::m_tHistSvc {this, "THistSvc","THistSvc"} |
|
private |
◆ m_useHitScaleFactor
Gaudi::Property<bool> FPGATrackSimConstGenAlgo::m_useHitScaleFactor {this,"UseHitScaleFactor",false,"Scale factor for hits"} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
void generate_constants()
std::vector< D3PDTest::MyVec2 > vec2
Gaudi::Property< bool > m_CheckGood2ndStage
geo_constants calculate_gcorth(geo_constants geo, int nCoords, std::vector< bool > const &usable)
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)
Gaudi::Property< std::string > m_skipFile
double dot(const double *vec1, const double *vec2, size_t size)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Gaudi::Property< bool > m_Monitor
void DumpConstants(std::vector< geo_constants > &geo_consts, std::string &filename)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
FPGATrackSimTrackPars m_sliceMax
ServiceHandle< ITHistSvc > m_tHistSvc
Gaudi::Property< int > m_region
bool GetConstants(FPGATrackSimMatrixAccumulator const &acc_norm, geo_constants &geo, int entryNumber)
std::vector< bool > m_skipList
const FPGATrackSimPlaneMap * m_pmap
Gaudi::Property< bool > m_isSecondStage
std::vector< double > matrix_multiply(std::vector< double > const &A, std::vector< double > const &b)
virtual void setOwner(IDataHandleHolder *o)=0
uint32_t getDim(size_t logiLayer) const
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.
uint32_t getCoordOffset(size_t logiLayer) const
FPGATrackSimMatrixAccumulator normalize(FPGATrackSimMatrixAccumulator const &acc_raw)
virtual StatusCode sysInitialize() override
Override sysInitialize.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
FPGATrackSimTrackParsI m_sliceNBins
::StatusCode StatusCode
StatusCode definition for legacy code.
std::vector< double > Vcurvature
std::vector< std::vector< geo_constants > > m_geo_consts_with_missinghit
std::vector< double > Vd0
std::vector< geo_constants > m_geo_consts
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
FPGATrackSimTrackPars pars
bool failedConstants(geo_constants const &geo, std::vector< bool > const &usable)
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
FPGATrackSimTrackPars m_sliceMin
bool isSingular(TMatrixD mtx)
std::string to_string(const DetectorType &type)
std::vector< double > Vz0
void createMissingHitsConstants(FPGATrackSimMatrixAccumulator const &acc_norm, size_t entry)
T_ResultType project(ParameterMapping::type< N > parameter_map, const T_Matrix &matrix)
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)
DataObjIDColl m_extendedExtraObjects
std::vector< double > Veta
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.
StatusCode bookHistograms()
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
#define ATH_MSG_WARNING(x)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
AthAlgorithm()
Default constructor:
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
reader
read the goodrunslist xml file(s)
void readSkipList(size_t nEntries)
writer
show summary of content
Gaudi::Property< bool > m_dumpMissingHitsConstants
std::vector< double > Vphi
StatusCode prepareOutputTree()
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
StatusCode copySliceTree(TFile *file)
Gaudi::Property< std::string > m_cfpath
void fillConstTree(std::vector< module_t > &modules, FPGATrackSimMatrixAccumulator &acc, geo_constants &geo)