Rev 1 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 1 | f9daq | 1 | /* | 
        
| 2 | |||
| 3 | Skripta za kalibracijo visine fotovrhov | 
        ||
| 4 | Vhod: histogrami ADC vs sum | 
        ||
| 5 | |||
| 6 | Navodilo: | 
        ||
| 7 | 1.klikni na GCUT toolbar | 
        ||
| 8 | 2. poklikaj najvisji fotovrh v vsakem od histogramov . klikajh v vrstnem redu hoistogramov. | 
        ||
| 9 | 3. zakljuci na zadnjem vrhu tako, da se enkrat kliknes na isto tocko | 
        ||
| 10 | 4. ponovi vse za vse 4 fotopomnozevalke | 
        ||
| 11 | |||
| 12 | Izhod: Datoteka z visinami fotovrhov po kanalih | 
        ||
| 13 | |||
| 14 |  .x fotovrh.cxx("fmfpet.root") | 
        ||
| 15 | |||
| 16 | */ | 
        ||
| 17 | |||
| 18 | int fotovrh(char *fname, float max=100){  | 
        ||
| 19 | |||
| 20 | char cmd[256];  | 
        ||
| 21 | TFile *f= new TFile(fname);  | 
        ||
| 22 | |||
| 23 | FILE *fp= fopen("fotovrh.dat","w");  | 
        ||
| 24 | if (!fp) return 0;  | 
        ||
| 25 | for (int ipmt=0;ipmt<4;ipmt++){  | 
        ||
| 26 | sprintf(cmd,"c%d",ipmt);  | 
        ||
| 27 | TCanvas *c= new TCanvas(cmd,cmd,1500,1000);  | 
        ||
| 28 | |||
| 29 | c->ToggleToolBar();  | 
        ||
| 30 | c->Divide(4,4);  | 
        ||
| 31 | |||
| 32 | for (int ch=0;ch<16;ch++){  | 
        ||
| 33 | c->cd(ch+1);  | 
        ||
| 34 | sprintf(cmd,"adcvssumch%d",ipmt*16+ch);  | 
        ||
| 35 | TH2 *h = (TH2 *) f->Get(cmd);  | 
        ||
| 36 | if (!h) {  | 
        ||
| 37 | cout << "Histogram not found " << cmd << endl;  | 
        ||
| 38 | continue;  | 
        ||
| 39 | } else {  | 
        ||
| 40 | if (max>0) h->SetMaximum(max);  | 
        ||
| 41 | h->Draw("colz");  | 
        ||
| 42 |     } | 
        ||
| 43 |   } | 
        ||
| 44 | |||
| 45 | c->WaitPrimitive("CUTG");  | 
        ||
| 46 | TCutG *mycutg = (TCutG*)gROOT->GetListOfSpecials()->FindObject("CUTG");  | 
        ||
| 47 | if (mycutg) {  | 
        ||
| 48 | sprintf(cmd,"cutg%d",ipmt);  | 
        ||
| 49 | mycutg->SetName(cmd);  | 
        ||
| 50 | mycutg->Print();  | 
        ||
| 51 | int n= mycutg->GetN();  | 
        ||
| 52 | double x,y;  | 
        ||
| 53 | for (int k=0;k<n-1;k++){  | 
        ||
| 54 | mycutg->GetPoint(k, x, y);  | 
        ||
| 55 | printf("%d %f\n",k+ipmt*16,x);  | 
        ||
| 56 | fprintf(fp,"%d %f\n",k+ipmt*16,x);  | 
        ||
| 57 |    } | 
        ||
| 58 |   } | 
        ||
| 59 | |||
| 60 | } | 
        ||
| 61 | fclose(fp);  | 
        ||
| 62 | return 0;  | 
        ||
| 63 | } |