Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

#include <stdio.h>
#include <stdlib.h>
#include <TROOT.h>
#include <TF1.h>
#include <TH1F.h>
#include <TH1D.h>
#include <TH2D.h>
#include <TCanvas.h>
#include <TStyle.h>
#include <TSystem.h>
#include <TFile.h>
#include <TDirectory.h>
#include <TApplication.h>
#include <TPaveText.h>


void onBrowserClose() {
   gApplication->Terminate(0);
}

int febreport(char *path, int run){
   
        char hname[0xFF];
        char name[0xFF];
 
                gROOT->SetMacroPath("../macros");
                gROOT->LoadMacro("slowcxml2root.cxx+");
                gROOT->LoadMacro("febana.cxx+");
                //gROOT->ProcessLine(".L H2Dload.cxx");
                sprintf(hname,"%s/febtest_%04d.root", path,  run);
               
 printf("File name =%s\n",hname);
 TFile *file0 = new TFile(hname);
 file0->ls();
 TCanvas *c[4];
 for (int k=0;k<4;k++){
   sprintf(name,"brd%d", k);
   c[k]= new TCanvas( name, name, 900, 600);
   c[k]->Divide(2,3);
 }
 
 sprintf(name,"slowcxml2root(\"%s/febslowc_%04d.xml\")",path, run);
 printf("%s\n",name);
 gROOT->ProcessLine(name);
 TH2D *h2dp=(TH2D *) gDirectory->Get("h2d_0;1");
 for (int k=0;k<4;k++){
   sprintf(name,"vth1_%d_0",k);    //you define histogram vth1_0_0;1
   TH2D * h0 = (TH2D *) gDirectory->Get(name);   //this tell you directory to your histogram
   int brd;
   if (!h0) continue;
   sscanf(h0->GetTitle(),"%*s%*s%*s%*s sn=%d",&brd);
  // printf("sn = %d\n",brd);  
        c[k]->cd(1);
   hpt(k);
        c[k]->cd(2);
         //sprintf(name,"title%d",k);
     TPaveText *pt1 = new TPaveText(.2,.2,.7,.7);
         
     if (pt1) pt1->Draw();
         sprintf(name,"RUN=febtest_%04d.root", run);
         pt1->AddText(name);
         sprintf(name,"Position= FEB %d", k);
         pt1->AddText(name);
         sprintf(name,"SN=%d", brd);
         pt1->AddText(name);
       
 
   c[k]->cd(3);
   hplot(k);
   c[k]->cd(4);
   h0->Draw();
   
   
 
   if (h2dp) {
     double max = h2dp->GetMaximum();
     sprintf(name,"board%d", brd);
     TH2D *hth= new TH2D(name, "Threshold scan with Test Pulse;channel;VTH1",h2dp->GetNbinsX()/4, -0.5,143.5, h2dp->GetNbinsY() , h2dp->GetYaxis()->GetXmin(), h2dp->GetYaxis()->GetXmax() );
         sprintf(name,"fwhm%d", brd);
         TH1D *hfwhm= new TH1D(name, "FWHM;channel",h2dp->GetNbinsX()/4, -0.5,143.5 );
     hth->SetStats(false);
     for (int x=0;x<hth->GetNbinsX();x++){
            double fwhm=0;
            for (int y=0;y<hth->GetNbinsY();y++){
                   double val= h2dp->GetBinContent(k*144+x+1,y+1);
                   hth->SetBinContent(x+1, y+1, val);
                   if (val> max*0.5) fwhm+=1;
            }
                hfwhm->SetBinContent(x+1,fwhm);
     }
         hfwhm->SetMaximum(100);
         hfwhm->SetMinimum(0);
         
         c[k]->cd(5);
     hth->Draw("colz");
         c[k]->cd(6);
         hfwhm->Draw();
   }
 
   sprintf(name,"pdf/board_%d_%04d.pdf(", brd, run);
   printf("%s\n",name);
   c[k]->Print(name,"pdf");
 }  

//printf("name=%s\n",name);

febana(run);
       
   // printf("arguments path=%s run=%d\n",path, run );
 return 0;     
}