Blame |
Last modification |
View Log
| RSS feed
#include <stdio.h>
#include <stdlib.h>
#include <TROOT.h>
#include <TH1D.h>
#include <TH2D.h>
#include <TCanvas.h>
#include <TStyle.h>
#include <TSystem.h>
#include <TFile.h>
#include <TColor.h>
#include <TDirectory.h>
#include <TPaveText.h>
#include <iostream>
#include <string>
#include "base.h"
#include "treshold.h"
#include "savetoroot.h"
int treshold
(int runNumber
, int save
){
int HAPDnumber
; //Number of HAPD: 0, 1, 2 or 3!
char name
[128];
char pdfname
[128];
char buf
[256];
const char * hname
= "h2d_0";
sprintf(buf
,"../modules/%04d/%04d_1_Treshold_Waveform.root",runNumber
,runNumber
);
TFile
* data
= new TFile
(buf
);
const char * serialNumber
= getSN
(runNumber
);
printf("base.c return: %s\n", serialNumber
);
/******* PREVERI ČE JE NALOŽEN FILE *******/
if (!strcmp(serialNumber
, "NoFILE")){
printf("Ni naloženege datoteke\n");
return -1;
}
std
::string serialNumberTemp
= serialNumber
;
std
::cout << serialNumberTemp
<< std
::endl;
std
::string HAPDserialNumber
,FEBserialNumber
;
GRID m
= mapping
();
int vrstaPisave
= 82;
TCanvas
* c
, * c4
;
TH2D
* h
;
TH1D
* p
= NULL
;
TH2D
* h2
= NULL
;
TPad
* pad1
, * pad2
, * pad3
;
TPaveText
* sn
, * gainTitle
;
/*
TFile * out;
//----------- CREATE OUTPUT FILE
sprintf(buf,"../modules/%04d/%04d.root",runNumber,runNumber);
if (file_exists(buf)){
//out = new TFile(path,"UPDATE");
printf("File %s already exists. To create new, delete old.\n",buf);
return 1;
} else {
out = new TFile(buf,"RECREATE");
printf("Creating file %s\n",buf);
}
*/
/********** GLOBALNE **********/
gStyle
->SetOptStat
(0);
//gStyle->SetOptTitle(1);
gStyle
->SetTextFont
(vrstaPisave
);
gStyle
->SetTitleFont
(vrstaPisave
);
gStyle
->SetTitleFontSize
(0.1);
gStyle
->SetNumberContours
(100);
gStyle
->SetPalette
(55);
//gROOT->SetBatch(kTRUE); //Does not show canvases
/******* PREVERI ČE JE NALOŽEN FILE *******/
if (!strcmp(serialNumber
, "NoFILE")){
printf("Ni naloženege datoteke\n");
return 0;
}
/******* ZRIHTA GRAFE *******/
for(HAPDnumber
=0;HAPDnumber
<4;HAPDnumber
++){
if(save
==2) {
SaveToRootInit
();
}
//std::cout << serialNumberTemp << std::endl;
FEBserialNumber
= serialNumberTemp.
substr(0,serialNumberTemp.
find(","));
serialNumberTemp.
erase(0,FEBserialNumber.
length()+1);
if(!FEBserialNumber.
compare("noserial")) continue;
HAPDserialNumber
= FEBserialNumber.
substr(0,FEBserialNumber.
find("/"));
FEBserialNumber.
erase(0,FEBserialNumber.
find("/")+1);
printf("%s \t %s \t %s \n",FEBserialNumber.
c_str(),HAPDserialNumber.
c_str(),hname
);
sprintf(name
,"%04d_%s_Treshold_c4",runNumber
,HAPDserialNumber.
c_str());
c4
= new TCanvas
(name
,name
,0,0,1200,1200);
c4
->Divide
(2,2);
for (int chip
=0;chip
<4; chip
++){
sprintf(name
,"%04d_%s_Treshold_c%d",runNumber
,HAPDserialNumber.
c_str(),chip
);
c
= new TCanvas
(name
,name
,0,0,1200,1200);
c
->cd
();
pad1
= new TPad
("pad11","SN",0,0.975,1,1,0,0);
pad1
->SetFillStyle
(4000);
pad1
->Draw
();
pad1
->cd
();
sn
= new TPaveText
(0.2,0,0.8,1,"ndc");
sn
->SetBorderSize
(0);
sn
->SetFillColor
(4000);
sn
->SetTextSize
(.8);
sn
->SetTextAlign
(22);
sprintf(buf
,"%s (treshold scan)",HAPDserialNumber.
c_str());
sn
->AddText
(buf
);
//sn->Draw();
/******* DRUGI PAD *******/
c
->cd
();
pad2
= new TPad
("pad2","Date",0.05,0.95,0.95,0.99,0,0);
pad2
->SetFillStyle
(4000);
pad2
->Draw
();
pad2
->cd
();
gainTitle
= new TPaveText
(0,0,1,1,"ndc");
gainTitle
->SetBorderSize
(0);
gainTitle
->SetFillColor
(kSpring
+1);
gainTitle
->SetTextSize
(.6);
gainTitle
->SetTextAlign
(22);
sprintf(buf
,"Treshold scan over center of channels:");
switch(chip
){
case 0: sprintf(buf
,"%s Chip A",buf
);break;
case 1: sprintf(buf
,"%s Chip B",buf
);break;
case 2: sprintf(buf
,"%s Chip D",buf
);break;
case 3: sprintf(buf
,"%s Chip C",buf
);break;
}
gainTitle
->AddText
(buf
);
gainTitle
->Draw
();
//----------- PAD 2 (FIGURES)
c
->cd
();
pad3
= new TPad
("pad2","Figures",0,0,1,0.96,0,0);
pad3
->SetFillStyle
(4000);
pad3
->Draw
();
pad3
->cd
();
pad3
->Divide
(6,6,0,0,0);
for (int i
=0;i
<36;i
++) {
int idx
= i
+chip
*36;
sprintf(name
,"%s;%d",hname
,m.
pozicijaPixla[idx
]+1);
h
= (TH2D
*) data
->Get
(name
);
TVirtualPad
* pad
= pad3
->cd
(m.
pozicijaPixlaNaCipu[idx
]+1);
pad
->SetBorderSize
(0);
pad
->SetBorderMode
(0);
if (h
){
sprintf(name
,"HAPD%d ASIC %d ch %d",HAPDnumber
,chip
,idx
);
p
= h
->ProjectionY
(name
,idx
+HAPDnumber
*144+1,idx
+HAPDnumber
*144+1);
p
->SetTitle
(name
);
p
->SetStats
(kFALSE
);
p
->SetFillColor
(kBlue
);
p
->SetMinimum
(-0.1);
p
->DrawCopy
("AH");
if(save
==2) {
sprintf(text_for_STR
, "Threshold_1D_%s_ASIC_%d_CH_%d", HAPDserialNumber.
c_str(),chip
,idx
);
SaveToRootAddTH1DCopy
(p
, text_for_STR
);
}
if (idx
==0 && h
->InheritsFrom
("TH2D")) {
sprintf(name
,"%s_2d",p
->GetName
());
TAxis
* axis
= p
->GetXaxis
();
h2
= new TH2D
(name
,p
->GetTitle
(),144,-0.5,143.5,axis
->GetNbins
(),
axis
->GetXmin
(),
axis
->GetXmax
() );
h2
->SetTitle
("HAPD Treshold scan");
h2
->GetXaxis
()->SetTitle
("HAPD 2d channels");
h2
->GetYaxis
()->SetTitle
("Treshold");
h2
->GetYaxis
()->SetTitleOffset
(1.4);
}
if (h2
){
for (int k
=0;k
<p
->GetNbinsX
();k
++){
if ((int)p
->GetBinContent
(k
+1)==0) h2
->SetBinContent
(idx
+1,k
+1,1);
else h2
->SetBinContent
(idx
+1,k
+1,p
->GetBinContent
(k
+1));
}
}
} else printf("TH2D %s does not exist !!!!\n",name
);
}
c
->Modified
();
c
->Update
();
if(chip
%2==0) c4
->cd
(chip
+2);
else c4
->cd
(chip
);
c
->DrawClonePad
();
//c->Write();
if (save
==1){
switch (chip
) {
case 0: sprintf(pdfname
,"../modules/%04d/%04d_%s_1_Treshold.pdf(",runNumber
,runNumber
,HAPDserialNumber.
c_str());break;
default: sprintf(pdfname
,"../modules/%04d/%04d_%s_1_Treshold.pdf",runNumber
,runNumber
,HAPDserialNumber.
c_str());break;
}
c
->SaveAs
(pdfname
,"pdf");
} else if (save
==3){
sprintf(pdfname
,"../modules/%04d/%04d_%s.pdf",runNumber
,runNumber
,HAPDserialNumber.
c_str());
c
->SaveAs
(pdfname
,"pdf");
} else if (save
==4){
if(chip
==3) sprintf(pdfname
,"../modules/%04d/%04d_%s.pdf)",runNumber
,runNumber
,HAPDserialNumber.
c_str());
else sprintf(pdfname
,"../modules/%04d/%04d_%s.pdf",runNumber
,runNumber
,HAPDserialNumber.
c_str());
c
->SaveAs
(pdfname
,"pdf");
}
}
if (h2
) {
sprintf(name
,"%04d_%s_Treshold_c%d",runNumber
,HAPDserialNumber.
c_str(),5);
c
= new TCanvas
(name
,name
,600,500);
c
->SetRightMargin
(0.15);
c
->SetLeftMargin
(0.15);
c
->SetLogz
();
sprintf(buf
,"Treshold scan over the center of channels");
h2
->SetTitle
(buf
);
gStyle
->SetTitleFontSize
(0.05);
h2
->SetTitleFont
(vrstaPisave
);
h2
->GetZaxis
()->SetRangeUser
(1,10000);
h2
->GetZaxis
()->SetTickLength
(.02);
h2
->GetZaxis
()->SetLabelFont
(vrstaPisave
);
h2
->GetZaxis
()->SetLabelSize
(0.03);
h2
->GetYaxis
()->SetRangeUser
(500,700);
h2
->GetYaxis
()->SetTitleFont
(vrstaPisave
);
h2
->GetYaxis
()->SetLabelFont
(vrstaPisave
);
//h2->GetYaxis()->SetLabelSize(0.04);
h2
->GetYaxis
()->SetLabelColor
(kBlack
);
//h2->GetYaxis()->SetNdivisions(12);
h2
->GetYaxis
()->CenterTitle
();
h2
->GetYaxis
()->SetTitle
("Treshold");
//h2->GetYaxis()->SetTitleSize(0.05);
h2
->GetYaxis
()->SetTitleOffset
(1.5);
h2
->GetYaxis
()->SetTitleColor
(kBlack
);
//h2->GetXaxis()->SetTickLength(0.05);
h2
->GetXaxis
()->SetTitleFont
(vrstaPisave
);
h2
->GetXaxis
()->SetLabelFont
(vrstaPisave
);
//h2->GetXaxis()->SetLabelSize(0.04);
h2
->GetXaxis
()->SetLabelColor
(kBlack
);
//h2->GetXaxis()->SetLabelOffset(.05);
//h2->GetXaxis()->SetNdivisions(0);
//h2->GetXaxis()->CenterTitle();
h2
->GetXaxis
()->SetTitle
("Channel");
//h2->GetXaxis()->SetTitleSize(0.05);
h2
->GetXaxis
()->SetTitleColor
(kBlack
); //zato ker ga ne moreš pozicionirat
h2
->GetXaxis
()->SetTitleOffset
(1.2);
h2
->SetStats
(kFALSE
);
h2
->DrawCopy
("COLZ");
if(save
==2) {
sprintf(text_for_STR
, "Threshold_2D_%s", HAPDserialNumber.
c_str());
SaveToRootAddTH2DCopy
(h2
, text_for_STR
);
}
c
->Modified
();
c
->Update
();
//c->Write();
if (save
==1){
sprintf(pdfname
,"../modules/%04d/%04d_%s_1_Treshold.pdf",runNumber
,runNumber
,HAPDserialNumber.
c_str());
c4
->SaveAs
(pdfname
,"pdf");
sprintf(pdfname
,"../modules/%04d/%04d_%s_1_Treshold.pdf)",runNumber
,runNumber
,HAPDserialNumber.
c_str());
c
->SaveAs
(pdfname
,"pdf");
} else if (save
==2){
sprintf(pdfname
,"../modules/%04d/%04d_%s.pdf",runNumber
,runNumber
,HAPDserialNumber.
c_str());
c4
->SaveAs
(pdfname
,"pdf");
c
->SaveAs
(pdfname
,"pdf");
} else if (save
==3){
sprintf(pdfname
,"../modules/%04d/%04d_%s.pdf",runNumber
,runNumber
,HAPDserialNumber.
c_str());
c4
->SaveAs
(pdfname
,"pdf");
sprintf(pdfname
,"../modules/%04d/%04d_%s.pdf)",runNumber
,runNumber
,HAPDserialNumber.
c_str());
c
->SaveAs
(pdfname
,"pdf");
}
if(save
==2) {
sprintf(text_for_STR
,"../modules/%04d/%04d_%s_out.root",runNumber
,runNumber
,HAPDserialNumber.
c_str());
SaveToRootWrite
(text_for_STR
, HAPDserialNumber.
c_str());
}
}
}
delete data
;
//out->Close();
return 0;
}