]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EMCAL/AliEMCALRecPointsQaESDSelector.h
added pi0 calibration, linearity, shower profile
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALRecPointsQaESDSelector.h
1 #ifndef ALIEMCALRECPOINTSQAESDSELECTOR_H
2 #define ALIEMCALRECPOINTSQAESDSELECTOR_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 /* $Id$ */
7  
8 //*--  Authors: Aleksei Pavlinov (WSU)
9
10 #include "AliSelector.h"
11
12 #include <TObjArray.h>
13
14 class AliEMCALFolder;
15 class AliRunLoader;
16 class AliEMCALRecPoint;
17 class AliEMCALCellInfo;
18 class cellInfo;
19
20 class TList;
21 class TCanvas;
22 class TH1F;
23 class TH2F;
24 class TBrowser;
25 class TChain;
26 class TFolder;
27 class TArrayI;
28
29 class AliEMCALRecPointsQaESDSelector :  public AliSelector {
30   public:
31     AliEMCALRecPointsQaESDSelector();
32     virtual ~AliEMCALRecPointsQaESDSelector();
33
34     virtual void    Begin(TTree*);
35     virtual void    SlaveBegin(TTree* tree);
36     virtual void    Init(TTree *tree);
37     virtual Bool_t  Notify();
38     virtual Bool_t  Process(Long64_t entry);
39     virtual void    SlaveTerminate();
40     virtual void    Terminate();
41   //
42   void InitStructure(Int_t it);
43   static TList *DefineHistsOfRP(const char *name="RP",  Double_t p=110.0, Int_t keyOpt=0);
44   static TList *DefineHistsOfKineVsRP(const char *name="KineVsRP",  Double_t p=110.0, Int_t keyOpt=0);
45   static TList *DefineHistsForShowerProfile(const char *name="ProfY", Double_t p=1.);
46   static void   FillHistsOfKineVsRP(TList *l, AliRunLoader* RL, TClonesArray &lvM);
47   static void   FillHistsForShowerProfile(TList *l, AliEMCALRecPoint *rp, AliEMCALCellInfo* t);
48   static void   EvalLocalPhiPosition(const Double_t wlog, const AliEMCALRecPoint *rp, const AliEMCALCellInfo* t, Double_t &xcog, Int_t &phiSize, cellInfo &rMax); 
49   //
50   TList *GetListKineVsRP()      {return fLKineVsRP;}
51   TList *GetListShowerProfile() {return fLShowerProfile;}
52   //  static TList *DefineHistsOfTowers(const char *name="towers");
53   // 
54   void FitEffMassHist(); // *MENU*  
55   void PrintInfo();      // *MENU*
56   //
57   void    SetChain(TChain *chain)  {fChain = chain;}
58   TChain* GetChain()               {return fChain;}
59   void    SetMomentum(Double_t p);
60   Double_t GetMomentum() {return fPmom;}
61
62   AliEMCALFolder* CreateEmcalFolder(const Int_t it);
63   void SetEmcalFolder(AliEMCALFolder* folder); 
64   void SetEmcalOldFolder(AliEMCALFolder* folder); 
65   AliEMCALFolder* GetEmcalOldFolder(const Int_t nsm);
66   AliEMCALCellInfo* GetCellsInfo() {return fCellsInfo;}
67   //
68   void      SetStringOfRunOpts(const char *st) {fRunOpts = st;}
69   TObjArray GetOptsArray() const {return fArrOpts;}
70   Int_t     GetKeyOptsValue(Int_t key);  // *MENU*
71   void      CheckRunOpts();
72   //
73   virtual void Browse(TBrowser* b);
74   virtual Bool_t  IsFolder() const;
75   //
76   void    Save(Int_t ver=0, const char *optIO="NEW");   // *MENU*
77   static  AliEMCALRecPointsQaESDSelector* ReadSelector(const char* nf = "/home/pavlinov/ALICE/SHISHKEBAB/RF/CALIB/PROF/PROFILE_0.root");
78   
79
80   //
81   //// Pictures staf - Jun 26, 2007
82   //
83   void ReadAllEmcalFolders();
84   void PictVsIterNumber(const Int_t ind=0, const Int_t nsm=0);
85   // Gamma
86   TH1F* FitHistOfRecPointEnergy(const char *opt="CLONE");
87   static TCanvas *Linearity(TList *l, Int_t ifun=3);
88   static TCanvas *DrawKineVsRP(TList *l);
89   // Profile
90   static TCanvas *DrawMeanVsLog(TH2F *h2);
91   // Geometry staff
92   TCanvas *DrawPhiEtaAnglesDistribution(const char *gn="SHISH_TRD1_CURRENT_2X2"); // *MENU*
93   // Geometry constants 
94   TCanvas *DrawDeffVsEnergy();  // *MENU*
95   TCanvas *DrawDeffVsEnergy2(const char *opt="fit1"); // *MENU*
96   void     ReadParsDeffAndW0(const char *dirName="/data/r22b/ALICE/CALIB/FIT/",
97            double *deff=0, double *edeff=0, double *w0=0, double *ew0=0, const Int_t pri=0);
98   TCanvas *DrawSpaceResolution();
99  protected:
100   Double_t fPmom; // positive if defined
101   //
102   TChain* fChain; //! chain if ESD files
103   TList* fLofHistsPC; // list of histograms of pseudo clusters 
104   TList* fLofHistsRP; // list of histograms of rec.points 
105   TList* fLKineVsRP;  // list of histograms kinematics vs rec.points 
106   TList* fLShowerProfile;  // list of histograms for shower profile business
107   //
108   AliEMCALCellInfo *fCellsInfo; //
109   TFolder*         fEmcalPool;  //
110   //
111   // Options - Jul 10, 2007
112   //
113   TString   fRunOpts;        // String of running options
114   TObjArray fArrOpts;        // Array of options 
115   // Options keys
116   TArrayI  *fKeyOpts;
117   // Static parameters
118  public:
119   static AliEMCALFolder* GetEmcalFolder() {return fEMCAL;}
120   static AliEMCALFolder* GetEmcalOldFolder() {return fEMCALOld;}
121   static AliEMCALFolder*  fEMCAL;      // current  EMCAL object
122   static AliEMCALFolder*  fEMCALOld;   // previous EMCAL object
123   //
124   static Double_t fDistEff;  // effective depth of electromagnetic shower
125   static Double_t fW0;       // 
126   static Double_t fSlopePhiShift; // phi shift of cluster = fSlopePhiShift * phi
127   static void SetFitParameters(Double_t deff, Double_t w0, Double_t slope) 
128   {
129     fDistEff = deff; fW0 = w0; fSlopePhiShift = slope;
130   }
131   static void GetFitParameters(Double_t &deff, Double_t &w0, Double_t &slope)
132   {
133     deff = fDistEff; w0 = fW0; slope = fSlopePhiShift;
134   } 
135   void ResetAllListOfHists();
136   void ReloadChain(Long64_t entry=0);
137   void GetInitialParsForFit(const Int_t var, Double_t &deff, Double_t &w0, Double_t &phislope, const int phiCase=0);
138
139  private:
140   AliEMCALRecPointsQaESDSelector(const AliEMCALRecPointsQaESDSelector&);
141   AliEMCALRecPointsQaESDSelector& operator=(const AliEMCALRecPointsQaESDSelector&);
142
143   ClassDef(AliEMCALRecPointsQaESDSelector, 1);
144 };
145 #endif