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