00001 /******************************************************************************* 00002 * Project: BaBar detector at the SLAC PEP-II B-factory 00003 * Package: EvtGenBase 00004 * File: $Id: EvtTwoBodyVertex.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-body propagator vertex AB->A,B with an attached Blatt-Weisskopf form factor. 00011 00012 #ifndef EVT_TWO_BODY_VERTEX_HH 00013 #define EVT_TWO_BODY_VERTEX_HH 00014 00015 #include <iostream> 00016 #include "EvtGenBase/EvtTwoBodyKine.hh" 00017 #include "EvtGenBase/EvtBlattWeisskopf.hh" 00018 00019 #include <iosfwd> 00020 00021 class EvtTwoBodyVertex { 00022 00023 public: 00024 00025 EvtTwoBodyVertex(); 00026 EvtTwoBodyVertex(double mA, double mB, double mAB, int L); 00027 EvtTwoBodyVertex(const EvtTwoBodyVertex& other); 00028 ~EvtTwoBodyVertex(); 00029 00030 double widthFactor(EvtTwoBodyKine x) const; 00031 double formFactor(EvtTwoBodyKine x) const; 00032 double phaseSpaceFactor(EvtTwoBodyKine x, EvtTwoBodyKine::Index) const; 00033 00034 inline int L() const { return _LL; } 00035 inline double mA() const { return _kine.mA(); } 00036 inline double mB() const { return _kine.mB(); } 00037 inline double mAB() const { return _kine.mAB(); } 00038 inline double pD() const { return _p0; } 00039 void print(std::ostream& os) const; 00040 00041 void set_f(double R); 00042 00043 private: 00044 00045 EvtTwoBodyKine _kine; 00046 int _LL; 00047 double _p0; 00048 EvtBlattWeisskopf* _f; // optional Blatt-Weisskopf form factor 00049 00050 }; 00051 00052 std::ostream& operator<<(std::ostream& os, const EvtTwoBodyVertex& v); 00053 00054 #endif