20using namespace asg::msgUserCode;
30 std::ifstream fin(filepath);
34 throw (
"FPGATrackSimRegionSlices couldn't open " + filepath);
39 std::string line, key;
44 while (getline(fin, line))
46 if (line.empty() || line[0] ==
'#')
continue;
47 std::istringstream sline(line);
49 ok = ok && (sline >> key);
53 ok = ok && (sline >> region);
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";
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) & 0x1;
97 min.phi = phibinSize*phibin;
98 max.phi = phibinSize*(phibin+1);
107 min.eta = etabinSize * etabin;
108 max.eta = etabinSize * (etabin+1);
111 min.eta = -etabinSize * (etabin+1);
112 max.eta = -etabinSize * etabin;
139 if (cur[i] <
min[i])
return false;
140 if (cur[i] >
max[i])
return false;
Stores slice definitions for FPGATrackSim regions.
FPGATrackSimRegionSlices(std::string const &filepath)
bool inRegion(unsigned region, FPGATrackSimTruthTrack const &t) const
std::vector< std::pair< FPGATrackSimTrackPars, FPGATrackSimTrackPars > > m_regions