diffapdhv2.C
Go to the documentation of this file.
1 #include <iostream>
2 #include <fstream>
3 #include <sstream>
4 #include "TH1D.h"
5 #include "TH2D.h"
6 #include "TFile.h"
7 #include "TCanvas.h"
8 #include "TStyle.h"
9 
10 using namespace std;
11 
12 void diffapdhv(const char* fname1, const char* fname2){
13  //little macro to compare the hv settings from two different text files.
14  //so that you can make sure you understand what is changing
15 
16  gStyle->SetOptStat("e m r i o");
17  const int NDIBLK=15;
18  const int NFILES=2;
19  TH2D *dcmvprt[NDIBLK][NFILES];
20  TH2D *dcmvprt_volt[NDIBLK][NFILES];
21  for(int i=0;i<NDIBLK;i++){
22  for(int j=0;j<NFILES;j++){
23  dcmvprt[i][j] = new TH2D(Form("dcmvprt_%d_%d",i,j),Form(";DCM %d; PRT",i),12,0.5,12.5,64,-0.5,63.5);
24  dcmvprt[i][j]->SetStats(0);
25 
26  dcmvprt_volt[i][j] = new TH2D(Form("dcmvprt_volt_%d_%d",i,j),Form(";DCM %d; PRT",i),12,0.5,12.5,64,-0.5,63.5);
27  dcmvprt_volt[i][j]->SetStats(0);
28  // dcmvprt_volt[i]->SetMinimum(-1);
29  // dcmvprt_volt[i][j]->SetMaximum(4500);
30  }
31  }
32  TH1D *voltage=new TH1D("",";Ideal (warm) APD Voltage;",100,350,450);
33  TH1D *febicept = new TH1D("",";FEB calibration intercept",30,280,310);
34  TH1D *febslope = new TH1D("",";FEB calibration slope",10,0.0255,0.0265);
35  TH1D *febset[NFILES];
36 
37  for(int i=0;i<NFILES;i++){
38  febset[i] = new TH1D(Form("febset_%d",i),";FEB Setpoint",600,0,6000);
39  }
40  TH1D *febdiff = new TH1D("febdiff",";FEB Setpoint",600,-6000,6000);
41  TH1D *vset = new TH1D("",";Voltage for 2000",150,250,400);
42 
43  ifstream in(fname1);
44  // string apd_sn;
45  int dib;
46  int dcm;
47  int prt;
48  float t;
49  // float v;
50  // string feb;
51  // float icpt;
52  // float slope;
53  string iblank;
54  string dcsstring;
55  float setpoint;
56  // in>>apd_sn;
57  string line;
58  int count = 0;
59  while(std::getline(in,line)){
60  std::istringstream iss(line);
61  std::getline(iss,iblank,',');
62  std::getline(iss,dcsstring,'-');
63  std::getline(iss,iblank,'-');
64  string sdib;
65  std::getline(iss,sdib,'-');
66  dib = atoi(sdib.c_str());
67  string sdcm;
68  std::getline(iss,sdcm,',');
69  dcm = atoi(sdcm.c_str());
70  string sprt;
71  std::getline(iss,sprt,',');
72  prt = atoi(sprt.c_str());
73  string st;
74  std::getline(iss,st,',');
75  t = atof(st.c_str());
76  string ssetpoint;
77  std::getline(iss,ssetpoint,',');
78  setpoint = atof(ssetpoint.c_str());
79  if(setpoint<100){
80  setpoint=2.0;
81  cout<<"low setpoint "<<setpoint<<" dcm "<<dcm<<" prt "<<prt<<endl;
82  }
83  std::getline(iss,iblank,',');
84  std::getline(iss,iblank,',');
85  std::getline(iss,iblank,',');
86  std::getline(iss,iblank,',');
87  std::getline(iss,iblank);
88 
89  // cout<<"dib "<<dib<<" dcm "<<dcm<<" prt "<<prt<<" setpoint "<<setpoint<<" "<<endl;
90  dcmvprt[dib][0]->Fill(dcm,prt);
91  dcmvprt_volt[dib][0]->Fill(dcm,prt,setpoint);
92  // voltage->Fill(v);
93  // febicept->Fill(icpt);
94  // febslope->Fill(slope);
95  febset[0]->Fill(setpoint);
96  // double actualv = 2000*slope+icpt;
97  // cout<<" actual v "<<actualv<<" slope "<<slope<<endl;
98  // vset->Fill(actualv);
99  // cout<<apd_sn<<" "<<dib<<" "<<dcm<<" "<<prt<<" "<<v<<" "<<feb<<" "<<icpt<<" "<<slope<<" "<<setpoint<<endl;
100  count++;
101  // getline(in,line);
102  }
103 
104  ifstream in2(fname2);
105  int count2=0;
106  while(std::getline(in2,line)){
107  std::istringstream iss(line);
108  std::getline(iss,iblank,',');
109  std::getline(iss,dcsstring,'-');
110  std::getline(iss,iblank,'-');
111  string sdib;
112  std::getline(iss,sdib,'-');
113  dib = atoi(sdib.c_str());
114  string sdcm;
115  std::getline(iss,sdcm,',');
116  dcm = atoi(sdcm.c_str());
117  string sprt;
118  std::getline(iss,sprt,',');
119  prt = atoi(sprt.c_str());
120  string st;
121  std::getline(iss,st,',');
122  t = atof(st.c_str());
123  string ssetpoint;
124  std::getline(iss,ssetpoint,',');
125  setpoint = atof(ssetpoint.c_str());
126  if(setpoint<100){
127  setpoint=2.0;
128  cout<<"low setpoint "<<setpoint<<" dcm "<<dcm<<" prt "<<prt<<endl;
129  }
130  std::getline(iss,iblank,',');
131  std::getline(iss,iblank,',');
132  std::getline(iss,iblank,',');
133  std::getline(iss,iblank,',');
134  std::getline(iss,iblank);
135 
136  // cout<<"dib "<<dib<<" dcm "<<dcm<<" prt "<<prt<<" setpoint "<<setpoint<<" "<<endl;
137  dcmvprt[dib][1]->Fill(dcm,prt);
138  dcmvprt_volt[dib][1]->Fill(dcm,prt,setpoint);
139  // voltage->Fill(v);
140  // febicept->Fill(icpt);
141  // febslope->Fill(slope);
142  febset[1]->Fill(setpoint);
143  // double actualv = 2000*slope+icpt;
144  // cout<<" actual v "<<actualv<<" slope "<<slope<<endl;
145  // vset->Fill(actualv);
146  // cout<<apd_sn<<" "<<dib<<" "<<dcm<<" "<<prt<<" "<<v<<" "<<feb<<" "<<icpt<<" "<<slope<<" "<<setpoint<<endl;
147  count2++;
148  // getline(in,line);
149  }
150 
151  for(int i=0;i<NDIBLK;i++){
152  dcmvprt[i][0]->Add(dcmvprt[i][1],-1.);
153  dcmvprt_volt[i][0]->Add(dcmvprt_volt[i][1],-1.);
154  for(int j=1;j<=dcmvprt_volt[i][0]->GetNbinsX();j++){
155  for(int k=1;k<=dcmvprt_volt[i][0]->GetNbinsY();k++){
156  febdiff->Fill(dcmvprt_volt[i][0]->GetBinContent(j,k));
157  }
158  }
159  }
160 
161 
162 
163 
164  cout<<"count "<<count<<endl;
165  TCanvas *can1 = new TCanvas("can1","can1");
166  can1->Divide(2,2);
167  can1->cd(1);
168  dcmvprt[1][0]->Draw("colz");
169  dcmvprt[1][0]->GetXaxis()->CenterTitle();
170  dcmvprt[1][0]->GetYaxis()->CenterTitle();
171  can1->cd(2);
172  dcmvprt[2][0]->Draw("colz");
173  dcmvprt[2][0]->GetXaxis()->CenterTitle();
174  dcmvprt[2][0]->GetYaxis()->CenterTitle();
175  can1->cd(3);
176  dcmvprt[3][0]->Draw("colz");
177  dcmvprt[3][0]->GetXaxis()->CenterTitle();
178  dcmvprt[3][0]->GetYaxis()->CenterTitle();
179  can1->cd(4);
180  dcmvprt[4][0]->Draw("colz");
181  dcmvprt[4][0]->GetXaxis()->CenterTitle();
182  dcmvprt[4][0]->GetYaxis()->CenterTitle();
183 
184  TCanvas *can2 = new TCanvas("can2","can2");
185  can2->Divide(2,2);
186  can2->cd(1);
187  dcmvprt[5][0]->Draw("colz");
188  dcmvprt[5][0]->GetXaxis()->CenterTitle();
189  dcmvprt[5][0]->GetYaxis()->CenterTitle();
190  can2->cd(2);
191  dcmvprt[6][0]->Draw("colz");
192  dcmvprt[6][0]->GetXaxis()->CenterTitle();
193  dcmvprt[6][0]->GetYaxis()->CenterTitle();
194  can2->cd(3);
195  dcmvprt[7][0]->Draw("colz");
196  dcmvprt[7][0]->GetXaxis()->CenterTitle();
197  dcmvprt[7][0]->GetYaxis()->CenterTitle();
198  can2->cd(4);
199  dcmvprt[8][0]->Draw("colz");
200  dcmvprt[8][0]->GetXaxis()->CenterTitle();
201  dcmvprt[8][0]->GetYaxis()->CenterTitle();
202 
203  TCanvas *can3 = new TCanvas("can3","can3");
204  can3->Divide(2,2);
205  can3->cd(1);
206  dcmvprt[9][0]->Draw("colz");
207  dcmvprt[9][0]->GetXaxis()->CenterTitle();
208  dcmvprt[9][0]->GetYaxis()->CenterTitle();
209  can3->cd(2);
210  dcmvprt[10][0]->Draw("colz");
211  dcmvprt[10][0]->GetXaxis()->CenterTitle();
212  dcmvprt[10][0]->GetYaxis()->CenterTitle();
213  can3->cd(3);
214  dcmvprt[11][0]->Draw("colz");
215  dcmvprt[11][0]->GetXaxis()->CenterTitle();
216  dcmvprt[11][0]->GetYaxis()->CenterTitle();
217  can3->cd(4);
218  dcmvprt[12][0]->Draw("colz");
219  dcmvprt[12][0]->GetXaxis()->CenterTitle();
220  dcmvprt[12][0]->GetYaxis()->CenterTitle();
221 
222 
223  TCanvas *can6 = new TCanvas("can6","can6");
224  can6->Divide(2,2);
225  can6->cd(1);
226  dcmvprt_volt[1][0]->Draw("colz");
227  dcmvprt_volt[1][0]->GetXaxis()->CenterTitle();
228  dcmvprt_volt[1][0]->GetYaxis()->CenterTitle();
229  can6->cd(2);
230  dcmvprt_volt[2][0]->Draw("colz");
231  dcmvprt_volt[2][0]->GetXaxis()->CenterTitle();
232  dcmvprt_volt[2][0]->GetYaxis()->CenterTitle();
233  can6->cd(3);
234  dcmvprt_volt[3][0]->Draw("colz");
235  dcmvprt_volt[3][0]->GetXaxis()->CenterTitle();
236  dcmvprt_volt[3][0]->GetYaxis()->CenterTitle();
237  can6->cd(4);
238  dcmvprt_volt[4][0]->Draw("colz");
239  dcmvprt_volt[4][0]->GetXaxis()->CenterTitle();
240  dcmvprt_volt[4][0]->GetYaxis()->CenterTitle();
241 
242  TCanvas *can7 = new TCanvas("can7","can7");
243  can7->Divide(2,2);
244  can7->cd(1);
245  dcmvprt_volt[5][0]->Draw("colz");
246  dcmvprt_volt[5][0]->GetXaxis()->CenterTitle();
247  dcmvprt_volt[5][0]->GetYaxis()->CenterTitle();
248  can7->cd(2);
249  dcmvprt_volt[6][0]->Draw("colz");
250  dcmvprt_volt[6][0]->GetXaxis()->CenterTitle();
251  dcmvprt_volt[6][0]->GetYaxis()->CenterTitle();
252  can7->cd(3);
253  dcmvprt_volt[7][0]->Draw("colz");
254  dcmvprt_volt[7][0]->GetXaxis()->CenterTitle();
255  dcmvprt_volt[7][0]->GetYaxis()->CenterTitle();
256  can7->cd(4);
257  dcmvprt_volt[8][0]->Draw("colz");
258  dcmvprt_volt[8][0]->GetXaxis()->CenterTitle();
259  dcmvprt_volt[8][0]->GetYaxis()->CenterTitle();
260 
261  TCanvas *can8 = new TCanvas("can8","can8");
262  can8->Divide(2,2);
263  can8->cd(1);
264  dcmvprt_volt[9][0]->Draw("colz");
265  dcmvprt_volt[9][0]->GetXaxis()->CenterTitle();
266  dcmvprt_volt[9][0]->GetYaxis()->CenterTitle();
267  can8->cd(2);
268  dcmvprt_volt[10][0]->Draw("colz");
269  dcmvprt_volt[10][0]->GetXaxis()->CenterTitle();
270  dcmvprt_volt[10][0]->GetYaxis()->CenterTitle();
271  can8->cd(3);
272  dcmvprt_volt[11][0]->Draw("colz");
273  dcmvprt_volt[11][0]->GetXaxis()->CenterTitle();
274  dcmvprt_volt[11][0]->GetYaxis()->CenterTitle();
275  can8->cd(4);
276  dcmvprt_volt[12][0]->Draw("colz");
277  dcmvprt_volt[12][0]->GetXaxis()->CenterTitle();
278  dcmvprt_volt[12][0]->GetYaxis()->CenterTitle();
279 
280 
281  // TCanvas *can2 = new TCanvas("can2","can2");
282  // can2->cd();
283  // voltage->Draw();
284  // TCanvas *can3 = new TCanvas("can3","can3");
285  // can3->cd();
286  // febicept->Draw();
287  // TCanvas *can4 = new TCanvas("can4","can4");
288  // can4->cd();
289  // febslope->GetXaxis()->SetNdivisions(504);
290  // febslope->Draw();
291  TCanvas *canf = new TCanvas("canf","canf");
292  canf->cd();
293  febdiff->Draw();
294  // TCanvas *can7 = new TCanvas("can7","can7");
295  // can7->cd();
296  // vset->SetStats(0);
297  // vset->Draw();
298  /*
299  for(int i=1;i<NDIBLK;i++){
300  for(int j=1;j<=dcmvprt[i]->GetNbinsX();j++){
301  for(int k=1;k<=dcmvprt[i]->GetNbinsY();k++){
302  if(dcmvprt[i]->GetBinContent(j,k)<0.5) cout<<"zero! diblock "<<i<<" dcm "<<j<<" port "<<k-1<<endl;
303  if(dcmvprt[i]->GetBinContent(j,k)>1.5) cout<<"double! diblock "<<i<<" dcm "<<j<<" port "<<k-1<<endl;
304  }
305  }
306  }
307  */
308 
309 }
void diffapdhv(const char *fname1, const char *fname2)
Definition: diffapdhv2.C:12
const double j
Definition: BetheBloch.cxx:29
TCanvas * can1
Definition: tutCAFMacro.C:16
OStream cout
Definition: OStream.cxx:6
ifstream in
Definition: comparison.C:7
TCanvas * can2
Definition: tutCAFMacro.C:40