ROOT logo
#ifndef ALIANALYSISTASKETATOPIPLPIMIGAMMA_H
#define ALIANALYSISTASKETATOPIPLPIMIGAMMA_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */


#include "AliAnalysisTaskSE.h"
#include "AliV0ReaderV1.h"
#include "AliKFConversionPhoton.h"
#include "AliPrimaryPionSelector.h"
#include "AliConversionMesonCuts.h"
#include "AliConvEventCuts.h"
#include "AliGammaConversionAODBGHandler.h"
#include "TProfile2D.h"

class AliESDInputHandler;
class AliMCEventHandler;
class AliESDEvent;
class AliESDtrack;
class AliESDtrackCuts;
class AliESDpidCuts;
class AliV0Reader;
class AliTriggerAnalysis;

class AliAnalysisTaskEtaToPiPlPiMiGamma: public AliAnalysisTaskSE
{
	public:

		AliAnalysisTaskEtaToPiPlPiMiGamma();
		AliAnalysisTaskEtaToPiPlPiMiGamma( const char* name );
		virtual ~AliAnalysisTaskEtaToPiPlPiMiGamma();

		virtual void UserExec(Option_t *);
		virtual void UserCreateOutputObjects();
		virtual Bool_t Notify();
		virtual void Terminate(const Option_t *);

			
		void SetMoveParticleAccordingToVertex(Bool_t flag){fMoveParticleAccordingToVertex = flag;}
			
		void SetIsHeavyIon(Int_t flag){
			if (flag == 1 || flag ==2 ){
				fIsHeavyIon = 1;    
			} else {
				fIsHeavyIon = 0;    
			}
		}
		
		void SetIsMC(Bool_t isMC){fIsMC=isMC;}
		void SetConversionCutList(Int_t nCuts, TList *CutArray){
			fnCuts= nCuts;
			fGammaCutArray = CutArray;
		}
		void SetEventCutList(Int_t nCuts, TList *CutArray){
			fnCuts= nCuts;
			fEventCutArray = CutArray;
		}

		void SetPionCutList(TList *CutArray){
			fPionCutArray = CutArray;
		}
		void SetMesonCutList(TList *CutArray){
			fMesonCutArray = CutArray;
		}
		void SetDoMesonQA(Bool_t flag){ fDoMesonQA = flag; }
	

	private:

		void InitBack();
		void ProcessPhotonCandidates();
		void ProcessTruePhotonCandidates(AliAODConversionPhoton*);
		void ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate, AliAODConversionPhoton *TrueVirtualGammaCandidate);
		void MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex);
    	void ProcessPionCandidates();
		void ProcessMCParticles();
		void CalculateMesonCandidates();
        void CalculateBackground();
		void UpdateEventByEventData();
        
		Bool_t IsPiPlPiMiGammaDecay(TParticle *fMCMother) const;
		Bool_t IsEtaPiPlPiMiGammaDaughter( Int_t label ) const;
		
		

		AliV0ReaderV1 					*fV0Reader;									//
		AliPrimaryPionSelector			*fPionSelector;								//
		AliGammaConversionAODBGHandler 	**fBGHandler;								//
		AliESDEvent 					*fESDEvent;									//
		AliMCEvent 						*fMCEvent;									//
		AliStack 						*fMCStack;									//
		TList 							**fCutFolder;								//
		TList 							**fESDList;									//
		TList 							**fBackList;								//
		TList 							**fMotherList;								//
		TList 							**fTrueList;								//
		TList 							**fMCList;									//
		TList 							*fOutputContainer;							//
		TClonesArray 					*fReaderGammas;								//
		vector<Int_t> 					fSelectorNegPionIndex;						//
		vector<Int_t> 					fSelectorPosPionIndex;						//
		TList 							*fGoodGammas;								//
		TList 							*fGoodVirtualParticles;						//
		TList 							*fEventCutArray;							//
		TList 							*fGammaCutArray;							//
		TList 							*fPionCutArray;								//
		TList 							*fMesonCutArray;							//
		AliConvEventCuts 				*fEventCuts;								//
		AliConversionPhotonCuts 		*fConversionCuts;							//
		
		// reconstructed particles
		TH1F 							**fHistoConvGammaPt;						//
		TH1F 							**fHistoConvGammaEta;						//
		TH1F 							**fHistoNegPionPt;							//
		TH1F 							**fHistoPosPionPt;							//
		TH1F 							**fHistoNegPionPhi;							//
		TH1F 							**fHistoPosPionPhi;							//
		TH1F 							**fHistoNegPionEta;							//
		TH1F 							**fHistoPosPionEta;							//
		TH2F 							**fHistoNegPionClsTPC;						//
		TH2F 							**fHistoPosPionClsTPC;						//
		TH2F 							**fHistoPionDCAxy;							//
		TH2F 							**fHistoPionDCAz;							//
		TH2F 							**fHistoPionTPCdEdxNSigma;					//
		TH2F 							**fHistoPionTPCdEdx;						//
		TH2F 							**fHistoPionPionInvMassPt;					//
		TH2F	 						**fHistoMotherInvMassPt;					//
		THnSparseF 						**fTHnSparseMotherInvMassPtZM;				//
		TH2F 							**fHistoMotherBackInvMassPt;				//
		THnSparseF				 		**fTHnSparseMotherBackInvMassPtZM;			//
		
		// pure MC properties
		TH1F 							**fHistoMCAllGammaPt;						//
		TH1F 							**fHistoMCConvGammaPt;						//
		TH1F 							**fHistoMCAllPosPionsPt;					//
		TH1F 							**fHistoMCAllNegPionsPt;					//
		TH1F 							**fHistoMCGammaFromEtaPt;					//
		TH1F 							**fHistoMCPosPionsFromEtaPt;				//
		TH1F 							**fHistoMCNegPionsFromEtaPt;				//
		TH1F 							**fHistoMCEtaPiPlPiMiGammaPt;				//
		TH1F 							**fHistoMCEtaGGPt;							//
		TH1F 							**fHistoMCEtaDalitzPt;						//
		TH1F 							**fHistoMCEtaPiPlPiMiGammaInAccPt;			//

		// reconstructed particles MC validated
		TH2F 							**fHistoTrueMotherPiPlPiMiGammaInvMassPt;	//
		TH2F 							**fHistoTrueMotherGammaGammaInvMassPt;		//
		TH2F 							**fHistoTrueMotherDalitzInvMassPt;			//
		TH1F 							**fHistoTrueConvGammaPt;					//
		TH1F 							**fHistoTrueConvGammaFromEtaPt;				//
		TH1F				 			**fHistoTruePosPionPt;						//
		TH1F 							**fHistoTruePosPionFromEtaPt;				//
		TH1F 							**fHistoTrueNegPionPt;						//
		TH1F 							**fHistoTrueNegPionFromEtaPt;				//
		TH2F 							**fHistoTruePionPionInvMassPt;				//
		TH2F 							**fHistoTruePionPionFromEtaInvMassPt;		//
		// Event properties
		TH1I 							**fHistoNEvents;							//
		TH1I 							**fHistoNGoodESDTracks;						//
		TProfile 						**fProfileEtaShift;							//
			
		TRandom3 						fRandom;
		Int_t 							fnCuts;
		Int_t 							fiCut;
		Int_t 							fNumberOfESDTracks;
		Bool_t 							fMoveParticleAccordingToVertex;
		Bool_t 							fIsHeavyIon;
		Bool_t 							fDoMesonAnalysis;
		Bool_t 							fDoMesonQA;
		Bool_t 							fIsFromMBHeader;
		Bool_t 							fIsMC;
		Bool_t 							fIsGammaEtaCand;
	private:
		AliAnalysisTaskEtaToPiPlPiMiGamma( const AliAnalysisTaskEtaToPiPlPiMiGamma& ); // Not implemented
		AliAnalysisTaskEtaToPiPlPiMiGamma& operator=( const AliAnalysisTaskEtaToPiPlPiMiGamma& ); // Not implemented

		ClassDef( AliAnalysisTaskEtaToPiPlPiMiGamma, 2 );
};

#endif // ALIANALYSISTASKETATOPIPLPIMIGAMMA_H

 AliAnalysisTaskEtaToPiPlPiMiGamma.h:1
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:2
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:3
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:4
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:5
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:6
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:7
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:8
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:9
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:10
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:11
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:12
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:13
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:14
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:15
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:16
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:17
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:18
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:19
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:20
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:21
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:22
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:23
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:24
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:25
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:26
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:27
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:28
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:29
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:30
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:31
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:32
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:33
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:34
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:35
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:36
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:37
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:38
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:39
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:40
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:41
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:42
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:43
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:44
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:45
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:46
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:47
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:48
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:49
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:50
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:51
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:52
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:53
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:54
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:55
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:56
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:57
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:58
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:59
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:60
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:61
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:62
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:63
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:64
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:65
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:66
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:67
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:68
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:69
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:70
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:71
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:72
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:73
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:74
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:75
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:76
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:77
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:78
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:79
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:80
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:81
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:82
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:83
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:84
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:85
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:86
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:87
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:88
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:89
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:90
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:91
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:92
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:93
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:94
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:95
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:96
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:97
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:98
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:99
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:100
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:101
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:102
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:103
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:104
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:105
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:106
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:107
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:108
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:109
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:110
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:111
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:112
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:113
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:114
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:115
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:116
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:117
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:118
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:119
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:120
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:121
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:122
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:123
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:124
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:125
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:126
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:127
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:128
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:129
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:130
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:131
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:132
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:133
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:134
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:135
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:136
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:137
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:138
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:139
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:140
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:141
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:142
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:143
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:144
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:145
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:146
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:147
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:148
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:149
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:150
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:151
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:152
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:153
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:154
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:155
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:156
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:157
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:158
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:159
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:160
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:161
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:162
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:163
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:164
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:165
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:166
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:167
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:168
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:169
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:170
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:171
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:172
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:173
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:174
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:175
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:176
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:177
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:178
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:179
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:180
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:181
 AliAnalysisTaskEtaToPiPlPiMiGamma.h:182