]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliSignificanceCalculator.h
Set bin labels to avoid warning when merging
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliSignificanceCalculator.h
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
7 /* $Id$ */
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
17 #include "TObject.h"
18
19 class AliMultiDimVector;
20
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
90   ClassDef(AliSignificanceCalculator,0); // class to compute and maximise significance
91
92 };
93
94 #endif