1 - Rename AliAnaMaker and AliAnaBaseClass to AliAnaPartCorrMaker and AliAnaPartCorrB...
[u/mrichter/AliRoot.git] / PWG4 / AliAnaGammaDirect.h
1 #ifndef AliAnaGammaDirect_H
2 #define AliAnaGammaDirect_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5 /* $Id$ */
6
7 //_________________________________________________________________________
8
9 // Class for the analysis of prompt gamma, isolation cut. 
10 //
11 //  Class created from old AliPHOSGammaJet
12 //  (see AliRoot versions previous Release 4-09)
13
14 //-- Author: Gustavo Conesa (INFN-LNF)
15
16 // --- ROOT system ---
17 #include <TParticle.h> 
18 #include <TClonesArray.h>  
19 #include <TH2F.h>
20 #include <TString.h>
21
22 // --- ANALYSIS system ---
23 #include "AliAnaPartCorrBaseClass.h"
24 class AliAODParticleCorrelations ;
25
26 class TList ;
27
28 class AliAnaGammaDirect : public AliAnaPartCorrBaseClass {
29
30 public: 
31
32   AliAnaGammaDirect() ; // default ctor
33   AliAnaGammaDirect(const AliAnaGammaDirect & g) ; // cpy ctor
34   AliAnaGammaDirect & operator = (const AliAnaGammaDirect & g) ;//cpy assignment
35   virtual ~AliAnaGammaDirect() ; //virtual dtor
36
37   enum mcTypes {kPrompt, kFragmentation, kPi0Decay, kEtaDecay, kOtherDecay, kPi0, kEta, kElectron, kConversion, kUnknown};
38
39   Bool_t CheckInvMass(const Int_t icalo,const TLorentzVector mom, Double_t *v, TClonesArray * pl);
40   Int_t CheckOrigin(const Int_t label);
41   
42   TList *  GetCreateOutputObjects();
43
44   void MakeAnalysisFillAOD()  ;
45   
46   void MakeAnalysisFillHistograms() ; 
47
48   void MakeSeveralICAnalysis(AliAODParticleCorrelation * ph, Double_t v[3]); 
49   
50   void Print(const Option_t * opt)const;
51   
52   TString GetDetector()   const {return fDetector ; }
53   void SetDetector(TString det)    {fDetector = det ; }
54
55   Int_t    GetNCones()                  const {return fNCones ; }
56   Int_t    GetNPtThresFrac()                const {return fNPtThresFrac ; }
57   Float_t GetConeSizes(Int_t i)      const {return fConeSizes[i] ; }
58   Float_t GetPtThresholds(Int_t i)  const {return fPtThresholds[i] ; }
59   Float_t GetPtFractions(Int_t i)  const {return fPtFractions[i] ; }
60
61   void InitParameters();
62  
63   void SetNCones(Int_t ncs)              {fNCones = ncs ; }
64   void SetNPtThresFrac(Int_t npt)        {fNPtThresFrac = npt; }
65   void SetConeSizes(Int_t i, Float_t r)         {fConeSizes[i] = r ; }
66   void SetPtThresholds(Int_t i, Float_t pt)   {fPtThresholds[i] = pt; }
67   void SetPtFractions(Int_t i, Float_t pt)   {fPtFractions[i] = pt; } 
68
69   Bool_t IsIsolationOn() {return fMakeIC ; }
70   void SwitchOnIsolation() { fMakeIC = kTRUE;}
71   void SwitchOffIsolation() { fMakeIC = kFALSE;}
72
73   Bool_t IsReIsolationOn() {return fReMakeIC ; }
74   void SwitchOnReIsolation() { fReMakeIC = kTRUE;}
75   void SwitchOffReIsolation() { fReMakeIC = kFALSE;}
76
77   Bool_t IsSeveralIsolationOn() {return fMakeSeveralIC ; }
78   void SwitchOnSeveralIsolation() { fMakeSeveralIC = kTRUE;}
79   void SwitchOffSeveralIsolation() { fMakeSeveralIC = kFALSE;}
80
81   Bool_t IsInvariantMassOn() {return fMakeInvMass ; }
82   void SwitchOnInvariantMass() { fMakeInvMass = kTRUE;}
83   void SwitchOffInvariantMass() { fMakeInvMass = kFALSE;}
84
85   Bool_t SelectCluster(AliAODCaloCluster * calo, Double_t vertex[3], TLorentzVector & mom);
86
87   private:
88  
89   TString fDetector ; // Detector where the gamma is searched;
90   Bool_t fMakeIC ; //Do isolation analysis
91   Bool_t fReMakeIC ; //Do isolation analysis
92   Bool_t fMakeSeveralIC ; //Do analysis for different IC
93   Bool_t fMakeInvMass; //Select candidate if no pair from decay
94
95   //Histograms  
96   TH1F * fhPtGamma    ;  //!Number of identified (isolated) gamma 
97   TH2F * fhPhiGamma  ; //! Phi of identified  (isolated) gamma
98   TH2F * fhEtaGamma  ; //! eta of identified  (isolated) gamma
99   TH2F * fhConeSumPt ; //! Sum Pt in the cone
100
101   //Prompt photon analysis data members for multiple cones and pt thresholds 
102   Int_t         fNCones   ; //!Number of cone sizes to test
103   Int_t         fNPtThresFrac ; //!Number of ptThres and ptFrac to test
104   Float_t     fConeSizes[5] ; //! Array with cones to test
105   Float_t     fPtThresholds[5] ; //! Array with pt thresholds to test
106   Float_t     fPtFractions[5] ; //! Array with pt thresholds to test
107
108   TH1F* fhPtThresIsolated[5][5]; //! Isolated gamma with pt threshold 
109   TH1F* fhPtFracIsolated[5][5]; //! Isolated gamma with pt threshold 
110   TH2F* fhPtSumIsolated[5] ;  //!  Isolated gamma with threshold on cone pt sume
111
112   //MC
113   TH1F * fhPtPrompt; //!Number of identified (isolated) prompt gamma 
114   TH2F * fhPhiPrompt;  //! Phi of identified  (isolated) prompt gamma
115   TH2F * fhEtaPrompt;  //! eta of identified  (isolated) prompt gamma
116   TH1F * fhPtThresIsolatedPrompt[5][5];  //! Isolated prompt gamma with pt threshold 
117   TH1F * fhPtFracIsolatedPrompt[5][5];    //! Isolated prompt gamma with pt frac
118   TH2F * fhPtSumIsolatedPrompt[5]; //!  Isolated prompt gamma with threshold on cone pt sume
119   TH1F * fhPtFragmentation; //!Number of identified (isolated) fragmentation gamma 
120   TH2F * fhPhiFragmentation;  //! Phi of identified  (isolated) fragmentation gamma
121   TH2F * fhEtaFragmentation;  //! eta of identified  (isolated) fragmentation gamma
122   TH1F * fhPtThresIsolatedFragmentation[5][5];  //! Isolated fragmentation gamma with pt threshold 
123   TH1F * fhPtFracIsolatedFragmentation[5][5];    //! Isolated fragmentation gamma with pt frac
124   TH2F * fhPtSumIsolatedFragmentation[5]; //!  Isolated fragmentation gamma with threshold on cone pt sume
125   TH1F * fhPtPi0Decay; //!Number of identified (isolated) Pi0Decay gamma 
126   TH2F * fhPhiPi0Decay;  //! Phi of identified  (isolated) Pi0Decay gamma
127   TH2F * fhEtaPi0Decay;  //! eta of identified  (isolated) Pi0Decay gamma
128   TH1F * fhPtThresIsolatedPi0Decay[5][5];  //! Isolated Pi0Decay gamma with pt threshold 
129   TH1F * fhPtFracIsolatedPi0Decay[5][5];    //! Isolated Pi0Decay gamma with pt frac
130   TH2F * fhPtSumIsolatedPi0Decay[5]; //!  Isolated Pi0Decay gamma with threshold on cone pt sume
131   TH1F * fhPtOtherDecay; //!Number of identified (isolated) OtherDecay gamma 
132   TH2F * fhPhiOtherDecay;  //! Phi of identified  (isolated) OtherDecay gamma
133   TH2F * fhEtaOtherDecay;  //! eta of identified  (isolated) OtherDecay gamma
134   TH1F * fhPtThresIsolatedOtherDecay[5][5];  //! Isolated OtherDecay gamma with pt threshold 
135   TH1F * fhPtFracIsolatedOtherDecay[5][5];    //! Isolated OtherDecay gamma with pt frac
136   TH2F * fhPtSumIsolatedOtherDecay[5]; //!  Isolated OtherDecay gamma with threshold on cone pt sume    
137   TH1F * fhPtConversion; //!Number of identified (isolated) Conversion gamma 
138   TH2F * fhPhiConversion;  //! Phi of identified  (isolated) Conversion gamma
139   TH2F * fhEtaConversion;  //! eta of identified  (isolated) Conversion gamma
140   TH1F * fhPtThresIsolatedConversion[5][5];  //! Isolated Conversion gamma with pt threshold 
141   TH1F * fhPtFracIsolatedConversion[5][5];    //! Isolated Conversion gamma with pt frac
142   TH2F * fhPtSumIsolatedConversion[5]; //!  Isolated Conversion gamma with threshold on cone pt sume
143   TH1F * fhPtUnknown; //!Number of identified (isolated) Unknown gamma 
144   TH2F * fhPhiUnknown;  //! Phi of identified  (isolated) Unknown gamma
145   TH2F * fhEtaUnknown;  //! eta of identified  (isolated) Unknown gamma
146   TH1F * fhPtThresIsolatedUnknown[5][5];  //! Isolated Unknown gamma with pt threshold 
147   TH1F * fhPtFracIsolatedUnknown[5][5];    //! Isolated Unknown gamma with pt frac
148   TH2F * fhPtSumIsolatedUnknown[5]; //!  Isolated Unknown gamma with threshold on cone pt sume
149                                                 
150   ClassDef(AliAnaGammaDirect,1)
151 } ;
152  
153
154 #endif //AliAnaGammaDirect_H
155
156
157