5#ifndef PAIRANALYSISSIGNALEXT_H
6#define PAIRANALYSISSIGNALEXT_H
90 void SetRebin(TVectorD* limits) {
fBinLimits =
new TArrayD(limits->GetNrows() - 1, limits->GetMatrixArray()); }
103 Double_t intMax2 = 0.)
166 TH1F* mcShape = 0x0);
167 TPaveText*
DrawStats(Double_t x1 = 0., Double_t y1 = 0., Double_t x2 = 0., Double_t y2 = 0.,
168 TString opt =
"pRnbsSmrc");
169 Double_t
ScaleHistograms(TH1* histRaw, TH1* histBackground, Double_t intMin, Double_t intMax);
170 Double_t
ScaleHistograms(TH1* histRaw, TH1* histBackground, Double_t intMin, Double_t intMax, Double_t intMin2,
173 static TH1*
MergeObjects(TH1* obj1, TH1* obj2, Double_t val = +1.);
174 void Print(Option_t* option =
"")
const;
185 void Process(TObjArray*
const arrhist);
191 void Draw(
const Option_t* option =
"");
199 TObject* bla =
new TObject();
204 TObject* bla =
new TObject();
282 for (Int_t i = 0; i < arrhist->GetEntriesFast(); i++) {
283 if (!ref.CompareTo(arrhist->UncheckedAt(i)->GetTitle()))
return arrhist->UncheckedAt(i);
293 if (!arrhist)
return 0x0;
296 for (Int_t i = 0; i < arrhist->GetEntriesFast(); i++) {
297 if (!ref.CompareTo(arrhist->UncheckedAt(i)->GetTitle())) {
return arrhist->UncheckedAt(i); }
312 fErrors(3) =
fValues(3) * TMath::Sqrt(epsSig * epsSig + epsBknd * epsBknd);
321 ((s + b) > 0 ?
fValues(2) * TMath::Sqrt(be * be + TMath::Power(se * (s + 2 * b) / s, 2)) / 2 / (s + b) : 0);
335 TF1* pfit = (TF1*) fit->Clone(
"pfit");
336 TF1* mfit = (TF1*) fit->Clone(
"mfit");
337 for (Int_t i = 0; i < fit->GetNpar(); i++) {
338 pfit->SetParameter(i, fit->GetParameter(i) + fit->GetParError(i));
339 mfit->SetParameter(i, fit->GetParameter(i) - fit->GetParError(i));
341 Double_t maxX = fit->GetMaximumX();
342 Double_t maxY = fit->GetHistogram()->GetMaximum();
343 Double_t xAxMin = fit->GetXmin();
344 Double_t xAxMax = fit->GetXmax();
346 Double_t fwhmMin = fit->GetX(.5 * maxY, xAxMin, maxX);
347 Double_t fwhmMax = fit->GetX(.5 * maxY, maxX, xAxMax);
348 Double_t pfwhmMin = pfit->GetX(.5 * maxY, xAxMin, maxX);
349 Double_t pfwhmMax = pfit->GetX(.5 * maxY, maxX, xAxMax);
350 Double_t mfwhmMin = mfit->GetX(.5 * maxY, xAxMin, maxX);
351 Double_t mfwhmMax = mfit->GetX(.5 * maxY, maxX, xAxMax);
352 Double_t pError = TMath::Abs((fwhmMax - fwhmMin) - (pfwhmMax - pfwhmMin));
353 Double_t mError = TMath::Abs((fwhmMax - fwhmMin) - (mfwhmMax - mfwhmMin));
354 fValues(5) = (fwhmMax - fwhmMin);
355 fErrors(5) = (pError >= mError ? pError : mError);
363 Int_t bin1 = hist->FindFirstBinAbove(hist->GetMaximum() / 2);
364 Int_t bin2 = hist->FindLastBinAbove(hist->GetMaximum() / 2);
365 fValues(5) = hist->GetBinCenter(bin2) - hist->GetBinCenter(bin1);
386 for (Int_t i = 1; i <= hfill->GetNbinsX(); i++) {
388 if (signal->IsA() == TF1::Class()) s =
static_cast<TF1*
>(signal)->Eval(hfill->GetBinCenter(i));
390 s =
static_cast<TH1*
>(signal)->GetBinContent(i);
391 se =
static_cast<TH1*
>(signal)->GetBinError(i);
394 b = hbgrd->GetBinContent(i);
395 be = hbgrd->GetBinError(i);
397 Double_t
sgn = ((s + b) > 0. ? s / TMath::Sqrt(s + b) : 0.);
399 hfill->SetBinContent(i,
sgn);
401 i, ((s + b) > 0. ?
sgn * TMath::Sqrt(be * be + TMath::Power(se * (s + 2 * b) / s, 2)) / 2 / (s + b) : 0));
friend fscal max(fscal x, fscal y)
friend fscal sgn(fscal x)
friend fscal min(fscal x, fscal y)
ESignalExtractionMethod fPeakMethod
void SetNTrackRotations(Int_t iterations)
TObject * GetPeakShape() const
TH1 * GetCocktailHistogram() const
void Print(Option_t *option="") const
TH1 * GetSignificanceHistogram() const
const TVectorD & GetErrors() const
static const char * GetValueName(Int_t i)
TH1 * GetRfactorHistogram() const
void SetSignificanceAndSOB()
TArrayD * GetRebinLimits() const
static TH1F * fgHistSimPM
Double_t GetBackground() const
void Process(TObjArray *const arrhist)
Double_t GetScaleMax2() const
Double_t GetScaleMin() const
Double_t GetMatchChi2NDF() const
Double_t GetSignalError() const
void SetMixingCorrection(Bool_t mixcorr=kTRUE)
Double_t GetScaleMin2() const
void Draw(const Option_t *option="")
PairAnalysisSignalExt & operator=(const PairAnalysisSignalExt &c)
EBackgroundMethod GetMethod() const
void SetMethod(EBackgroundMethod method)
Double_t GetMassWidthError() const
Double_t ScaleHistograms(TH1 *histRaw, TH1 *histBackground, Double_t intMin, Double_t intMax)
ESignalExtractionMethod GetExtractionMethod() const
void SetMCSignalShape(TH1F *hist)
TObject * FindObject(const char *) const
TH1 * GetMCSignalShape() const
Double_t GetSignificanceError() const
TH1 * GetSoverBHistogram() const
TH1 * GetSignalHistogram() const
void SetRebin(TVectorD *limits)
void SetRebin(Int_t factor)
Double_t GetMassError() const
void SetExtractionMethod(ESignalExtractionMethod method, PairAnalysisFunction *sigF=0x0)
EBackgroundMethod fMethod
Double_t GetIntegralMin() const
Bool_t IsCocktailSubtracted() const
TPaveText * DrawStats(Double_t x1=0., Double_t y1=0., Double_t x2=0., Double_t y2=0., TString opt="pRnbsSmrc")
PairAnalysisFunction * fExtrFunc
TObject * FindObject(const TObject *) const
void SetRebin(TArrayD *limits)
void SetIntegralRange(Double_t min, Double_t max)
TH1 * GetBackgroundHistogram() const
static const char * fgkValueNames[7]
void SetPlotRange(Double_t min, Double_t max)
Double_t GetScaleMax() const
Double_t GetSBError() const
void SetScaleBackgroundTo(EScalingMethod method, Double_t intMin, Double_t intMax, Double_t intMin2=0., Double_t intMax2=0.)
Double_t GetScaleFactor() const
void SetCocktailContribution(TObjArray *arr, Bool_t subtract=kTRUE)
TObject * FindObject(TObjArray *arrhist, PairAnalysis::EPairType type) const
void FillSignificance(TH1 *hfill, TObject *signal, TH1 *hbgrd)
const TVectorD & GetValues() const
static TH1 * MergeObjects(TH1 *obj1, TH1 *obj2, Double_t val=+1.)
TObject * FindObjectByTitle(TObjArray *arrhist, TString ref)
static const char * fgkBackgroundMethodNames[11]
TH1 * GetUnlikeSignHistogram() const
Double_t GetSignal() const
Double_t GetMatchChi2NDFError() const
static TObject * fgPeakShape
TObject * DescribePeakShape(ESignalExtractionMethod method=kMCFitted, Bool_t replaceValErr=kFALSE, TH1F *mcShape=0x0)
Double_t GetBackgroundError() const
void SetStatRebin(Double_t stat)
Double_t GetIntegralMax() const
EScalingMethod fSclMethod
Double_t GetSignificance() const
Double_t GetMassWidth() const
static const char * PairClassName(Int_t i)