6 #include "TStopwatch.h"
22 unsigned int nbins=_tree->GetEntries();
23 cout << nbins <<
" mass bins in input data." << endl;
24 unsigned int nbinsInRange=0;
26 for(
unsigned im=0;im<nbins;++im){
28 double mass=_rhom->massBinCenter();
29 if(mass>=_mmin && mass<=_mmax)++nbinsInRange;
31 cout << nbinsInRange <<
" mass bins in allowed mass range {"
32 << _mmin<<
","<<_mmax<<
"}"<< endl;
36 return nbinsInRange*_wlist.size()*_wlist.size();
41 double mmin,
double mmax,
bool doCov){
49 if(_tree->SetBranchAddress(
"fitResult_v2",&_rhom))cerr<<
"Branch not found!"<<endl;
58 cerr <<
"Number of components: "<<_compset->n()<< endl;
59 cerr << (*_compset) << endl;
61 cerr <<
"Number of waves in fit: "<< _wlist.size() << endl;
63 for(
unsigned int i=0;
i<_wlist.size();++
i){
64 _index.push_back(_rhom->waveIndex(_wlist[
i]));
65 cerr << _wlist[
i] << endl;
69 unsigned int nbins=_tree->GetEntries();
70 unsigned int nwaves=_wlist.size();
74 for(
unsigned im=0;im<nbins;++im){
76 _mass.push_back(_rhom->massBinCenter());
81 for(
unsigned int i=0;
i<nwaves; ++
i){
82 for(
unsigned int j=
i; j<nwaves; ++j){
84 myrhom(
i,j)=_rhom->spinDensityMatrixElem(_index[
i],_index[j]);
87 acov= _rhom->spinDensityMatrixElemCov(_index[i],_index[j]);
88 rmatrix c(2,2);c(0,0)=acov(0,0);c(1,0)=acov(1,0);c(1,1)=acov(1,1);c(0,1)=acov(0,1);
93 _spindens.push_back(myrhom);
94 _cov.push_back(mycov);
110 unsigned int nwaves=_index.size();
113 _compset->setPar(par);
120 unsigned int nbins=_mass.size();
122 TStopwatch dataW;dataW.Stop();dataW.Reset();
123 TStopwatch modelW;modelW.Stop();modelW.Reset();
124 TStopwatch calcW;calcW.Stop();calcW.Reset();
127 for(
unsigned im=0;im<nbins;++im){
130 const cmatrix& myrhom =_spindens[im];
133 double mass=_mass[im];
134 if(mass<_mmin)
continue;
135 if(mass>_mmax)
continue;
142 for(
unsigned int i=0;
i<nwaves; ++
i){
143 for(
unsigned int j=
i; j<nwaves; ++j){
149 const string w1=_wlist[
i];
150 const string w2=_wlist[j];
153 rho=_compset->overlap(
i,j,mass);
159 complex<double> rhom=rho-myrhom(
i,j);
165 double dchi=norm(rhom);
167 if(
i==j)dchi/=cov(0,0);
171 dchi=rhom.real()*rhom.real()*cov(1,1)-(2*cov(0,1))*rhom.real()*rhom.imag()+cov(0,0)*rhom.imag()*rhom.imag();
172 dchi/=cov(0,0)*cov(1,1)-cov(0,1)*cov(0,1);
174 else dchi=rhom.real()*rhom.real()/cov(0,0)+rhom.imag()*rhom.imag()/cov(1,1);