3#ifndef FPGATrackSimBinUtil_H
4#define FPGATrackSimBinUtil_H
45struct ParSet :
public std::array<double, FPGATrackSimTrackPars::NPARS> {
47 ParSet(
const std::vector<double> &val);
48 operator const std::vector<double>()
const;
50struct IdxSet :
public std::array<unsigned, FPGATrackSimTrackPars::NPARS> {
52 IdxSet(
const std::vector<unsigned> &val);
53 operator const std::vector<unsigned>()
const;
57const IdxSet invalidBin{std::initializer_list<unsigned>({std::numeric_limits<unsigned>::max(),std::numeric_limits<unsigned>::max(),
58 std::numeric_limits<unsigned>::max(),std::numeric_limits<unsigned>::max(),std::numeric_limits<unsigned>::max()})};
65std::vector<unsigned>
subVec(
const std::vector<unsigned> &elems,
70 const std::vector<unsigned> &subvecidx);
80std::ostream &
operator<<(std::ostream &os,
const std::vector<unsigned> &idx);
86 template <
typename T>
void writeVar(
const std::string &var, T val) {
87 auto emplace_result =
m_map.try_emplace(
88 var,
m_setname +
"_" + var +
"_const.txt", std::ios_base::out);
89 if (!emplace_result.second) {
90 emplace_result.first->second <<
",\n";
92 emplace_result.first->second << val;
97 std::map<std::string, std::fstream>
m_map;
103 std::shared_ptr<const FPGATrackSimHit>
hitptr;
107 double rzrad()
const;
108 static const unsigned invalidLayer = std::numeric_limits<unsigned>::max();
Scalar eta() const
pseudorapidity method
Scalar theta() const
theta method
: FPGATrackSim-specific class to represent an hit in the detector.
Structs that store the 5 track parameters.
static double parsToTrkPhi(const FPGATrackSimTrackPars &pars, FPGATrackSimHit const *hit)
static double dPhiHitTrkFromPars(double r, const FPGATrackSimTrackPars &pars)
static double phiFromPars(double r, const FPGATrackSimTrackPars &pars)
static double ThetaFromEta(double eta)
static constexpr double CurvatureConstant
static double zFromPars(double r, const FPGATrackSimTrackPars &pars)
static double dPhidQOverPt(double hitr)
static double dZdEta(double eta)
static double EtaFromTheta(double theta)
std::vector< IdxSet > makeVariationSet(const std::vector< unsigned > &scanpars, const IdxSet &idx)
std::vector< unsigned > subVec(const std::vector< unsigned > &elems, const IdxSet &invec)
std::ostream & operator<<(std::ostream &os, const std::vector< unsigned > &idx)
void setIdxSubVec(IdxSet &idx, const std::vector< unsigned > &subvecelems, const std::vector< unsigned > &subvecidx)
static constexpr double A
IdxSet(const std::vector< unsigned > &val)
ParSet(const std::vector< double > &val)
StoredHit(const std::shared_ptr< const FPGATrackSimHit > &hit)
static const unsigned invalidLayer
std::shared_ptr< const FPGATrackSimHit > hitptr
StreamManager(const std::string &setname)
std::map< std::string, std::fstream > m_map
void writeVar(const std::string &var, T val)