]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/AliSignificanceCalculator.h
Asymmetric nSigma cuts for TOF
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliSignificanceCalculator.h
CommitLineData
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 19class AliMultiDimVector;
20
ac7636a0 21class 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