34 fhLegendreZoom = NULL;
47 fhLegendre =
new TH2F(
"fhLegendre",
"", fThetaNofBin,
fThetaMin,
fThetaMax, fRNofBin, fRMin, fRMax);
51 fThetaNofBin = thetaNofBin;
61 else SetUpLegendreHisto();
66 fhLegendre->SetStats(kFALSE);
71 Double_t thetaRad = thetamin * TMath::DegToRad();
72 double deltaThetaRad = TMath::DegToRad() * (thetamax - thetamin)/fThetaNofBin;
80 while(thetaRad < thetamax * TMath::DegToRad()) {
81 double thetaDeg = thetaRad * TMath::RadToDeg();
89 histo->Fill(thetaDeg, r1);
90 histo->Fill(thetaDeg, r2);
94 histo->Fill(thetaDeg, r);
97 thetaRad += deltaThetaRad;
112 return ExtractMaximumFromHisto(fhLegendre, theta_max, r_max);
116 ExtractMaximaFromHisto(nmaxima, fhLegendre, theta_max, r_max, content_max);
122 ExtractLegendreMaximum(theta, r);
123 ExtractLineParameters(theta, r, slope, intercept);
128 fhLegendreZoom =
new TH2F(
"fhLegendreZoom",
"", fThetaNofBin, fThetaMinZoom, fThetaMaxZoom, fRNofBin, fRMin, fRMax);
136 fThetaMinZoom = theta - deltatheta;
137 fThetaMaxZoom = theta + deltatheta;
138 fRMinZoom = r - deltar;
139 fRMaxZoom = r + deltar;
141 fhLegendreZoom->GetXaxis()->SetLimits(fThetaMinZoom, fThetaMaxZoom);
142 fhLegendreZoom->GetYaxis()->SetLimits(fRMinZoom, fRMaxZoom);
147 fhLegendreZoom->Reset();
148 fhLegendreZoom->SetStats(kFALSE);
152 FillHisto(fhLegendreZoom, fThetaMinZoom, fThetaMaxZoom, x, y, radius);
156 return ExtractMaximumFromHisto(fhLegendreZoom, theta_max, r_max);
161 ExtractZoomMaximum(theta, r);
162 ExtractLineParameters(theta, r, slope, intercept);
167 int bin = histo->GetMaximumBin();
168 int binx, biny, binz;
169 histo->GetBinXYZ(bin, binx, biny, binz);
170 theta_max = histo->GetXaxis()->GetBinCenter(binx);
171 r_max = histo->GetYaxis()->GetBinCenter(biny);
172 return histo->GetMaximum();
179 int maxbins[nmaxima];
180 for(
int ibin = 0; ibin < nmaxima; ibin++) maxbins[ibin] = 0;
182 for(
int ibinx = 1; ibinx <= histo->GetNbinsX() ; ibinx++) {
183 for(
int ibiny = 1; ibiny <= histo->GetNbinsY() ; ibiny++) {
185 int bincontent = histo->GetBinContent(ibinx, ibiny);
186 if(bincontent == 0)
continue;
188 int ibintotal = histo->GetBin(ibinx, ibiny);
192 for(
int ibinm = nmaxima - 1; ibinm >= 0; ibinm--) {
194 if(bincontent >= histo->GetBinContent(maxbins[ibinm])) {
195 for(
int jbinm = 0; jbinm < ibinm; jbinm++) maxbins[jbinm] = maxbins[jbinm + 1];
196 maxbins[ibinm] = ibintotal;
203 for(
int ibin = 0; ibin < nmaxima; ibin++) {
204 int bin = maxbins[ibin];
205 int binx, biny, binz;
206 histo->GetBinXYZ(bin, binx, biny, binz);
207 theta_max.push_back(histo->GetXaxis()->GetBinCenter(binx));
208 r_max.push_back(histo->GetYaxis()->GetBinCenter(biny));
209 content_max.push_back(histo->GetBinContent(bin));
219 if(theta == 0.) theta = 1.e-6;
221 slope = - 1./
TMath::Tan(TMath::DegToRad() * theta);
222 intercept = r/
TMath::Sin(TMath::DegToRad() * theta);
229 DeleteZoneAroundXY(fhLegendre, x, y);
233 DeleteZoneAroundXY(fhLegendreZoom, x, y);
244 int binx = (int) ((x - histo->GetXaxis()->GetXmin())/histo->GetXaxis()->GetBinWidth(1)) + 1;
245 int biny = (int) ((y - histo->GetYaxis()->GetXmin())/histo->GetYaxis()->GetBinWidth(1)) + 1;
248 histo->SetBinContent(binx, biny, 0);
249 histo->SetBinContent(binx + 1, biny, 0);
250 histo->SetBinContent(binx - 1, biny, 0);
251 histo->SetBinContent(binx + 1, biny + 1, 0);
252 histo->SetBinContent(binx, biny + 1, 0);
253 histo->SetBinContent(binx - 1, biny + 1, 0);
254 histo->SetBinContent(binx + 1, biny - 1, 0);
255 histo->SetBinContent(binx, biny - 1, 0);
256 histo->SetBinContent(binx - 1, biny - 1, 0);
270 fhLegendre->Draw(
"colz");
274 fhLegendreZoom->Draw(
"colz");