00080 {
00081
00082 unsigned int nhist = m_histograms.size();
00083 if( nhist != (nCounter*nHistPerCounter + nHistogram) ) {
00084 std::cout<<" tofcalgsec::TofCalibFit:" << m_name << ": the number of histograms is NOT same as the number of histograms saved!" << " nhist=" << nhist << " calculated=" << (nCounter*nHistPerCounter + nHistogram) << " nCounter=" << nCounter << " nHistPerCounter=" << nHistPerCounter << " nHistogram=" << nHistogram << std::endl;
00085 exit(0);
00086 }
00087
00088 unsigned int numgraph1 = 0;
00089 unsigned int numgraph2 = 0;
00090 if( nCanvasPerCounter!=0 ) {
00091 std::vector<unsigned int>::iterator iter = nGraphPerCanvasPerCounter.begin();
00092 for( ; iter!=nGraphPerCanvasPerCounter.end(); iter++ ) {
00093 numgraph1 = numgraph1 + (*iter);
00094 }
00095 }
00096 if( nCanvas!=0 ) {
00097 std::vector<unsigned int>::iterator iter = nGraphPerCanvas.begin();
00098 for( ; iter!=nGraphPerCanvas.end(); iter++ ) {
00099 numgraph2 = numgraph2 + (*iter);
00100 }
00101 }
00102 unsigned int ngraph = m_graphs.size();
00103 if( ngraph != ( nCounter*numgraph1+numgraph2) ) {
00104 std::cout<<" tofcalgsec::TofCalibFit:"<< m_name << ": the number of graphs is NOT same as the number of graphs saved!"<<std::endl;
00105 exit(0);
00106 }
00107
00108 TFile f(file,"RECREATE");
00109
00110 gStyle->SetOptStat(2211);
00111 gStyle->SetOptFit(1111);
00112 gStyle->SetLabelSize(0.03,"x");
00113 gStyle->SetLabelSize(0.03,"y");
00114
00115 char dirname[256];
00116 char canvasname[256];
00117 if( nHistPerCounter>0 || nCanvasPerCounter>0 ) {
00118 std::vector<TH1F*>::iterator iter1 = m_histograms.begin();
00119 std::vector<TGraphErrors*>::iterator iter2 = m_graphs.begin();
00120 for( unsigned int i=0; i<nCounter; i++ ) {
00121 sprintf( dirname, "tofid%i", i );
00122 TDirectory* cdresult = f.mkdir( dirname );
00123 cdresult->cd();
00124
00125 for( unsigned int j=0; j<nHistPerCounter; j++ ) {
00126 (*(iter1+j))->Write();
00127 }
00128 iter1 = iter1 + nHistPerCounter;
00129
00130 for( unsigned int j=0; j<nCanvasPerCounter; j++ ) {
00131 std::vector<string>::iterator it1 = CanvasPerCounterName.begin() + j;
00132 std::vector<unsigned int>::iterator it2 = nGraphPerCanvasPerCounter.begin() + j;
00133 sprintf( canvasname, "%s-tofid-%i", (*it1).c_str(), i );
00134 TCanvas* c1 = new TCanvas( canvasname, canvasname, 1);
00135 c1->SetFillColor(10);
00136 for( unsigned int k=0; k<(*it2); k++ ) {
00137 if( k==0 ) {
00138 (*(iter2+k))->Draw("AP");
00139 }
00140 else {
00141 (*(iter2+k))->Draw("P");
00142 }
00143 }
00144 iter2 = iter2 + (*it2);
00145 c1->Write();
00146 }
00147 }
00148 }
00149
00150 if( nHistogram>0 || nCanvas>0 ) {
00151 sprintf( dirname, "summary" );
00152 TDirectory* cdresult = f.mkdir( dirname );
00153 cdresult->cd();
00154
00155 std::vector<TH1F*>::iterator iter1 = m_histograms.begin() + nCounter*nHistPerCounter;
00156 std::vector<TGraphErrors*>::iterator iter2 = m_graphs.begin() + nCounter*numgraph1;
00157 for( ; iter1 != m_histograms.end(); iter1++ ) {
00158 (*iter1)->Write();
00159 }
00160
00161 for( unsigned int j=0; j<nCanvas; j++ ) {
00162 std::vector<string>::iterator it1 = CanvasName.begin() + j;
00163 std::vector<unsigned int>::iterator it2 = nGraphPerCanvas.begin() + j;
00164 sprintf( canvasname, (*it1).c_str() );
00165 TCanvas* c1 = new TCanvas( canvasname, canvasname, 1);
00166 c1->SetFillColor(10);
00167 for( unsigned int k=0; k<(*it2); k++ ) {
00168 if( k==0 ) {
00169 (*(iter2+k))->Draw("AP");
00170 }
00171 else {
00172 (*(iter2+k))->Draw("P");
00173 }
00174 }
00175 iter2 = iter2 + (*it2);
00176 c1->Write();
00177 }
00178
00179 }
00180
00181 f.Close();
00182
00183 return;
00184 }