ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, 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.                  *
 **************************************************************************/

/* $Id$ */

//-------------------------------------------------------------------------
//     OADB class for run dependent track fixing parameters
//     Convention for phi-dependent data: 0 : 2pi
//     Author: ruben.shahoyan@cern.ch
//-------------------------------------------------------------------------

#include <TGraph.h>
#include <TMath.h>
#include "AliOADBTrackFix.h"
#include "AliLog.h"

ClassImp(AliOADBTrackFix);

//______________________________________________________________________________
AliOADBTrackFix::AliOADBTrackFix()
{
  // Default constructor
  for (int imd=0;imd<kNCorModes;imd++) {
    for (int iside=0;iside<2;iside++) fPtInvCor[imd][iside] = 0;  
    fXIniPtInvCorr[imd] = 0;
  }
  //
}
//______________________________________________________________________________
AliOADBTrackFix::AliOADBTrackFix(const char* name) : 
  TNamed(name, "TrackFix")
{
  // Constructor
  for (int imd=0;imd<kNCorModes;imd++) {
    for (int iside=0;iside<2;iside++) fPtInvCor[imd][iside] = 0;  
    fXIniPtInvCorr[imd] = 0;
  }  
}

//______________________________________________________________________________
AliOADBTrackFix::~AliOADBTrackFix() 
{
  // destructor
  for (int imd=0;imd<kNCorModes;imd++) for (int iside=0;iside<2;iside++) delete fPtInvCor[imd][iside];
  //
}

//______________________________________________________________________________
void AliOADBTrackFix::SetPtInvCorr(int mode,int side, const TGraph* gr)
{
  if (!gr || gr->GetN()<1) {
    AliInfo(Form("Correction for side %d in mode %d is empty",side,mode));
    fPtInvCor[mode][side] = 0;
  }
  fPtInvCor[mode][side] = gr;
}

//______________________________________________________________________________
Double_t AliOADBTrackFix::GetPtInvCorr(int mode, double sideAfrac, double phi) const
{
  // calculate the correction for the track of given model at given phi, provided the sideAfrac fraction of its
  // total lenght in TPC is in side A.
  if (!fPtInvCor[mode][0] || !fPtInvCor[mode][1]) return 0; // no graph 
  while (phi>2*TMath::Pi()) phi -= 2*TMath::Pi();
  while (phi<0) phi += 2*TMath::Pi();  
  int nb = fPtInvCor[mode][0]->GetN();
  int bin = int( phi/(2*TMath::Pi())*nb );
  if (bin==nb) bin = nb-1;
  return sideAfrac*fPtInvCor[mode][0]->GetY()[bin] + (1.-sideAfrac)*fPtInvCor[mode][1]->GetY()[bin];
}


 AliOADBTrackFix.cxx:1
 AliOADBTrackFix.cxx:2
 AliOADBTrackFix.cxx:3
 AliOADBTrackFix.cxx:4
 AliOADBTrackFix.cxx:5
 AliOADBTrackFix.cxx:6
 AliOADBTrackFix.cxx:7
 AliOADBTrackFix.cxx:8
 AliOADBTrackFix.cxx:9
 AliOADBTrackFix.cxx:10
 AliOADBTrackFix.cxx:11
 AliOADBTrackFix.cxx:12
 AliOADBTrackFix.cxx:13
 AliOADBTrackFix.cxx:14
 AliOADBTrackFix.cxx:15
 AliOADBTrackFix.cxx:16
 AliOADBTrackFix.cxx:17
 AliOADBTrackFix.cxx:18
 AliOADBTrackFix.cxx:19
 AliOADBTrackFix.cxx:20
 AliOADBTrackFix.cxx:21
 AliOADBTrackFix.cxx:22
 AliOADBTrackFix.cxx:23
 AliOADBTrackFix.cxx:24
 AliOADBTrackFix.cxx:25
 AliOADBTrackFix.cxx:26
 AliOADBTrackFix.cxx:27
 AliOADBTrackFix.cxx:28
 AliOADBTrackFix.cxx:29
 AliOADBTrackFix.cxx:30
 AliOADBTrackFix.cxx:31
 AliOADBTrackFix.cxx:32
 AliOADBTrackFix.cxx:33
 AliOADBTrackFix.cxx:34
 AliOADBTrackFix.cxx:35
 AliOADBTrackFix.cxx:36
 AliOADBTrackFix.cxx:37
 AliOADBTrackFix.cxx:38
 AliOADBTrackFix.cxx:39
 AliOADBTrackFix.cxx:40
 AliOADBTrackFix.cxx:41
 AliOADBTrackFix.cxx:42
 AliOADBTrackFix.cxx:43
 AliOADBTrackFix.cxx:44
 AliOADBTrackFix.cxx:45
 AliOADBTrackFix.cxx:46
 AliOADBTrackFix.cxx:47
 AliOADBTrackFix.cxx:48
 AliOADBTrackFix.cxx:49
 AliOADBTrackFix.cxx:50
 AliOADBTrackFix.cxx:51
 AliOADBTrackFix.cxx:52
 AliOADBTrackFix.cxx:53
 AliOADBTrackFix.cxx:54
 AliOADBTrackFix.cxx:55
 AliOADBTrackFix.cxx:56
 AliOADBTrackFix.cxx:57
 AliOADBTrackFix.cxx:58
 AliOADBTrackFix.cxx:59
 AliOADBTrackFix.cxx:60
 AliOADBTrackFix.cxx:61
 AliOADBTrackFix.cxx:62
 AliOADBTrackFix.cxx:63
 AliOADBTrackFix.cxx:64
 AliOADBTrackFix.cxx:65
 AliOADBTrackFix.cxx:66
 AliOADBTrackFix.cxx:67
 AliOADBTrackFix.cxx:68
 AliOADBTrackFix.cxx:69
 AliOADBTrackFix.cxx:70
 AliOADBTrackFix.cxx:71
 AliOADBTrackFix.cxx:72
 AliOADBTrackFix.cxx:73
 AliOADBTrackFix.cxx:74
 AliOADBTrackFix.cxx:75
 AliOADBTrackFix.cxx:76
 AliOADBTrackFix.cxx:77
 AliOADBTrackFix.cxx:78
 AliOADBTrackFix.cxx:79
 AliOADBTrackFix.cxx:80
 AliOADBTrackFix.cxx:81
 AliOADBTrackFix.cxx:82
 AliOADBTrackFix.cxx:83
 AliOADBTrackFix.cxx:84