68b828eb93e467217fbbfd47ff7c46559ed246ec
[u/mrichter/AliRoot.git] / PWG4 / GammaConv / AliAnalysisTaskGammaConversion.h
1 #ifndef ALIANALYSISTASKGAMMACONVERSION_H\r
2 #define ALIANALYSISTASKGAMMACONVERSION_H\r
3  \r
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
5  * See cxx source for full Copyright notice                               */\r
6 \r
7 ////////////////////////////////////////////////\r
8 //--------------------------------------------- \r
9 // Class used to do analysis on conversion pairs\r
10 //---------------------------------------------\r
11 ////////////////////////////////////////////////\r
12  \r
13 #include "AliAnalysisTaskSE.h"\r
14 #include <vector>\r
15 #include "AliV0Reader.h"\r
16 \r
17 class TNtuple;\r
18 class AliGammaConversionHistograms;\r
19 class AliESDv0;\r
20 class AliKFParticle;\r
21 class AliESDInputHandler;\r
22 class AliESDEvent;\r
23 class AliAODEvent;\r
24 class TList;\r
25 class AliStack;\r
26 \r
27 class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE\r
28 {\r
29  public:\r
30   AliAnalysisTaskGammaConversion();\r
31   AliAnalysisTaskGammaConversion(const char* name);\r
32   virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor\r
33  \r
34   // Implementation of interface methods\r
35   virtual void UserCreateOutputObjects();\r
36   virtual void Init();\r
37   virtual void LocalInit() {Init();}\r
38   virtual void Exec(Option_t *option);\r
39   virtual void Terminate(Option_t *option);\r
40   virtual void ConnectInputData(Option_t *);\r
41         \r
42   void ProcessMCData();\r
43   void ProcessV0sNoCut();\r
44   void ProcessV0s();\r
45   void ProcessGammasForNeutralMesonAnalysis();\r
46   void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;}\r
47   void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;}\r
48   void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;}\r
49   void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;}\r
50   void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;}\r
51   void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;}\r
52   void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;}\r
53   void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;}\r
54   void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;}\r
55   void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;}\r
56   void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader;}\r
57   void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;}\r
58   void CalculateBackground();\r
59   void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;}\r
60   void FillNtuple();\r
61   Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const;\r
62   void CheckV0Efficiency();\r
63 \r
64 \r
65   //////////////////Chi_c Analysis////////////////////////////\r
66   void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight); \r
67   double GetSigmaToVertex(AliESDtrack* t);\r
68   void ElectronBackground(TString hBg, vector <TLorentzVector> e);\r
69   void FillAngle(TString histoName,vector <TLorentzVector> tlVeNeg, vector <TLorentzVector> tlVePos);\r
70   void FillElectronInvMass(TString histoName, vector <TLorentzVector> negativeElectron, \r
71         vector <TLorentzVector> positiveElectron);\r
72   void FillGammaElectronInvMass(TString histoMass,TString histoDiff,vector <AliKFParticle> fKFGammas,\r
73         vector <TLorentzVector> tlVeNeg,vector<TLorentzVector> tlVePos);\r
74   void CleanWithAngleCuts(vector <AliESDtrack*> negativeElectrons,\r
75         vector <AliESDtrack*> positiveElectrons, vector <AliKFParticle> gammas);\r
76   vector <TLorentzVector> GetTLorentzVector(vector <AliESDtrack*> esdTrack);    \r
77   void ProcessGammaElectronsForChicAnalysis();\r
78   ///////////////////////////////////////////////////////////////\r
79 \r
80 \r
81 \r
82  private:\r
83   AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented\r
84   AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented\r
85 \r
86   AliV0Reader* fV0Reader; // The V0 reader object \r
87 \r
88   AliStack * fStack; // pointer to the MC particle stack\r
89   AliESDEvent* fESDEvent; //pointer to the ESDEvent\r
90   TList * fOutputContainer ; // Histogram container\r
91 \r
92   AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class\r
93 \r
94   Bool_t fDoMCTruth; // Flag to switch on/off MC truth \r
95     \r
96   vector<TParticle*> fMCAllGammas; // vector containing all MC gammas\r
97   vector<TParticle*> fMCPi0s; //vector containing all MC Pi0s\r
98   vector<TParticle*> fMCEtas; //vector containing all MC Etas\r
99   vector<TParticle*> fMCGammaChic; //vector containing all MC Chi_c's\r
100 \r
101   vector<AliKFParticle> fKFReconstructedGammas; // vector containing all reconstructed gammas\r
102   vector<Bool_t> fIsTrueReconstructedGammas;    // vector containing information if this was a true gamma or not (follows the index of fKFReconstructedGammas)\r
103   vector<Int_t> fElectronv1; // vector containing index of electron 1\r
104   vector<Int_t> fElectronv2; // vector containing index of electron 2\r
105 \r
106   ///////Chi_c Analysis///////////////////////////\r
107   vector<AliESDtrack*> fCurrentEventPosElectron;       // comment here\r
108   vector<AliESDtrack*> fPreviousEventPosElectron;      //comment here\r
109   vector<AliESDtrack*> fCurrentEventNegElectron;       //comment here\r
110   vector<AliESDtrack*> fPreviousEventNegElectron;      //comment here\r
111   vector<AliKFParticle> fKFReconstructedGammasCut;     //comment here\r
112   vector<TLorentzVector> fPreviousEventTLVNegElectron; //comment here\r
113   vector<TLorentzVector> fPreviousEventTLVPosElectron; //comment here\r
114   //////////////////////////////////////////////////    \r
115 \r
116   //mass defines\r
117   Double_t fElectronMass; //electron mass\r
118   Double_t fGammaMass;    //gamma mass\r
119   Double_t fPi0Mass;      //pi0mass\r
120   Double_t fEtaMass;      //eta mass\r
121 \r
122   // width defines\r
123   Double_t fGammaWidth; //gamma width cut\r
124   Double_t fPi0Width;   // pi0 width cut\r
125   Double_t fEtaWidth;   // eta width cut\r
126 \r
127   Double_t fMinOpeningAngleGhostCut; // minimum angle cut\r
128 \r
129   Bool_t fCalculateBackground; //flag to set backgrount calculation on/off\r
130   Bool_t fWriteNtuple;         // flag to set if writing to ntuple on/off\r
131   TNtuple *fGammaNtuple;       // Ntuple for gamma values\r
132   TNtuple *fNeutralMesonNtuple;// NTuple for mesons\r
133 \r
134   Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries\r
135 \r
136   ClassDef(AliAnalysisTaskGammaConversion, 3); // Analysis task for gamma conversions\r
137 };\r
138  \r
139 #endif //ALIANALYSISTASKGAMMA_H\r