Definition at line 16 of file ALILine.h.
CLHEP::Hep3Vector ALILine::intersect |
( |
const ALILine & |
l2, |
|
|
bool |
notParallel = false |
|
) |
| |
Definition at line 27 of file ALILine.cc.
References funct::abs(), ALI_DBL_MAX, beam_dqm_sourceclient-live_cfg::cerr, gather_cfg::cout, ALIUtils::debug, ALIUtils::dump3v(), MillePedeFileConverter_cfg::e, beamvalidation::exit(), fact, pt(), vec(), x, and z.
Referenced by OptOCOPS::getMeasFromInters(), OptODistancemeter::makeMeasurement(), and ~ALILine().
29 std::cout <<
"***** ALILine::intersect (constructor) two lines: " << std::endl
30 <<
" line1: " << *
this << std::endl
31 <<
" line2: " << l2 << std::endl;
33 CLHEP::Hep3Vector inters;
35 double acosvec =
vec().dot(l2.
vec()) /
vec().mag() / l2.
vec().mag();
38 std::cout <<
"\t Determination of acosvec = vec().dot(l2.vec()) / vec().mag() / l2.vec().mag() " << std::endl
43 std::cout <<
"\t vec().mag() = " <<
vec().mag() << std::endl;
44 std::cout <<
"\t l2.vec().mag() = " << l2.
vec().mag() << std::endl << std::endl;
48 std::cout <<
" acosvec = " << acosvec << std::endl;
51 std::cerr <<
" !!!EXITING ALILine::intersect: two lines are parallel" << std::endl;
55 std::cout <<
" !!! ALILine::intersect: two lines are parallel (no errors)" << std::endl;
79 std::cout << std::endl << std::endl <<
"*** START CALC OF FACT ***" << std::endl;
80 std::cout <<
" ==================" << std::endl << std::endl;
81 std::cout <<
"*** Determination of fact ->";
83 <<
vec().y() * l2.
pt().x() -
vec().x() * l2.
pt().y() -
vec().y() *
pt().x() +
vec().x() *
pt().y()
100 std::cout <<
" ** Problem: old_fact_denominator -> " << old_fact_denominator << std::endl;
103 std::cout <<
" ** Problem: fact -> " << fact << std::endl;
106 std::cout <<
" ** Division by 0 !!! " << std::endl;
108 std::cout <<
" ** Must rotate to yz plane for calculation (X-> Z) ";
110 fact = (-1 *
vec().y() * l2.
pt().z() +
vec().z() * l2.
pt().y() +
vec().y() *
pt().z() -
vec().z() *
pt().y()) /
111 (-1 *
vec().z() * l2.
vec().y() +
vec().y() * l2.
vec().z());
114 std::cout <<
"\t -- 1st Recalculation of fact in yz plane = " << fact << std::endl;
116 old_fact_denominator2 = -1 *
vec().z() * l2.
vec().y() +
vec().y() * l2.
vec().z();
120 std::cout <<
" ** Must rotate to xz plane for calculation (Y-> -Z) ";
122 std::cout <<
" ** Problem: old_fact_denominator2 -> " << old_fact_denominator2 << std::endl;
125 fact = (-1 *
vec().z() * l2.
pt().x() +
vec().x() * l2.
pt().z() +
vec().z() *
pt().x() -
vec().x() *
pt().z()) /
126 (-1 *
vec().x() * l2.
vec().z() +
vec().z() * l2.
vec().x());
129 std::cout <<
"\t -- 2nd Recalculation of fact in xz plane = " << fact << std::endl;
133 std::cout <<
"*!* 2nd calculation sufficient" << std::endl;
138 std::cout <<
"*!* Standard calculation - things are fine" << std::endl;
141 <<
vec().y() * l2.
pt().x() -
vec().x() * l2.
pt().y() -
vec().y() *
pt().x() +
vec().x() *
pt().y()
142 <<
" / " <<
vec().x() * l2.
vec().y() -
vec().y() * l2.
vec().x() <<
" ) = " << fact << std::endl;
153 inters = l2.
pt() + fact * l2.
vec();
156 std::cout <<
"Determination of intersection = l2.pt() + fact * l2.vec()" << std::endl << std::endl;
158 std::cout <<
"\t --> fact = " << fact << std::endl;
159 std::cout <<
"\t --> l2.vec() = " << l2.
vec() << std::endl;
const CLHEP::Hep3Vector & pt() const
Abs< T >::type abs(const T &t)
static void dump3v(const CLHEP::Hep3Vector &vec, const std::string &msg)
const CLHEP::Hep3Vector & vec() const