]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EMCAL/AliEMCALHistoUtilities.h
2dde821715e39e8d0276e74230319d758dc81fd1
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALHistoUtilities.h
1 #ifndef ALIEMCALHISTOUTILITIES_H
2 #define ALIEMCALHISTOUTILITIES_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 //_________________________________________________________________________
9 // This is a set of histogram
10 // utilities for the EMCAL
11 // to make some common
12 // functions easier
13 //                  
14 //*-- Authors: J.L. Klay (LLNL) & Aleksei Pavlinov (WSU)
15
16 #include <TNamed.h>
17
18 class TList;
19 class TString;
20 class TH1;
21 class TGraph;
22 class TGraphErrors;
23 class TF1;
24 class TLatex;
25 class TChain;
26 //class TLorentzVector;
27 class TArrayF;
28
29 //class AliESDCaloCluster;
30 //class AliEMCALRecPoint;
31 //class AliRunLoader;
32
33 class AliEMCALHistoUtilities: public TNamed {
34   public:  AliEMCALHistoUtilities(const char *name="emcalUtilitiesRoutines",
35   const char *tit="EMCAL utility routines");
36   AliEMCALHistoUtilities(const  AliEMCALHistoUtilities &) : TNamed("", ""){
37     Fatal("cpy ctor", "not implemented") ; }
38   virtual ~AliEMCALHistoUtilities();
39
40   // service routine
41   static TList *MoveHistsToList(const char* name="ListOfHists", Bool_t putToBrowser=kTRUE, Bool_t setOwner=kFALSE);
42   static void FillH1(TList *l=0, Int_t ind=0, Double_t x=-99999., Double_t w=1., Double_t error=0.);
43   static void FillH2(TList *l=0, Int_t ind=0, Double_t x=-99999., Double_t y=-99999., Double_t w=1.);
44   static void FillHProf(TList *l=0, Int_t ind=0, Double_t x=-99999., Double_t y=-99999., Double_t w=1.);
45   static void FillHnSparse(TList *l=0, Int_t ind=0, Double_t* x=0, Double_t w=1.);
46   static int  SaveListOfHists(TList *mylist=0, const char* name="test", Bool_t kSingleKey=kFALSE,
47   const char* opt="RECREATE");
48   static void AddToNameAndTitle(TNamed *h=0, const char *name=0, const char *title=0);
49   static void AddToNameAndTitleToList(TList *l=0, const char *name=0, const char *title=0);
50   static void ResetListOfHists(TList *l);
51   static void Titles(TH1 *hid=0, const char *titx="",const char *tity="");
52   static TList* CreateProjectionsX(TList *l=0, const Int_t ind=2, const Char_t* name="prox");
53
54   static TLatex *Lat(const char *text="", Float_t x=0.0,Float_t y=0.0, Int_t align=22, Float_t tsize=0.05, short tcolor = 1); 
55   static TGraph *DrawGraph(Int_t n=4, Double_t *x=0, Double_t *y=0, Int_t markerColor=4,  
56   Int_t markerStyle=4, const char* opt="", const char* tit="", const char* xTit="  jet E_{t}  ",
57   const char* yTit="", Int_t ifun=0, const char *optFit="W+", const char *fun="");
58   static TGraphErrors *DrawGraphErrors(const Int_t n=4,Double_t *x=0,Double_t *y=0,Double_t *ex=0, 
59   Double_t *ey=0, Int_t markerColor=4,Int_t markerStyle=4, const char* opt="", 
60   const char* tit="", const char* xTit="  jet E_{t}  ",
61   const char* yTit="", Int_t ifun=0, const char *optFit="W+", const char *fun="");
62   // TChain
63   static void InitChain(TChain *chain=0, const char* nameListOfFiles=0, Int_t nFileMax=0); 
64   //static AliRunLoader* InitKinematics(const Int_t nev=0, const char* galiceName="galice.root");
65   //static AliRunLoader* GetRunLoader(const Int_t nev, const Char_t* galiceName,
66         //                       const Char_t* eventFolderName, AliRunLoader* rlOld);
67   //
68   static Double_t GetMomentum(const char* nameListOfFiles); 
69   static int ParseString(const TString &topt, TObjArray &Opt); 
70   // Analysis utilites
71   //static Bool_t GetLorentzVectorFromESDCluster(TLorentzVector &v, const AliESDCaloCluster *cl);
72   //static Bool_t GetLorentzVectorFromRecPoint(TLorentzVector &v, const AliEMCALRecPoint  *rp);
73   // Drawing 
74   static void DrawHist(TH1* hid=0,int lineWidth=1,int lineColor=1,const char* opt="",int lineStyle=1);
75   // Fitting:
76   static TF1* Gausi(const char *addName, double xmi, double xma, double N, double mean, double sig, 
77   double width);
78   static TF1* Gausi(const char *addName, double xmi, double xma, TH1 *h);
79
80   static TF1* GausiPol2(const char *addName, double xmi, double xma, TF1 *g, TF1* bg);
81   //
82   static Double_t Gi(Double_t *x, Double_t *par);
83   static Double_t GiPol2(Double_t *x, Double_t *par);
84   // Calibration stuff
85   static Double_t GetCorrectionCoefficientForGamma1(const Double_t eRec);
86   static Double_t GetCorrectedEnergyForGamma1(const Double_t eRec);
87   static TF1* GetResolutionFunction(const char *opt, TString &latexName);
88   //
89   // Analysis
90   //
91   // Trigger 
92   static TList* GetTriggersListOfHists(const Int_t scale=0, const Int_t nTrig=5, const Bool_t toBrowser=kFALSE);
93   static void   FillTriggersListOfHists(TList *l=0, TArrayF *triggerPosition=0, TArrayF *triggerAmplitudes=0);
94   // Jet(s) kinematics
95   static TList* GetJetsListOfHists(Int_t njet=2, Bool_t toBrowser=kFALSE);
96   //static void   FillJetKineListOfHists(TList *l, AliRunLoader* rl, TLorentzVector &goodJet);
97
98   AliEMCALHistoUtilities & operator = (const AliEMCALHistoUtilities &) {
99     Fatal("operator =", "not implemented") ; return *this ; }
100   
101   ClassDef(AliEMCALHistoUtilities,1) // EMCAL utility routines
102 };
103
104 #endif // ALIEMCALHISTOUTILITIES_H