ROOT logo
#ifndef ALIANALYSISTASKDIELECTRONREADAODBRANCH_H
#define ALIANALYSISTASKDIELECTRONREADAODBRANCH_H

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

////////////////////////////////////////////////////////////////////////////
//  Class to retrieve the branch of the dielectron candidates stored in   //
//  filtered AOD files (AliAOD.Dielectron.root). It is possible to        //
//  apply tighter cuts to candidates stored in the branch and do the      //
//  matching with MC truth                                                //
//                                                                        //
//  Contacts : G. Bruno / Giuseppe.Bruno@ba.infn.it,                      //
//             F. Fionda / Fiorella.Fionda@ba.infn.it,                    //
//             C. Di Giglio / Carmelo.Digiglio@ba.infn.it                 // 
////////////////////////////////////////////////////////////////////////////

#include "AliAnalysisTaskSE.h"

class TNtuple;
class TH1F;
class TH2F;
class AliDielectronPair;

class AliAnalysisTaskDielectronReadAODBranch : public AliAnalysisTaskSE
{
	public:
		AliAnalysisTaskDielectronReadAODBranch();
		AliAnalysisTaskDielectronReadAODBranch(const char *name);
		virtual ~AliAnalysisTaskDielectronReadAODBranch();

		// Implementation of interface methods
		virtual void UserCreateOutputObjects();
		virtual void Init();
		virtual void LocalInit() {Init();}
		virtual void UserExec(Option_t *option);
		virtual void Terminate(Option_t *option);
              
                //setters
                void SetPtLeg(Double_t cutPt){ fPtCut = cutPt;} 
                void SetSpdFirstRequired(Bool_t spdfirst){fSpdFirstRequired = spdfirst;}
                void SetNclsTPC(Int_t nCls){fClsTPC = nCls;}
                void SetPairType(Int_t type){fPairType = type;}
                void SetPtJpsi(Double_t ptjpsi) {fPtJpsi = ptjpsi;}
                void SetInvMassSignalRegion(Double_t lowLimit, Double_t upLimit){fInvMassSignalLimits[0]=lowLimit; fInvMassSignalLimits[1]=upLimit;}
                void SetInvMassSidebandRegion(Double_t lowLimit, Double_t upLimit){fInvMassSideBandsLimits[0]=lowLimit; fInvMassSideBandsLimits[1]=upLimit;}
                void SetHasMC(Bool_t mcFlag) {fHasMC = mcFlag;}


     enum {
    kITSin=0x0001,kITSout=0x0002,kITSrefit=0x0004,kITSpid=0x0008,
      kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
      kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
      kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
      kHMPIDout=0x10000,kHMPIDpid=0x20000
  };

	private:
		AliAnalysisTaskDielectronReadAODBranch(const AliAnalysisTaskDielectronReadAODBranch &c);
		AliAnalysisTaskDielectronReadAODBranch& operator= (const AliAnalysisTaskDielectronReadAODBranch &c);

		TList      *fOutput;                 // output list with histo
	        TNtuple    *fNtupleJPSI;             // ntupla to store invariant mass and psproper of candidates
                TH1F       *fNentries;               // number of filtered events
		TH1F       *fInvMass;                // invariant mass of candidates in branch after tighter cuts application
		TH1F       *fInvMassNoCuts;          // invariant mass of candidates in branch without cuts
                TH1F       *fpsproperSignal;         // psproper distribution in the mass signal region           
		TH1F       *fpsproperSidebands;      // psproper distribution in the mass sidebands region           
		TH1F       *fpsproperAll;            // whole psproper distribution          
                TH1F       *fpsproperUnder;          // psproper distribution in the lower mass sidebands region 
                TH1F       *fpsproperUpper;          // psproper distribution in the upper mass sidebands region
		TH2F       *fLxyVsPtleg1;            // psproper vs pt for leg1
		TH2F       *fLxyVsPtleg2;            // psproper vs pt for leg2          
		TH2F       *fLxyVsPt;                // psproper vs pt jpsi 
		TH2F       *fMeeVsPt;                // invariant mass vs pt jpsi
		TH2F       *fMeeVsLxy;               // invariant mass vs psproper

		// QA plots
		TH1F       *fprimvtxZ;               // z coord of primary vertex        
		TH1F       *fsecvtxZ;                // z coord of secondary vertex        
		TH1F       *fprimvtxX;               // x coord of primary vertex          
		TH1F       *fsecvtxX;                // x coord of secondary vertex           
		TH1F       *fprimvtxY;               // y coord of primary vertex          
		TH1F       *fsecvtxY;                // y coord of secondary vertex          
		TH1F       *fPt;                     // pT(J/psi) distribution               
		TH1F       *fPtLeg1;                 // pT(leg1)  distribution. Warning: mixture of pos and neg tracks               
		TH1F       *fPtLeg2;                 // pT(leg2)  distribution. Warning: mixture of pos and neg tracks               
		TH2F       *fdEdxP;                  // dEdx vs P for legs
		Bool_t     fHasMC;                   // flag for read MC branch
                TObjArray  *fobj;                    // TObjArray with stored reconstructed candidates
		TObjArray  *fobjMC;                  // TObjArray with MC tracks
 
                // cuts on candidates
                Double_t  fPtCut;                    // ptLeg 
                Bool_t    fSpdFirstRequired;         // spd any/first 
                Int_t     fClsTPC;                   // #clsTPC
                Int_t     fPairType;                 // pair Type
                Double_t  fPtJpsi;                   // pt jpsi
                Double_t  *fInvMassSignalLimits;     // invariant mass signal region to extract psproper distribution
                Double_t  *fInvMassSideBandsLimits;  // invariant mass sideband region to extract psproper distribution 

                Int_t     fSecondary;                // 1(0) to select secondary (prompt) jpsi
		ClassDef(AliAnalysisTaskDielectronReadAODBranch,2); // AliAnalysisTaskSE for the MC association of heavy-flavour decay candidates
};


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