]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/GammaConv/AliAnalysisTaskGammaConversion.h
Added correction framework (Kathrin)
[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 AliMCEvent;
26 class TList;
27 class AliStack;
28 class AliESDtrackCuts;
29 class AliCFManager; // for CF
30 class AliCFContainer; // for CF
31
32 class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
33 {
34         
35   // for CF
36   enum{
37     kStepGenerated = 0,
38     kStepReconstructable = 1, 
39     kStepLikeSign = 2,
40     kStepTPCRefit = 3,
41     kStepKinks = 4,
42     kStepGetOnFly = 5,
43     kStepNContributors = 6,
44     kStepTPCPID = 7,
45     kStepR = 8,
46     kStepLine = 9,
47     kStepZ = 10,
48     kStepNDF = 11,
49     kStepChi2 = 12,
50     kStepEta = 13,
51     kStepPt = 14
52   };
53
54         
55         
56         
57  public:
58   AliAnalysisTaskGammaConversion();
59   AliAnalysisTaskGammaConversion(const char* name);
60   virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor
61                 
62   // Implementation of interface methods
63   virtual void UserCreateOutputObjects();
64   virtual void Init();
65   virtual void LocalInit() {Init();}
66   virtual void Exec(Option_t *option);
67   virtual void Terminate(Option_t *option);
68   virtual void ConnectInputData(Option_t *);
69                 
70   void ProcessMCData();
71   void ProcessV0sNoCut();
72   void ProcessV0s();
73   void ProcessGammasForNeutralMesonAnalysis();
74                 
75   // for CF
76   void SetCFManager(AliCFManager *io) {fCFManager = io;};
77   AliCFManager *GetCFManager() const {return fCFManager;}
78                 
79                 
80   // AOD
81   TString GetAODBranchName() const {return  fAODBranchName;}
82   void SetAODBranchName(TString name)  {fAODBranchName = name ;}        
83   void FillAODWithConversionGammas();
84   // end AOD
85                 
86                 
87   // for GammaJetAnalysis
88   void ProcessGammasForGammaJetAnalysis();
89   void CreateListOfChargedParticles();
90   Double_t GetMinimumDistanceToCharge(Int_t indexHighestPtGamma);
91   void CalculateJetCone(Int_t gammaIndex);
92   Int_t GetIndexHighestPtGamma();
93   void SetESDtrackCuts();
94   // end of Gamma Jet
95                 
96   void SetMinPtForGammaJet(Double_t minPtForGammaJet){fMinPtForGammaJet=minPtForGammaJet;}
97   void SetMinIsoConeSize(Double_t minIsoConeSize){fMinIsoConeSize=minIsoConeSize;}
98   void SetMinPtIsoCone(Double_t minPtIsoCone){fMinPtIsoCone=minPtIsoCone;}
99   void SetMinPtGamChargedCorr(Double_t minPtGamChargedCorr){fMinPtGamChargedCorr=minPtGamChargedCorr;}
100   void SetMinPtJetCone(Double_t minPtJetCone){fMinPtJetCone=minPtJetCone;}
101                 
102   void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}
103   void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}
104   void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;}
105   void SetDoJet(Bool_t flag){fDoJet=flag;}
106   void SetDoChic(Bool_t flag){fDoChic=flag;}
107                 
108   void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}
109   void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}
110   void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}
111   void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;}
112   void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;}
113   void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}
114   void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}
115   void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}
116   void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader;}
117   void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}
118   void CalculateBackground();
119   void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}
120   void FillNtuple();
121   Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;
122   void CheckV0Efficiency();
123                 
124                 
125   //////////////////Chi_c Analysis////////////////////////////
126   void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight); 
127   double GetSigmaToVertex(AliESDtrack* t);
128   void ElectronBackground(TString hBg, TClonesArray e);
129   void FillAngle(TString histoName,TClonesArray const tlVeNeg, TClonesArray const tlVePos);
130   void FillElectronInvMass(TString histoName, TClonesArray const negativeElectron, TClonesArray const positiveElectron);
131   void FillGammaElectronInvMass(TString histoMass,TString histoDiff, TClonesArray const fKFGammas, TClonesArray const tlVeNeg,TClonesArray const tlVePos);
132   void CleanWithAngleCuts(TClonesArray const negativeElectrons, TClonesArray const positiveElectrons, TClonesArray const gammas);
133   TClonesArray GetTLorentzVector(TClonesArray* esdTrack);       
134   void ProcessGammaElectronsForChicAnalysis();
135   ///////////////////////////////////////////////////////////////
136                 
137                 
138  private:
139   AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
140   AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented
141                 
142   AliV0Reader* fV0Reader; // The V0 reader object 
143                 
144   AliStack * fStack; // pointer to the MC particle stack
145   AliMCEventHandler *fMCTruth; // for CF   pointer to MCTruth
146   AliMCEvent *fMCEvent;  // for CF    pointer to the MC Event
147   AliESDEvent* fESDEvent; //pointer to the ESDEvent
148   TList * fOutputContainer; // Histogram container
149   AliCFManager *fCFManager;  // for CF
150   //  AliCFContainer *container;   // for CF
151
152                 
153                 
154   AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class
155                 
156   Bool_t fDoMCTruth; // Flag to switch on/off MC truth 
157   Bool_t fDoNeutralMeson; // flag
158   Bool_t fDoJet; // flag
159   Bool_t fDoChic; // flag
160                 
161   TClonesArray * fKFReconstructedGammasTClone; //! transient
162   TClonesArray * fCurrentEventPosElectronTClone; //! transient
163   TClonesArray * fCurrentEventNegElectronTClone; //! transient
164   TClonesArray * fKFReconstructedGammasCutTClone; //! transient
165   TClonesArray * fPreviousEventTLVNegElectronTClone; //! transient
166   TClonesArray * fPreviousEventTLVPosElectronTClone; //! transient
167                 
168   //  vector<AliKFParticle> fKFReconstructedGammas; // vector containing all reconstructed gammas
169   vector<Int_t> fElectronv1; // vector containing index of electron 1
170   vector<Int_t> fElectronv2; // vector containing index of electron 2
171                 
172   ///////Chi_c Analysis///////////////////////////
173   //  vector<AliESDtrack*> fCurrentEventPosElectron;       // comment here
174   //  vector<AliESDtrack*> fCurrentEventNegElectron;       // comment here
175   //  vector<AliKFParticle> fKFReconstructedGammasCut;     // comment here
176   //  vector<TLorentzVector> fPreviousEventTLVNegElectron; // comment here
177   //  vector<TLorentzVector> fPreviousEventTLVPosElectron; // comment here
178   //////////////////////////////////////////////////    
179                 
180   //mass defines
181   Double_t fElectronMass; //electron mass
182   Double_t fGammaMass;    //gamma mass
183   Double_t fPi0Mass;      //pi0mass
184   Double_t fEtaMass;      //eta mass
185                 
186   // width defines
187   Double_t fGammaWidth; //gamma width cut
188   Double_t fPi0Width;   // pi0 width cut
189   Double_t fEtaWidth;   // eta width cut
190                 
191   Double_t fMinOpeningAngleGhostCut; // minimum angle cut
192                 
193   AliESDtrackCuts* fEsdTrackCuts;           // Object containing the parameters of the esd track cuts
194                 
195   Bool_t fCalculateBackground; //flag to set backgrount calculation on/off
196   Bool_t fWriteNtuple;         // flag to set if writing to ntuple on/off
197   TNtuple *fGammaNtuple;       // Ntuple for gamma values
198   TNtuple *fNeutralMesonNtuple;// NTuple for mesons
199                 
200   Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries
201                 
202   TClonesArray* fChargedParticles;  //! transient
203   vector<Int_t> fChargedParticlesId;  //! transient
204                 
205   Double_t fGammaPtHighest;  //! transient
206   Double_t fMinPtForGammaJet;  //! transient
207   Double_t fMinIsoConeSize; //! transient
208   Double_t fMinPtIsoCone; //! transient
209   Double_t fMinPtGamChargedCorr; //! transient
210   Double_t fMinPtJetCone; //! transient
211   Int_t    fLeadingChargedIndex; //! transient
212                 
213   TClonesArray* fAODBranch ;        //! selected particles branch
214   TString fAODBranchName; // New AOD branch name
215                 
216   //  TClonesArray *fAODObjects;
217                 
218   ClassDef(AliAnalysisTaskGammaConversion, 4); // Analysis task for gamma conversions
219 };
220
221 #endif //ALIANALYSISTASKGAMMA_H