Last version
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALJetMicroDst.h
1 #ifndef ALIEMCALJETMICRODST_H
2 #define ALIEMCALJETMICRODST_H
3 /* Copyright(c) 1998-2002, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 /* $Id$ */
7
8 //_________________________________________________________________________
9 //                  
10 //*-- Author: Aleksei Pavlinov (WSU)
11 #include <TNamed.h>
12 #include <TFile.h>
13 #include <TTree.h>
14 #include <TH1.h>
15 #include <TH2.h>
16
17 class AliGenHijingEventHeader;
18 class AliRun;
19 class AliEMCALJetFinder;
20 class TVector3;
21 class TBrowser;
22
23 class AliEMCALJetMicroDst: public TNamed {
24
25   private:
26   Int_t   fDebug;
27
28   public:
29   TFile*  fFile;
30   TTree*  fTree;
31   TString fName;
32   TList*  fListHist;    //!
33   TString fFileName;    // for convenience
34
35   Float_t decone;   //! for EMCAL
36   Float_t ptcone;   //! for ch.particles 
37   // For partons after hard scattering
38   Int_t   npart;
39   Float_t xpt[4];  //[npart]
40   Float_t xeta[4]; //[npart]
41   Float_t xphi[4]; //[npart]
42   // Jet 
43   Int_t   njet;
44   Float_t jet[10];   //[njet]
45   Float_t jetal[10]; //[njet]
46   Float_t jphil[10]; //[njet]
47   Float_t jetaw[10]; //[njet]
48   Float_t jphiw[10]; //[njet]
49   // Charge particle in jet ??
50   // eT in EMCAL itself - 24-jan-2003
51   Int_t   ncell;         // 96*144 =13824 
52   Int_t   idcell[13824]; //[ncell]
53   Float_t etcell[13824]; //[ncell] : de = det*sf
54   // eT in EMCAL grid for jet finder 
55   Int_t   ngrid;         // 96*144 =13824 
56   Int_t   idgrid[13824]; //[ngrid]
57   Float_t etgrid[13824]; //[ngrid]
58   // charge particle which hit to EMCAL - 28-jan-2003
59   Int_t   nchp;
60   Int_t   pid[20000];  //[nchp]
61   Float_t ppt[20000];  //[nchp]
62   Float_t peta[20000]; //[nchp]
63   Float_t pphi[20000]; //[nchp]
64
65   public:
66   AliEMCALJetMicroDst(char *name="jetMicroDst",
67   char *tit="jet Micro Dst for preparation of proposal");
68   virtual ~AliEMCALJetMicroDst();
69   Bool_t  Create(TFile *file);
70   Bool_t  Create(const char  *fname);
71   void    Fill(AliRun *run=0, AliEMCALJetFinder* jetFinder=0, Int_t modeFilling=0);
72   void    FillPartons(AliGenHijingEventHeader *header);
73   void    FillPartons();
74   void    FillJets(AliEMCALJetFinder* jetFinder);
75   void    FillEtForEMCAL(AliEMCALJetFinder* jetFinder);
76   void    FillEtForGrid(AliEMCALJetFinder* jetFinder);
77   void    FillArrays(TH2* hid, Int_t &n, Int_t *id, Float_t *et);
78   void    FillChargeParticles(AliEMCALJetFinder* jetFinder);  
79   
80   void    FillJetsControl(); // 18-jan-2003
81
82   Bool_t  Open(const Int_t mode=1) {return Open(DefineName(mode));}  // *MENU* 
83   Bool_t  Open(const char  *fname);                                  // *MENU* 
84   const Char_t* DefineName(const Int_t mode=1);                      // *MENU*
85   Bool_t  Initialize(TFile *file);
86   void    Print(Option_t* option="") const;                          // *MENU* 
87   Int_t   GetEntry(Int_t entry);
88   void    Test();
89   Int_t   GetNpart() {return npart;}
90   Bool_t  GetParton(Int_t i, Float_t& pt, Float_t& eta, Float_t& phi);
91   Bool_t  GetParton(Int_t i, TVector3& vec);
92   Int_t   GetNjet() {return njet;} 
93   Bool_t  GetJet(Int_t i,Int_t mode, Float_t& pt,Float_t& eta,Float_t& phi);
94   Bool_t  GetJet(Int_t i,Int_t mode, TVector3& vec);
95   static  void FillVector(Float_t pt, Float_t eta, Float_t phi, TVector3& vec);
96   void    GetEtaPhi(Int_t id, Double_t &eta, Double_t &phi);
97   TVector3& GetCellVector(Int_t i);
98   TVector3& GetGridVector(Int_t i);
99   // 13-apr-2003
100   Double_t GetSumInCone(TVector3 &jet, Int_t nc, Float_t *et,Float_t *eta,Float_t *phi, Double_t cellEtCut, Double_t rJet);
101   Double_t GetEmcalEtInCone(TVector3 &jet, Double_t cellEtCut=0.0, Double_t rJet=0.5);
102   Double_t GetTpcPtInCone(TVector3 &jet, Double_t cellEtCut=0.0, Double_t rJet=0.5);
103   Double_t GetSum(Int_t n, Float_t *ar, Double_t cut=0.0);
104   Double_t GetSumEmcal(Double_t cut=0.0) {return GetSum(ncell, etcell, cut);}
105   Double_t GetSumTpc(Double_t cut=0.0) {return GetSum(nchp, ppt, cut);}
106
107   void    SetDebug(Int_t flag) {fDebug = flag;}
108   Float_t GetDebug() const  {return fDebug;}
109
110   TTree* GetTree() {return fTree;}
111   TFile* GetFile() {return fFile;}
112   void   Close();
113
114   Bool_t  IsPythiaDst();
115   virtual Bool_t  IsFolder() const;
116   virtual void Browse(TBrowser* b);
117
118   static TList *MoveHistsToList(char* name="List of Hist", Bool_t putToBrowser=kTRUE);
119
120   ClassDef(AliEMCALJetMicroDst,1) // Micro Dst for jet analysis
121 };
122
123 #endif // AliEMCALJETMICRODST_H
124 /*
125 What to do
126 1. Common info about event
127  */