]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/dielectron/AliDielectronSpectrum.h
Adding Id to PWG3 classes for better tracking of the coverity defect fixes (Ivana)
[u/mrichter/AliRoot.git] / PWG3 / dielectron / AliDielectronSpectrum.h
CommitLineData
572b0139 1#ifndef ALIDIELECTRONSPECTRUM_H
2#define ALIDIELECTRONSPECTRUM_H
3
4/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
27de2dfb 7/* $Id$ */
8
572b0139 9//#############################################################
10//# #
11//# Class AliDielectronSpectrum #
12//# Manage Cuts on the legs of the pair #
13//# #
14//# Authors: #
15//# Anton Andronic, GSI / A.Andronic@gsi.de #
16//# Ionut C. Arsene, GSI / I.C.Arsene@gsi.de #
17//# Julian Book, Uni Ffm / Julian.Book@cern.ch #
18//# Frederick Kramer, Uni Ffm, / Frederick.Kramer@cern.ch #
19//# Magnus Mager, CERN / Magnus.Mager@cern.ch #
20//# WooJin J. Park, GSI / W.J.Park@gsi.de #
21//# Jens Wiechula, Uni HD / Jens.Wiechula@cern.ch #
22//# #
23//#############################################################
24
25#include <TObjArray.h>
26#include <TString.h>
27
28#include <TNamed.h>
29
30class AliCFGridSparse;
31class AliDielectronSignalBase;
32class AliCFGridSparse;
33class AliCFContainer;
34
35class AliDielectronSpectrum : public TNamed {
36public:
37 AliDielectronSpectrum();
38 AliDielectronSpectrum(const char*name, const char* title);
39
40 virtual ~AliDielectronSpectrum();
41
42 void AddMethod(AliDielectronSignalBase * const method) {fSignalMethods.Add(method);}
43
44 void SetCorrectionContainer(AliCFContainer * const container, Int_t nominator, Int_t denominator);
45 void SetSignalContainer(AliCFContainer * const container, Int_t step);
46
47 void SetVariables(const char* vars) { fVariables=vars; }
48
49 void SetStepForSignal(Bool_t step=kTRUE) { fStepSignal=step; }
50 void SetStepForSignificance(Bool_t step=kTRUE) { fStepSignificance=step; }
8df8e382 51 void SetStepForSignalOverBackground(Bool_t step=kTRUE) { fStepSOB=step; }
52 void SetStepForMass(Bool_t step=kTRUE) { fStepMass=step; }
53 void SetStepForMassWidth(Bool_t step=kTRUE) { fStepMassWidth=step; }
54
572b0139 55 void SetNoOwnerSpectrum(Bool_t noOwner=kTRUE) { fOwnerSpectrum=!noOwner; }
8df8e382 56
57 void SetVisualDebug(Bool_t vis=kTRUE) { fVisualDebug=vis; }
58
572b0139 59 AliCFContainer* GetSpectrumContainer() const { return fCFSpectrum; }
60 AliCFGridSparse* GetCorrectionMatrix() const { return fCFCorrMatrix; }
61
62 void Process();
63
64
65private:
66 AliCFContainer *fCFSignal; // CF container with from which to extract the Signal
67 AliCFContainer *fCFCorrection; // CF container from which to extract the correction matrix
68 AliCFContainer *fCFSpectrum; // CF container with extracted signal
69 AliCFGridSparse *fCFCorrMatrix; // correction matrix
70
71 Bool_t fStepSignal; // if to create a step for the signal
72 Bool_t fStepSignificance; // if to create a step for the significance
73 Bool_t fStepSOB; // if to create a step for signal over background
8df8e382 74 Bool_t fStepMass; // if to create a setp for the mass
75 Bool_t fStepMassWidth; // if to create a setp for the mass width
76
572b0139 77 Int_t fSignalStep; // step to use from the signal container
78
79 Int_t fCorrNom; // Nominator to use from corr matrix container
80 Int_t fCorrDenom; // Deominator to use from corr matrix container
81
82 TObjArray fSignalMethods; // array with signal extraction methods
83 TString fVariables; // variable names as a function of which to extract the signal
84
85 Bool_t fOwnerSpectrum; // if we own the creted spectrum
8df8e382 86
87 Bool_t fVisualDebug; // if we want to show the fit and print it
572b0139 88
89 Int_t fNvars; //! number of variables
90 Int_t *fVars; //! variable numbers translated from fVariables
91 Int_t *fNbins; //! number of bins for each variable
92 Int_t *fCurrentBins; //! bin currently selected for each variable
93 Double_t *fCurrentPositions; //! variables values currently selected
94
95 void Fill(Int_t *bin, Int_t step, Double_t value, Double_t error);
96 Bool_t SetupVariables();
97 void CreateCorrectionMatrix();
98 void CreateCFSpectrum();
99 void ExtractSignalInBins(Int_t variable=0);
100
101 AliDielectronSpectrum(const AliDielectronSpectrum &c);
102 AliDielectronSpectrum &operator=(const AliDielectronSpectrum &c);
103
104 ClassDef(AliDielectronSpectrum,1) //Cut class providing cuts for both legs of a pair
105
106};
107
108//
109// inline functions
110//
111inline void AliDielectronSpectrum::SetCorrectionContainer(AliCFContainer * const container, Int_t nominator, Int_t denominator)
112{
113 fCFCorrection=container;
114 fCorrNom=nominator;
115 fCorrDenom=denominator;
116}
117
118inline void AliDielectronSpectrum::SetSignalContainer(AliCFContainer * const container, Int_t step)
119{
120 fCFSignal=container;
121 fSignalStep=step;
122}
123
124#endif