33 hits_.push_back(hit1);
34 hits_.push_back(hit2);
35 hits_.push_back(hit3);
72 hits_.push_back(hit1);
73 hits_.push_back(hit2);
96 for (std::vector<const TrackingRecHit*>::const_iterator
hit =
hits_.begin();
113 center.
y() * center.
y() );
140 std::vector<LineRZ>
lines;
141 for (std::vector<GlobalPoint>::const_iterator point1 =
points_.begin();
142 point1 !=
points_.end(); ++point1) {
143 for (std::vector<GlobalPoint>::const_iterator point2 = point1+1;
144 point2 !=
points_.end(); ++point2) {
145 lines.push_back(
LineRZ(*point1, *point2));
149 double netTheta = 0.;
150 for (std::vector<LineRZ>::const_iterator
line = lines.begin();
152 netTheta +=
line->Theta();
154 return netTheta/(double)lines.size();
173 std::vector<LineXY>
lines;
174 for (std::vector<GlobalPoint>::const_iterator point1 =
points_.begin();
175 point1 !=
points_.end(); ++point1) {
176 for (std::vector<GlobalPoint>::const_iterator point2 = point1+1;
177 point2 !=
points_.end(); ++point2) {
178 lines.push_back(
LineXY(*point1,*point2));
182 for (std::vector<LineXY>::const_iterator
line = lines.begin();
184 netPhi +=
line->Phi();
186 return netPhi/(double)lines.size();
197 double phi = 100000.;
206 for (
unsigned int i=1;
i<
points_.size(); ++
i) {
216 if (firstPoint.
barePhi() == centerPhi) {
218 for (
unsigned int i=1;
i<
points_.size(); ++
i) {
219 if (nextHit.
perp() == firstPoint.
perp() ||
225 firstPoint = nextHit;
229 if (firstPoint.
barePhi() > centerPhi) {
238 else if (firstPoint.
barePhi() < centerPhi) {
255 std::ostringstream ost;
258 ost <<
"Straight Line: number of points: " <<
points_.size() <<
"\n";
259 unsigned int counter = 0;
260 for ( std::vector<GlobalPoint>::const_iterator
point =
points_.begin();
264 ost <<
" Point " << counter <<
": " <<
point->x() <<
"," <<
point->y() <<
"\n";
267 ost <<
"Circle: number of points: " <<
points_.size() <<
"\n";
268 ost <<
" Radius : " <<
radius_ <<
"\n";
269 ost <<
" In the barrel : " <<
inBarrel_ <<
"\n";
272 unsigned int counter = 0;
273 for ( std::vector<GlobalPoint>::const_iterator
point =
points_.begin();
277 ost <<
" Point " << counter <<
" : " <<
point->x() <<
"," <<
point->y() <<
"\n";
290 ost <<
"Straight Line: number of points: " << seed.
Points().size() <<
"\n";
291 unsigned int counter = 0;
292 for ( std::vector<GlobalPoint>::const_iterator
point = seed.
Points().begin();
296 ost <<
" Point " << counter <<
": " <<
point->x() <<
"," <<
point->y() <<
"\n";
299 ost <<
"Circle: number of points: " << seed.
Points().size() <<
"\n";
300 ost <<
" Radius : " << seed.
Radius() <<
"\n";
301 ost <<
" In the barrel : " << seed.
InBarrel() <<
"\n";
303 ost <<
" Center : " << seed.
Center().
x() <<
"," << seed.
Center().
y() <<
"\n";
304 unsigned int counter = 0;
305 for ( std::vector<GlobalPoint>::const_iterator
point = seed.
Points().begin();
309 ost <<
" Point " << counter <<
" : " <<
point->x() <<
"," <<
point->y() <<
"\n";
319 unsigned int differentHitsCut)
const {
343 double centerCut)
const {
361 if ( differenceCenter/averageCenter <= centerCut ) {
376 double radiusCut)
const {
388 if ( differenceRadius/averageRadius <= radiusCut ) {
403 unsigned int differentHitsCut)
const {
413 unsigned int counter = 0;
414 for ( std::vector<const TrackingRecHit*>::const_iterator hit1 =
hits_.begin(),
415 hit1End =
hits_.end();
418 bool included =
false;
419 for ( std::vector<const TrackingRecHit*>::const_iterator hit2 = circle->
begin_hits(),
423 if ( *hit1 == *hit2 ) {
432 if ( counter <= differentHitsCut ) {
450 theZ_ = std::fabs(point1.
z()-point2.
z());
452 if ((point1.
perp() >= point2.
perp() &&
453 point1.
z() < point2.
z()) ||
455 point2.
z() < point1.
z()))
472 theX_ = std::fabs(point1.
x()-point2.
x());
473 theY_ = std::fabs(point1.
y()-point2.
y());
475 if ((point1.
perp() >= point2.
perp() &&
476 point1.
x() < point2.
x()) ||
478 point2.
x() < point1.
x()))
483 if ((point1.
perp() >= point2.
perp() &&
484 point1.
y() < point2.
y()) ||
486 point2.
y() < point1.
y()))
bool Compare(const RoadSearchCircleSeed *circle, double centerCut, double radiusCut, unsigned int differentHitsCut) const
double calculateEta(double theta) const
Global3DPoint GlobalPoint
Geom::Theta< T > theta() const
std::ostream & operator<<(std::ostream &out, const ALILine &li)
std::pair< double, double > line
std::vector< const TrackingRecHit * >::const_iterator begin_hits() const
GlobalPoint Center() const
double calculateImpactParameter(GlobalPoint ¢er, double radius)
Tan< T >::type tan(const T &t)
double ImpactParameter() const
bool CompareDifferentHits(const RoadSearchCircleSeed *circle, unsigned int differentHitsCut) const
std::vector< const TrackingRecHit * >::const_iterator end_hits() const
std::vector< GlobalPoint > points_
bool CompareRadius(const RoadSearchCircleSeed *circle, double radiusCut) const
bool CompareCenter(const RoadSearchCircleSeed *circle, double centerCut) const
RoadSearchCircleSeed(const TrackingRecHit *hit1, const TrackingRecHit *hit2, const TrackingRecHit *hit3, GlobalPoint &point1, GlobalPoint &point2, GlobalPoint &point3)
std::vector< const TrackingRecHit * > hits_
LineRZ(GlobalPoint point1, GlobalPoint point2)
std::vector< GlobalPoint > Points() const
std::string print() const
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
LineXY(GlobalPoint point1, GlobalPoint point2)