+ fHistos = dynamic_cast<TList*>(GetOutputData(0));
+ if (!fHistos) {
+ Printf("ERROR: list not available");
+ return;
+ }
+ // define iterator over graphs
+ Int_t jgraph = (Int_t)kGraphStart;
+
+ //PROCESS RESIDUAL DISTRIBUTIONS
+
+ // Clusters residuals
+ h2 = (TH2I *)(fHistos->At(kClusterYResidual));
+ TGraphErrors *residuals_mean = new TGraphErrors(h2->GetNbinsX());
+ residuals_mean->SetLineColor(kGreen);
+ residuals_mean->SetMarkerStyle(22);
+ residuals_mean->SetMarkerColor(kGreen);
+ TGraphErrors *residuals_sigma = new TGraphErrors(h2->GetNbinsX());
+ residuals_mean->SetNameTitle("residuals_mean", "Residuals Mean Phi");
+ residuals_sigma->SetNameTitle("residuals_sigma", "Residuals Sigma Phi");
+ residuals_sigma->SetLineColor(kRed);
+ residuals_sigma->SetMarkerStyle(23);
+ residuals_sigma->SetMarkerColor(kRed);
+ for(Int_t ibin = 1; ibin <= h2->GetNbinsX(); ibin++){
+ Double_t phi = h2->GetXaxis()->GetBinCenter(ibin);
+ Double_t dphi = h2->GetXaxis()->GetBinWidth(ibin)/2;
+ h = h2->ProjectionY("py", ibin, ibin);
+ h->Fit(&f, "QN", "", -0.5, 0.5);
+ residuals_mean->SetPoint(ibin - 1, phi, f.GetParameter(1));
+ residuals_mean->SetPointError(ibin - 1, dphi, f.GetParError(1));
+ residuals_sigma->SetPoint(ibin - 1, phi, f.GetParameter(2));
+ residuals_sigma->SetPointError(ibin - 1, dphi, f.GetParError(2));
+ }
+ fHistos->AddAt(residuals_mean, jgraph++);
+ fHistos->AddAt(residuals_sigma, jgraph++);