ROOT logo
#ifndef ALIANALYSISTASKSEIMPPARRES_H
#define ALIANALYSISTASKSEIMPPARRES_H

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

//*************************************************************************
// Class AliAnalysisTaskSEImpParRes
// AliAnalysisTaskSE for the study of the track impact parameter resolution
//
// Authors: xianbao.yuan@pd.infn.it, andrea.dainese@pd.infn.it
// 
//*************************************************************************

class TList;
class TH1F;
class AliTriggerConfiguration;
class AliVTrack;
class AliVVertex;
class AliESDtrackCuts;


#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskSEImpParRes : public AliAnalysisTaskSE {

 public:
  
  AliAnalysisTaskSEImpParRes();
  AliAnalysisTaskSEImpParRes(const char *name);
  virtual ~AliAnalysisTaskSEImpParRes();
  
  
  // Implementation of interface methods
  virtual void UserCreateOutputObjects();
  virtual void UserExec(Option_t *option);
  virtual void Terminate(Option_t *option);
  void SetReadMC(Bool_t readMC) { fReadMC=readMC; return; }
  void SetIsAOD(Bool_t isAOD) { fIsAOD=isAOD; return; }
  void SetSelectedPdg(Int_t pdg) { fSelectedPdg=pdg; return; }
  void SetUseDiamond(Bool_t use=kFALSE) { fUseDiamond=use; return; }
  void SetSkipTrack(Bool_t skip=kFALSE) { fSkipTrack=skip; return; }
  void SetMultiplicityRange(Int_t min,Int_t max) { fMinMult=min; fMaxMult=max; }
  void SetCheckSDDIsIn(Int_t check=0) { fCheckSDDIsIn=check; }
  void SetTriggerClass(TString tclass="") { fTriggerClass=tclass; }
  void SetOCDBPath(TString path="") { fOCDBPath=path; }
  void SetESDtrackCuts(AliESDtrackCuts *esdCuts) {fESDtrackCuts=esdCuts;}

 private:
  
  AliAnalysisTaskSEImpParRes(const AliAnalysisTaskSEImpParRes &source);
  AliAnalysisTaskSEImpParRes& operator=(const AliAnalysisTaskSEImpParRes& source);  
  
  Int_t PtBin(Double_t pt) const;
  Int_t SinThetaBin(Double_t sintheta) const;
  Double_t Getd0HistRange(Int_t i) const;
  Int_t PhiBin(Double_t phi) const;
  Int_t ClusterTypeOnITSLayer(AliESDtrack *t,Int_t layer) const;
  Bool_t IsTrackSelected(AliVTrack *t,AliVVertex *v, AliESDtrackCuts *cuts) const;
  Bool_t fIsAOD;  // flag to read AOD or ESD (default is ESD)
  Bool_t fReadMC;       // flag used to switch on/off MC reading
  Int_t  fSelectedPdg;  // only for a given particle species (-1 takes all tracks)
  Bool_t fUseDiamond;   // use diamond constraint in primary vertex
  Bool_t fSkipTrack;    // redo primary vertex for each track
  Int_t  fMinMult; // minimum multiplicity
  Int_t  fMaxMult; // maximum multiplicity
  Int_t  fCheckSDDIsIn; // check for ITSSDD in the trigger cluster: 0 no check; !=0 check from OCDB
  TString      fTriggerClass; // trigger class to be inspected
  AliTriggerConfiguration *fTrigConfig; // trigger configuration (read from OCDB)
  TString      fOCDBPath; // to the OCDB
  AliESDtrackCuts *fESDtrackCuts; // track cuts 
  TList *fOutputitspureSARec;  //! ITS StandAlone: with track in vtx 
  TList *fOutputitspureSASkip; //! ITS StandAlone: w/o track in vtx
  TList *fOutputallPointRec;   //! ITS+TPC: 6 ITScls, with track in vtx      
  TList *fOutputallPointSkip;  //! ITS+TPC: 6 ITScls, w/o track in vtx      
  TList *fOutputpartPointRec;   //! ITS+TPC: >=1 SPD, with track in vtx
  TList *fOutputpartPointSkip;  //! ITS+TPC: >=1 SPD, w/o track in vtx
  TList *fOutputonepointSPDRec; //! At least one point on SPD, with track in vtx
  TList *fOutputonepointSPDSkip;//! At least one point on SPD w/o track in vtx
  TList *fOutputpostvTracRec;   //! ITS+TPC: >=1 SPD, positives, with track in vtx
  TList *fOutputpostvTracSkip;  //! ITS+TPC: >=1 SPD, positives, w/o track in vtx
  TList *fOutputnegtvTracRec;   //! ITS+TPC: >=1 SPD, negatives, with track in vtx
  TList *fOutputnegtvTracSkip;  //! ITS+TPC: >=1 SPD, negatives, w/o track in vtx
  TList *fOutputpullAllpointRec; //! pull ITS+TPC: 6 ITScls, with track in vtx
  TList *fOutputpullAllpointSkip;//! pull ITS+TPC: 6 ITScls, w/o track in vtx
  TList *fOutputOnlyRefitRec;   //! ITS+TPC: any ITScls, with track in vtx
  TList *fOutputOnlyRefitSkip; //! ITS+TPC: any ITScls, w/o track in vtx
  TList *fOutputSinThetaRec;              //! ITS+TPC: TH2F(pt,sintheta), with track in vtx
  TList *fOutputSinThetaSkip;             //! ITS+TPC: TH2F(pt,sintheta), w/o track in vtx
  TList *fOutputallPointTrue;    //!
  TList *fOutputpostvTracTrue;   //!
  TList *fOutputnegtvTracTrue;   //!
  TList *fOutputpullAllpointTrue;  //!
  TList *fOutputphiAllpointSkip;  //!
  TList *fOutputphiPostvtracSkip;  //!
  TList *fOutputphiNegtvtracSkip;  //!
  TList *fOutputparticlePID;  //!
  TList *fOutputWithTrackCuts; //!
  TList *fOutputPt;     //!           
  TH1F  *fNentries;   //! histogram of number of events
  TH1F  *fEstimVtx;   //! vertex resolution

  Bool_t IsSelectedCentrality(AliESDEvent *esd) const;

  ClassDef(AliAnalysisTaskSEImpParRes,8); // AliAnalysisTaskSE for the study of the impact parameter resolution
};

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