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 base class for SDD map corrections      //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

#include "TH1F.h"
#include "TH2F.h"
#include "AliITSMapSDD.h"
#include "AliITSCorrMap1DSDD.h"

ClassImp(AliITSMapSDD)
//______________________________________________________________________
AliITSMapSDD::AliITSMapSDD():TNamed("defaultmap","")
{
  // default constructor
  for(Int_t iAn=0;iAn<fgkNAnodPts; iAn++){
    for(Int_t iDr=0;iDr<fgkNDrifPts; iDr++){
      fMap[iAn][iDr]=0;
    }
  }
}
//______________________________________________________________________
AliITSMapSDD::AliITSMapSDD(Char_t *mapname):TNamed(mapname,"")
{
  // standard constructor
  for(Int_t iAn=0;iAn<fgkNAnodPts; iAn++){
    for(Int_t iDr=0;iDr<fgkNDrifPts; iDr++){
      fMap[iAn][iDr]=0;
    }
  }
}

//______________________________________________________________________
void AliITSMapSDD::SetMap(TH2F* hmap){
  // Fill map staring from 2D histo 
  // with anodes on x axis and drift dist. on y axis
  for(Int_t iAn=0;iAn<fgkNAnodPts; iAn++){
    for(Int_t iDr=0;iDr<fgkNDrifPts; iDr++){
      SetCellContent(iAn,iDr,hmap->GetBinContent(iAn+1,iDr+1));
    }
  }
}
//______________________________________________________________________
Float_t AliITSMapSDD::GetCorrection(Float_t z, Float_t x, AliITSsegmentationSDD *seg){
  // returns correction in cm starting from local coordinates on the module
  const Double_t kMicronTocm = 1.0e-4; 
  Int_t nAnodes=seg->Npz();
  Int_t nAnodesHybrid=seg->NpzHalf();
  Int_t bina =(Int_t) seg->GetAnodeFromLocal(x,z);
  if(bina>nAnodes)  AliError("Wrong anode anumber!");
  if(bina>=nAnodesHybrid) bina-=nAnodesHybrid;
  Float_t stept = seg->Dx()*kMicronTocm/(Float_t)fgkNDrifPts;
  Int_t bint = TMath::Abs((Int_t)(x/stept));
  if(bint==fgkNDrifPts) bint-=1;
  if(bint>=fgkNDrifPts) AliError("Wrong bin number along drift direction!");
  return kMicronTocm*GetCellContent(bina,bint);
}
//______________________________________________________________________
TH2F* AliITSMapSDD::GetMapHisto() const{
  // Returns a TH2F histogram with map of residuals
  TString hname;
  hname.Form("h%s",GetName());
  TH2F* hmap=new TH2F(hname.Data(),"",fgkNAnodPts,-0.5,255.5,fgkNDrifPts,0.,35.);
  for(Int_t iAn=0;iAn<fgkNAnodPts; iAn++){
    for(Int_t iDr=0;iDr<fgkNDrifPts; iDr++){
      hmap->SetBinContent(iAn+1,iDr+1,GetCellContent(iAn,iDr));
    }
  }
  return hmap;
}
//______________________________________________________________________
TH1F* AliITSMapSDD::GetResidualDistr(Float_t dmin, Float_t dmax) const{
  // Returns a TH1F histogram with distribution of residual
  TString hname;
  hname.Form("hd%s",GetName());
  TH1F* hd=new TH1F(hname.Data(),"",100,dmin,dmax);
  for(Int_t iAn=0;iAn<fgkNAnodPts; iAn++){
    for(Int_t iDr=0;iDr<fgkNDrifPts; iDr++){
      hd->Fill(GetCellContent(iAn,iDr));
    }
  }
  return hd;
}
//______________________________________________________________________
AliITSCorrMapSDD* AliITSMapSDD::ConvertToNewFormat() const{
  // convert correction map to new format  
  Char_t* name=(Char_t*)GetName();
  AliITSCorrMapSDD* newmap=new AliITSCorrMap1DSDD(name,fgkNDrifPts);
  for(Int_t i=0; i<fgkNDrifPts; i++){
    newmap->SetCellContent(0,i,GetCellContent(0,i));
  }
  return newmap;
}

 AliITSMapSDD.cxx:1
 AliITSMapSDD.cxx:2
 AliITSMapSDD.cxx:3
 AliITSMapSDD.cxx:4
 AliITSMapSDD.cxx:5
 AliITSMapSDD.cxx:6
 AliITSMapSDD.cxx:7
 AliITSMapSDD.cxx:8
 AliITSMapSDD.cxx:9
 AliITSMapSDD.cxx:10
 AliITSMapSDD.cxx:11
 AliITSMapSDD.cxx:12
 AliITSMapSDD.cxx:13
 AliITSMapSDD.cxx:14
 AliITSMapSDD.cxx:15
 AliITSMapSDD.cxx:16
 AliITSMapSDD.cxx:17
 AliITSMapSDD.cxx:18
 AliITSMapSDD.cxx:19
 AliITSMapSDD.cxx:20
 AliITSMapSDD.cxx:21
 AliITSMapSDD.cxx:22
 AliITSMapSDD.cxx:23
 AliITSMapSDD.cxx:24
 AliITSMapSDD.cxx:25
 AliITSMapSDD.cxx:26
 AliITSMapSDD.cxx:27
 AliITSMapSDD.cxx:28
 AliITSMapSDD.cxx:29
 AliITSMapSDD.cxx:30
 AliITSMapSDD.cxx:31
 AliITSMapSDD.cxx:32
 AliITSMapSDD.cxx:33
 AliITSMapSDD.cxx:34
 AliITSMapSDD.cxx:35
 AliITSMapSDD.cxx:36
 AliITSMapSDD.cxx:37
 AliITSMapSDD.cxx:38
 AliITSMapSDD.cxx:39
 AliITSMapSDD.cxx:40
 AliITSMapSDD.cxx:41
 AliITSMapSDD.cxx:42
 AliITSMapSDD.cxx:43
 AliITSMapSDD.cxx:44
 AliITSMapSDD.cxx:45
 AliITSMapSDD.cxx:46
 AliITSMapSDD.cxx:47
 AliITSMapSDD.cxx:48
 AliITSMapSDD.cxx:49
 AliITSMapSDD.cxx:50
 AliITSMapSDD.cxx:51
 AliITSMapSDD.cxx:52
 AliITSMapSDD.cxx:53
 AliITSMapSDD.cxx:54
 AliITSMapSDD.cxx:55
 AliITSMapSDD.cxx:56
 AliITSMapSDD.cxx:57
 AliITSMapSDD.cxx:58
 AliITSMapSDD.cxx:59
 AliITSMapSDD.cxx:60
 AliITSMapSDD.cxx:61
 AliITSMapSDD.cxx:62
 AliITSMapSDD.cxx:63
 AliITSMapSDD.cxx:64
 AliITSMapSDD.cxx:65
 AliITSMapSDD.cxx:66
 AliITSMapSDD.cxx:67
 AliITSMapSDD.cxx:68
 AliITSMapSDD.cxx:69
 AliITSMapSDD.cxx:70
 AliITSMapSDD.cxx:71
 AliITSMapSDD.cxx:72
 AliITSMapSDD.cxx:73
 AliITSMapSDD.cxx:74
 AliITSMapSDD.cxx:75
 AliITSMapSDD.cxx:76
 AliITSMapSDD.cxx:77
 AliITSMapSDD.cxx:78
 AliITSMapSDD.cxx:79
 AliITSMapSDD.cxx:80
 AliITSMapSDD.cxx:81
 AliITSMapSDD.cxx:82
 AliITSMapSDD.cxx:83
 AliITSMapSDD.cxx:84
 AliITSMapSDD.cxx:85
 AliITSMapSDD.cxx:86
 AliITSMapSDD.cxx:87
 AliITSMapSDD.cxx:88
 AliITSMapSDD.cxx:89
 AliITSMapSDD.cxx:90
 AliITSMapSDD.cxx:91
 AliITSMapSDD.cxx:92
 AliITSMapSDD.cxx:93
 AliITSMapSDD.cxx:94
 AliITSMapSDD.cxx:95
 AliITSMapSDD.cxx:96
 AliITSMapSDD.cxx:97
 AliITSMapSDD.cxx:98
 AliITSMapSDD.cxx:99
 AliITSMapSDD.cxx:100
 AliITSMapSDD.cxx:101
 AliITSMapSDD.cxx:102
 AliITSMapSDD.cxx:103
 AliITSMapSDD.cxx:104
 AliITSMapSDD.cxx:105
 AliITSMapSDD.cxx:106
 AliITSMapSDD.cxx:107
 AliITSMapSDD.cxx:108
 AliITSMapSDD.cxx:109
 AliITSMapSDD.cxx:110
 AliITSMapSDD.cxx:111
 AliITSMapSDD.cxx:112
 AliITSMapSDD.cxx:113