14 double ContentInRange=0;
15 for (
int i=0; i<=hist->GetNbinsX(); i++)
17 if ( ( (hist->GetBinCenter(i) + hist->GetBinWidth(i)/2.) < centralX+halfWidth) &&
18 ( (hist->GetBinCenter(i) - hist->GetBinWidth(i)/2.) > centralX-halfWidth ))
20 ContentInRange=ContentInRange+ hist->GetBinContent(i);
23 int borderbin=hist->FindBin(centralX-halfWidth);
25 double ContentInLeftBorderBin = hist->GetBinContent(borderbin)*
26 ((hist->GetBinCenter(borderbin) + hist->GetBinWidth(borderbin)/2.) -(centralX-halfWidth))/hist->GetBinWidth(borderbin);
28 borderbin=hist->FindBin(centralX+halfWidth);
29 double ContentInRightBorderBin = hist->GetBinContent(borderbin)*((centralX+halfWidth) - (hist->GetBinCenter(borderbin) -
30 hist->GetBinWidth(borderbin)/2.))/hist->GetBinWidth(borderbin);
32 return ContentInRange+ContentInRightBorderBin+ContentInLeftBorderBin;
57 double PercentageOfEntriesInWidth,
67 if (n_max_runs<=0)
return;
69 Double_t
mean=0.0, sigma=0.0;
70 Double_t old_sigma=0.0;
73 TF1 gaussian(
"g1",
"gaus");
74 gaussian.SetRange(-300,300);
77 for (
int i=1; i<=n_max_runs ;i++)
79 hist->Fit(&gaussian,
"R");
80 gaussian.GetParameters(&par[0]);
82 sigma = std::abs(par[2]);
83 gaussian.SetRange(
mean-sigma*2.,
mean+sigma*2.);
86 if (std::abs(1.0-old_sigma/sigma)<0.0001)
break;
92 PTSigma = std::abs(sigma);
93 ErrMean = (gaussian.GetParError(1));
94 ErrSigma = std::abs((gaussian.GetParError(2)));
98 while ( (hist->GetBinCenter(i)-hist->GetBinWidth(i)/2.) <
mean-sigma*2. )
100 TailContent=TailContent+hist->GetBinContent(i);
105 while ( (hist->GetBinCenter(i)+hist->GetBinWidth(i)/2.) >
mean+sigma*2. )
107 TailContent=TailContent+hist->GetBinContent(i);
111 TailFraction = ((double)(TailContent))/((
double)hist->GetEntries());
113 if (PercentageOfEntriesInWidth>1) PercentageOfEntriesInWidth=PercentageOfEntriesInWidth/100;
115 double NumberOfEntriesInWidth = PercentageOfEntriesInWidth * 1.0 * hist->GetEntries();
117 double StepLength=0.1;
119 while (StepLength>sigma/1000.)
123 HalfWidth=HalfWidth+StepLength;
125 HalfWidth=HalfWidth-StepLength;
127 StepLength=StepLength/10.;
void getMuonPTResolution(TH1F *hist, double &PTResMean, double &ErrMean, double &PTSigma, double &ErrSigma, double &TailContent)
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")