00001 //----------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: EvtMassAmp.hh,v 1.2 2011/01/06 22:57:56 pingrg Exp $ 00004 // 00005 // Environment: 00006 // This software is part of the EvtGen package developed jointly 00007 // for the BaBar and CLEO collaborations. If you use all or part 00008 // of it, please give an appropriate acknowledgement. 00009 // 00010 // Copyright Information: 00011 // Copyright (C) 1998 Caltech, UCSB 00012 // 00013 // Module creator: 00014 // Alexei Dvoretskii, Caltech, 2001-2002. 00015 //----------------------------------------------------------------------- 00016 00017 // Relativistic lineshape for a two-body decay of a resonance to two 00018 // pseudoscalars. The mass dependence of the width and the vertex factors 00019 // are included in the calculation. 00020 00021 #ifndef EVT_MASSAMP_HH 00022 #define EVT_MASSAMP_HH 00023 00024 #include "EvtGenBase/EvtPoint1D.hh" 00025 #include "EvtGenBase/EvtAmplitude.hh" 00026 #include "EvtGenBase/EvtPropBreitWignerRel.hh" 00027 #include "EvtGenBase/EvtTwoBodyVertex.hh" 00028 00029 class EvtMassAmp : public EvtAmplitude<EvtPoint1D> { 00030 public: 00031 00032 EvtMassAmp(const EvtPropBreitWignerRel& prop, const EvtTwoBodyVertex& vd); 00033 EvtMassAmp(const EvtMassAmp& other); 00034 virtual ~EvtMassAmp(); 00035 00036 virtual EvtComplex amplitude(const EvtPoint1D& p) const; 00037 00038 virtual EvtAmplitude<EvtPoint1D>* clone() const 00039 { return new EvtMassAmp(*this); } 00040 00041 void setBirthVtx(const EvtTwoBodyVertex& vb) 00042 { 00043 _vb = new EvtTwoBodyVertex(vb); 00044 } 00045 00046 void addBirthFact() { _useBirthFact = true; } 00047 void addDeathFact() { _useDeathFact = true; } 00048 void addBirthFactFF() { _useBirthFactFF = true; } 00049 void addDeathFactFF() { _useDeathFactFF = true; } 00050 void fixUpMassForMax() { _fixUpMassForMax = true;} 00051 void addFactorPn(double factor){_addfactor = factor;} 00052 00053 private: 00054 00055 EvtPropBreitWignerRel _prop; 00056 EvtTwoBodyVertex _vd; 00057 EvtTwoBodyVertex* _vb; 00058 double _addfactor; 00059 00060 bool _useBirthFact; 00061 bool _useDeathFact; 00062 bool _useBirthFactFF; 00063 bool _useDeathFactFF; 00064 bool _fixUpMassForMax; 00065 }; 00066 00067 00068 #endif