L1phase shift corrected
[u/mrichter/AliRoot.git] / CORRFW / AliCFDataGrid.cxx
1 /* $Id$ */
2 /**************************************************************************
3  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  *                                                                        *
5  * Author: The ALICE Off-line Project.                                    *
6  * Contributors are mentioned in the code where appropriate.              *
7  *                                                                        *
8  * Permission to use, copy, modify and distribute this software and its   *
9  * documentation strictly for non-commercial purposes is hereby granted   *
10  * without fee, provided that the above copyright notice appears in all   *
11  * copies and that both the copyright notice and this permission notice   *
12  * appear in the supporting documentation. The authors make no claims     *
13  * about the suitability of this software for any purpose. It is          *
14  * provided "as is" without express or implied warranty.                  *
15  **************************************************************************/
16 //--------------------------------------------------------------------//
17 //                                                                    //
18 // AliCFDataGrid Class                                                //
19 // Class to handle observed data and correct them                     // 
20 //                                                                    //
21 // -- Author : S.Arcelli                                              //
22 //                                                                    //
23 // substantially modified by r. vernet                                //
24 //                                                                    //
25 //--------------------------------------------------------------------//
26 //
27 //
28 #include "TMath.h"
29 #include "AliLog.h"
30 #include "AliCFDataGrid.h"
31
32 //____________________________________________________________________
33 ClassImp(AliCFDataGrid)
34
35 //____________________________________________________________________
36 AliCFDataGrid::AliCFDataGrid() : 
37   AliCFGridSparse(),
38   fSelData(-1),
39   fContainer(0x0)
40 {
41   //
42   // default constructor
43   //
44 }
45
46 //____________________________________________________________________
47 AliCFDataGrid::AliCFDataGrid(const Char_t* name, const Char_t* title, const Int_t nVarIn, const Int_t * nBinIn) :
48   AliCFGridSparse(name,title,nVarIn,nBinIn),
49   fSelData(-1),
50   fContainer(0x0)
51 {
52   //
53   // main constructor
54   //
55   SumW2();// errors saved
56 }
57
58 //____________________________________________________________________
59 AliCFDataGrid::AliCFDataGrid(const Char_t* name, const Char_t* title, const AliCFContainer &c, Int_t step) :  
60   AliCFGridSparse(name,title),
61   fSelData(step),
62   fContainer(&c)
63 {
64   //
65   // main constructor
66   // assign directly the selection step
67   //
68
69   //simply clones the container's data at specified step
70   fData = (THnSparse*) fContainer->GetGrid(fSelData)->GetGrid()->Clone();
71   SumW2();
72   AliInfo(Form("retrieving measured data from Container %s at selection step %i.",fContainer->GetName(),fSelData));
73 }
74
75 //____________________________________________________________________
76 AliCFDataGrid::AliCFDataGrid(const AliCFDataGrid& data) : 
77   AliCFGridSparse(data),
78   fSelData(-1),
79   fContainer(0x0)
80 {
81   //
82   // copy constructor
83   //
84   ((AliCFDataGrid &)data).Copy(*this);
85 }
86
87 //____________________________________________________________________
88 AliCFDataGrid::~AliCFDataGrid()
89 {
90   //
91   // destructor
92   //
93 }
94
95 //____________________________________________________________________
96 AliCFDataGrid &AliCFDataGrid::operator=(const AliCFDataGrid &c)
97 {
98   //
99   // assigment operator
100   //
101   if (this != &c) c.Copy(*this);
102   return *this;
103
104
105 //____________________________________________________________________
106 void AliCFDataGrid::ApplyEffCorrection(const AliCFEffGrid &c)
107 {
108
109   //
110   // Apply the efficiency correction
111   //
112   if (c.GetNVar()!=GetNVar()) {
113     AliInfo("Different number of variables, cannot apply correction");
114     return;
115   }
116   Divide(&c);
117   AliInfo(Form("correction applied on data grid %s with efficiency %s.",GetName(),c.GetName()));
118 }
119 //____________________________________________________________________
120 void AliCFDataGrid::ApplyBGCorrection(const AliCFDataGrid &c)
121 {
122
123   //
124   // Apply correction for background
125   //
126   if (c.GetNVar()!=GetNVar()) {
127     AliInfo("Different number of variables, cannot apply correction");
128     return;
129   }
130   Add(&c,-1);
131   AliInfo(Form("background %s subtracted from data %s.",c.GetName(),GetName()));
132 }
133
134 //____________________________________________________________________
135 void AliCFDataGrid::Copy(TObject& c) const
136 {
137   // copy function
138   Copy(c);
139   AliCFDataGrid& target = (AliCFDataGrid &) c;
140   target.fContainer=fContainer;
141   target.fSelData=fSelData;
142 }