1 #ifndef ALIDIELECTRONSPECTRUM_H
2 #define ALIDIELECTRONSPECTRUM_H
4 /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 //#############################################################
9 //# Class AliDielectronSpectrum #
10 //# Manage Cuts on the legs of the pair #
13 //# Anton Andronic, GSI / A.Andronic@gsi.de #
14 //# Ionut C. Arsene, GSI / I.C.Arsene@gsi.de #
15 //# Julian Book, Uni Ffm / Julian.Book@cern.ch #
16 //# Frederick Kramer, Uni Ffm, / Frederick.Kramer@cern.ch #
17 //# Magnus Mager, CERN / Magnus.Mager@cern.ch #
18 //# WooJin J. Park, GSI / W.J.Park@gsi.de #
19 //# Jens Wiechula, Uni HD / Jens.Wiechula@cern.ch #
21 //#############################################################
23 #include <TObjArray.h>
28 class AliCFGridSparse;
29 class AliDielectronSignalBase;
30 class AliCFGridSparse;
33 class AliDielectronSpectrum : public TNamed {
35 AliDielectronSpectrum();
36 AliDielectronSpectrum(const char*name, const char* title);
38 virtual ~AliDielectronSpectrum();
40 void AddMethod(AliDielectronSignalBase * const method) {fSignalMethods.Add(method);}
42 void SetCorrectionContainer(AliCFContainer * const container, Int_t nominator, Int_t denominator);
43 void SetSignalContainer(AliCFContainer * const container, Int_t step);
45 void SetVariables(const char* vars) { fVariables=vars; }
47 void SetStepForSignal(Bool_t step=kTRUE) { fStepSignal=step; }
48 void SetStepForSignificance(Bool_t step=kTRUE) { fStepSignificance=step; }
49 void SetStepForSignalOverBackground(Bool_t step=kTRUE) { fStepSOB=step; }
51 void SetNoOwnerSpectrum(Bool_t noOwner=kTRUE) { fOwnerSpectrum=!noOwner; }
53 AliCFContainer* GetSpectrumContainer() const { return fCFSpectrum; }
54 AliCFGridSparse* GetCorrectionMatrix() const { return fCFCorrMatrix; }
60 AliCFContainer *fCFSignal; // CF container with from which to extract the Signal
61 AliCFContainer *fCFCorrection; // CF container from which to extract the correction matrix
62 AliCFContainer *fCFSpectrum; // CF container with extracted signal
63 AliCFGridSparse *fCFCorrMatrix; // correction matrix
65 Bool_t fStepSignal; // if to create a step for the signal
66 Bool_t fStepSignificance; // if to create a step for the significance
67 Bool_t fStepSOB; // if to create a step for signal over background
69 Int_t fSignalStep; // step to use from the signal container
71 Int_t fCorrNom; // Nominator to use from corr matrix container
72 Int_t fCorrDenom; // Deominator to use from corr matrix container
74 TObjArray fSignalMethods; // array with signal extraction methods
75 TString fVariables; // variable names as a function of which to extract the signal
77 Bool_t fOwnerSpectrum; // if we own the creted spectrum
79 Int_t fNvars; //! number of variables
80 Int_t *fVars; //! variable numbers translated from fVariables
81 Int_t *fNbins; //! number of bins for each variable
82 Int_t *fCurrentBins; //! bin currently selected for each variable
83 Double_t *fCurrentPositions; //! variables values currently selected
85 void Fill(Int_t *bin, Int_t step, Double_t value, Double_t error);
86 Bool_t SetupVariables();
87 void CreateCorrectionMatrix();
88 void CreateCFSpectrum();
89 void ExtractSignalInBins(Int_t variable=0);
91 AliDielectronSpectrum(const AliDielectronSpectrum &c);
92 AliDielectronSpectrum &operator=(const AliDielectronSpectrum &c);
94 ClassDef(AliDielectronSpectrum,1) //Cut class providing cuts for both legs of a pair
101 inline void AliDielectronSpectrum::SetCorrectionContainer(AliCFContainer * const container, Int_t nominator, Int_t denominator)
103 fCFCorrection=container;
105 fCorrDenom=denominator;
108 inline void AliDielectronSpectrum::SetSignalContainer(AliCFContainer * const container, Int_t step)