]>
Commit | Line | Data |
---|---|---|
ac7636a0 | 1 | #ifndef ALISIGNIFICANCECALCULATOR_H |
2 | #define ALISIGNIFICANCECALCULATOR_H | |
3 | ||
4 | /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7b45817b | 7 | /* $Id$ */ |
ac7636a0 | 8 | |
9 | /////////////////////////////////////////////////////////////////// | |
10 | // // | |
11 | // Class to calculate the statistical significance from // | |
12 | // AliMultiVeector objects for signal and background // | |
13 | // Origin: Francesco Prino (prino@to.infn.it) // | |
14 | // // | |
15 | /////////////////////////////////////////////////////////////////// | |
16 | ||
ac7636a0 | 17 | #include "TObject.h" |
18 | ||
cc4bd7b4 | 19 | class AliMultiDimVector; |
20 | ||
ac7636a0 | 21 | class AliSignificanceCalculator : public TObject{ |
22 | public: | |
23 | AliSignificanceCalculator(); | |
24 | AliSignificanceCalculator(AliMultiDimVector* sig, AliMultiDimVector* bkg, Float_t normsig=1., Float_t normbkg=1.); | |
25 | AliSignificanceCalculator(AliMultiDimVector* sig, AliMultiDimVector* bkg, AliMultiDimVector* err2sig, AliMultiDimVector* err2bkg, Float_t normsig=1., Float_t normbkg=1.); | |
26 | ||
27 | ~AliSignificanceCalculator(); | |
28 | ||
29 | void SetSignal(AliMultiDimVector* sig, Float_t norm=1.){ | |
30 | if(fSignal) delete fSignal; | |
31 | fSignal=sig; | |
32 | fNormSig=norm; | |
33 | if(fSignal && fBackground) CalculateSignificance(); | |
34 | } | |
35 | void SetBackground(AliMultiDimVector* bac, Float_t norm=1.){ | |
36 | if(fBackground) delete fBackground; | |
37 | fBackground=bac; | |
38 | fNormBkg=norm; | |
39 | if(fSignal && fBackground) CalculateSignificance(); | |
40 | } | |
41 | void SetErrSquareSignal(AliMultiDimVector* err2sig, Float_t norm=1.){ | |
42 | if(fErrSquareSignal) delete fErrSquareSignal; | |
43 | fErrSquareSignal=err2sig; | |
44 | fNormSig=norm; | |
45 | if(fSignal && fBackground) CalculateSignificance(); | |
46 | } | |
47 | void SetErrSquareBackground(AliMultiDimVector* err2bkg, Float_t norm=1.){ | |
48 | if(fErrSquareBackground) delete fErrSquareBackground; | |
49 | fErrSquareBackground=err2bkg; | |
50 | fNormBkg=norm; | |
51 | if(fSignal && fBackground) CalculateSignificance(); | |
52 | } | |
53 | ||
54 | void SetNormalizations(Float_t normSig, Float_t normBkg){ | |
55 | fNormSig=normSig; | |
56 | fNormBkg=normBkg; | |
57 | if(fSignal && fBackground) CalculateSignificance(); | |
58 | } | |
59 | ||
60 | AliMultiDimVector* GetSignal() const {return fSignal;} | |
61 | AliMultiDimVector* GetBackground() const {return fBackground;} | |
62 | AliMultiDimVector* GetSignificance() const {return fSignificance;} | |
63 | AliMultiDimVector* GetSignificanceError() const {return fErrSignificance;} | |
64 | ||
65 | void CalculateSignificance(); | |
66 | Float_t GetMaxSignificance(Int_t* cutIndices, Int_t ptbin) const{ | |
67 | Float_t sigMax=0; | |
68 | if(fSignificance) fSignificance->FindMaximum(sigMax,cutIndices,ptbin); | |
69 | return sigMax; | |
70 | } | |
71 | AliMultiDimVector* CalculatePurity() const; | |
72 | AliMultiDimVector* CalculatePurityError() const; | |
73 | AliMultiDimVector* CalculateSOverB() const; | |
74 | AliMultiDimVector* CalculateSOverBError() const; | |
75 | ||
76 | private: | |
77 | Bool_t Check() const; | |
78 | AliSignificanceCalculator(const AliSignificanceCalculator& c); | |
79 | AliSignificanceCalculator& operator=(const AliSignificanceCalculator& c); | |
80 | ||
81 | AliMultiDimVector* fSignal; // signal matrix | |
82 | AliMultiDimVector* fErrSquareSignal; // matrix with err^2 for signal | |
83 | AliMultiDimVector* fBackground; // background matrix | |
84 | AliMultiDimVector* fErrSquareBackground; // matrix with err^2 for background | |
85 | AliMultiDimVector* fSignificance; // significance matrix | |
86 | AliMultiDimVector* fErrSignificance; // matrix with error on significance | |
87 | Float_t fNormSig; // signal normalization | |
88 | Float_t fNormBkg; // background normalization | |
89 | ||
cc4bd7b4 | 90 | ClassDef(AliSignificanceCalculator,0); // class to compute and maximise significance |
ac7636a0 | 91 | |
92 | }; | |
93 | ||
94 | #endif |