Stupid bug fix in new superlight mode (from Zurich airport)
[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 "AliITSCorrMapSDD.h"
18 #include<TNamed.h>
19 #include "AliLog.h"
20 class TH1F;
21 class TH2F;
22
23 class AliITSMapSDD : public TNamed {
24
25  public:
26   AliITSMapSDD();
27   AliITSMapSDD(Char_t *mapname);
28   virtual ~AliITSMapSDD(){};
29
30   void SetMap(TH2F* hmap);
31   Bool_t CheckBounds(Int_t iAn, Int_t iTb) const {
32     if(iAn<0 || iAn>=fgkNAnodPts || iTb<0 || iTb >= fgkNDrifPts){ 
33       AliWarning(Form("Cell out of bounds, anode=%d time-bin=%d",iAn,iTb));
34       return kFALSE;
35     }
36     return kTRUE;
37   }
38   void SetCellContent(Int_t iAn, Int_t iTb, Float_t devMicron){
39     if(CheckBounds(iAn,iTb)) fMap[iAn][iTb]=(Short_t)(devMicron*10.+0.5);
40   }
41
42   Float_t GetCellContent(Int_t iAn, Int_t iTb) const {
43     if(CheckBounds(iAn,iTb)) return (Float_t)fMap[iAn][iTb]/10.;
44     else return 0.;
45   }
46   Float_t GetCorrection(Float_t z, Float_t x, AliITSsegmentationSDD *seg);
47   static Int_t GetNBinsAnode() {return fgkNAnodPts;}
48   static Int_t GetNBinsDrift() {return fgkNDrifPts;}
49   AliITSCorrMapSDD* ConvertToNewFormat() const;
50
51   TH2F* GetMapHisto() const;
52   TH1F* GetResidualDistr(Float_t dmin=-300., Float_t dmax=300.) const;
53
54  protected:
55   static const Int_t fgkNAnodPts = 256; // number of map points along anodes
56   static const Int_t fgkNDrifPts = 72; // number of map points along anodes
57   Short_t fMap[fgkNAnodPts][fgkNDrifPts];   // map of deviations
58                                             // stored as Short_t: integer 
59                                             // values from -32000 to 32000
60                                             // in the range -3.2 - 3.2 mm
61
62   ClassDef(AliITSMapSDD,2);
63 };
64 #endif