ROOT logo
#ifndef ALIANALYSISTASKEXTRACTV0AOD_H
#define ALIANALYSISTASKEXTRACTV0AOD_H

/**************************************************************************
 * 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.                  *
 **************************************************************************/

//-----------------------------------------------------------------
//      AliAnalysisTaskExtractV0AOD class
//      ---------------------------------
//
//    Please see cxx file for more details.   
//             
//-----------------------------------------------------------------

// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// --- This version: 23rd March 2012 
//
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

class TList;
class TH1F;
class TH2F;
class TH3F;
class TVector3;
class THnSparse;

class AliESDpid;
class AliESDtrackCuts;
class AliESDEvent;
class AliAODEvent;
class AliPhysicsSelection;
class AliCFContainer;

//#include "TString.h"
//#include "AliESDtrackCuts.h"
#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskExtractV0AOD : public AliAnalysisTaskSE {
 public:
	AliAnalysisTaskExtractV0AOD();
	AliAnalysisTaskExtractV0AOD(const char *name);
	virtual ~AliAnalysisTaskExtractV0AOD();
	
	virtual void	 UserCreateOutputObjects();
	virtual void	 UserExec(Option_t *option);
	virtual void	 Terminate(Option_t *);
  void CheckChargeV0(AliESDv0 *thisv0);

  void SetIsNuclear           (Bool_t lIsNuclear   = kTRUE  ) { fkIsNuclear   = lIsNuclear;   }
  void SetIsLowEnergyPP       (Bool_t lLowEnergyPP = kTRUE  ) { fkLowEnergyPP = lLowEnergyPP; }
  void SetUseOnTheFly         (Bool_t lUseOnTheFly = kTRUE  ) { fkUseOnTheFly = lUseOnTheFly; }
  void SetTriggerMask         (TString lTriggerMask = "kMB" ) { fTriggerMask  = lTriggerMask; }

 private:
				// Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
				// your data member object is created on the worker nodes and streaming is not needed.
				// http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
	TList	*fListHistV0;	//! List of output objects
	TTree	*fTree;							//! Output Tree

	AliPIDResponse *fPIDResponse;     // PID response object

  //Objects Controlling Task Behaviour 
  
  Bool_t fkIsNuclear;   // if true, replace multiplicity est. by centrality (default FALSE) 
  Bool_t fkLowEnergyPP; // if true, skip FASTOnly (default FALSE)
  Bool_t fkUseOnTheFly; // if true, will use On-the-fly V0s instead of Offline V0s (default FALSE)

  TString fTriggerMask; // Selected trigger mask (kMB, kINT7, kINT8, kAnyINT)

  //Variables for Tree
	Float_t fTreeVariableChi2V0;         //!
	Float_t fTreeVariableDcaV0Daughters; //!
	Float_t fTreeVariableDcaV0ToPrimVertex; //!
	Float_t fTreeVariableDcaPosToPrimVertex; //!
	Float_t fTreeVariableDcaNegToPrimVertex; //!
	Float_t fTreeVariableV0CosineOfPointingAngle; //!
	Float_t fTreeVariableV0Radius; //!
	Float_t fTreeVariablePt; //!
	Float_t fTreeVariableRapK0Short; //!
	Float_t fTreeVariableRapLambda; //!
	Float_t fTreeVariableInvMassK0s; //!
	Float_t fTreeVariableInvMassLambda; //!
	Float_t fTreeVariableInvMassAntiLambda; //!
	Float_t fTreeVariableAlphaV0; //!
	Float_t fTreeVariablePtArmV0;//!
	Float_t fTreeVariableNegTotMomentum; //!	
	Float_t fTreeVariablePosTotMomentum; //!
	Float_t fTreeVariableNegdEdxSig; //!
	Float_t fTreeVariablePosdEdxSig; //!
	Float_t fTreeVariableNegEta; //!
	Float_t fTreeVariablePosEta; //!

	Float_t fTreeVariableNSigmasPosProton; //!
	Float_t fTreeVariableNSigmasPosPion; //! 
	Float_t fTreeVariableNSigmasNegProton; //!
	Float_t fTreeVariableNSigmasNegPion; //! 
	
	Float_t fTreeVariableDistOverTotMom;//!
	Int_t   fTreeVariableLeastNbrCrossedRows;//!
	Float_t fTreeVariableLeastRatioCrossedRowsOverFindable;//!
	Int_t   fTreeVariableMultiplicity ;//!

  Int_t   fTreeVariableRunNumber; //! 
  ULong64_t fTreeVariableEventNumber; //!


//Note: TDistOverTotMom needs a mass hypothesis to be converted to proper decaylength.

	TH1F    *fHistV0MultiplicityBeforeTrigSel;             //! V0 multiplicity distribution
	TH1F    *fHistV0MultiplicityForTrigEvt;                //! V0 multiplicity distribution
	TH1F    *fHistV0MultiplicityForSelEvt;                 //! V0 multiplicity distribution
	TH1F    *fHistV0MultiplicityForSelEvtNoTPCOnly;        //! V0 multiplicity distribution
	TH1F    *fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup;//! V0 multiplicity distribution

	TH1F    *fHistMultiplicityBeforeTrigSel; 	        //! multiplicity distribution    
	TH1F    *fHistMultiplicityForTrigEvt;  		        //! multiplicity distribution
	TH1F    *fHistMultiplicity;     					        //! multiplicity distribution
	TH1F    *fHistMultiplicityNoTPCOnly;			        //! multiplicity distribution
	TH1F    *fHistMultiplicityNoTPCOnlyNoPileup;			//! multiplicity distribution

	TH1F    *fHistPVx;     					        //! multiplicity distribution
	TH1F    *fHistPVy;     					        //! multiplicity distribution
	TH1F    *fHistPVz;     					        //! multiplicity distribution
	TH1F    *fHistPVxAnalysis;     					        //! multiplicity distribution
	TH1F    *fHistPVyAnalysis;     					        //! multiplicity distribution
	TH1F    *fHistPVzAnalysis;     					        //! multiplicity distribution
	TH1F    *fHistSwappedV0Counter;     					        //! Swapped V0 Counter

   AliAnalysisTaskExtractV0AOD(const AliAnalysisTaskExtractV0AOD&);            // not implemented
   AliAnalysisTaskExtractV0AOD& operator=(const AliAnalysisTaskExtractV0AOD&); // not implemented
  
   ClassDef(AliAnalysisTaskExtractV0AOD, 11);
};

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