ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimBankSvc.h
Go to the documentation of this file.
1// Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3#ifndef TRIGFPGATrackSimBANKSVC_H
4#define TRIGFPGATrackSimBANKSVC_H
5
7#include "GaudiKernel/Service.h"
13
14
15class FPGATrackSimBankSvc : public extends< AthService, IFPGATrackSimBankSvc >
16{
17 public:
18
20 // AthService
21
22 FPGATrackSimBankSvc(const std::string& name, ISvcLocator* svc);
23 virtual ~FPGATrackSimBankSvc() = default;
24
25 virtual StatusCode initialize() override;
26
28 // IFPGATrackSimBankSvc
29
30 virtual const FPGATrackSimFitConstantBank* FitConstantBank_1st(int missedPlane = -1) override;
31 virtual const FPGATrackSimFitConstantBank* FitConstantBank_2nd(int missedPlane = -1) override;
32 virtual const FPGATrackSimSectorBank* SectorBank_1st() override;
33 virtual const FPGATrackSimSectorBank* SectorBank_2nd() override;
34 virtual const FPGATrackSimSectorSlice* SectorSlice() override;
35
36 private:
37 // Gaudi properties
38
39 Gaudi::Property<float> m_phiShift {this, "phiShift", 0.0, "Amount to shift phi for fit cosntant banks"};
40 Gaudi::Property<std::string> m_path_constants_1st {this, "constants_1st", "", "Path of the 1st stage constants"};
41 Gaudi::Property<std::string> m_path_constants_2nd {this, "constants_2nd", "", "Path of the 2nd stage constants"};
42 Gaudi::Property<std::string> m_path_sectorbank_1st {this, "sectorBank_1st", "", "Path of the 1st stage sector bank"};
43 Gaudi::Property<std::string> m_path_sectorbank_2nd {this, "sectorBank_2nd", "", "Path of the 2nd stage sectorbank"};
44 Gaudi::Property<std::string> m_path_sectorslices {this, "sectorSlices", "", "Path of the sector slices"};
45 Gaudi::Property<std::string> m_bankTypes {this, "BankType", "FILE", "FILE or COOL (COOL/DB to be implemented)"};
46 Gaudi::Property<int> m_ncoords_1st {this, "NCoords_1st", 10, "Number of 1st stage coordinates"};
47 Gaudi::Property<int> m_ncoords_2nd {this, "NCoords_2nd", 18, "Number of 2nd stage coordinates"};
48 Gaudi::Property<std::string> m_path_NNconstants {this, "m_path_NNconstants", "", "Path for NN constants"};
49 Gaudi::Property<std::vector<std::string> > m_path_constants_1st_noguess {this, "constantsNoGuess_1st", {}, "Path of the 1st stage constants without guessing"};
50 Gaudi::Property<std::vector<std::string> > m_path_constants_2nd_noguess {this, "constantsNoGuess_2nd", {}, "Path of the 2nd stage constants without guessing"};
51 Gaudi::Property<bool> m_absQOverPtBinning { this, "qptAbsBinning", false, "Controls whether or not to interpret the bins as q/pt or |q/pt|"};
52 Gaudi::Property<std::vector<double> > m_qOverPtBins { this, "sectorQPtBins", {}, "q/pt bins for sector definition"};
53
54 ServiceHandle<IFPGATrackSimMappingSvc> m_FPGATrackSimMapping {this, "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"};
55
56
58 // Storage pointers
59 std::unique_ptr <FPGATrackSimFitConstantBank> m_FitConstantBank_1st = nullptr;
60 std::unique_ptr <FPGATrackSimFitConstantBank> m_FitConstantBank_2nd = nullptr;
61 std::vector<std::unique_ptr <FPGATrackSimFitConstantBank> > m_FitConstantBankNoGuess_1st;
62 std::vector<std::unique_ptr <FPGATrackSimFitConstantBank> > m_FitConstantBankNoGuess_2nd;
63 std::unique_ptr<FPGATrackSimSectorBank> m_SectorBank_1st = nullptr;
64 std::unique_ptr<FPGATrackSimSectorBank> m_SectorBank_2nd = nullptr;
65 std::unique_ptr<FPGATrackSimSectorSlice> m_SectorSlices = nullptr;
66
68 // Methods for lazy loading.
69 // missedPlane = -1 means banks where we guess any missing hits
70 bool LoadFitConstantBank_1st(int missedPlane = -1);
71 bool LoadFitConstantBank_2nd(int missedPlane = -1);
72 bool LoadSectorBank_1st();
73 bool LoadSectorBank_2nd();
74 bool LoadSectorSlice();
75
76};
77
78#endif // TRIGFPGATrackSimBANKSVC_H
This file declares a class that stores the module IDs of the sectors.
Stores the range of eta/phi/etc. of each sector.
std::unique_ptr< FPGATrackSimSectorBank > m_SectorBank_2nd
std::unique_ptr< FPGATrackSimFitConstantBank > m_FitConstantBank_2nd
FPGATrackSimBankSvc(const std::string &name, ISvcLocator *svc)
bool LoadFitConstantBank_1st(int missedPlane=-1)
Gaudi::Property< std::string > m_path_constants_2nd
std::unique_ptr< FPGATrackSimFitConstantBank > m_FitConstantBank_1st
Gaudi::Property< std::string > m_path_sectorslices
Gaudi::Property< int > m_ncoords_1st
Gaudi::Property< std::vector< double > > m_qOverPtBins
Gaudi::Property< std::string > m_path_constants_1st
Gaudi::Property< bool > m_absQOverPtBinning
virtual const FPGATrackSimSectorSlice * SectorSlice() override
virtual StatusCode initialize() override
Gaudi::Property< int > m_ncoords_2nd
Gaudi::Property< std::string > m_path_sectorbank_2nd
virtual const FPGATrackSimFitConstantBank * FitConstantBank_1st(int missedPlane=-1) override
Gaudi::Property< std::vector< std::string > > m_path_constants_2nd_noguess
Gaudi::Property< std::string > m_path_sectorbank_1st
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Gaudi::Property< std::string > m_path_NNconstants
std::unique_ptr< FPGATrackSimSectorSlice > m_SectorSlices
Gaudi::Property< std::vector< std::string > > m_path_constants_1st_noguess
virtual const FPGATrackSimSectorBank * SectorBank_2nd() override
bool LoadFitConstantBank_2nd(int missedPlane=-1)
std::vector< std::unique_ptr< FPGATrackSimFitConstantBank > > m_FitConstantBankNoGuess_2nd
std::unique_ptr< FPGATrackSimSectorBank > m_SectorBank_1st
virtual const FPGATrackSimFitConstantBank * FitConstantBank_2nd(int missedPlane=-1) override
std::vector< std::unique_ptr< FPGATrackSimFitConstantBank > > m_FitConstantBankNoGuess_1st
virtual const FPGATrackSimSectorBank * SectorBank_1st() override
virtual ~FPGATrackSimBankSvc()=default
Gaudi::Property< std::string > m_bankTypes
Gaudi::Property< float > m_phiShift