20 using namespace asg::msgUserCode;
30 std::ifstream
fin(filepath);
34 throw (
"FPGATrackSimRegionSlices couldn't open " + filepath);
46 if (
line.empty() ||
line[0] ==
'#')
continue;
47 std::istringstream sline(
line);
49 ok = ok && (sline >>
key);
53 ok = ok && (sline >> region);
54 if (ok && region > 0) m_regions.push_back({
min,
max });
55 ok = ok && (region == m_regions.size());
59 else if (
key ==
"phi") ok = ok && (sline >>
min.phi >>
max.phi);
60 else if (
key ==
"eta") ok = ok && (sline >>
min.eta >>
max.eta);
61 else if (
key ==
"qpt") ok = ok && (sline >>
min.qOverPt >>
max.qOverPt);
62 else if (
key ==
"d0") ok = ok && (sline >>
min.d0 >>
max.d0);
63 else if (
key ==
"z0") ok = ok && (sline >>
min.z0 >>
max.z0);
72 throw "FPGATrackSimRegionSlices read error";
75 m_regions.push_back({
min,
max });
80 float maxd0,
float maxz0,
float maxQoverPt)
85 min.qOverPt = minqQverPt;
88 max.qOverPt = maxQoverPt;
91 for (
unsigned i=0;
i < 1280;
i++) {
92 double phibinSize =
M_PI/16;
93 double etabinSize = 0.2;
94 int phibin =
i & 0x1f;
95 int etabin = (
i >> 6) & 0x1f;
96 int etaside = (
i >> 5) & 0
x1;
97 min.phi = phibinSize*phibin;
98 max.phi = phibinSize*(phibin+1);
100 min.eta = etabinSize * etabin;
101 max.eta = etabinSize * (etabin+1);
104 min.eta = -etabinSize * (etabin+1);
105 max.eta = -etabinSize * etabin;
107 m_regions.push_back({
min,
max });
121 if (region >= m_regions.size())
123 ANA_MSG_WARNING(
"inRegion() region " << region <<
" out-of-bounds " << m_regions.size());