]>
Commit | Line | Data |
---|---|---|
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 | ||
30 | class AliCFGridSparse; | |
31 | class AliDielectronSignalBase; | |
32 | class AliCFGridSparse; | |
33 | class AliCFContainer; | |
34 | ||
35 | class AliDielectronSpectrum : public TNamed { | |
36 | public: | |
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 | ||
65 | private: | |
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 | // | |
111 | inline void AliDielectronSpectrum::SetCorrectionContainer(AliCFContainer * const container, Int_t nominator, Int_t denominator) | |
112 | { | |
113 | fCFCorrection=container; | |
114 | fCorrNom=nominator; | |
115 | fCorrDenom=denominator; | |
116 | } | |
117 | ||
118 | inline void AliDielectronSpectrum::SetSignalContainer(AliCFContainer * const container, Int_t step) | |
119 | { | |
120 | fCFSignal=container; | |
121 | fSignalStep=step; | |
122 | } | |
123 | ||
124 | #endif |