]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/GammaConv/AliAnalysisTaskGammaConversion.h
Added a new class for the AOD information
[u/mrichter/AliRoot.git] / PWG4 / GammaConv / AliAnalysisTaskGammaConversion.h
1 #ifndef ALIANALYSISTASKGAMMACONVERSION_H
2 #define ALIANALYSISTASKGAMMACONVERSION_H
3  
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 ////////////////////////////////////////////////
8 //--------------------------------------------- 
9 // Class used to do analysis on conversion pairs
10 //---------------------------------------------
11 ////////////////////////////////////////////////
12  
13 #include "AliAnalysisTaskSE.h"
14 #include <vector>
15 #include "AliV0Reader.h"
16 #include "AliGammaConversionAODObject.h"
17
18 class TNtuple;
19 class AliGammaConversionHistograms;
20 class AliESDv0;
21 class AliKFParticle;
22 class AliESDInputHandler;
23 class AliESDEvent;
24 class AliAODEvent;
25 class TList;
26 class AliStack;
27 class AliESDtrackCuts;
28
29
30 class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
31 {
32  public:
33   AliAnalysisTaskGammaConversion();
34   AliAnalysisTaskGammaConversion(const char* name);
35   virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor
36  
37   // Implementation of interface methods
38   virtual void UserCreateOutputObjects();
39   virtual void Init();
40   virtual void LocalInit() {Init();}
41   virtual void Exec(Option_t *option);
42   virtual void Terminate(Option_t *option);
43   virtual void ConnectInputData(Option_t *);
44         
45   void ProcessMCData();
46   void ProcessV0sNoCut();
47   void ProcessV0s();
48   void ProcessGammasForNeutralMesonAnalysis();
49
50   // AOD
51   TString GetAODBranchName() const {return  fAODBranchName;}
52   void SetAODBranchName(TString name)  {fAODBranchName = name ;}        
53   void FillAODWithConversionGammas();
54   // end AOD
55
56
57  // for GammaJetAnalysis
58   void ProcessGammasForGammaJetAnalysis();
59   void CreateListOfChargedParticles();
60   Double_t GetMinimumDistanceToCharge(Int_t);
61   void CalculateJetCone(Int_t,Int_t);
62   Int_t GetIndexHighestPtGamma();
63   void SetESDtrackCuts();
64   // end of Gamma Jet
65
66   void SetMinPtForGammaJet(Double_t minPtForGammaJet){fMinPtForGammaJet=minPtForGammaJet;}
67   void SetMinIsoConeSize(Double_t minIsoConeSize){fMinIsoConeSize=minIsoConeSize;}
68   void SetMinPtIsoCone(Double_t minPtIsoCone){fMinPtIsoCone=minPtIsoCone;}
69   void SetMinPtGamChargedCorr(Double_t minPtGamChargedCorr){fMinPtGamChargedCorr=minPtGamChargedCorr;}
70   void SetMinPtJetCone(Double_t minPtJetCone){fMinPtJetCone=minPtJetCone;}
71
72   void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}
73   void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}
74   void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;}
75   void SetDoJet(Bool_t flag){fDoJet=flag;}
76   void SetDoChic(Bool_t flag){fDoChic=flag;}
77
78   void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}
79   void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}
80   void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}
81   void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;}
82   void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;}
83   void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}
84   void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}
85   void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}
86   void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader;}
87   void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}
88   void CalculateBackground();
89   void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}
90   void FillNtuple();
91   Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;
92   void CheckV0Efficiency();
93
94
95   //////////////////Chi_c Analysis////////////////////////////
96   void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight); 
97   double GetSigmaToVertex(AliESDtrack* t);
98   void ElectronBackground(TString hBg, vector <TLorentzVector> e);
99   void FillAngle(TString histoName,vector <TLorentzVector> tlVeNeg, vector <TLorentzVector> tlVePos);
100   void FillElectronInvMass(TString histoName, vector <TLorentzVector> negativeElectron, 
101         vector <TLorentzVector> positiveElectron);
102   void FillGammaElectronInvMass(TString histoMass,TString histoDiff,vector <AliKFParticle> fKFGammas,
103         vector <TLorentzVector> tlVeNeg,vector<TLorentzVector> tlVePos);
104   void CleanWithAngleCuts(vector <AliESDtrack*> negativeElectrons,
105         vector <AliESDtrack*> positiveElectrons, vector <AliKFParticle> gammas);
106   vector <TLorentzVector> GetTLorentzVector(vector <AliESDtrack*> esdTrack);    
107   void ProcessGammaElectronsForChicAnalysis();
108   ///////////////////////////////////////////////////////////////
109
110
111
112  private:
113   AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
114   AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented
115
116   AliV0Reader* fV0Reader; // The V0 reader object 
117
118   AliStack * fStack; // pointer to the MC particle stack
119   AliESDEvent* fESDEvent; //pointer to the ESDEvent
120   TList * fOutputContainer ; // Histogram container
121
122   AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class
123
124   Bool_t fDoMCTruth; // Flag to switch on/off MC truth 
125   Bool_t fDoNeutralMeson;
126   Bool_t fDoJet;
127   Bool_t fDoChic;
128     
129   vector<TParticle*> fMCAllGammas; // vector containing all MC gammas
130   vector<TParticle*> fMCPi0s; //vector containing all MC Pi0s
131   vector<TParticle*> fMCEtas; //vector containing all MC Etas
132   vector<TParticle*> fMCGammaChic; //vector containing all MC Chi_c's
133
134   vector<AliKFParticle> fKFReconstructedGammas; // vector containing all reconstructed gammas
135   vector<Bool_t> fIsTrueReconstructedGammas;    // vector containing information if this was a true gamma or not (follows the index of fKFReconstructedGammas)
136   vector<Int_t> fElectronv1; // vector containing index of electron 1
137   vector<Int_t> fElectronv2; // vector containing index of electron 2
138
139   ///////Chi_c Analysis///////////////////////////
140   vector<AliESDtrack*> fCurrentEventPosElectron;       // comment here
141   vector<AliESDtrack*> fPreviousEventPosElectron;      //comment here
142   vector<AliESDtrack*> fCurrentEventNegElectron;       //comment here
143   vector<AliESDtrack*> fPreviousEventNegElectron;      //comment here
144   vector<AliKFParticle> fKFReconstructedGammasCut;     //comment here
145   vector<TLorentzVector> fPreviousEventTLVNegElectron; //comment here
146   vector<TLorentzVector> fPreviousEventTLVPosElectron; //comment here
147   //////////////////////////////////////////////////    
148
149   //mass defines
150   Double_t fElectronMass; //electron mass
151   Double_t fGammaMass;    //gamma mass
152   Double_t fPi0Mass;      //pi0mass
153   Double_t fEtaMass;      //eta mass
154
155   // width defines
156   Double_t fGammaWidth; //gamma width cut
157   Double_t fPi0Width;   // pi0 width cut
158   Double_t fEtaWidth;   // eta width cut
159
160   Double_t fMinOpeningAngleGhostCut; // minimum angle cut
161
162   AliESDtrackCuts* fEsdTrackCuts;           // Object containing the parameters of the esd track cuts
163
164   Bool_t fCalculateBackground; //flag to set backgrount calculation on/off
165   Bool_t fWriteNtuple;         // flag to set if writing to ntuple on/off
166   TNtuple *fGammaNtuple;       // Ntuple for gamma values
167   TNtuple *fNeutralMesonNtuple;// NTuple for mesons
168
169   Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries
170
171   vector<AliESDtrack*> fChargedParticles;
172   vector<Int_t> fChargedParticlesId;
173
174   Double_t fGammaPtHighest;
175   Double_t fMinPtForGammaJet;
176   Double_t fMinIsoConeSize;
177   Double_t fMinPtIsoCone;
178   Double_t fMinPtGamChargedCorr;
179   Double_t fMinPtJetCone;
180   Int_t    fLeadingChargedIndex;
181
182   TClonesArray* fAODBranch ;        //! selected particles branch
183   TString fAODBranchName; // New AOD branch name
184   
185   vector<AliGammaConversionAODObject> fAODObjects;
186
187   ClassDef(AliAnalysisTaskGammaConversion, 4); // Analysis task for gamma conversions
188 };
189  
190 #endif //ALIANALYSISTASKGAMMA_H