33 LogDebug(
"TkDetLayers") <<
"==== DEBUG TIBRing =====";
37 for (vector<const GeomDet*>::const_iterator
i =
theDets.begin();
i !=
theDets.end();
i++) {
38 LogDebug(
"TkDetLayers") <<
"Ring's Det pos z,perp,eta,phi: " << (**i).position().z() <<
" , "
39 << (**i).position().perp() <<
" , " << (**i).position().eta() <<
" , "
40 << (**i).position().phi();
42 LogDebug(
"TkDetLayers") <<
"==== end DEBUG TIBRing =====";
53 for (vector<const GeomDet*>::const_iterator
i =
first;
i !=
last;
i++) {
54 float r = (**i).surface().position().perp();
61 throw DetLayerException(
"TIBRing construction failed: detectors not at constant radius");
65 vector<const GeomDet*>::const_iterator
last) {
66 vector<double> adj_diff(
last -
first - 1);
67 for (
int i = 0; i < static_cast<int>(adj_diff.size());
i++) {
68 vector<const GeomDet*>::const_iterator curent =
first +
i;
69 adj_diff[
i] = (**(curent + 1)).surface().position().phi() - (**curent).surface().position().phi();
76 edm::LogError(
"TkDetLayers") <<
"TIBRing Warning: not periodic. ndets=" << ndets;
77 for (
int j = 0;
j < ndets;
j++) {
79 <<
theDets[
j]->surface().position().phi() <<
") ";
89 if (normal.
dot(radial) <= 0)
105 edm::LogError(
"TkDetLayers") <<
"temporary dummy implementation of TIBRing::compatible()!!";
106 return pair<bool, TrajectoryStateOnSurface>();
112 vector<DetGroup>&
result)
const {
113 vector<DetGroup> closestResult;
122 if (closestResult.empty()) {
130 float detWidth = closestGel.det()->surface().bounds().width();
132 vector<DetGroup> nextResult;
143 result.swap(closestResult);
146 result.swap(closestResult);
150 if (
window > 0.5
f * detWidth) {
160 vector<DetGroup>&
result)
const {
168 int quarter =
theDets.size() / 4;
169 for (
int idet = negStart; idet >= negStart - quarter + 1; idet--) {
173 vector<DetGroup> tmp1;
174 if (!
Adder::add(*neighbor, tsos, prop, est, tmp1))
176 vector<DetGroup> tmp2;
178 vector<DetGroup> newResult;
182 for (
int idet = posStart; idet < posStart + quarter - 1; idet++) {
186 vector<DetGroup> tmp1;
187 if (!
Adder::add(*neighbor, tsos, prop, est, tmp1))
189 vector<DetGroup> tmp2;
191 vector<DetGroup> newResult;
218 LocalPoint closestPos = Crossing::positionOnly(cylPoint, cylDir,
rho, closestPlane);
219 float closestDist = closestPos.
x();
226 LocalPoint nextPos = Crossing::positionOnly(cylPoint, cylDir,
rho, nextPlane);
227 float nextDist = nextPos.x();