/* * Amplitude.cpp * * Created on: Jan 14, 2012 * Author: Anastasia Karavdina */ #include "Amplitude.h" #include "qft++.h" #include "TwoParticleState.h" #include #include #include #include "TMath.h" #include "Utils.h" #include "TLorentzVector.h" #include "TVector3.h" Amplitude::Amplitude(Chain ch) { _ch = ch; } Amplitude::Amplitude(const Amplitude& a1){ _ch = a1._ch; } Amplitude::~Amplitude() { } /// fill list of particles which built particle#i for TwoParticleState /// lfpcode - list of f.p. codes void Amplitude::Build(vector lfpcode){ list lstates = _ch.GetStates(); const int stsize = lstates.size(); vector fbusy(stsize,false); int cpRpr = -1;//code of resonance from previous decay vector posR; //int cpRprpr = -1;//code of resonance from previous-previous decay vector posRpr; // vector usedpos; list nlstates; for (list::iterator it = lstates.begin(); it != lstates.end(); it++){ //for (list::iterator it = lstates.end(); it != lstates.begin(); --it){ // cout<<"usedpos.size()="< Amplitude::Calc(list llfp, int eJm, int elya){ vector lfp; for (list::iterator it = llfp.begin(); it != llfp.end(); it++){ //(*it).Print(); lfp.push_back((*it)); } complex Ares(1,0); //cout<<"Ares = "< lstates = _ch.GetStates(); for (list::iterator it = lstates.begin(); it != lstates.end(); it++){ TwoParticleState curst=(*it); vector pos1 = curst.ListFP1(); vector pos2 = curst.ListFP2(); TLorentzVector sumFP; TVector3 mom1; TVector3 mom2; //cout<<"particle#1 build from "; for(int ip1=0;ip1 lya1 = curst.Lya1(); vector lya2 = curst.Lya2(); vector Jm = curst.Jm(); double invmass = sumFP.M(); //cout<<"current invar, mass = "< a_add; for(int im=0;im amp = nfcoef*Wigner_d(j,m,lya, theta)*fphi; ///complex amp = nfcoef*Wigner_d(j,m,lya, theta); //cout<