/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Mdc/DedxCalibAlg/DedxCalibAlg-00-01-15/src/DedxCalibEAng.cxx

Go to the documentation of this file.
00001 #include "GaudiKernel/MsgStream.h"
00002 
00003 #include <sstream>
00004 #include <string>
00005 #include "TTree.h"
00006 #include "TH1F.h"
00007 #include "TF1.h"
00008 #include "TFile.h"
00009 #include "TStyle.h"
00010 #include "TCanvas.h"
00011 
00012 #include "DedxCalibAlg/DedxCalibEAng.h"
00013 
00014 using namespace std;
00015 
00016 const double StepEAng = (PhiMax-PhiMin)/NumSlices;
00017 
00018 DedxCalibEAng::DedxCalibEAng(const std::string& name, ISvcLocator* pSvcLocator): DedxCalib(name, pSvcLocator){}
00019 
00020 void DedxCalibEAng::BookHists()
00021 {
00022     MsgStream log(msgSvc(), name());
00023     log<<MSG::INFO<<"DedxCalibEAng::BookHists()"<<endreq;
00024 
00025     ReadRecFileList();
00026 
00027     m_eangle = new TH1F*[NumSlices];
00028     m_pos_eangle = new TH1F*[NumSlices];
00029     m_neg_eangle = new TH1F*[NumSlices];
00030     stringstream hlabel;
00031     for(int i=0;i<NumSlices;i++)
00032     {
00033         hlabel.str("");
00034         hlabel<<"dEdx"<<"_eang"<<i;
00035         m_eangle[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), NumHistBins, MinHistValue, MaxHistValue);
00036         hlabel.str("");
00037         hlabel<<"pos_dEdx"<<"_eang"<<i;
00038         m_pos_eangle[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), NumHistBins, MinHistValue, MaxHistValue);  
00039         hlabel.str("");
00040         hlabel<<"neg_dEdx"<<"_eang"<<i;
00041         m_neg_eangle[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), NumHistBins, MinHistValue, MaxHistValue);
00042     }
00043     hlabel.str("");
00044     hlabel<<"dEdxVsEAng";
00045     m_EAngAverdE = new TH1F(hlabel.str().c_str(),"dEdx & EAng",NumSlices,PhiMin,PhiMax);
00046     hlabel.str("");
00047     hlabel<<"pos_dEdxVsEAng";
00048     m_pos_EAngAverdE = new TH1F(hlabel.str().c_str(),"pos_dEdx & EAng",NumSlices,PhiMin,PhiMax);
00049     hlabel.str("");
00050     hlabel<<"neg_dEdxVsEAng";
00051     m_neg_EAngAverdE = new TH1F(hlabel.str().c_str(),"neg_dEdx & EAng",NumSlices,PhiMin,PhiMax);
00052 
00053 }
00054 
00055 void DedxCalibEAng::FillHists()
00056 {
00057     MsgStream log(msgSvc(), name());
00058     log<<MSG::INFO<<"DedxCalibEAng::FillHists()"<<endreq;
00059 
00060     TFile* f;
00061     TTree* n102;
00062     string runlist;
00063 
00064     double dedx=0;
00065     float runNO=0,runFlag=0,pathlength=0,wid=0,layid=0,dd_in=0,driftdist=0,eangle=0,zhit=0,costheta=0,tes=0,ptrk=0,charge=0;
00066     cout<<"m_recFileVector.size()= "<<m_recFileVector.size()<<endl;
00067     for(int i=0; i<m_recFileVector.size(); i++)
00068     {
00069         runlist = m_recFileVector[i];
00070         cout<<"runlist: "<<runlist.c_str()<<endl;
00071         f = new TFile(runlist.c_str());
00072         n102 = (TTree*)f->Get("n102");
00073         n102-> SetBranchAddress("adc_raw",&dedx);
00074         n102-> SetBranchAddress("path_rphi",&pathlength);
00075         n102-> SetBranchAddress("wire",&wid);
00076         n102-> SetBranchAddress("layer",&layid);
00077         n102-> SetBranchAddress("doca_in",&dd_in);
00078         n102-> SetBranchAddress("driftdist",&driftdist);
00079         n102-> SetBranchAddress("eangle",&eangle);
00080         n102-> SetBranchAddress("zhit",&zhit);
00081         n102-> SetBranchAddress("runNO",&runNO);
00082         n102-> SetBranchAddress("runFlag",&runFlag);
00083         n102-> SetBranchAddress("costheta1",&costheta);
00084         n102-> SetBranchAddress("t01",&tes);
00085         n102->SetBranchAddress("ptrk1",&ptrk);
00086         n102->SetBranchAddress("charge",&charge);
00087 
00088         for(int j=0;j<n102->GetEntries();j++)
00089         {
00090             n102->GetEntry(j);
00091             if(eangle >0.25) eangle = eangle -0.5;
00092             else if(eangle <-0.25) eangle = eangle +0.5;
00093             if(eangle>PhiMin && eangle<PhiMax)
00094             {
00095                 if(tes>1400) continue;
00096                 if (ptrk<0.1) continue;
00097                 if(layid <4) continue;
00098                 else if(layid <8)
00099                 {if(dedx<MinADCValuecut || dedx>MaxADCValuecut || pathlength>RPhi_PathMaxCut || pathlength<Iner_RPhi_PathMinCut || driftdist>Iner_DriftDistCut) continue;}
00100                 else
00101                 {if(dedx<MinADCValuecut || dedx>MaxADCValuecut || pathlength>RPhi_PathMaxCut || pathlength<Out_RPhi_PathMinCut || driftdist>Out_DriftDistCut) continue;}
00102                 int iEAng = 0;
00103                 iEAng = (int) ((eangle-PhiMin)/StepEAng);
00104                 dedx = exsvc->StandardHitCorrec(0,runFlag,2,runNO,pathlength,wid,layid,dedx,dd_in,eangle,costheta);
00105                 dedx = exsvc->StandardTrackCorrec(0, runFlag, 2, runNO, dedx, costheta, tes);
00106                 m_eangle[iEAng]->Fill(dedx);
00107                 if(charge>0) m_pos_eangle[iEAng]->Fill(dedx);
00108                 if(charge<0) m_neg_eangle[iEAng]->Fill(dedx);
00109             }
00110         }
00111     }
00112 }
00113 
00114 void DedxCalibEAng::AnalyseHists()
00115 {           
00116     MsgStream log(msgSvc(), name());
00117     log<<MSG::INFO<<"DedxCalibEAng::AnalyseHists()"<<endreq;
00118 
00119     TF1* func;
00120     Double_t entry=0,mean=0,rms=0;
00121     Double_t binmax=0;
00122     Double_t lp[3]={0};
00123     gStyle->SetOptFit(1111);
00124     for(Int_t ip=0;ip<NumSlices;ip++)
00125     {
00126         entry = m_eangle[ip]->Integral();
00127         if(entry<10) continue;
00128         mean = m_eangle[ip]->GetMean();
00129         rms = m_eangle[ip]->GetRMS();
00130         binmax = m_eangle[ip]->GetMaximumBin();
00131         lp[1] = m_eangle[ip]->GetBinCenter(binmax);
00132         lp[2] = 200;
00133         lp[0] = (m_eangle[ip]->GetBinContent(binmax)+m_eangle[ip]->GetBinContent(binmax-1)+m_eangle[ip]->GetBinContent(binmax+1))/3;
00134 
00135         if(m_phShapeFlag==0)
00136         {
00137             func = new TF1("mylan",mylan,10,3000,4);
00138             func->SetParLimits(0, 0, entry);
00139             func->SetParLimits(1, 0, mean);
00140             func->SetParLimits(2, 10, rms);
00141             func->SetParLimits(3, -1, 0);
00142             func->SetParameters(entry/36., mean-200, rms/2.3, -0.5);
00143         }
00144         else if(m_phShapeFlag==1)
00145         {
00146             func = new TF1("landaun",landaun,10,3000,3);
00147             func->SetParameters(lp[0], lp[1], lp[2] );
00148         }
00149         else if(m_phShapeFlag==2)
00150         {
00151             func = new TF1("Landau",Landau,10,3000,2);
00152             func->SetParameters(0.7*mean, rms );
00153         }
00154         else if(m_phShapeFlag==3)
00155         {
00156             func = new TF1("Vavilov",Vavilov,10,3000,2);
00157             func->SetParameters(0.05, 0.6);
00158         }
00159         else if(m_phShapeFlag==4)
00160         {
00161             func = new TF1("AsymGauss",AsymGauss,10,3000,4);
00162             func->SetParameters(entry, mean, rms, 1.0 );
00163         }
00164         func->SetLineWidth(2.1);
00165         func->SetLineColor(2);
00166 
00167         m_eangle[ip]->Fit(func, "rq"    );//    ,     "", mean-rms, mean+rms/2);
00168         m_pos_eangle[ip]->Fit(func, "rq");//   ,  "", mean-rms, mean+rms/2);
00169         m_neg_eangle[ip]->Fit(func, "rq");//   ,  "", mean-rms, mean+rms/2);
00170     }
00171 }
00172 
00173 void DedxCalibEAng::WriteHists()
00174 {
00175     MsgStream log(msgSvc(), name());
00176     log<<MSG::INFO<<"DedxCalibEAng::WriteHists()"<<endreq;
00177 
00178     double entryNo[NumSlices]={0},mean[NumSlices]={0},sigma[NumSlices]={0},fitmean[NumSlices]={0},fitmeanerr[NumSlices]={0},fitsigma[NumSlices]={0},gain[NumSlices]={0},chisq[NumSlices]={0};
00179     double pos_entryNo[NumSlices]={0},pos_mean[NumSlices]={0},pos_sigma[NumSlices]={0},pos_fitmean[NumSlices]={0},pos_fitmeanerr[NumSlices]={0},pos_fitsigma[NumSlices]={0},pos_gain[NumSlices]={0},pos_chisq[NumSlices]={0};
00180     double neg_entryNo[NumSlices]={0},neg_mean[NumSlices]={0},neg_sigma[NumSlices]={0},neg_fitmean[NumSlices]={0},neg_fitmeanerr[NumSlices]={0},neg_fitsigma[NumSlices]={0},neg_gain[NumSlices]={0},neg_chisq[NumSlices]={0};
00181     double Ip_eangle[NumSlices]={0},eangle[NumSlices]={0};
00182 
00183     double Norm=0;
00184     int count=0;
00185     for(Int_t ip=0;ip<NumSlices;ip++)
00186     {
00187         Ip_eangle[ip] = ip;
00188         eangle[ip] = (ip+0.5)*StepEAng + PhiMin;
00189 
00190         entryNo[ip]= m_eangle[ip]->Integral();
00191         mean[ip] = m_eangle[ip]->GetMean();
00192         sigma[ip] = m_eangle[ip]->GetRMS();
00193         pos_entryNo[ip]= m_pos_eangle[ip]->Integral();
00194         pos_mean[ip] = m_pos_eangle[ip]->GetMean();
00195         pos_sigma[ip] = m_pos_eangle[ip]->GetRMS();
00196         neg_entryNo[ip]= m_neg_eangle[ip]->Integral();
00197         neg_mean[ip] = m_neg_eangle[ip]->GetMean();
00198         neg_sigma[ip] = m_neg_eangle[ip]->GetRMS();
00199         if(entryNo[ip]<10 || pos_entryNo[ip]<10 || neg_entryNo[ip]<10) continue;
00200 
00201         if(m_phShapeFlag==0)
00202         {
00203             fitmean[ip] = m_eangle[ip]->GetFunction("mylan")->GetParameter(1);
00204             fitmeanerr[ip] = m_eangle[ip]->GetFunction("mylan")->GetParError(1);
00205             fitsigma[ip] = m_eangle[ip]->GetFunction("mylan")->GetParameter(2);
00206             chisq[ip] = (m_eangle[ip]->GetFunction("mylan")-> GetChisquare())/(m_eangle[ip]->GetFunction("mylan")->  GetNDF());
00207 
00208             pos_fitmean[ip] = m_pos_eangle[ip]->GetFunction("mylan")->GetParameter(1);
00209             pos_fitmeanerr[ip] = m_pos_eangle[ip]->GetFunction("mylan")->GetParError(1);
00210             pos_fitsigma[ip] = m_pos_eangle[ip]->GetFunction("mylan")->GetParameter(2);
00211             pos_chisq[ip] = (m_pos_eangle[ip]->GetFunction("mylan")-> GetChisquare())/(m_pos_eangle[ip]->GetFunction("mylan")->  GetNDF());
00212 
00213             neg_fitmean[ip] = m_neg_eangle[ip]->GetFunction("mylan")->GetParameter(1);
00214             neg_fitmeanerr[ip] = m_neg_eangle[ip]->GetFunction("mylan")->GetParError(1);
00215             neg_fitsigma[ip] = m_neg_eangle[ip]->GetFunction("mylan")->GetParameter(2);
00216             neg_chisq[ip] = (m_neg_eangle[ip]->GetFunction("mylan")-> GetChisquare())/(m_neg_eangle[ip]->GetFunction("mylan")->  GetNDF());
00217         }
00218         if(m_phShapeFlag==1)
00219         {
00220             fitmean[ip] = m_eangle[ip]->GetFunction("landaun")->GetParameter(1);
00221             fitmeanerr[ip] = m_eangle[ip]->GetFunction("landaun")->GetParError(1);
00222             fitsigma[ip] = m_eangle[ip]->GetFunction("landaun")->GetParameter(2);
00223             chisq[ip] = (m_eangle[ip]->GetFunction("landaun")-> GetChisquare())/(m_eangle[ip]->GetFunction("mylan")->  GetNDF());
00224 
00225             pos_fitmean[ip] = m_pos_eangle[ip]->GetFunction("landaun")->GetParameter(1);
00226             pos_fitmeanerr[ip] = m_pos_eangle[ip]->GetFunction("landaun")->GetParError(1);
00227             pos_fitsigma[ip] = m_pos_eangle[ip]->GetFunction("landaun")->GetParameter(2);
00228             pos_chisq[ip] = (m_pos_eangle[ip]->GetFunction("landaun")-> GetChisquare())/(m_pos_eangle[ip]->GetFunction("landaun")->  GetNDF());
00229 
00230             neg_fitmean[ip] = m_neg_eangle[ip]->GetFunction("landaun")->GetParameter(1);
00231             neg_fitmeanerr[ip] = m_neg_eangle[ip]->GetFunction("landaun")->GetParError(1);
00232             neg_fitsigma[ip] = m_neg_eangle[ip]->GetFunction("landaun")->GetParameter(2);
00233             neg_chisq[ip] = (m_neg_eangle[ip]->GetFunction("landaun")-> GetChisquare())/(m_neg_eangle[ip]->GetFunction("landaun")->  GetNDF());
00234         }
00235         if(m_phShapeFlag==2)
00236         {
00237             fitmean[ip] = m_eangle[ip]->GetFunction("Landau")->GetParameter(1);
00238             fitmeanerr[ip] = m_eangle[ip]->GetFunction("Landau")->GetParError(1);
00239             fitsigma[ip] = m_eangle[ip]->GetFunction("Landau")->GetParameter(2);
00240             chisq[ip] = (m_eangle[ip]->GetFunction("Landau")-> GetChisquare())/(m_eangle[ip]->GetFunction("Landau")->  GetNDF());
00241 
00242             pos_fitmean[ip] = m_pos_eangle[ip]->GetFunction("Landau")->GetParameter(1);
00243             pos_fitmeanerr[ip] = m_pos_eangle[ip]->GetFunction("Landau")->GetParError(1);
00244             pos_fitsigma[ip] = m_pos_eangle[ip]->GetFunction("Landau")->GetParameter(2);
00245             pos_chisq[ip] = (m_pos_eangle[ip]->GetFunction("Landau")-> GetChisquare())/(m_pos_eangle[ip]->GetFunction("Landau")->  GetNDF());
00246 
00247             neg_fitmean[ip] = m_neg_eangle[ip]->GetFunction("Landau")->GetParameter(1);
00248             neg_fitmeanerr[ip] = m_neg_eangle[ip]->GetFunction("Landau")->GetParError(1);
00249             neg_fitsigma[ip] = m_neg_eangle[ip]->GetFunction("Landau")->GetParameter(2);
00250             neg_chisq[ip] = (m_neg_eangle[ip]->GetFunction("Landau")-> GetChisquare())/(m_neg_eangle[ip]->GetFunction("Landau")->  GetNDF());
00251         }
00252         if(m_phShapeFlag==3)
00253         {
00254             fitmean[ip] = m_eangle[ip]->GetFunction("Vavilov")->GetParameter(1);
00255             fitmeanerr[ip] = m_eangle[ip]->GetFunction("Vavilov")->GetParError(1);
00256             fitsigma[ip] = m_eangle[ip]->GetFunction("Vavilov")->GetParameter(2);
00257             chisq[ip] = (m_eangle[ip]->GetFunction("Vavilov")-> GetChisquare())/(m_eangle[ip]->GetFunction("Vavilov")->  GetNDF());
00258 
00259             pos_fitmean[ip] = m_pos_eangle[ip]->GetFunction("Vavilov")->GetParameter(1);
00260             pos_fitmeanerr[ip] = m_pos_eangle[ip]->GetFunction("Vavilov")->GetParError(1);
00261             pos_fitsigma[ip] = m_pos_eangle[ip]->GetFunction("Vavilov")->GetParameter(2);
00262             pos_chisq[ip] = (m_pos_eangle[ip]->GetFunction("Vavilov")-> GetChisquare())/(m_pos_eangle[ip]->GetFunction("Vavilov")->  GetNDF());
00263 
00264             neg_fitmean[ip] = m_neg_eangle[ip]->GetFunction("Vavilov")->GetParameter(1);
00265             neg_fitmeanerr[ip] = m_neg_eangle[ip]->GetFunction("Vavilov")->GetParError(1);
00266             neg_fitsigma[ip] = m_neg_eangle[ip]->GetFunction("Vavilov")->GetParameter(2);
00267             neg_chisq[ip] = (m_neg_eangle[ip]->GetFunction("Vavilov")-> GetChisquare())/(m_neg_eangle[ip]->GetFunction("Vavilov")->  GetNDF());
00268         }
00269         if(m_phShapeFlag==4)
00270         {
00271             fitmean[ip] = m_eangle[ip]->GetFunction("AsymGauss")->GetParameter(1);
00272             fitmeanerr[ip] = m_eangle[ip]->GetFunction("AsymGauss")->GetParError(1);
00273             fitsigma[ip] = m_eangle[ip]->GetFunction("AsymGauss")->GetParameter(2);
00274             chisq[ip] = (m_eangle[ip]->GetFunction("AsymGauss")-> GetChisquare())/(m_eangle[ip]->GetFunction("AsymGauss")->  GetNDF());
00275 
00276             pos_fitmean[ip] = m_pos_eangle[ip]->GetFunction("AsymGauss")->GetParameter(1);
00277             pos_fitmeanerr[ip] = m_pos_eangle[ip]->GetFunction("AsymGauss")->GetParError(1);
00278             pos_fitsigma[ip] = m_pos_eangle[ip]->GetFunction("AsymGauss")->GetParameter(2);
00279             pos_chisq[ip] = (m_pos_eangle[ip]->GetFunction("AsymGauss")-> GetChisquare())/(m_pos_eangle[ip]->GetFunction("AsymGauss")->  GetNDF());
00280 
00281             neg_fitmean[ip] = m_neg_eangle[ip]->GetFunction("AsymGauss")->GetParameter(1);
00282             neg_fitmeanerr[ip] = m_neg_eangle[ip]->GetFunction("AsymGauss")->GetParError(1);
00283             neg_fitsigma[ip] = m_neg_eangle[ip]->GetFunction("AsymGauss")->GetParameter(2);
00284             neg_chisq[ip] = (m_neg_eangle[ip]->GetFunction("AsymGauss")-> GetChisquare())/(m_neg_eangle[ip]->GetFunction("AsymGauss")->  GetNDF());
00285         }
00286         if(entryNo[ip]>1500 && fitmean[ip]>0 && fitmeanerr[ip]>0 && fitmeanerr[ip]<10 && fitsigma[ip]>0 && fitsigma[ip]<200)
00287         {   
00288             Norm+=fitmean[ip];
00289             count++;
00290         }
00291     }
00292     Norm = Norm/count;
00293     //    Norm = 550; // use an absolute normalization
00294     cout<<"count=  "<<count<<"  average value of eangle bins: "<<Norm<<endl;
00295     for(Int_t i=0;i<NumSlices;i++)
00296     {       
00297         if(entryNo[i]>10 && fitmean[i]>0 && fitsigma[i]>0)  gain[i]=fitmean[i]/Norm;
00298         else{
00299           gain[i] = 1;
00300           fitmeanerr[i]=10000;
00301         }
00302         if(pos_entryNo[i]>10 && pos_fitmean[i]>0 && pos_fitsigma[i]>0)  pos_gain[i]=pos_fitmean[i]/Norm;
00303         else pos_gain[i] = 0;
00304         if(neg_entryNo[i]>10 && neg_fitmean[i]>0 && neg_fitsigma[i]>0)  neg_gain[i]=neg_fitmean[i]/Norm;
00305         else neg_gain[i] = 0;
00306         if(gain[i] != 0){
00307           m_EAngAverdE -> SetBinContent(i+1, gain[i]);
00308           m_EAngAverdE->SetBinError(i+1, fitmeanerr[i]/Norm);
00309         }
00310         if(pos_gain[i] != 0){
00311           m_pos_EAngAverdE -> SetBinContent(i+1, pos_gain[i]);
00312           m_pos_EAngAverdE->SetBinError(i+1, pos_fitmeanerr[i]/Norm);
00313         }
00314         if(neg_gain[i] != 0){
00315           m_neg_EAngAverdE -> SetBinContent(i+1, neg_gain[i]);
00316           m_neg_EAngAverdE->SetBinError(i+1, neg_fitmeanerr[i]/Norm);
00317         }
00318     }
00319 
00320     log<<MSG::INFO<<"begin getting calibration constant!!! "<<endreq;
00321     double denangle[NumSlices]={0};
00322     int denangle_entry[1] = {100};
00323     m_EAngAverdE->Fit("pol1","r","",-0.25,0.25);
00324     double par0 = m_EAngAverdE->GetFunction("pol1")->GetParameter(0);
00325     double par1 = m_EAngAverdE->GetFunction("pol1")->GetParameter(1);
00326     //    double par2 = m_EAngAverdE->GetFunction("pol2")->GetParameter(2);
00327     // par1 = -par1; // a trick is used here, because we don't really understand
00328     // for(int i=0;i<NumSlices;i++)   denangle[i] = (par0+par1*eangle[i])/par0;//+par2*pow(eangle[i],2))/par0;
00329     for(int i=0;i<NumSlices;i++) denangle[i] = gain[i]; // use raw values instead of fit
00330 
00331     log<<MSG::INFO<<"begin generating root file!!! "<<endreq;
00332     TFile* f = new TFile(m_rootfile.c_str(), "recreate");
00333     for(Int_t ip=0;ip<NumSlices;ip++)   
00334     {
00335         m_eangle[ip]->Write();
00336         m_pos_eangle[ip]->Write();
00337         m_neg_eangle[ip]->Write();
00338     }
00339     m_EAngAverdE->Write();
00340     m_pos_EAngAverdE->Write();
00341     m_neg_EAngAverdE->Write();
00342 
00343     TTree* entracalib = new TTree("entracalib","entracalib");
00344     entracalib->Branch("1denangle", denangle, "denangle[100]/D");
00345     entracalib->Branch("1denangle_entry", denangle_entry, "denangle_entry[1]/I");
00346     entracalib->Fill();
00347     entracalib-> Write();
00348 
00349     TTree* ddgcalib = new TTree("ddgcalib", "ddgcalib");
00350     ddgcalib -> Branch("hits", entryNo, "entryNo[100]/D");
00351     ddgcalib -> Branch("mean", mean, "mean[100]/D");
00352     ddgcalib -> Branch("sigma", sigma, "sigma[100]/D");
00353     ddgcalib -> Branch("fitmean", fitmean, "fitmean[100]/D");
00354     ddgcalib -> Branch("fitmeanerr", fitmeanerr, "fitmeanerr[100]/D");
00355     ddgcalib -> Branch("chi", fitsigma, "fitsigma[100]/D");
00356     ddgcalib -> Branch("gain", gain, "gain[100]/D");
00357     ddgcalib -> Branch("chisq", chisq, "chisq[100]/D");
00358     ddgcalib -> Branch("pos_hits", pos_entryNo, "pos_entryNo[100]/D");
00359     ddgcalib -> Branch("pos_mean", pos_mean, "pos_mean[100]/D");
00360     ddgcalib -> Branch("pos_sigma", pos_sigma, "pos_sigma[100]/D");
00361     ddgcalib -> Branch("pos_fitmean", pos_fitmean, "pos_fitmean[100]/D");
00362     ddgcalib -> Branch("pos_fitmeanerr", pos_fitmeanerr, "pos_fitmeanerr[100]/D");
00363     ddgcalib -> Branch("pos_chi", pos_fitsigma, "pos_fitsigma[100]/D");
00364     ddgcalib -> Branch("pos_gain", pos_gain, "pos_gain[100]/D");
00365     ddgcalib -> Branch("pos_chisq", pos_chisq, "pos_chisq[100]/D");
00366     ddgcalib -> Branch("neg_hits", neg_entryNo, "neg_entryNo[100]/D");
00367     ddgcalib -> Branch("neg_mean", neg_mean, "neg_mean[100]/D");
00368     ddgcalib -> Branch("neg_sigma", neg_sigma, "neg_sigma[100]/D");
00369     ddgcalib -> Branch("neg_fitmean", neg_fitmean, "neg_fitmean[100]/D");   
00370     ddgcalib -> Branch("neg_fitmeanerr", neg_fitmeanerr, "neg_fitmeanerr[100]/D");
00371     ddgcalib -> Branch("neg_chi", neg_fitsigma, "neg_fitsigma[100]/D");
00372     ddgcalib -> Branch("neg_gain", neg_gain, "neg_gain[100]/D");
00373     ddgcalib -> Branch("neg_chisq", neg_chisq, "neg_chisq[100]/D"); 
00374     ddgcalib -> Branch("Ip_eangle", Ip_eangle, "Ip_eangle[100]/D");
00375     ddgcalib -> Branch("eangle", eangle, "eangle[100]/D");
00376     ddgcalib -> Fill();
00377     ddgcalib -> Write();
00378     f->Close();
00379 
00380     TCanvas c1("c1", "canvas", 500, 400);
00381     c1.Print((m_rootfile+".ps[").c_str());
00382     m_EAngAverdE->Draw();
00383     c1.Print((m_rootfile+".ps").c_str());
00384     m_pos_EAngAverdE->Draw();
00385     c1.Print((m_rootfile+".ps").c_str());
00386     m_neg_EAngAverdE->Draw();
00387     c1.Print((m_rootfile+".ps").c_str());
00388     for(Int_t ip=0;ip<NumSlices;ip++)
00389     {
00390         m_eangle[ip]->Draw();
00391         c1.Print((m_rootfile+".ps").c_str());
00392     }
00393     for(Int_t ip=0;ip<NumSlices;ip++)
00394     {
00395         m_pos_eangle[ip]->Draw();
00396         c1.Print((m_rootfile+".ps").c_str());
00397     }  
00398     for(Int_t ip=0;ip<NumSlices;ip++)
00399     {
00400         m_neg_eangle[ip]->Draw();
00401         c1.Print((m_rootfile+".ps").c_str());
00402     }  
00403     c1.Print((m_rootfile+".ps]").c_str());
00404 
00405     for(Int_t ip=0;ip<NumSlices;ip++)
00406     {
00407         delete m_eangle[ip];
00408         delete m_pos_eangle[ip];
00409         delete m_neg_eangle[ip];
00410     }
00411     delete m_EAngAverdE;
00412     delete m_pos_EAngAverdE;
00413     delete m_neg_EAngAverdE;
00414 
00415 }

Generated on Tue Nov 29 23:12:45 2016 for BOSS_7.0.2 by  doxygen 1.4.7