]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/dielectron/AliDielectronSpectrum.h
Updates and additions: Classes for signal and spectrum extraction; saving of
[u/mrichter/AliRoot.git] / PWG3 / dielectron / AliDielectronSpectrum.h
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
7 //#############################################################
8 //#                                                           # 
9 //#         Class AliDielectronSpectrum                       #
10 //#         Manage Cuts on the legs of the pair               #
11 //#                                                           #
12 //#  Authors:                                                 #
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      #
20 //#                                                           #
21 //#############################################################
22
23 #include <TObjArray.h>
24 #include <TString.h>
25
26 #include <TNamed.h>
27
28 class AliCFGridSparse;
29 class AliDielectronSignalBase;
30 class AliCFGridSparse;
31 class AliCFContainer;
32
33 class AliDielectronSpectrum : public TNamed {
34 public:
35   AliDielectronSpectrum();
36   AliDielectronSpectrum(const char*name, const char* title);
37
38   virtual ~AliDielectronSpectrum();
39   
40   void AddMethod(AliDielectronSignalBase * const method) {fSignalMethods.Add(method);}
41
42   void SetCorrectionContainer(AliCFContainer * const container, Int_t nominator, Int_t denominator);
43   void SetSignalContainer(AliCFContainer * const container, Int_t step);
44   
45   void SetVariables(const char* vars)   { fVariables=vars; }
46
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; }
50
51   void SetNoOwnerSpectrum(Bool_t noOwner=kTRUE) { fOwnerSpectrum=!noOwner; }
52     
53   AliCFContainer* GetSpectrumContainer() const { return fCFSpectrum;   }
54   AliCFGridSparse* GetCorrectionMatrix() const { return fCFCorrMatrix; }
55   
56   void Process();
57
58
59 private:
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
64
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
68
69   Int_t fSignalStep;                        // step to use from the signal container
70   
71   Int_t fCorrNom;                           // Nominator to use from corr matrix container
72   Int_t fCorrDenom;                         // Deominator to use from corr matrix container
73   
74   TObjArray    fSignalMethods;              // array with signal extraction methods
75   TString      fVariables;                  // variable names as a function of which to extract the signal
76
77   Bool_t fOwnerSpectrum;                    // if we own the creted spectrum
78   
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
84   
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);
90   
91   AliDielectronSpectrum(const AliDielectronSpectrum &c);
92   AliDielectronSpectrum &operator=(const AliDielectronSpectrum &c);
93   
94   ClassDef(AliDielectronSpectrum,1)         //Cut class providing cuts for both legs of a pair
95     
96 };
97
98 //
99 // inline functions
100 //
101 inline void AliDielectronSpectrum::SetCorrectionContainer(AliCFContainer * const container, Int_t nominator, Int_t denominator)
102 {
103   fCFCorrection=container;
104   fCorrNom=nominator;
105   fCorrDenom=denominator;
106 }
107
108 inline void AliDielectronSpectrum::SetSignalContainer(AliCFContainer * const container, Int_t step)
109 {
110   fCFSignal=container;
111   fSignalStep=step;
112 }
113
114 #endif