Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 326 | f9daq | 1 | #include <stdio.h> | 
        
| 2 | #include <stdlib.h> | 
        ||
| 3 | #include <TROOT.h> | 
        ||
| 4 | #include <TF1.h> | 
        ||
| 5 | #include <TH1F.h> | 
        ||
| 6 | #include <TH1D.h> | 
        ||
| 7 | #include <TH2D.h> | 
        ||
| 8 | #include <TCanvas.h> | 
        ||
| 9 | #include <TStyle.h> | 
        ||
| 10 | #include <TSystem.h> | 
        ||
| 11 | #include <TFile.h> | 
        ||
| 12 | #include <TDirectory.h> | 
        ||
| 13 | #include <TApplication.h> | 
        ||
| 14 | #include <TPaveText.h> | 
        ||
| 15 | |||
| 16 | |||
| 17 | void onBrowserClose() {  | 
        ||
| 18 | gApplication->Terminate(0);  | 
        ||
| 19 | } | 
        ||
| 20 | |||
| 21 | int febreport(char *path, int run){  | 
        ||
| 22 | |||
| 23 | char hname[0xFF];  | 
        ||
| 24 | char name[0xFF];  | 
        ||
| 25 | |||
| 26 | gROOT->SetMacroPath("../macros");  | 
        ||
| 27 | gROOT->LoadMacro("slowcxml2root.cxx+");  | 
        ||
| 28 | gROOT->LoadMacro("febana.cxx+");  | 
        ||
| 29 |                 //gROOT->ProcessLine(".L H2Dload.cxx"); | 
        ||
| 30 | sprintf(hname,"%s/febtest_%04d.root", path, run);  | 
        ||
| 31 | |||
| 32 | printf("File name =%s\n",hname);  | 
        ||
| 33 | TFile *file0 = new TFile(hname);  | 
        ||
| 34 | file0->ls();  | 
        ||
| 35 | TCanvas *c[4];  | 
        ||
| 36 | for (int k=0;k<4;k++){  | 
        ||
| 37 | sprintf(name,"brd%d", k);  | 
        ||
| 38 | c[k]= new TCanvas( name, name, 900, 600);  | 
        ||
| 39 | c[k]->Divide(2,3);  | 
        ||
| 40 |  } | 
        ||
| 41 | |||
| 42 | sprintf(name,"slowcxml2root(\"%s/febslowc_%04d.xml\")",path, run);  | 
        ||
| 43 | printf("%s\n",name);  | 
        ||
| 44 | gROOT->ProcessLine(name);  | 
        ||
| 45 | TH2D *h2dp=(TH2D *) gDirectory->Get("h2d_0;1");  | 
        ||
| 46 | for (int k=0;k<4;k++){  | 
        ||
| 47 | sprintf(name,"vth1_%d_0",k); //you define histogram vth1_0_0;1  | 
        ||
| 48 | TH2D * h0 = (TH2D *) gDirectory->Get(name); //this tell you directory to your histogram  | 
        ||
| 49 | int brd;  | 
        ||
| 50 | if (!h0) continue;  | 
        ||
| 51 | sscanf(h0->GetTitle(),"%*s%*s%*s%*s sn=%d",&brd);  | 
        ||
| 52 |   // printf("sn = %d\n",brd);   | 
        ||
| 53 | c[k]->cd(1);  | 
        ||
| 54 | hpt(k);  | 
        ||
| 55 | c[k]->cd(2);  | 
        ||
| 56 |          //sprintf(name,"title%d",k); | 
        ||
| 57 | TPaveText *pt1 = new TPaveText(.2,.2,.7,.7);  | 
        ||
| 58 | |||
| 59 | if (pt1) pt1->Draw();  | 
        ||
| 60 | sprintf(name,"RUN=febtest_%04d.root", run);  | 
        ||
| 61 | pt1->AddText(name);  | 
        ||
| 62 | sprintf(name,"Position= FEB %d", k);  | 
        ||
| 63 | pt1->AddText(name);  | 
        ||
| 64 | sprintf(name,"SN=%d", brd);  | 
        ||
| 65 | pt1->AddText(name);  | 
        ||
| 66 | |||
| 67 | |||
| 68 | c[k]->cd(3);  | 
        ||
| 69 | hplot(k);  | 
        ||
| 70 | c[k]->cd(4);  | 
        ||
| 71 | h0->Draw();  | 
        ||
| 72 | |||
| 73 | |||
| 74 | |||
| 75 | if (h2dp) {  | 
        ||
| 76 | double max = h2dp->GetMaximum();  | 
        ||
| 77 | sprintf(name,"board%d", brd);  | 
        ||
| 78 | 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() );  | 
        ||
| 79 | sprintf(name,"fwhm%d", brd);  | 
        ||
| 80 | TH1D *hfwhm= new TH1D(name, "FWHM;channel",h2dp->GetNbinsX()/4, -0.5,143.5 );  | 
        ||
| 81 | hth->SetStats(false);  | 
        ||
| 82 | for (int x=0;x<hth->GetNbinsX();x++){  | 
        ||
| 83 | double fwhm=0;  | 
        ||
| 84 | for (int y=0;y<hth->GetNbinsY();y++){  | 
        ||
| 85 | double val= h2dp->GetBinContent(k*144+x+1,y+1);  | 
        ||
| 86 | hth->SetBinContent(x+1, y+1, val);  | 
        ||
| 87 | if (val> max*0.5) fwhm+=1;  | 
        ||
| 88 |             } | 
        ||
| 89 | hfwhm->SetBinContent(x+1,fwhm);  | 
        ||
| 90 |      } | 
        ||
| 91 | hfwhm->SetMaximum(100);  | 
        ||
| 92 | hfwhm->SetMinimum(0);  | 
        ||
| 93 | |||
| 94 | c[k]->cd(5);  | 
        ||
| 95 | hth->Draw("colz");  | 
        ||
| 96 | c[k]->cd(6);  | 
        ||
| 97 | hfwhm->Draw();  | 
        ||
| 98 |    } | 
        ||
| 99 | |||
| 100 | sprintf(name,"pdf/board_%d_%04d.pdf(", brd, run);  | 
        ||
| 101 | printf("%s\n",name);  | 
        ||
| 102 | c[k]->Print(name,"pdf");  | 
        ||
| 103 |  }   | 
        ||
| 104 | |||
| 105 | //printf("name=%s\n",name); | 
        ||
| 106 | |||
| 107 | febana(run);  | 
        ||
| 108 | |||
| 109 |    // printf("arguments path=%s run=%d\n",path, run ); | 
        ||
| 110 | return 0;  | 
        ||
| 111 | } |