33 #include "TMultiGraph.h"
51 main(
int argc,
char** argv){
54 ifstream config(argv[1]);
55 vector<integral> integrals;
56 vector<double> masses;
58 while(config.good() && !config.eof()){
61 config >> mass >> normfilename;
62 ifstream file(normfilename.Data());
64 integrals.back().scan(file);
65 masses.push_back(mass);
68 config.ignore(255,
'\n');
75 list<string> waves=integrals[0].files();
77 list<string>::iterator it=waves.begin();
80 map<TString,pair<double,double> > wavemap;
81 map<TString,TGraph*> graphs;
82 map<TString,TGraph*> diaggraphs_re;
83 map<TString,TGraph*> diaggraphs_im;
86 TMultiGraph* mg=
new TMultiGraph();
87 TMultiGraph* mg_re=
new TMultiGraph();
88 TMultiGraph* mg_im=
new TMultiGraph();
90 while(it!=waves.end()){
91 wavemap[*it]=pair<double,double>(0,0);
92 graphs[*it]=
new TGraph(masses.size());
93 graphs[*it]->SetName(it->c_str());
95 list<string>::iterator itb=it;
97 while(itb!=waves.end()){
101 diaggraphs_re[s]=
new TGraph(masses.size());
102 diaggraphs_im[s]=
new TGraph(masses.size());
103 mg_re->Add(diaggraphs_re[s]);
104 mg_im->Add(diaggraphs_im[s]);
111 map<TString,TGraph*> jpcgraphs;
112 TMultiGraph* mg2=
new TMultiGraph();
118 map<TString,pair<double,double> >::iterator it2=wavemap.begin();
119 map<TString,pair<double,double> >::iterator it3=wavemap.begin();
123 for(
unsigned int i=0;
i<masses.size(); ++
i){
124 cerr <<
"Processing mass bin "<< masses[
i] << endl;
126 while(it2!=wavemap.end()){
128 while(it3!=wavemap.end()){
130 std::complex<double> c=integrals[
i].val(it2->first.Data(),it3->first.Data());
136 double val=integrals[
i].val(it2->first.Data(),it3->first.Data()).real();
138 TString s=(it2->first);
140 if(diaggraphs_re[s]!=NULL){
141 diaggraphs_re[s]->SetPoint(
i,masses[
i],arg(c));
142 diaggraphs_re[s]->SetName(s);
143 diaggraphs_im[s]->SetPoint(i,masses[i],im);
144 diaggraphs_im[s]->SetName(s);
148 graphs[it2->first]->SetPoint(
i,masses[
i],val);
149 if(it2->second.second<val){
150 it2->second=pair<double,double>(masses[
i],val);
155 name.Append(it2->first);
156 name.Append(it3->first);
157 if(jpcgraphs[name]==0){
158 jpcgraphs[name]=
new TGraph(masses.size());
159 jpcgraphs[name]->SetName(name);
160 mg2->Add(jpcgraphs[name]);
162 jpcgraphs[name]->SetPoint(
i,masses[
i],val);
167 cerr<<
"Cought exception" << endl;
178 while(it2!=wavemap.end()){
179 cout << it2->first <<
" " << it2->second.first*0.8 << endl;
183 TFile* file=TFile::Open(
"normgraphs.root",
"RECREATE");
185 map<TString,TGraph*>::iterator git=diaggraphs_re.begin();
186 while(1 && git!=diaggraphs_re.end()){
187 TGraph* g=git->second;
193 for(
unsigned int i=1;
i<masses.size(); ++
i){
201 mean/=(double)masses.size();
212 TString name=g->GetName();
220 map<TString,TGraph*>::iterator grit=graphs.begin();
221 while(grit!=graphs.end()){
222 grit->second->Write();
228 mg2->Write(
"jpcgraphs");
229 mg_re->Write(
"greal");
230 mg_im->Write(
"gimag");