25void CosmicsBox::Print_Phi_ew(vector<int> phi_chx, vector<float> ly_C0, vector<int> SiPMchannels,
float windowmin,
float windowmax,
float maxfrom,
float maxto,
int nbins,
bool corr,
bool periodic) {
30 int sipmnum = SiPMchannels.size();
31 vector<int> ch_index;
for (
int i = 0; i < sipmnum; i++) ch_index.push_back(0);
33 for (
int j = 0; j < sipmnum; j++) {
39 vector<float> ly_corr;
43 for (
int i = 0; i < sipmnum; i++) ly_av += ly_C0[i];
45 for (
int i = 0; i < sipmnum; i++) ly_corr.push_back(sipmnum * ly_C0[i] / ly_av);
47 else for (
int i = 0; i < sipmnum; i++) ly_corr.push_back(1);
50 for (
int i = 0; i < sipmnum; i++) cout <<
"Correction factor for channel " << SiPMchannels[i] <<
":" << ly_corr[i] << endl;
53 gStyle->SetOptStat(
"emr"); gStyle->SetOptFit(1111);
54 TString his_name(Form(
"#phi_ew-spectrum_from_ch%d_to_ch%d", SiPMchannels.front(), SiPMchannels.back()));
55 TCanvas* hisc =
new TCanvas(his_name, his_name, 600, 400);
57 double min_angle = -180, max_angle = 180;
58 if (periodic) { min_angle = -540; max_angle = 540; }
59 TH1* his =
new TH1F(his_name, his_name, nbins, min_angle, max_angle);
62 float lightyield, anglevaluex, anglevaluey, phi_ew = 0;
63 for (
int i = 0; i <
nevents; i++) {
65 for (
int j = 0; j < sipmnum; j++) {
67 lightyield =
GetPeakIntegral(hisly, windowmin, windowmax, maxfrom, maxto, 0);
68 anglevaluex += cos(phi_chx[j] * TMath::Pi() / 180) * lightyield / ly_corr[j];
69 anglevaluey += sin(phi_chx[j] * TMath::Pi() / 180) * lightyield / ly_corr[j];
72 phi_ew = atan2(anglevaluey, anglevaluex) * 180 / TMath::Pi();
75 his->Fill(phi_ew + 360);
76 his->Fill(phi_ew - 360);
78 anglevaluex = 0, anglevaluey = 0;
83 his->GetXaxis()->SetTitle(
"#phi_{ew} [#circ]");
84 his->GetYaxis()->SetTitle(
"#Entries");
90 TF1* f =
new TF1(
"fitf", fitf, min_angle, max_angle, n_par);
94 double max = his->GetMaximum();
95 double min = his->GetMinimum();
96 his->GetXaxis()->SetRangeUser(-180, 180);
97 double phi_est = his->GetXaxis()->GetBinCenter(his->GetMaximumBin());
98 his->GetXaxis()->SetRangeUser(0, 0);
100 f->SetParName(0,
"A"); f->SetParameter(0, max - min); f->SetParLimits(0, 1, 1e9);
101 f->SetParName(1,
"#bar{#phi_{ew}}"); f->SetParameter(1, phi_est); f->SetParLimits(1, -180, 180);
102 f->SetParName(2,
"#sigma"); f->SetParameter(2, 40); f->SetParLimits(2, 5, 360);
103 f->SetParName(3,
"offset"); f->SetParameter(3, min); f->SetParLimits(3, TMath::Min(min - 1, 0.1), 1e9);
105 TFitResultPtr fresults = his->Fit(f,
"LRS");
110 root_out->WriteObject(hisc,
"Phi_ew");
111 root_out->WriteObject(his,
"Phi_ew_his");
113 string pdf_name =
"phi_ew_spectrum";
114 pdf_name += corr ?
"_corr.pdf" :
"_uncorr.pdf";
115 hisc->SaveAs(pdf_name.c_str());
void Print_Phi_ew(vector< int >, vector< float >, vector< int >, float=1, float=1, float=100, float=140, int=400, bool=true, bool=false)
Angular distribution of passing particles in the cosmics setup.