ROOT logo
/*************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/
//
// Example analysis for diffractive studies
//
// Author:
//  Felix Reidt <Felix.Reidt@cern.ch>

#ifndef ALIANALYSISTASKCDEX_H
#define ALIANALYSISTASKCDEX_H

#ifndef ALIANALYSISTASK_H
#include "AliAnalysisTaskSE.h"
#endif

class AliESDEvent;
class AliVTrack;
class AliPIDResponse;
class AliPhysicsSelection;

class TH1I;
class TH1F;
class TH2I;
class TH2F;
class TH2D;
class TList;
class THnSparse;
class TObjString;

class AliCDMesonTracks;

class AliAnalysisTaskCDex : public AliAnalysisTaskSE
{
public:

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

	virtual void UserCreateOutputObjects();
	virtual void UserExec(Option_t *);

private:
	enum { //
		kV0 = 0,
		kFMD,
		kSPD,
		kTPC,
		kV0FMD,
		kV0FMDSPD,
		kV0FMDSPDTPC,
		kMax
	};

	AliAnalysisTaskCDex(const AliAnalysisTaskCDex  &p);
	AliAnalysisTaskCDex& operator=(const AliAnalysisTaskCDex  &p);

	void FillEtaPhiMaps() const; // controls which event contributes to which map


	// functions called by the UserExec(...), not to be called elsewhere!
	//-------------------------------------------------------------------
	Bool_t CheckInput();
	void PostOutputs(); // cares about posting the output before exiting UserExec,
	// WARNING: PostOutputs should only be used directly in the UserExec!!
	Bool_t DetermineGap(); // determines the gap of all available detectors
	void AnalyzeVtx(); // calcs the distance of the pri. vertex from tracks and SPD
	void DoMultiplicityStudy(); // multiplicity distributions for different gaps

	// analysis task status
	//---------------------
	Bool_t fDoAOD; // true for running on AODs
	Double_t fMaxVtxDst; // maximum distance of the track and SPD vertex

	// event information
	//------------------
	AliESDEvent *fESDEvent; // esd event object
	AliAODEvent *fAODEvent; // esd event object
	AliPIDResponse *fPIDResponse; // pid object (for ESDs and AODs)
	AliCDMesonTracks *fTracks; // object taking care about the track cuts
	Double_t fVtxDst; // distance of the primary vertex from tracks and from SPD
	Double_t fVtxZ; // z-position of the primary vertex from tracks
	Int_t fResidualTracks; // tracks rejected by cuts within the event
	Int_t fResidualTracklets; // SPD tracklets not assigned to tracks
	Int_t fMCprocessType; // MC process type, 0 for data
	Int_t fMCprocess; // detailed MC sub process information

	Int_t fRun; // number of the run which is about to be processed
	Int_t fCurrentGapCondition; // gap condition of the current event
	Int_t fGapInformation[kMax]; // gap condition for different detectors
	                             // individually and their combinations

	// output objects
	//---------------

	TList *fHist; // output list (contains all histograms)

	// Multiplicity distributions for the different gap conditions
	TH2D *fv0ntrk; //v0bit vs. nch
	TH2D *fv0fmdntrk; //v0fmdbit vs. nch
	TH2D *fv0fmdspdntrk; //v0fmdspdbit vs. nch
	TH2D *fv0fmdspdtpcntrk; //v0fmdspdtpcbit vs. nch

	// Statistics flow diagrams
	TH1F *fhStatsFlow; // stepwise statistics flow

	ClassDef(AliAnalysisTaskCDex, 1);
};


#endif
 AliAnalysisTaskCDex.h:1
 AliAnalysisTaskCDex.h:2
 AliAnalysisTaskCDex.h:3
 AliAnalysisTaskCDex.h:4
 AliAnalysisTaskCDex.h:5
 AliAnalysisTaskCDex.h:6
 AliAnalysisTaskCDex.h:7
 AliAnalysisTaskCDex.h:8
 AliAnalysisTaskCDex.h:9
 AliAnalysisTaskCDex.h:10
 AliAnalysisTaskCDex.h:11
 AliAnalysisTaskCDex.h:12
 AliAnalysisTaskCDex.h:13
 AliAnalysisTaskCDex.h:14
 AliAnalysisTaskCDex.h:15
 AliAnalysisTaskCDex.h:16
 AliAnalysisTaskCDex.h:17
 AliAnalysisTaskCDex.h:18
 AliAnalysisTaskCDex.h:19
 AliAnalysisTaskCDex.h:20
 AliAnalysisTaskCDex.h:21
 AliAnalysisTaskCDex.h:22
 AliAnalysisTaskCDex.h:23
 AliAnalysisTaskCDex.h:24
 AliAnalysisTaskCDex.h:25
 AliAnalysisTaskCDex.h:26
 AliAnalysisTaskCDex.h:27
 AliAnalysisTaskCDex.h:28
 AliAnalysisTaskCDex.h:29
 AliAnalysisTaskCDex.h:30
 AliAnalysisTaskCDex.h:31
 AliAnalysisTaskCDex.h:32
 AliAnalysisTaskCDex.h:33
 AliAnalysisTaskCDex.h:34
 AliAnalysisTaskCDex.h:35
 AliAnalysisTaskCDex.h:36
 AliAnalysisTaskCDex.h:37
 AliAnalysisTaskCDex.h:38
 AliAnalysisTaskCDex.h:39
 AliAnalysisTaskCDex.h:40
 AliAnalysisTaskCDex.h:41
 AliAnalysisTaskCDex.h:42
 AliAnalysisTaskCDex.h:43
 AliAnalysisTaskCDex.h:44
 AliAnalysisTaskCDex.h:45
 AliAnalysisTaskCDex.h:46
 AliAnalysisTaskCDex.h:47
 AliAnalysisTaskCDex.h:48
 AliAnalysisTaskCDex.h:49
 AliAnalysisTaskCDex.h:50
 AliAnalysisTaskCDex.h:51
 AliAnalysisTaskCDex.h:52
 AliAnalysisTaskCDex.h:53
 AliAnalysisTaskCDex.h:54
 AliAnalysisTaskCDex.h:55
 AliAnalysisTaskCDex.h:56
 AliAnalysisTaskCDex.h:57
 AliAnalysisTaskCDex.h:58
 AliAnalysisTaskCDex.h:59
 AliAnalysisTaskCDex.h:60
 AliAnalysisTaskCDex.h:61
 AliAnalysisTaskCDex.h:62
 AliAnalysisTaskCDex.h:63
 AliAnalysisTaskCDex.h:64
 AliAnalysisTaskCDex.h:65
 AliAnalysisTaskCDex.h:66
 AliAnalysisTaskCDex.h:67
 AliAnalysisTaskCDex.h:68
 AliAnalysisTaskCDex.h:69
 AliAnalysisTaskCDex.h:70
 AliAnalysisTaskCDex.h:71
 AliAnalysisTaskCDex.h:72
 AliAnalysisTaskCDex.h:73
 AliAnalysisTaskCDex.h:74
 AliAnalysisTaskCDex.h:75
 AliAnalysisTaskCDex.h:76
 AliAnalysisTaskCDex.h:77
 AliAnalysisTaskCDex.h:78
 AliAnalysisTaskCDex.h:79
 AliAnalysisTaskCDex.h:80
 AliAnalysisTaskCDex.h:81
 AliAnalysisTaskCDex.h:82
 AliAnalysisTaskCDex.h:83
 AliAnalysisTaskCDex.h:84
 AliAnalysisTaskCDex.h:85
 AliAnalysisTaskCDex.h:86
 AliAnalysisTaskCDex.h:87
 AliAnalysisTaskCDex.h:88
 AliAnalysisTaskCDex.h:89
 AliAnalysisTaskCDex.h:90
 AliAnalysisTaskCDex.h:91
 AliAnalysisTaskCDex.h:92
 AliAnalysisTaskCDex.h:93
 AliAnalysisTaskCDex.h:94
 AliAnalysisTaskCDex.h:95
 AliAnalysisTaskCDex.h:96
 AliAnalysisTaskCDex.h:97
 AliAnalysisTaskCDex.h:98
 AliAnalysisTaskCDex.h:99
 AliAnalysisTaskCDex.h:100
 AliAnalysisTaskCDex.h:101
 AliAnalysisTaskCDex.h:102
 AliAnalysisTaskCDex.h:103
 AliAnalysisTaskCDex.h:104
 AliAnalysisTaskCDex.h:105
 AliAnalysisTaskCDex.h:106
 AliAnalysisTaskCDex.h:107
 AliAnalysisTaskCDex.h:108
 AliAnalysisTaskCDex.h:109
 AliAnalysisTaskCDex.h:110
 AliAnalysisTaskCDex.h:111
 AliAnalysisTaskCDex.h:112
 AliAnalysisTaskCDex.h:113
 AliAnalysisTaskCDex.h:114
 AliAnalysisTaskCDex.h:115
 AliAnalysisTaskCDex.h:116
 AliAnalysisTaskCDex.h:117
 AliAnalysisTaskCDex.h:118
 AliAnalysisTaskCDex.h:119
 AliAnalysisTaskCDex.h:120
 AliAnalysisTaskCDex.h:121
 AliAnalysisTaskCDex.h:122