00001 /******************************************************************************* 00002 * Project: BaBar detector at the SLAC PEP-II B-factory 00003 * Package: EvtGenBase 00004 * File: $Id: EvtDalitzCoord.hh,v 1.1.1.2 2007/10/26 05:03:14 pingrg Exp $ 00005 * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002 00006 * 00007 * Copyright (C) 2002 Caltech 00008 *******************************************************************************/ 00009 00010 // Two dimensional coordinate of a point in a Dalitz plot 00011 00012 #ifndef EVT_DALITZ_COORD_HH 00013 #define EVT_DALITZ_COORD_HH 00014 00015 #include "EvtGenBase/EvtCyclic3.hh" 00016 00017 #include <iostream> 00018 00019 class EvtDalitzCoord { 00020 00021 00022 public: 00023 00024 // ctor, dtor 00025 00026 EvtDalitzCoord(); 00027 EvtDalitzCoord(EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2); 00028 EvtDalitzCoord(const EvtDalitzCoord& other); 00029 ~EvtDalitzCoord(); 00030 00031 inline EvtCyclic3::Pair pair1() const { return _i1; } 00032 inline EvtCyclic3::Pair pair2() const { return _i2; } 00033 inline double q1() const { return _q1; } 00034 inline double q2() const { return _q2; } 00035 00036 00037 // It's nice to have an equality operator for 00038 // a coordinate. However, beware effects of numerical precision 00039 00040 bool operator==(const EvtDalitzCoord&) const; 00041 00042 void print(std::ostream&) const; 00043 00044 private: 00045 00046 // Two coordinates define the point 00047 00048 EvtCyclic3::Pair _i1; 00049 EvtCyclic3::Pair _i2; 00050 00051 double _q1; 00052 double _q2; 00053 }; 00054 00055 std::ostream& operator<<(std::ostream&,const EvtDalitzCoord&); 00056 00057 #endif 00058 00059 00060 00061 00062 00063