ROOT logo
#ifndef ALIITSMAPSDD_H
#define ALIITSMAPSDD_H
/* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

///////////////////////////////////////////////////////////////////
//                                                               //
// Class for SDD maps used to correct for                        //
// voltage divider shape and doping fluctuations                 //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

#include "AliITSsegmentationSDD.h"
#include "AliITSCorrMapSDD.h"
#include<TNamed.h>
#include "AliLog.h"
class TH1F;
class TH2F;

class AliITSMapSDD : public TNamed {

 public:
  AliITSMapSDD();
  AliITSMapSDD(Char_t *mapname);
  virtual ~AliITSMapSDD(){};

  void SetMap(TH2F* hmap);
  Bool_t CheckBounds(Int_t iAn, Int_t iTb) const {
    if(iAn<0 || iAn>=fgkNAnodPts || iTb<0 || iTb >= fgkNDrifPts){ 
      AliWarning(Form("Cell out of bounds, anode=%d time-bin=%d",iAn,iTb));
      return kFALSE;
    }
    return kTRUE;
  }
  void SetCellContent(Int_t iAn, Int_t iTb, Float_t devMicron){
    if(CheckBounds(iAn,iTb)) fMap[iAn][iTb]=(Short_t)(devMicron*10.+0.5);
  }

  Float_t GetCellContent(Int_t iAn, Int_t iTb) const {
    if(CheckBounds(iAn,iTb)) return (Float_t)fMap[iAn][iTb]/10.;
    else return 0.;
  }
  Float_t GetCorrection(Float_t z, Float_t x, AliITSsegmentationSDD *seg);
  static Int_t GetNBinsAnode() {return fgkNAnodPts;}
  static Int_t GetNBinsDrift() {return fgkNDrifPts;}
  AliITSCorrMapSDD* ConvertToNewFormat() const;

  TH2F* GetMapHisto() const;
  TH1F* GetResidualDistr(Float_t dmin=-300., Float_t dmax=300.) const;

 protected:
  static const Int_t fgkNAnodPts = 256; // number of map points along anodes
  static const Int_t fgkNDrifPts = 72; // number of map points along anodes
  Short_t fMap[fgkNAnodPts][fgkNDrifPts];   // map of deviations
                                            // stored as Short_t: integer 
                                            // values from -32000 to 32000
                                            // in the range -3.2 - 3.2 mm

  ClassDef(AliITSMapSDD,2);
};
#endif
 AliITSMapSDD.h:1
 AliITSMapSDD.h:2
 AliITSMapSDD.h:3
 AliITSMapSDD.h:4
 AliITSMapSDD.h:5
 AliITSMapSDD.h:6
 AliITSMapSDD.h:7
 AliITSMapSDD.h:8
 AliITSMapSDD.h:9
 AliITSMapSDD.h:10
 AliITSMapSDD.h:11
 AliITSMapSDD.h:12
 AliITSMapSDD.h:13
 AliITSMapSDD.h:14
 AliITSMapSDD.h:15
 AliITSMapSDD.h:16
 AliITSMapSDD.h:17
 AliITSMapSDD.h:18
 AliITSMapSDD.h:19
 AliITSMapSDD.h:20
 AliITSMapSDD.h:21
 AliITSMapSDD.h:22
 AliITSMapSDD.h:23
 AliITSMapSDD.h:24
 AliITSMapSDD.h:25
 AliITSMapSDD.h:26
 AliITSMapSDD.h:27
 AliITSMapSDD.h:28
 AliITSMapSDD.h:29
 AliITSMapSDD.h:30
 AliITSMapSDD.h:31
 AliITSMapSDD.h:32
 AliITSMapSDD.h:33
 AliITSMapSDD.h:34
 AliITSMapSDD.h:35
 AliITSMapSDD.h:36
 AliITSMapSDD.h:37
 AliITSMapSDD.h:38
 AliITSMapSDD.h:39
 AliITSMapSDD.h:40
 AliITSMapSDD.h:41
 AliITSMapSDD.h:42
 AliITSMapSDD.h:43
 AliITSMapSDD.h:44
 AliITSMapSDD.h:45
 AliITSMapSDD.h:46
 AliITSMapSDD.h:47
 AliITSMapSDD.h:48
 AliITSMapSDD.h:49
 AliITSMapSDD.h:50
 AliITSMapSDD.h:51
 AliITSMapSDD.h:52
 AliITSMapSDD.h:53
 AliITSMapSDD.h:54
 AliITSMapSDD.h:55
 AliITSMapSDD.h:56
 AliITSMapSDD.h:57
 AliITSMapSDD.h:58
 AliITSMapSDD.h:59
 AliITSMapSDD.h:60
 AliITSMapSDD.h:61
 AliITSMapSDD.h:62
 AliITSMapSDD.h:63
 AliITSMapSDD.h:64