ROOT logo
#ifndef AliAnalysisTaskVertexESD_cxx
#define AliAnalysisTaskVertexESD_cxx

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

//*************************************************************************
// Class AliAnalysisTaskVertexESD
// AliAnalysisTask to extract from ESD the information for the analysis
// of the primary vertex reconstruction efficiency and resolution
// (for MC events) and distributions (for real data). Three vertices:
// - SPD tracklets
// - ITS+TPC tracks
// - TPC-only tracks
//
// Author: A.Dainese, andrea.dainese@pd.infn.it
//*************************************************************************

class TNtuple;
class TH1F;
class TH2F;
class AliESDEvent;
class AliESDVertex;
class AliVEvent;

#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskVertexESD : public AliAnalysisTaskSE 
{
 public:

  AliAnalysisTaskVertexESD(const char *name = "AliAnalysisTaskVertexESD");
  virtual ~AliAnalysisTaskVertexESD(); 
  
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);
  void           SetCheckEventType(Bool_t check=kTRUE) {fCheckEventType=check;}
  Bool_t         GetReadMC() const { return fReadMC; }
  void           SetReadMC(Bool_t flag=kTRUE) { fReadMC=flag; if(flag) fCheckEventType=kFALSE;}
  void           SetRerecoVertexTPC(Bool_t flag=kTRUE) { fRecoVtxTPC=flag; }
  void           SetRerecoVertexITSTPC(Bool_t flag=kTRUE) { fRecoVtxITSTPC=flag; }
  void           SetRerecoVertexITSTPCHalfEvent(Bool_t flag=kTRUE) { fRecoVtxITSTPCHalfEvent=flag; }
  void           SetOnlyITSTPCTracks() {fOnlyITSTPCTracks=kTRUE;}
  void           SetOnlyITSSATracks() {fOnlyITSSATracks=kTRUE;}
  void           SetFillNtuple(Bool_t fill=kTRUE) {fFillNtuple=fill;}  
  void           SetFillNtupleBeamSpot(Bool_t fillBeamSpot=kFALSE){fFillTreeBeamSpot = fillBeamSpot;}
  void           SetTriggerType(AliVEvent::EOfflineTriggerTypes triggerType) {fTriggerType = triggerType;}

 protected:
  Bool_t       fCheckEventType; // read only events of type 7
  Bool_t       fReadMC;         // read Monte Carlo
  Bool_t       fRecoVtxTPC;     // reco TPC vertex on the flight
  Bool_t       fRecoVtxITSTPC;  // reco ITS+TPC vertex on the flight
  Bool_t       fRecoVtxITSTPCHalfEvent;  // reco ITS+TPC vertex with even and odd tracks
  Bool_t       fOnlyITSTPCTracks; // only ITS-TPC tracks to redo ITSTPC vertex
  Bool_t       fOnlyITSSATracks;  // only ITS-SA tracks to redo ITSTPC vertex
  Bool_t       fFillNtuple;      // fill ntuple  
  Bool_t       fFillTreeBeamSpot; //beam spot info in a tree
  AliESDEvent *fESD;            // ESD object
  TList       *fOutput;         //! list send on output slot 0
  TNtuple     *fNtupleVertexESD;//! output ntuple
  TH1F        *fhSPDVertexX; //! output histo
  TH1F        *fhSPDVertexY; //! output histo
  TH1F        *fhSPDVertexZ; //! output histo
  TH1F        *fhSPDVertexZonly; //! output histo
  TH1F        *fhTRKVertexX; //! output histo
  TH1F        *fhTRKVertexY; //! output histo
  TH1F        *fhTRKVertexZ; //! output histo
  TH1F        *fhTPCVertexX; //! output histo
  TH1F        *fhTPCVertexY; //! output histo
  TH1F        *fhTPCVertexZ; //! output histo
  TH2F        *fhTrackRefs;     //! output histo
  TTree       *fTreeBeamSpot;  //! output tree beam spot

  TH1F        *fhTriggeredTrklets; //! output histo
  TH1F        *fhSPD3DTrklets; //! output histo
  TH1F        *fhSPDZTrklets; //! output histo
  TH1F        *fhTRKTrklets; //! output histo
  TH1F        *fhTRKcTrklets; //! output histo
  TH1F        *fhTRKncTrklets; //! output histo
  TH1F        *fhTPCTrklets; //! output histo
  TH1F        *fhTPCcTrklets; //! output histo
  TH1F        *fhTPCncTrklets; //! output histo
  TH1F        *fhSPD3DZreco; //! output histo
  TH1F        *fhSPDZZreco; //! output histo


  TH1F        *fhSPDVertexXPile; //! output histo
  TH1F        *fhSPDVertexYPile; //! output histo
  TH1F        *fhSPDVertexZPile; //! output histo
  TH1F        *fhSPDVertexDiffZPileContr2; //! output histo
  TH1F        *fhSPDVertexDiffZPileContr3; //! output histo
  TH1F        *fhSPDVertexDiffZPileContr4; //! output histo
  TH1F        *fhSPDVertexDiffZPileContr5; //! output histo
  TH1F        *fhSPDVertexDiffZPileDefault; //! output histo
  TH1F        *fhSPDContributorsPile; //! output histo
  TH2F        *fhSPDDispContributors; //! output histo
  AliVEvent::EOfflineTriggerTypes    fTriggerType; //flag to set trigger type
	
  TH2F        *fhntrksSPDvsSPDcls;//!  output histo correlation contributors vs number of clustrers spd 
  TH2F        *fhntrksZvsSPDcls; //! output histo correlation contributors vs number of clustrers spd

 private:    

  AliAnalysisTaskVertexESD(const AliAnalysisTaskVertexESD&); // not implemented
  AliAnalysisTaskVertexESD& operator=(const AliAnalysisTaskVertexESD&); // not implemented
  AliESDVertex* ReconstructPrimaryVertexTPC(Bool_t constr=kFALSE) const;
  AliESDVertex* ReconstructPrimaryVertexITSTPC(Bool_t constr=kFALSE,Int_t mode=0) const;
  
  ClassDef(AliAnalysisTaskVertexESD,11); // primary vertex analysis
};

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