00001 /******************************************************************************* 00002 * Project: BaBar detector at the SLAC PEP-II B-factory 00003 * Package: EvtGenBase 00004 * File: $Id: EvtTwoBodyKine.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 // Descriptions of the kinematics of a two-body decay. 00011 00012 #ifndef EVT_TWO_BODY_KINE_HH 00013 #define EVT_TWO_BODY_KINE_HH 00014 00015 #include <iostream> 00016 00017 class EvtTwoBodyKine { 00018 00019 public: 00020 00021 enum Index {A,B,AB}; 00022 00023 EvtTwoBodyKine(); 00024 EvtTwoBodyKine(double mA, double mB, double mAB); 00025 EvtTwoBodyKine(const EvtTwoBodyKine& other); 00026 ~EvtTwoBodyKine(); 00027 00028 // Accessors 00029 00030 inline double mA() const { return _mA; } 00031 inline double mB() const { return _mB; } 00032 inline double mAB() const { return _mAB; } 00033 double m(Index i) const; 00034 00035 // Momentum of the other two particles in the 00036 // rest-frame of particle i. 00037 00038 double p(Index i = AB) const; 00039 00040 // Energy of particle i in the rest frame of particle j 00041 00042 double e(Index i, Index j) const; 00043 00044 void print(std::ostream& os) const; 00045 00046 private: 00047 00048 double _mA; 00049 double _mB; 00050 double _mAB; 00051 }; 00052 00053 std::ostream& operator<<(std::ostream& os, const EvtTwoBodyKine& p); 00054 00055 #endif