00001 #include "EvtGenBase/EvtPatches.hh" 00002 #include "EvtGenBase/EvtMBreitWigner.hh" 00003 #include <cstdlib> 00004 00005 using std::endl; 00006 00007 EvtMBreitWigner::EvtMBreitWigner( const EvtId& id, const vector<string>& args ) 00008 { 00009 if( args.size() != 0 ) { 00010 report(ERROR, "EvtGen")<<"Unknown input arguments passed in to lineshape."<<endl; 00011 ::abort(); 00012 } 00013 00014 _id = id; 00015 _width = EvtPDL::getWidth( id ); 00016 _resmass = EvtPDL::getMeanMass( id ); 00017 } 00018 00019 EvtComplex EvtMBreitWigner::shape( const vector<EvtVector4R>& product ) const 00020 { 00021 static EvtComplex I(0.0, 1.0); 00022 double mass = _node->get4vector(product).mass(); 00023 00024 return sqrt(_width/( EvtConst::twoPi )) * 1/( mass - _resmass - I * _width/2 ); 00025 } 00026 00027 00028 EvtMLineShape * EvtMBreitWigner::duplicate() const 00029 { 00030 vector<string> args; 00031 EvtMLineShape* tmp=new EvtMBreitWigner( _id, args ); 00032 return tmp; 00033 } 00034