]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSMapSDD.h
Millepede implementation operating with AliMillePede2 (R. Shahoyan) added to the...
[u/mrichter/AliRoot.git] / ITS / AliITSMapSDD.h
1 #ifndef ALIITSMAPSDD_H
2 #define ALIITSMAPSDD_H
3 /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ///////////////////////////////////////////////////////////////////
9 //                                                               //
10 // Class for SDD maps used to correct for                        //
11 // voltage divider shape and doping fluctuations                 //
12 // Origin: F.Prino, Torino, prino@to.infn.it                     //
13 //                                                               //
14 ///////////////////////////////////////////////////////////////////
15
16 #include "AliITSsegmentationSDD.h"
17 #include<TNamed.h>
18 #include "AliLog.h"
19 class TH1F;
20 class TH2F;
21
22 class AliITSMapSDD : public TNamed {
23
24  public:
25   AliITSMapSDD();
26   AliITSMapSDD(Char_t *mapname);
27   virtual ~AliITSMapSDD(){};
28
29   void SetMap(TH2F* hmap);
30   Bool_t CheckBounds(Int_t iAn, Int_t iTb) const {
31     if(iAn<0 || iAn>=fgkNAnodPts || iTb<0 || iTb >= fgkNDrifPts){ 
32       AliWarning(Form("Cell out of bounds, anode=%d time-bin=%d",iAn,iTb));
33       return kFALSE;
34     }
35     return kTRUE;
36   }
37   void SetCellContent(Int_t iAn, Int_t iTb, Float_t devMicron){
38     if(CheckBounds(iAn,iTb)) fMap[iAn][iTb]=(Short_t)(devMicron*10.+0.5);
39   }
40
41   Float_t GetCellContent(Int_t iAn, Int_t iTb) const {
42     if(CheckBounds(iAn,iTb)) return (Float_t)fMap[iAn][iTb]/10.;
43     else return 0.;
44   }
45   Float_t GetCorrection(Float_t z, Float_t x, AliITSsegmentationSDD *seg);
46   static Int_t GetNBinsAnode() {return fgkNAnodPts;}
47   static Int_t GetNBinsDrift() {return fgkNDrifPts;}
48
49   TH2F* GetMapHisto() const;
50   TH1F* GetResidualDistr(Float_t dmin=-300., Float_t dmax=300.) const;
51
52  protected:
53   static const Int_t fgkNAnodPts = 256; // number of map points along anodes
54   static const Int_t fgkNDrifPts = 72; // number of map points along anodes
55   Short_t fMap[fgkNAnodPts][fgkNDrifPts];   // map of deviations
56                                             // stored as Short_t: integer 
57                                             // values from -32000 to 32000
58                                             // in the range -3.2 - 3.2 mm
59
60   ClassDef(AliITSMapSDD,2);
61 };
62 #endif