SignalFormNEW.cpp
1 |
#include "TH1F.h" |
---|---|
2 |
|
3 |
void SignalFormNEW( const char *foldername = "report", const char *ext = ".gif") |
4 |
{ |
5 |
//gSystem->Load("../libData.so");
|
6 |
using std::cout;
|
7 |
using std::endl;
|
8 |
|
9 |
TFile *f = new TFile("/home/muzalevsky/work/dataER/simNeuRad/analyze_4000_0_test.root"); |
10 |
//TFile fr("../data/dataTektronix/GSItests/1000V_trigg40mv/30_60_10_50_GSI.root");
|
11 |
TTree *tr = (TTree*)f->Get("cbmsim");
|
12 |
|
13 |
const Int_t noBranches = 2; |
14 |
Double_t ZeroTime[4],mh[4],RisTime[4],decayT[4]; |
15 |
Int_t iZero[4],PosZero[4],deltaT[4],Eh[4],Bh[4]; |
16 |
TString bName; |
17 |
ERNeuRadAEvent *aevent[noBranches]; // pointer to the array (of RawEvent class) in which raw data for each channel will be put
|
18 |
for (Int_t j = 0; j<noBranches; j++) { |
19 |
aevent[j] = new ERNeuRadAEvent(1000); //each raw event element is of class RawEvent() |
20 |
bName.Form("Ach%d.", j+1); |
21 |
tr->SetBranchAddress(bName.Data(), &aevent[j]); //read the tree tr with raw data and fill array revent with raw data
|
22 |
//cout << tr->SetBranchAddress(bName.Data(), &aevent[j]) << endl; //read the tree tr with raw data and fill array revent with raw data
|
23 |
} |
24 |
|
25 |
TString hname,Chname; |
26 |
TH1F *hist[2];
|
27 |
for (Int_t i = 0; i < 2; i++) { |
28 |
hname.Form("hist%d",i);
|
29 |
Chname.Form("Integral form of the signal SIM");
|
30 |
hist[i] = new TH1F(hname.Data(), Chname.Data(), 1000, 0, 100); |
31 |
} |
32 |
|
33 |
TF1 *fit1 = new TF1("fit1","-[0]*exp(-x*[1])"); |
34 |
//fit1->SetRange(-15,-5);
|
35 |
fit1->SetParName(1,"tD"); |
36 |
|
37 |
Long64_t nEntries = tr->GetEntries(); |
38 |
|
39 |
//loop over events
|
40 |
for (Int_t j = 0; j < nEntries; j++) { |
41 |
//{ Int_t j=0;
|
42 |
//cout<<"found event number "<<j<<endl;
|
43 |
tr->GetEntry(j); |
44 |
for(Int_t k=0;k<2;k++) { // loop for channels |
45 |
ZeroTime[k] = aevent[k]->GetfLED(); // get LEDtime for channel №k
|
46 |
//ZeroTime[k] = aevent[k]->GetfCFD(); // get LEDtime for channel №k
|
47 |
iZero[k] = ZeroTime[k]*10;
|
48 |
if(j==0) { PosZero[k] = iZero[k]; } |
49 |
deltaT[k] = iZero[k] - PosZero[k]; |
50 |
} |
51 |
|
52 |
for(Int_t i = 0; i<1000; i++){ |
53 |
if( ((i+deltaT[0])>-1) && ((i+deltaT[0])<1000)) hist[0]->AddBinContent(i,aevent[0]->GetOnefAmpPos(i+deltaT[0])); |
54 |
if( ((i+deltaT[1])>-1) && ((i+deltaT[1])<1000)) hist[1]->AddBinContent(i,aevent[1]->GetOnefAmpPos(i+deltaT[1])); |
55 |
} |
56 |
} |
57 |
|
58 |
TCanvas *c1 = new TCanvas("c1","testSIM",10,10,1000,600); |
59 |
//c1->Divide(2,2);
|
60 |
Int_t i=0;
|
61 |
//for(Int_t i=0;i<2;i++)
|
62 |
{ |
63 |
//c1->cd(i+1);file8000_20.root
|
64 |
|
65 |
hist[i]->GetYaxis()->SetTitle("Signal [V]");
|
66 |
hist[i]->GetYaxis()->CenterTitle(); |
67 |
|
68 |
hist[i]->GetXaxis()->SetTitle("Time [ns]");
|
69 |
hist[i]->GetXaxis()->CenterTitle(); |
70 |
|
71 |
hist[i]->GetXaxis()->SetRangeUser(0, 30); |
72 |
|
73 |
hist[i]->Draw(); |
74 |
c1->Update(); |
75 |
} |
76 |
|
77 |
|
78 |
|
79 |
|
80 |
TFile *f1 = new TFile("/home/muzalevsky/work/dataER/analyzeEXP.root"); |
81 |
//TFile fr("../data/dataTektronix/GSItests/1000V_trigg40mv/30_60_10_50_GSI.root");
|
82 |
TTree *tr1 = (TTree*)f1->Get("cbmsim");
|
83 |
|
84 |
ERNeuRadAEvent *aevent1[noBranches]; // pointer to the array (of RawEvent class) in which raw data for each channel will be put
|
85 |
for (Int_t j = 0; j<noBranches; j++) { |
86 |
aevent1[j] = new ERNeuRadAEvent(1024); //each raw event element is of class RawEvent() |
87 |
bName.Form("Ach%d.", j+1); |
88 |
tr1->SetBranchAddress(bName.Data(), &aevent[j]); //read the tree tr with raw data and fill array revent with raw data
|
89 |
} |
90 |
|
91 |
TH1F *hist1[2];
|
92 |
for (Int_t i = 0; i < 2; i++) { |
93 |
hname.Form("hist1%d",i);
|
94 |
Chname.Form("Integral form of the signal EXP");
|
95 |
hist1[i] = new TH1F(hname.Data(), Chname.Data(), 1024, 0, 100); |
96 |
} |
97 |
nEntries = tr1->GetEntries(); |
98 |
|
99 |
//loop over events
|
100 |
for (Int_t j = 0; j < nEntries; j++) { |
101 |
//cout<<"found event number "<<j<<endl;
|
102 |
tr1->GetEntry(j); |
103 |
for(Int_t k=0;k<2;k++) { // loop for channels |
104 |
ZeroTime[k] = aevent1[k]->GetfLED(); // get fCFD for channel №k
|
105 |
//ZeroTime[k] = aevent1[k]->GetfCFD();
|
106 |
iZero[k] = ZeroTime[k]*10;
|
107 |
if(j==0) { PosZero[k] = iZero[k]; } |
108 |
deltaT[k] = iZero[k] - PosZero[k]; |
109 |
} |
110 |
|
111 |
for(Int_t i = 0; i<1024; i++){ |
112 |
if( ((i+deltaT[0])>-1) && ((i+deltaT[0])<1024)) hist1[0]->AddBinContent(i, aevent[0]->GetOnefAmpPos(i+deltaT[0])); |
113 |
if( ((i+deltaT[1])>-1) && ((i+deltaT[1])<1024)) hist1[1]->AddBinContent(i, aevent[1]->GetOnefAmpPos(i+deltaT[1])); |
114 |
} |
115 |
} |
116 |
|
117 |
//------------------------------------------- finding Nbins of max summAMP
|
118 |
Double_t max1,max2; |
119 |
Int_t n1,n2; |
120 |
for(Int_t i=0;i<1000;i++){ |
121 |
if(hist[0]->GetBinContent(i) > max1) { |
122 |
max1 = hist[0]->GetBinContent(i);
|
123 |
n1 = i; |
124 |
} |
125 |
|
126 |
if(hist1[0]->GetBinContent(i) > max2) { |
127 |
max2 = hist1[0]->GetBinContent(i);
|
128 |
n2 = i; |
129 |
} |
130 |
} |
131 |
cout << n1 << " " << n2 << endl;
|
132 |
//-------------------------------------------
|
133 |
TH1F *h1 = new TH1F("h1","summEXPhist",1000,0,100); |
134 |
TH1F *h2 = new TH1F("h2","summSIMhist",1000,0,100); |
135 |
|
136 |
|
137 |
for(Int_t i =0; i<1000;i++) { |
138 |
if(i > (n2-n1)) {
|
139 |
h1->SetBinContent( i - (n2-n1), (max1/max2)*hist1[0]->GetBinContent(i));
|
140 |
} |
141 |
else {h1->SetBinContent(i, 0);} |
142 |
} |
143 |
|
144 |
/* for(Int_i = 0;i<1000;i++) {
|
145 |
if(i<(500 + n1)) {
|
146 |
h1->SetBinContent( i + (500-n1), (max1/max2)*hist1[0]->GetBinContent(i) );
|
147 |
}
|
148 |
else {h1->SetBinContent(i, 0);}
|
149 |
|
150 |
if(i>(n2 - 500)) {
|
151 |
h2->SetBinContent( i - (n2-500), hist[0]->GetBinContent(i) );
|
152 |
}
|
153 |
else {h2->SetBinContent(i, 0);}
|
154 |
}*/
|
155 |
|
156 |
//h1->Draw();
|
157 |
//h2->Draw("SAME");
|
158 |
h1->GetYaxis()->SetTitle("Signal [V]");
|
159 |
h1->GetYaxis()->CenterTitle(); |
160 |
|
161 |
h1->GetXaxis()->SetTitle("Time [ns]");
|
162 |
h1->GetXaxis()->CenterTitle(); |
163 |
h1->SetLineColor(kRed); |
164 |
h1->Draw("SAME");
|
165 |
|
166 |
|
167 |
//TCanvas *c2 = new TCanvas("c2","testEXP",10,10,1000,600);
|
168 |
//i=0;
|
169 |
//for(Int_t i=0;i<2;i++)
|
170 |
//c1->cd(i+1);
|
171 |
/* hist1[i]->GetYaxis()->SetTitle("Signal [V]");
|
172 |
hist1[i]->GetYaxis()->CenterTitle();
|
173 |
|
174 |
hist1[i]->GetXaxis()->SetTitle("Time [ns]");
|
175 |
hist1[i]->GetXaxis()->CenterTitle();
|
176 |
hist1[i]->SetLineColor(kRed);
|
177 |
hist1[i]->Draw();
|
178 |
*/
|
179 |
//c2->Update();
|
180 |
//}
|
181 |
|
182 |
|
183 |
} |