1 /**************************************************************************
2 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 ///////////////////////////////////////////////////////////////////
20 // Implementation of the class to apply SDD map corrections //
21 // Origin: F.Prino, Torino, prino@to.infn.it //
23 ///////////////////////////////////////////////////////////////////
25 #include "TObjArray.h"
29 #include "AliCDBEntry.h"
30 #include "AliITSCorrMapSDD.h"
31 #include "AliITSCorrectSDDPoints.h"
32 #include "AliITSsegmentationSDD.h"
34 ClassImp(AliITSCorrectSDDPoints)
36 //______________________________________________________________________
37 AliITSCorrectSDDPoints::AliITSCorrectSDDPoints():
42 // default constructor
43 TFile* fil=new TFile("$ALICE_ROOT/OCDB/ITS/Calib/MapsTimeSDD/Run0_9999999_v0_s0.root");
44 AliCDBEntry* e=(AliCDBEntry*)fil->Get("AliCDBEntry");
45 fArrayOfMaps=(TObjArray*)e->GetObject();
48 AliInfo(Form("%d AliITSCorrMapSDD objects in file %s",fArrayOfMaps->GetEntries(),fil->GetName()));
49 fSegmentationSDD=new AliITSsegmentationSDD();
52 //______________________________________________________________________
53 AliITSCorrectSDDPoints::AliITSCorrectSDDPoints(TObjArray* maps):
56 fSegmentationSDD(new AliITSsegmentationSDD())
58 // constructor from external array
61 //______________________________________________________________________
62 AliITSCorrectSDDPoints::AliITSCorrectSDDPoints(TString filname):
67 // standard constructor
68 TFile* fil=new TFile(filname.Data());
69 AliCDBEntry* e=(AliCDBEntry*)fil->Get("AliCDBEntry");
70 fArrayOfMaps=(TObjArray*)e->GetObject();
73 AliInfo(Form("%d AliITSCorrMapSDD objects in file %s",fArrayOfMaps->GetEntries(),fil->GetName()));
74 fSegmentationSDD=new AliITSsegmentationSDD();
77 //______________________________________________________________________
78 AliITSCorrectSDDPoints::~AliITSCorrectSDDPoints(){
80 if(fArrayOfMaps) delete fArrayOfMaps;
83 //______________________________________________________________________
84 void AliITSCorrectSDDPoints::SetCorrectionMaps(const TObjArray *arr)
88 fArrayOfMaps = (TObjArray*)arr;
91 //______________________________________________________________________
92 Float_t AliITSCorrectSDDPoints::GetCorrection(Int_t modId, Float_t zloc, Float_t xloc) const{
93 // returns correction to SDD drift corrdinate in cm
94 Int_t nSide=fSegmentationSDD->GetSideFromLocalX(xloc);
95 Int_t iSide=2*(modId-240)+nSide;
96 if(iSide<0 || iSide >= 520){
97 AliError(Form("Side out of range %d",iSide));
100 AliITSCorrMapSDD* m=(AliITSCorrMapSDD*)fArrayOfMaps->At(iSide);
101 return m->GetCorrection(zloc,xloc,fSegmentationSDD);