37 #include "TDirectory.h"
51 int main(
int argc,
char** argv){
54 cout <<
"Usage: mcmc2fitbin <infile> <outfile>"<<endl;
59 TFile* infile=TFile::Open(argv[1],
"READ");
60 TTree*
input=(TTree*)infile->Get(
"MarkovChain");
66 TString ofile_name(argv[2]);
77 input->SetBranchAddress(
"N",&ndim);
90 input->SetBranchAddress(
"dL",&dL);
91 input->SetBranchAddress(
"X",&X);
92 input->SetBranchAddress(
"L",&E);
93 input->SetBranchAddress(
"H",&H);
94 input->SetBranchAddress(
"R",&R);
95 input->SetBranchAddress(
"Rlast",&Rlast);
99 TFile* outfile=
new TFile(ofile_name,
"UPDATE");
102 TTree* tree=(TTree*)outfile->Get(
"pwa");
104 std::cout <<
"File empty. Creating new results tree!!!" << std::endl;
105 tree=
new TTree(
"pwa",
"pwa");
106 tree->Branch(
"fitbin",&result);
108 else tree->SetBranchAddress(
"fitbin",&result);
111 double mass=0.5*(low_mass+high_mass);
113 vector<TString> wavetitles;
114 vector<TString> wavenames;
115 const vector<TString>& parnames=meta->
parnames;
118 for(
unsigned int i=0;
i<parnames.size();++
i){
120 unsigned int l=parnames[
i].Length()-3;
122 {
if(parnames[
i].Contains(
"V_"))name=parnames[
i](0,l+4);
else name=parnames[
i](0,l);}
123 cout <<
"Name= " << name << endl;
125 if(std::find(wavenames.begin(),wavenames.end(),name)==wavenames.end()){
126 wavenames.push_back(name);
131 l=wavenames[j-1].Length();
132 {
if(wavenames[j-1].Contains(
"V_"))title=wavenames[j-1](2,l-2);
else title=wavenames[j-1](3,l-3);}
136 if(std::find(wavetitles.begin(),wavetitles.end(),title)==wavetitles.end()){
137 wavetitles.push_back(title);
138 cout << title << endl;
144 int nmc=input->GetEntriesFast();
145 for(
int mci=0;mci<nmc;++mci){
147 input->GetEntry(mci);
149 vector<TComplex> amps;
150 vector<complex<double> > V;
154 unsigned int nwaves=wavetitles.size()-1;
155 for(
unsigned int r=0;r<rank;++r){
156 for(
unsigned int i=r;
i<nwaves;++
i){
158 else if(
i==r){re=X[k++];im=0;}
163 V.push_back(complex<double>(re,im));
166 V.push_back(complex<double>(X[k],0));
169 for(
unsigned int i=0;
i<V.size();++
i)amps.push_back(TComplex(V[
i].real(),V[
i].imag()));
178 vector<pair<int,int> > indices;
184 int n=wavetitles.size()-1;
190 cout <<
"filling TFitBin" << endl;
191 cout <<
"Number of amps=" << amps.size()<< endl;
192 cout <<
"Number of indices=" << indices.size() << endl;
193 cout <<
"Number of wavenames=" << wavenames.size()<< endl;
194 cout <<
"Number of wavetitles=" << wavetitles.size()<< endl;
195 cout <<
"Dimension of errormatrix=" << errm.GetNrows() << endl;
196 cout <<
"Dimension of integral matrix=" << integr.
nrows() << endl;
213 TString binname=
"fitbin";binname+=low_mass;binname+=
"_";binname+=high_mass;
214 binname.ReplaceAll(
" ",
"");
218 tree->Write(
"",TObject::kOverwrite);
225 int mnparm(
int,
string,
double,
double,
double,
double) {
226 cerr <<
"this is impossible" << endl;