ROOT logo
/* $Id$ */
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
//--------------------------------------------------------------------//
//                                                                    //
// AliCFDataGrid Class                                                //
// Class to handle observed data and correct them                     // 
//                                                                    //
// -- Author : S.Arcelli                                              //
//                                                                    //
// substantially modified by r. vernet                                //
//                                                                    //
//--------------------------------------------------------------------//
//
//
#include "TMath.h"
#include "AliLog.h"
#include "AliCFDataGrid.h"

//____________________________________________________________________
ClassImp(AliCFDataGrid)

//____________________________________________________________________
AliCFDataGrid::AliCFDataGrid() : 
  AliCFGridSparse(),
  fSelData(-1),
  fContainer(0x0)
{
  //
  // default constructor
  //
}

//____________________________________________________________________
AliCFDataGrid::AliCFDataGrid(const Char_t* name, const Char_t* title, const Int_t nVarIn, const Int_t * nBinIn) :
  AliCFGridSparse(name,title,nVarIn,nBinIn),
  fSelData(-1),
  fContainer(0x0)
{
  //
  // main constructor
  //
  SumW2();// errors saved
}

//____________________________________________________________________
AliCFDataGrid::AliCFDataGrid(const Char_t* name, const Char_t* title, const AliCFContainer &c, Int_t step) :  
  AliCFGridSparse(name,title),
  fSelData(step),
  fContainer(&c)
{
  //
  // main constructor
  // assign directly the selection step
  //

  //simply clones the container's data at specified step
  fData = (THnSparse*) fContainer->GetGrid(fSelData)->GetGrid()->Clone();
  SumW2();
  AliInfo(Form("retrieving measured data from Container %s at selection step %i.",fContainer->GetName(),fSelData));
}

//____________________________________________________________________
AliCFDataGrid::AliCFDataGrid(const AliCFDataGrid& data) : 
  AliCFGridSparse(data),
  fSelData(-1),
  fContainer(0x0)
{
  //
  // copy constructor
  //
  ((AliCFDataGrid &)data).Copy(*this);
}

//____________________________________________________________________
AliCFDataGrid::~AliCFDataGrid()
{
  //
  // destructor
  //
}

//____________________________________________________________________
AliCFDataGrid &AliCFDataGrid::operator=(const AliCFDataGrid &c)
{
  //
  // assigment operator
  //
  if (this != &c) c.Copy(*this);
  return *this;
} 

//____________________________________________________________________
void AliCFDataGrid::ApplyEffCorrection(const AliCFEffGrid &c)
{

  //
  // Apply the efficiency correction
  //
  if (c.GetNVar()!=GetNVar()) {
    AliInfo("Different number of variables, cannot apply correction");
    return;
  }
  Divide(&c);
  AliInfo(Form("correction applied on data grid %s with efficiency %s.",GetName(),c.GetName()));
}
//____________________________________________________________________
void AliCFDataGrid::ApplyBGCorrection(const AliCFDataGrid &c)
{

  //
  // Apply correction for background
  //
  if (c.GetNVar()!=GetNVar()) {
    AliInfo("Different number of variables, cannot apply correction");
    return;
  }
  Add(&c,-1);
  AliInfo(Form("background %s subtracted from data %s.",c.GetName(),GetName()));
}

//____________________________________________________________________
void AliCFDataGrid::Copy(TObject& c) const
{
  // copy function
  Copy(c);
  AliCFDataGrid& target = (AliCFDataGrid &) c;
  target.fContainer=fContainer;
  target.fSelData=fSelData;
}
 AliCFDataGrid.cxx:1
 AliCFDataGrid.cxx:2
 AliCFDataGrid.cxx:3
 AliCFDataGrid.cxx:4
 AliCFDataGrid.cxx:5
 AliCFDataGrid.cxx:6
 AliCFDataGrid.cxx:7
 AliCFDataGrid.cxx:8
 AliCFDataGrid.cxx:9
 AliCFDataGrid.cxx:10
 AliCFDataGrid.cxx:11
 AliCFDataGrid.cxx:12
 AliCFDataGrid.cxx:13
 AliCFDataGrid.cxx:14
 AliCFDataGrid.cxx:15
 AliCFDataGrid.cxx:16
 AliCFDataGrid.cxx:17
 AliCFDataGrid.cxx:18
 AliCFDataGrid.cxx:19
 AliCFDataGrid.cxx:20
 AliCFDataGrid.cxx:21
 AliCFDataGrid.cxx:22
 AliCFDataGrid.cxx:23
 AliCFDataGrid.cxx:24
 AliCFDataGrid.cxx:25
 AliCFDataGrid.cxx:26
 AliCFDataGrid.cxx:27
 AliCFDataGrid.cxx:28
 AliCFDataGrid.cxx:29
 AliCFDataGrid.cxx:30
 AliCFDataGrid.cxx:31
 AliCFDataGrid.cxx:32
 AliCFDataGrid.cxx:33
 AliCFDataGrid.cxx:34
 AliCFDataGrid.cxx:35
 AliCFDataGrid.cxx:36
 AliCFDataGrid.cxx:37
 AliCFDataGrid.cxx:38
 AliCFDataGrid.cxx:39
 AliCFDataGrid.cxx:40
 AliCFDataGrid.cxx:41
 AliCFDataGrid.cxx:42
 AliCFDataGrid.cxx:43
 AliCFDataGrid.cxx:44
 AliCFDataGrid.cxx:45
 AliCFDataGrid.cxx:46
 AliCFDataGrid.cxx:47
 AliCFDataGrid.cxx:48
 AliCFDataGrid.cxx:49
 AliCFDataGrid.cxx:50
 AliCFDataGrid.cxx:51
 AliCFDataGrid.cxx:52
 AliCFDataGrid.cxx:53
 AliCFDataGrid.cxx:54
 AliCFDataGrid.cxx:55
 AliCFDataGrid.cxx:56
 AliCFDataGrid.cxx:57
 AliCFDataGrid.cxx:58
 AliCFDataGrid.cxx:59
 AliCFDataGrid.cxx:60
 AliCFDataGrid.cxx:61
 AliCFDataGrid.cxx:62
 AliCFDataGrid.cxx:63
 AliCFDataGrid.cxx:64
 AliCFDataGrid.cxx:65
 AliCFDataGrid.cxx:66
 AliCFDataGrid.cxx:67
 AliCFDataGrid.cxx:68
 AliCFDataGrid.cxx:69
 AliCFDataGrid.cxx:70
 AliCFDataGrid.cxx:71
 AliCFDataGrid.cxx:72
 AliCFDataGrid.cxx:73
 AliCFDataGrid.cxx:74
 AliCFDataGrid.cxx:75
 AliCFDataGrid.cxx:76
 AliCFDataGrid.cxx:77
 AliCFDataGrid.cxx:78
 AliCFDataGrid.cxx:79
 AliCFDataGrid.cxx:80
 AliCFDataGrid.cxx:81
 AliCFDataGrid.cxx:82
 AliCFDataGrid.cxx:83
 AliCFDataGrid.cxx:84
 AliCFDataGrid.cxx:85
 AliCFDataGrid.cxx:86
 AliCFDataGrid.cxx:87
 AliCFDataGrid.cxx:88
 AliCFDataGrid.cxx:89
 AliCFDataGrid.cxx:90
 AliCFDataGrid.cxx:91
 AliCFDataGrid.cxx:92
 AliCFDataGrid.cxx:93
 AliCFDataGrid.cxx:94
 AliCFDataGrid.cxx:95
 AliCFDataGrid.cxx:96
 AliCFDataGrid.cxx:97
 AliCFDataGrid.cxx:98
 AliCFDataGrid.cxx:99
 AliCFDataGrid.cxx:100
 AliCFDataGrid.cxx:101
 AliCFDataGrid.cxx:102
 AliCFDataGrid.cxx:103
 AliCFDataGrid.cxx:104
 AliCFDataGrid.cxx:105
 AliCFDataGrid.cxx:106
 AliCFDataGrid.cxx:107
 AliCFDataGrid.cxx:108
 AliCFDataGrid.cxx:109
 AliCFDataGrid.cxx:110
 AliCFDataGrid.cxx:111
 AliCFDataGrid.cxx:112
 AliCFDataGrid.cxx:113
 AliCFDataGrid.cxx:114
 AliCFDataGrid.cxx:115
 AliCFDataGrid.cxx:116
 AliCFDataGrid.cxx:117
 AliCFDataGrid.cxx:118
 AliCFDataGrid.cxx:119
 AliCFDataGrid.cxx:120
 AliCFDataGrid.cxx:121
 AliCFDataGrid.cxx:122
 AliCFDataGrid.cxx:123
 AliCFDataGrid.cxx:124
 AliCFDataGrid.cxx:125
 AliCFDataGrid.cxx:126
 AliCFDataGrid.cxx:127
 AliCFDataGrid.cxx:128
 AliCFDataGrid.cxx:129
 AliCFDataGrid.cxx:130
 AliCFDataGrid.cxx:131
 AliCFDataGrid.cxx:132
 AliCFDataGrid.cxx:133
 AliCFDataGrid.cxx:134
 AliCFDataGrid.cxx:135
 AliCFDataGrid.cxx:136
 AliCFDataGrid.cxx:137
 AliCFDataGrid.cxx:138
 AliCFDataGrid.cxx:139
 AliCFDataGrid.cxx:140
 AliCFDataGrid.cxx:141
 AliCFDataGrid.cxx:142