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