]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/GammaConv/AliAnalysisTaskGammaConversion.h
Added Pi0 and Omega AOD branches
[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 "AliCFManager.h"  // for CF
17 //#include "AliCFContainer.h"   // for CF
18
19 class AliGammaConversionAODObject;
20 class TNtuple;
21 class AliGammaConversionHistograms;
22 class AliESDv0;
23 class AliV0;
24 class AliKFParticle;
25 class AliKFVertex;
26 class AliESDInputHandler;
27 class AliESDEvent;
28 class AliAODEvent;
29 class AliMCEvent;
30 class TList;
31 class AliStack;
32 class AliESDtrackCuts;
33 class AliCFManager; // for CF
34 class AliCFContainer; // for CF
35
36
37 class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
38 {
39         
40  public:
41   AliAnalysisTaskGammaConversion();
42   AliAnalysisTaskGammaConversion(const char* name);
43   virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor
44                 
45   // Implementation of interface methods
46   virtual void UserCreateOutputObjects();
47   virtual void Init();
48   virtual void LocalInit() {Init();}
49   virtual void UserExec(Option_t *option);
50   virtual void Terminate(Option_t *option);
51   //virtual void ConnectInputData(Option_t * option);
52                 
53   void ProcessMCData();
54   void ProcessV0sNoCut();
55   void ProcessV0s();
56   void ProcessGammasForNeutralMesonAnalysis();
57   void ProcessGammasForOmegaMesonAnalysis();
58   void ProcessConvPHOSGammasForNeutralMesonAnalysis();
59   void RecalculateV0ForGamma();
60   // for CF
61   void SetCFManager(AliCFManager * const io) {fCFManager = io;};
62   AliCFManager *GetCFManager() const {return fCFManager;}
63                 
64                 
65   // AOD
66   TString GetAODBranchName() const {return  fAODBranchName;}
67   void SetAODBranchName(TString name)  {fAODBranchName = name ;}        
68   void SetForceAOD(Bool_t forceAOD ) { fKFForceAOD = forceAOD; }
69   void FillAODWithConversionGammas();
70   // end AOD
71                 
72   static Bool_t IsGoodImpPar(AliESDtrack *const track);
73         
74   // for GammaJetAnalysis
75   void ProcessGammasForGammaJetAnalysis();
76   void CreateListOfChargedParticles();
77   Double_t GetMinimumDistanceToCharge(Int_t indexHighestPtGamma);
78   void CalculateJetCone(Int_t gammaIndex);
79   Int_t GetIndexHighestPtGamma();
80   void SetESDtrackCuts();
81   // end of Gamma Jet
82                 
83   void SetMinPtForGammaJet(Double_t minPtForGammaJet){fMinPtForGammaJet=minPtForGammaJet;}
84   void SetMinIsoConeSize(Double_t minIsoConeSize){fMinIsoConeSize=minIsoConeSize;}
85   void SetMinPtIsoCone(Double_t minPtIsoCone){fMinPtIsoCone=minPtIsoCone;}
86   void SetMinPtGamChargedCorr(Double_t minPtGamChargedCorr){fMinPtGamChargedCorr=minPtGamChargedCorr;}
87   void SetMinPtJetCone(Double_t minPtJetCone){fMinPtJetCone=minPtJetCone;}
88
89   void SetLowPtMapping(Double_t lowPtMapping){fLowPtMapping=lowPtMapping;}
90   void SetHighPtMapping(Double_t highPtMapping){fHighPtMapping=highPtMapping;}
91
92                 
93   void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}
94   void SetTriggerCINT1B(Bool_t flag){fTriggerCINT1B=flag;}
95   void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}
96   void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;}
97   void SetDoOmegaMeson(Bool_t flag){fDoOmegaMeson=flag;}
98   void SetDoNeutralMesonV0MCCheck(Bool_t flag){fDoNeutralMesonV0MCCheck=flag;}
99   void SetDoJet(Bool_t flag){fDoJet=flag;}
100   void SetDoChic(Bool_t flag){fDoChic=flag;}
101   void SetRecalculateV0ForGamma(Bool_t flag){fRecalculateV0ForGamma=flag;}              
102
103   void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}
104   void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}
105   void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}
106   void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;}
107   void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;}
108   void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}
109   void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}
110   void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}
111   void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader; fV0Reader->SetESDtrackCuts(fEsdTrackCuts);}
112   void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}
113   void CalculateBackground();
114   void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}
115   void FillNtuple();
116   Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;
117   void CheckV0Efficiency();
118   void SetDeltaAODFileName(TString fn) { fKFDeltaAODFileName = fn; };
119                 
120   //////////////////Chi_c Analysis////////////////////////////
121   void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight); 
122   double GetSigmaToVertex(AliESDtrack* t);
123   void ElectronBackground(TString hBg, TClonesArray e);
124   void FillAngle(TString histoName,TClonesArray const tlVeNeg, TClonesArray const tlVePos);
125   void FillElectronInvMass(TString histoName, TClonesArray const negativeElectron, TClonesArray const positiveElectron);
126   void FillGammaElectronInvMass(TString histoMass,TString histoDiff, TClonesArray const fKFGammas, TClonesArray const tlVeNeg,TClonesArray const tlVePos);
127   void CleanWithAngleCuts(TClonesArray const negativeElectrons, TClonesArray const positiveElectrons, TClonesArray const gammas);
128   TClonesArray GetTLorentzVector(TClonesArray* esdTrack);       
129   void ProcessGammaElectronsForChicAnalysis();
130   ///////////////////////////////////////////////////////////////
131
132   void SetDoCF(Bool_t flag){fDoCF = flag;}
133                 
134  private:
135   AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
136   AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented
137   
138   /// Add reconstructed pions to aod
139   void AddPionToAOD(AliKFParticle * pionkf, Double_t mass, Int_t daughter1, Int_t daughter2); 
140   void AddOmegaToAOD(AliKFParticle * pionkf, Double_t mass, Int_t daughter1, Int_t daughter2); 
141                 
142   // for CF
143   enum{
144     kStepGenerated = 0,
145     kStepReconstructable = 1, 
146     kStepGetOnFly = 2,
147     kStepLikeSign = 3,
148     kStepTPCRefit = 4,
149     kStepKinks = 5,
150     kStepdEdx_electronselection = 6,
151     kStepdEdx_pionrejection = 7,
152     kStepNContributors = 8,
153     kStepTPCPID = 9,
154     kStepR = 10,
155     kStepLine = 11,
156     kStepZ = 12,
157     kStepMinClsTPC = 13,
158     kStepSinglePt = 14,
159     kStepNDF = 15,
160     kStepChi2 = 16,
161     kStepEta = 17,
162     kStepPt = 18,
163     kStepTrueGamma = 19
164   };
165   
166   AliV0Reader* fV0Reader; // The V0 reader object 
167                 
168   AliStack * fStack; // pointer to the MC particle stack
169   AliMCEventHandler *fMCTruth; // for CF   pointer to MCTruth
170   AliMCEvent *fGCMCEvent;  // for CF    pointer to the MC Event
171   AliESDEvent* fESDEvent; //pointer to the ESDEvent
172   TList * fOutputContainer; // Histogram container
173   AliCFManager *fCFManager;  // for CF
174   //  AliCFContainer *container;   // for CF
175
176                 
177                 
178   AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class
179   Bool_t fTriggerCINT1B; //Flag to select trigger CINT1B
180   Bool_t fDoMCTruth; // Flag to switch on/off MC truth 
181   Bool_t fDoNeutralMeson; // flag
182   Bool_t fDoOmegaMeson; // flag
183   Bool_t fDoJet; // flag
184   Bool_t fDoChic; // flag
185   Bool_t fRecalculateV0ForGamma;//flag
186                 
187   TClonesArray * fKFReconstructedGammasTClone; //! transient
188   TClonesArray * fKFReconstructedPi0sTClone; //! transient
189   TClonesArray * fKFRecalculatedGammasTClone; //! transient
190   TClonesArray * fCurrentEventPosElectronTClone; //! transient
191   TClonesArray * fCurrentEventNegElectronTClone; //! transient
192   TClonesArray * fKFReconstructedGammasCutTClone; //! transient
193   TClonesArray * fPreviousEventTLVNegElectronTClone; //! transient
194   TClonesArray * fPreviousEventTLVPosElectronTClone; //! transient
195                 
196   //  vector<AliKFParticle> fKFReconstructedGammas; // vector containing all reconstructed gammas
197   vector<Int_t> fElectronv1; // vector containing index of electron 1
198   vector<Int_t> fElectronv2; // vector containing index of electron 2
199                 
200   vector<Int_t> fGammav1; // vector containing index of gamma 1
201   vector<Int_t> fGammav2; // vector containing index of gamma 2
202
203   vector<Int_t> fElectronRecalculatedv1; // vector containing index of electron 1
204   vector<Int_t> fElectronRecalculatedv2; // vector containing index of electron 2
205                 
206   //  AliESDpid * fESDpid; // esd pid
207
208
209   ///////Chi_c Analysis///////////////////////////
210   //  vector<AliESDtrack*> fCurrentEventPosElectron;       // comment here
211   //  vector<AliESDtrack*> fCurrentEventNegElectron;       // comment here
212   //  vector<AliKFParticle> fKFReconstructedGammasCut;     // comment here
213   //  vector<TLorentzVector> fPreviousEventTLVNegElectron; // comment here
214   //  vector<TLorentzVector> fPreviousEventTLVPosElectron; // comment here
215   //////////////////////////////////////////////////    
216                 
217   //mass defines
218   Double_t fElectronMass; //electron mass
219   Double_t fGammaMass;    //gamma mass
220   Double_t fPi0Mass;      //pi0mass
221   Double_t fEtaMass;      //eta mass
222                 
223   // width defines
224   Double_t fGammaWidth; //gamma width cut
225   Double_t fPi0Width;   // pi0 width cut
226   Double_t fEtaWidth;   // eta width cut
227                 
228   Double_t fMinOpeningAngleGhostCut; // minimum angle cut
229                 
230   AliESDtrackCuts* fEsdTrackCuts;           // Object containing the parameters of the esd track cuts
231                 
232   Bool_t fCalculateBackground; //flag to set backgrount calculation on/off
233   Bool_t fWriteNtuple;         // flag to set if writing to ntuple on/off
234   TNtuple *fGammaNtuple;       // Ntuple for gamma values
235   TNtuple *fNeutralMesonNtuple;// NTuple for mesons
236                 
237   Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries
238                 
239   TClonesArray* fChargedParticles;  //! transient
240   vector<Int_t> fChargedParticlesId;  //! transient
241                 
242   Double_t fGammaPtHighest;  //! transient
243   Double_t fMinPtForGammaJet;  //! transient
244   Double_t fMinIsoConeSize; //! transient
245   Double_t fMinPtIsoCone; //! transient
246   Double_t fMinPtGamChargedCorr; //! transient
247   Double_t fMinPtJetCone; //! transient
248   Int_t    fLeadingChargedIndex; //! transient
249   Double_t fLowPtMapping; //! transient
250   Double_t fHighPtMapping; //! transient
251   Bool_t fDoCF; //! transient
252                 
253   TClonesArray * fAODGamma; //TClonesArray for gammas to put in AOD
254   TClonesArray * fAODPi0; //TTClonesArray for Pi0s to put in AOD
255   TClonesArray * fAODOmega; //TTClonesArray for omegas to put in AOD
256   TString fAODBranchName; // New AOD branch name
257   Bool_t fKFForceAOD;  //Set the Analysis Manager FillAOD variable to true every event
258   TString fKFDeltaAODFileName; //! File name for delta AOD (if any)
259   Bool_t fDoNeutralMesonV0MCCheck; //flag
260
261   vector<Int_t>fKFReconstructedGammasV0Index; // index of the reconstructed v0s
262
263   ClassDef(AliAnalysisTaskGammaConversion, 9); // Analysis task for gamma conversions
264 };
265
266 #endif //ALIANALYSISTASKGAMMA_H