126 idx_max = nlines - 1;
128 dist = dist_min = dist_max = -1.;
130 while (idx_max > idx_min + 1) {
133 Bool_t point_above_line =
line->WhereAmI(
x,
y, position);
135 if (point_above_line) {
138 idx += (
Int_t)((idx_max - idx) / 2 + 0.5);
143 idx -= (
Int_t)((idx - idx_min) / 2 + 0.5);
153 if (dist_max < dist_min) {
172 if (!nlines)
return 0;
174 idx_max = nlines - 1;
176 dist = dist_min = dist_max = -1.;
178 while (idx_max > idx_min + 1) {
181 Bool_t point_above_line =
line->WhereAmI(
x,
y, position);
183 if (point_above_line) {
186 idx += (
Int_t)((idx_max - idx) / 2 + 0.5);
191 idx -= (
Int_t)((idx - idx_min) / 2 + 0.5);
200 if (idx_max == nlines - 1) {
226 if (dist_max < dist_min) {
247 while ((ii > -1 && ii < nlines)) {
249 if (
l->IsBetweenEndPoints(
x,
y, axis))
break;
252 if (ii < 0 || ii >= nlines) {
268 return TClass::GetClass(
"KVIDLine");
272 return TClass::GetClass(
"KVIDLine");
#define ClassDef(name, id)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Base class for particle identification in a 2D map.
KVList fIdentifiers
list of identification objects
Int_t GetNumberOfIdentifiers() const
KVIDentifier * GetIdentifierAt(Int_t index) const
Abstract base class for 2D identification grids in e.g. (dE,E) maps.
KVIDLine * FindNearestIDLineFast(Double_t x, Double_t y, const Char_t *position, Int_t &idx, Int_t &idx_min, Int_t &idx_max, Double_t &dist, Double_t &dist_min, Double_t &dist_max) const
virtual void CalculateLineWidths()
KVIDLine * FindNearestEmbracingIDLine(Double_t x, Double_t y, const Char_t *position, const Char_t *axis, Int_t &idx, Int_t &idx_min, Int_t &idx_max, Double_t &dist, Double_t &dist_min, Double_t &dist_max) const
KVIDGrid()
Default constructor.
KVIDLine * FindNextEmbracingLine(Int_t &index, Int_t inc_index, Double_t x, Double_t y, const Char_t *axis) const
void init()
Initialisations, used by constructors.
virtual TClass * DefaultOKLineClass()
KVIDLine * NewLine(const Char_t *idline_class="")
Int_t GetIDLinesEmbracingPoint(const Char_t *direction, Double_t x, Double_t y) const
virtual TClass * DefaultIDLineClass()
TObjArray fEmbracingLines
temporary array used by GetIDLinesEmbracingPoint
void ReadIdentifierFromAsciiFile(TString &name, TString &type, TString &cl, std::ifstream &gridfile)
Base class for lines/cuts used for particle identification in 2D data maps.
Double_t DistanceToLine(Double_t px, Double_t py, Int_t &)
Bool_t WhereAmI(Double_t px, Double_t py, Option_t *opt)
TObject * UncheckedAt(Int_t i) const
virtual Int_t IndexOf(const TObject *obj) const
double dist(AxisAngle const &r1, AxisAngle const &r2)