PHOS/DA/CMakeLists.txt
[u/mrichter/AliRoot.git] / PHOS / PHOSbase / AliPHOSCpvGainCalibDA.h
1 #ifndef AliPHOSCpvGainCalibDA_h
2 #define AliPHOSCpvGainCalibDA_h
3
4 // Author: Sergey Evdokimov <sevdokim@cern.ch>
5 // The AliPHOSCpvGainCalibDA class creates 1D amplitude histos for every channel using AliPHOSDigit array
6 // produced by AliPHOSCPVRawDigiProducer (with pedestal subtraction!!!)
7 // Also writes these histos to file  
8 // And creates a ROOT file with some histograms
9
10 #include <TH1.h>
11 #include <TH2.h>
12 #include <TMath.h>
13 #include <TFile.h>
14 #include <TString.h>
15 #include <THnSparse.h>
16 #include "AliPHOSCpvParam.h"
17 #include "AliPHOSCpvRawDigiProducer.h"
18 #include <TClonesArray.h>
19 #include "AliPHOSGeometry.h"
20
21 class TFile;
22 class AliPHOSCpvGainCalibDA: public TObject { 
23
24
25 public:
26   AliPHOSCpvGainCalibDA();
27   virtual ~AliPHOSCpvGainCalibDA();
28   void InitCalibration(TFile *fCalibrSupplyRoot); //run it before analysing data to create calibration coeffs map. input is file where previously created histos are stored.
29   void CreateA0Histos(Int_t iDDL);
30   Bool_t SetDeadChannelMapFromFile(const char * filename);
31   void WriteA0HistosToFile() const;                  // create and write a new CpvCalibrSupply.root file with hists
32   Bool_t IsBad(Int_t ddl, Int_t x, Int_t y) {  // returns true, if the cell is bad
33     if(!fDeadMap) return kFALSE;
34     if(!fDeadMap[ddl]) return kFALSE;
35     if(fDeadMap[ddl] -> GetBinContent(x+1,y+1)) return kTRUE;
36     return kFALSE;
37   }
38   Bool_t IsBad(Int_t abs) {  // returns true, if the cell is bad
39     if(!AliPHOSCpvParam::IsValidAbs(abs)) return kFALSE;
40     Int_t ddl = AliPHOSCpvParam::A2DDL(abs),
41             x = AliPHOSCpvParam::A2X(abs),
42             y = AliPHOSCpvParam::A2Y(abs);
43     return IsBad(ddl,x,y);
44   }
45   Bool_t FillAmplA0Histos(TClonesArray *digits);
46   TList * GetQAHistos(){return fHistosList;}
47   void CreateQAHistos();
48
49  protected: 
50   AliPHOSGeometry * fGeom ;         //! PHOS geometry
51   TH2I *fDeadMap[2*AliPHOSCpvParam::kNDDL]; //Dead Channel Map  
52   TH2I *fEntriesMap[2*AliPHOSCpvParam::kNDDL];//entries map
53   TH1F       *fAmplA0Histo[2*AliPHOSCpvParam::kNDDL][AliPHOSCpvParam::kPadPcX][AliPHOSCpvParam::kPadPcY]; //raw amplitudes specrta for every channel   
54   TList* fHistosList;
55   TH1F* fhClusterMult;
56   TH2F* fhClusterShape;
57   TH1F* fhA0Value;
58   TH2F* fhAmplInClust;
59   TH1F* fhTotalClusterAmplitude;
60   
61   ClassDef(AliPHOSCpvGainCalibDA,1);                                                  //Cpv calibration class        
62 };
63 #endif
64