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

///////////////////////////////////////////////////////////////////
//                                                               //
// Implementation of the class to apply SDD map corrections      //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

#include "TObjArray.h"
#include "TString.h"
#include "TFile.h"
#include "AliLog.h"
#include "AliCDBEntry.h"
#include "AliITSCorrMapSDD.h"
#include "AliITSCorrectSDDPoints.h"
#include "AliITSsegmentationSDD.h"

ClassImp(AliITSCorrectSDDPoints)

//______________________________________________________________________
AliITSCorrectSDDPoints::AliITSCorrectSDDPoints():
  TObject(),
  fArrayOfMaps(0),
  fSegmentationSDD(0)
{
  // default constructor
  TFile* fil=new TFile("$ALICE_ROOT/OCDB/ITS/Calib/MapsTimeSDD/Run0_9999999_v0_s0.root");
  AliCDBEntry* e=(AliCDBEntry*)fil->Get("AliCDBEntry");
  fArrayOfMaps=(TObjArray*)e->GetObject();
  e->SetOwner(kTRUE);
  fil->Close();
  AliInfo(Form("%d AliITSCorrMapSDD objects in file %s",fArrayOfMaps->GetEntries(),fil->GetName()));
  fSegmentationSDD=new AliITSsegmentationSDD();
}

//______________________________________________________________________
AliITSCorrectSDDPoints::AliITSCorrectSDDPoints(TObjArray* maps):
  TObject(),
  fArrayOfMaps(maps),
  fSegmentationSDD(new AliITSsegmentationSDD())
{
  // constructor from external array
}

//______________________________________________________________________
AliITSCorrectSDDPoints::AliITSCorrectSDDPoints(TString filname):
  TObject(),
  fArrayOfMaps(0),
  fSegmentationSDD(0)
{
  // standard constructor
  TFile* fil=new TFile(filname.Data());
  AliCDBEntry* e=(AliCDBEntry*)fil->Get("AliCDBEntry");
  fArrayOfMaps=(TObjArray*)e->GetObject();
  e->SetOwner(kTRUE);
  fil->Close();
  AliInfo(Form("%d AliITSCorrMapSDD objects in file %s",fArrayOfMaps->GetEntries(),fil->GetName()));
  fSegmentationSDD=new AliITSsegmentationSDD();
}

//______________________________________________________________________
AliITSCorrectSDDPoints::~AliITSCorrectSDDPoints(){
  //
  if(fArrayOfMaps) delete fArrayOfMaps;
}

//______________________________________________________________________
void AliITSCorrectSDDPoints::SetCorrectionMaps(const TObjArray *arr)
{
  // replace the maps
  delete fArrayOfMaps;
  fArrayOfMaps = (TObjArray*)arr;
}

//______________________________________________________________________
Float_t AliITSCorrectSDDPoints::GetCorrection(Int_t modId, Float_t zloc, Float_t xloc) const{
  // returns correction to SDD drift corrdinate in cm
  Int_t nSide=fSegmentationSDD->GetSideFromLocalX(xloc);
  Int_t iSide=2*(modId-240)+nSide;
  if(iSide<0 || iSide >= 520){ 
    AliError(Form("Side out of range %d",iSide));
    return 0.;
  }
  AliITSCorrMapSDD* m=(AliITSCorrMapSDD*)fArrayOfMaps->At(iSide);
  return m->GetCorrection(zloc,xloc,fSegmentationSDD);
}
 AliITSCorrectSDDPoints.cxx:1
 AliITSCorrectSDDPoints.cxx:2
 AliITSCorrectSDDPoints.cxx:3
 AliITSCorrectSDDPoints.cxx:4
 AliITSCorrectSDDPoints.cxx:5
 AliITSCorrectSDDPoints.cxx:6
 AliITSCorrectSDDPoints.cxx:7
 AliITSCorrectSDDPoints.cxx:8
 AliITSCorrectSDDPoints.cxx:9
 AliITSCorrectSDDPoints.cxx:10
 AliITSCorrectSDDPoints.cxx:11
 AliITSCorrectSDDPoints.cxx:12
 AliITSCorrectSDDPoints.cxx:13
 AliITSCorrectSDDPoints.cxx:14
 AliITSCorrectSDDPoints.cxx:15
 AliITSCorrectSDDPoints.cxx:16
 AliITSCorrectSDDPoints.cxx:17
 AliITSCorrectSDDPoints.cxx:18
 AliITSCorrectSDDPoints.cxx:19
 AliITSCorrectSDDPoints.cxx:20
 AliITSCorrectSDDPoints.cxx:21
 AliITSCorrectSDDPoints.cxx:22
 AliITSCorrectSDDPoints.cxx:23
 AliITSCorrectSDDPoints.cxx:24
 AliITSCorrectSDDPoints.cxx:25
 AliITSCorrectSDDPoints.cxx:26
 AliITSCorrectSDDPoints.cxx:27
 AliITSCorrectSDDPoints.cxx:28
 AliITSCorrectSDDPoints.cxx:29
 AliITSCorrectSDDPoints.cxx:30
 AliITSCorrectSDDPoints.cxx:31
 AliITSCorrectSDDPoints.cxx:32
 AliITSCorrectSDDPoints.cxx:33
 AliITSCorrectSDDPoints.cxx:34
 AliITSCorrectSDDPoints.cxx:35
 AliITSCorrectSDDPoints.cxx:36
 AliITSCorrectSDDPoints.cxx:37
 AliITSCorrectSDDPoints.cxx:38
 AliITSCorrectSDDPoints.cxx:39
 AliITSCorrectSDDPoints.cxx:40
 AliITSCorrectSDDPoints.cxx:41
 AliITSCorrectSDDPoints.cxx:42
 AliITSCorrectSDDPoints.cxx:43
 AliITSCorrectSDDPoints.cxx:44
 AliITSCorrectSDDPoints.cxx:45
 AliITSCorrectSDDPoints.cxx:46
 AliITSCorrectSDDPoints.cxx:47
 AliITSCorrectSDDPoints.cxx:48
 AliITSCorrectSDDPoints.cxx:49
 AliITSCorrectSDDPoints.cxx:50
 AliITSCorrectSDDPoints.cxx:51
 AliITSCorrectSDDPoints.cxx:52
 AliITSCorrectSDDPoints.cxx:53
 AliITSCorrectSDDPoints.cxx:54
 AliITSCorrectSDDPoints.cxx:55
 AliITSCorrectSDDPoints.cxx:56
 AliITSCorrectSDDPoints.cxx:57
 AliITSCorrectSDDPoints.cxx:58
 AliITSCorrectSDDPoints.cxx:59
 AliITSCorrectSDDPoints.cxx:60
 AliITSCorrectSDDPoints.cxx:61
 AliITSCorrectSDDPoints.cxx:62
 AliITSCorrectSDDPoints.cxx:63
 AliITSCorrectSDDPoints.cxx:64
 AliITSCorrectSDDPoints.cxx:65
 AliITSCorrectSDDPoints.cxx:66
 AliITSCorrectSDDPoints.cxx:67
 AliITSCorrectSDDPoints.cxx:68
 AliITSCorrectSDDPoints.cxx:69
 AliITSCorrectSDDPoints.cxx:70
 AliITSCorrectSDDPoints.cxx:71
 AliITSCorrectSDDPoints.cxx:72
 AliITSCorrectSDDPoints.cxx:73
 AliITSCorrectSDDPoints.cxx:74
 AliITSCorrectSDDPoints.cxx:75
 AliITSCorrectSDDPoints.cxx:76
 AliITSCorrectSDDPoints.cxx:77
 AliITSCorrectSDDPoints.cxx:78
 AliITSCorrectSDDPoints.cxx:79
 AliITSCorrectSDDPoints.cxx:80
 AliITSCorrectSDDPoints.cxx:81
 AliITSCorrectSDDPoints.cxx:82
 AliITSCorrectSDDPoints.cxx:83
 AliITSCorrectSDDPoints.cxx:84
 AliITSCorrectSDDPoints.cxx:85
 AliITSCorrectSDDPoints.cxx:86
 AliITSCorrectSDDPoints.cxx:87
 AliITSCorrectSDDPoints.cxx:88
 AliITSCorrectSDDPoints.cxx:89
 AliITSCorrectSDDPoints.cxx:90
 AliITSCorrectSDDPoints.cxx:91
 AliITSCorrectSDDPoints.cxx:92
 AliITSCorrectSDDPoints.cxx:93
 AliITSCorrectSDDPoints.cxx:94
 AliITSCorrectSDDPoints.cxx:95
 AliITSCorrectSDDPoints.cxx:96
 AliITSCorrectSDDPoints.cxx:97
 AliITSCorrectSDDPoints.cxx:98
 AliITSCorrectSDDPoints.cxx:99
 AliITSCorrectSDDPoints.cxx:100
 AliITSCorrectSDDPoints.cxx:101
 AliITSCorrectSDDPoints.cxx:102