| 4 |
* Version 1.2 |
* Version 1.2 |
| 5 |
* Modified by G.De Rosa |
* Modified by G.De Rosa |
| 6 |
* Date 27 Apr 2006 |
* Date 27 Apr 2006 |
| 7 |
|
* Modified by G.De Rosa |
| 8 |
|
* Date 03 Jul 2006 |
| 9 |
* |
* |
| 10 |
* Description: |
* Description: |
| 11 |
* Describe the performance of the TOF. |
* Describe the performance of the TOF. |
| 16 |
* TString format - the format which will be used fo rsave the produced images (Default = "gif") |
* TString format - the format which will be used fo rsave the produced images (Default = "gif") |
| 17 |
*/ |
*/ |
| 18 |
|
|
| 19 |
|
#include <TROOT.h> |
| 20 |
|
#include <TH1.h> |
| 21 |
|
#include <TFile.h> |
| 22 |
|
#include <TObjArray.h> |
| 23 |
#include <TString.h> |
#include <TString.h> |
| 24 |
#include <TObjString.h> |
#include <TObjString.h> |
| 25 |
#include <TTree.h> |
#include <TTree.h> |
| 58 |
file->Close(); |
file->Close(); |
| 59 |
return; |
return; |
| 60 |
} |
} |
|
|
|
|
TH2S *tdcHisto = new TH2S("tdcHisto", sst.str().c_str(), 409, 0, 4096, 48, 0, 48); |
|
|
TH2S *adcHisto = new TH2S("adcHisto", sst.str().c_str(), 409, 0, 4096, 48, 0, 48); |
|
|
|
|
| 61 |
|
|
| 62 |
/* |
/* |
| 63 |
* Array to convert hdc/adc to the real Photomultiplier |
* Array to convert hdc/adc to the real Photomultiplier |
| 96 |
"S32_1A", "S32_1B", "S32_2A", "S32_2B", "S32_3A", "S32_3B" |
"S32_1A", "S32_1B", "S32_2A", "S32_2B", "S32_3A", "S32_3B" |
| 97 |
}; |
}; |
| 98 |
|
|
| 99 |
int i = 0; |
const Int_t nh = 48; |
| 100 |
|
TH1F *htdc[nh]; |
| 101 |
|
TH1F *hadc[nh]; |
| 102 |
|
|
| 103 |
|
TObjArray *hhtdc = new TObjArray(nh); |
| 104 |
|
TObjArray *hhadc = new TObjArray(nh); |
| 105 |
|
char tdcname[48]=""; |
| 106 |
|
char adcname[48]=""; |
| 107 |
|
|
| 108 |
int j = 0; |
int j = 0; |
| 109 |
int k = 0; |
int k = 0; |
| 110 |
int z = 0; |
int z = 0; |
| 111 |
int ch = 0; |
int ch = 0; |
| 112 |
int hb = 0; |
int hb = 0; |
| 113 |
|
int ind =0; |
| 114 |
while(i < nevents){ |
|
| 115 |
|
|
| 116 |
|
for (int i=0; i < nevents; i++){ |
| 117 |
|
|
| 118 |
TofBr->GetEntry(i); |
TofBr->GetEntry(i); |
| 119 |
|
|
| 120 |
k = 0; |
k = 0; |
| 121 |
while (k < 24){ |
while (k < 24){ |
| 122 |
j = 0; |
j = 0; |
| 123 |
while (j < 2){ |
while (j < 2){ |
| 124 |
ch = tof[2*j][k] - 1; |
ch = tof[2*j][k] - 1; |
| 125 |
hb = tof[2*j + 1][k] - 1; |
hb = tof[2*j + 1][k] - 1; |
| 126 |
tdcHisto->Fill(tofEvent->tdc[ch][hb], 2*k + j); |
ind = 2*k + j; |
| 127 |
adcHisto->Fill(tofEvent->adc[ch][hb], 2*k + j); |
|
| 128 |
|
if(i==0){ |
| 129 |
|
sprintf(tdcname,"TDChist%4.4d",ind); |
| 130 |
|
sprintf(adcname,"ADChist%4.4d",ind); |
| 131 |
|
|
| 132 |
|
htdc[ind] = new TH1F(tdcname,tdcname,409,0,4096); |
| 133 |
|
hadc[ind] = new TH1F(adcname,adcname,409,0,4096); |
| 134 |
|
|
| 135 |
|
hhtdc->Add(htdc[ind]); |
| 136 |
|
hhadc->Add(hadc[ind]); |
| 137 |
|
} |
| 138 |
|
|
| 139 |
|
htdc[ind]->Fill(tofEvent->tdc[ch][hb]); |
| 140 |
|
hadc[ind]->Fill(tofEvent->adc[ch][hb]); |
| 141 |
|
|
| 142 |
j++; |
j++; |
| 143 |
} |
} |
| 144 |
k++; |
k++; |
| 145 |
} |
} |
|
i++; |
|
| 146 |
} |
} |
|
|
|
|
TH1D *tpADC = 0; |
|
|
TH1D *tpTDC = 0; |
|
|
TH1D *tpADCall = 0; |
|
|
TH1D *tpTDCall = 0; |
|
| 147 |
|
|
| 148 |
float *X = new float[48]; |
float *X = new float[48]; |
| 149 |
float *means = new float[48]; |
float *means = new float[48]; |
| 150 |
float *entries = new float[48]; |
float *entries = new float[48]; |
| 151 |
int *entriestdc = new int[48]; |
int *entriestdc = new int[48]; |
| 152 |
int *entriesadc = new int[48]; |
int *entriesadc = new int[48]; |
| 153 |
|
|
| 154 |
const char *saveas = format; |
const char *saveas = format; |
|
|
|
|
// all range ADC/TDC |
|
| 155 |
|
|
| 156 |
j = 0; |
int i=0; |
|
while (j < 12){ |
|
|
k = 0; |
|
|
z = 0; |
|
|
|
|
|
while(k < 4){ |
|
|
if (k > 1) z = 2; |
|
|
i = j*4 + k; |
|
|
X[i] = i; |
|
|
|
|
|
tpTDCall = tdcHisto->ProjectionX(" ", i+1, i+1); |
|
|
tpTDCall->SetAxisRange(0,4095); |
|
|
entriestdc[i] = (Int_t)tpTDCall->Integral(); |
|
|
|
|
|
tpADCall = adcHisto->ProjectionX(" ", i+1, i+1); |
|
|
tpADCall->SetAxisRange(0,4095); |
|
|
entriesadc[i] = (Int_t)tpADCall->Integral(); |
|
|
|
|
|
k++; |
|
|
} |
|
|
|
|
|
j++; |
|
|
|
|
|
} |
|
| 157 |
|
|
| 158 |
gStyle->SetStatW(0.4); |
gStyle->SetStatW(0.4); |
| 159 |
gStyle->SetStatH(0.4); |
gStyle->SetStatH(0.4); |
| 163 |
|
|
| 164 |
TCanvas *SCanvas = new TCanvas("SCanvas","SCanvas", 1280, 1024); |
TCanvas *SCanvas = new TCanvas("SCanvas","SCanvas", 1280, 1024); |
| 165 |
SCanvas->Divide(4,2); |
SCanvas->Divide(4,2); |
| 166 |
|
|
| 167 |
j = 0; |
j = 0; |
| 168 |
while (j < 12){ |
while (j < 12){ |
| 169 |
k = 0; |
k = 0; |
| 182 |
X[i] = i; |
X[i] = i; |
| 183 |
|
|
| 184 |
SCanvas->cd(k+3+z); |
SCanvas->cd(k+3+z); |
| 185 |
tpTDC = tdcHisto->ProjectionX(" ", i+1, i+1); |
htdc[i] = (TH1F*)hhtdc->At(i); |
| 186 |
|
entriestdc[i] = (Int_t)htdc[i]->Integral(); |
| 187 |
sst.str(""); |
sst.str(""); |
| 188 |
sst << "TDC - " << photoS[i].Data() << " (Nev < 4096 = " << entriestdc[i] << ")"; |
sst << "TDC - " << photoS[i].Data() << " (Nev < 4096 = " << entriestdc[i] << ")"; |
| 189 |
tpTDC->SetTitle(sst.str().c_str()); |
htdc[i]->SetTitle(sst.str().c_str()); |
| 190 |
tpTDC->SetTitleSize(10); |
htdc[i]->SetTitleSize(10); |
| 191 |
tpTDC->SetAxisRange(690,1510); |
htdc[i]->SetAxisRange(690,1510); |
| 192 |
tpTDC->DrawCopy(); |
htdc[i]->DrawCopy(); |
| 193 |
tpTDC->ComputeIntegral(); |
htdc[i]->ComputeIntegral(); |
| 194 |
entries[i] = tpTDC->Integral(); |
entries[i] = htdc[i]->Integral(); |
| 195 |
|
|
| 196 |
SCanvas->cd(k+1+z); |
SCanvas->cd(k+1+z); |
| 197 |
tpADC = adcHisto->ProjectionX(" ", i+1, i+1); |
hadc[i] = (TH1F*)hhadc->At(i); |
| 198 |
|
entriesadc[i] = (Int_t)hadc[i]->Integral(); |
| 199 |
sst.str(""); |
sst.str(""); |
| 200 |
sst << "ADC - " << photoS[i].Data() << " (Nev < 4096 = " << entriesadc[i] << ")"; |
sst << "ADC - " << photoS[i].Data() << " (Nev < 4096 = " << entriesadc[i] << ")"; |
| 201 |
tpADC->SetTitle(sst.str().c_str()); |
hadc[i]->SetTitle(sst.str().c_str()); |
| 202 |
tpADC->SetAxisRange(-10,710); |
hadc[i]->SetAxisRange(-10,710); |
| 203 |
tpADC->DrawCopy(); |
hadc[i]->DrawCopy(); |
| 204 |
means[i] = tpADC->GetMean(); |
means[i] = hadc[i]->GetMean(); |
| 205 |
|
|
| 206 |
k++; |
k++; |
| 207 |
} |
} |
| 208 |
|
|
| 209 |
|
|
| 210 |
if ( !strcmp(saveas,"ps") ) { |
if ( !strcmp(saveas,"ps") ) { |
| 211 |
sst.str(""); |
sst.str(""); |
| 212 |
sst << outDirectory.Data() << filename.Data() << "TOFScan.ps("; |
sst << outDirectory.Data() << filename.Data() << "TOFScan.ps("; |
| 219 |
} |
} |
| 220 |
j++; |
j++; |
| 221 |
} |
} |
| 222 |
|
|
| 223 |
if (gROOT->IsBatch()) SCanvas->Close(); |
if (gROOT->IsBatch()) SCanvas->Close(); |
| 224 |
|
|
| 225 |
/* |
/* |
| 235 |
sst.str(""); |
sst.str(""); |
| 236 |
sst << "ADCMean" << " - Data in " << base.Data() << " - Nevents in the run = " << nevents; |
sst << "ADCMean" << " - Data in " << base.Data() << " - Nevents in the run = " << nevents; |
| 237 |
adcMeans->SetTitle(sst.str().c_str()); |
adcMeans->SetTitle(sst.str().c_str()); |
| 238 |
adcMeans->SetFillColor(2); |
adcMeans->SetFillColor(35); |
| 239 |
adcMeans->GetXaxis()->SetTitle("Photomultipliers"); |
adcMeans->GetXaxis()->SetTitle("Photomultipliers"); |
| 240 |
adcMeans->GetXaxis()->CenterTitle(); |
adcMeans->GetXaxis()->CenterTitle(); |
| 241 |
adcMeans->GetXaxis()->SetLimits(-0.5, 47.5); |
adcMeans->GetXaxis()->SetLimits(-0.5, 47.5); |
| 248 |
sst.str(""); |
sst.str(""); |
| 249 |
sst << "TDCEntries" << " - Data in " << base.Data() << " - Nevents in the run = " << nevents; |
sst << "TDCEntries" << " - Data in " << base.Data() << " - Nevents in the run = " << nevents; |
| 250 |
tdcEntries->SetTitle(sst.str().c_str()); |
tdcEntries->SetTitle(sst.str().c_str()); |
| 251 |
tdcEntries->SetFillColor(2); |
tdcEntries->SetFillColor(35); |
| 252 |
tdcEntries->GetXaxis()->SetTitle("Photomultipliers"); |
tdcEntries->GetXaxis()->SetTitle("Photomultipliers"); |
| 253 |
tdcEntries->GetXaxis()->CenterTitle(); |
tdcEntries->GetXaxis()->CenterTitle(); |
| 254 |
tdcEntries->GetXaxis()->SetLimits(-0.5, 47.5); |
tdcEntries->GetXaxis()->SetLimits(-0.5, 47.5); |