ROOT logo
#ifndef ALIANALYSISTASKSINGLEPARTICLE_H
#define ALIANALYSISTASKSINGLEPARTICLE_H

//===============================================================
//
// Analysis task for constructing MC or data driven single particle efficiencies
//
// Ionut C. Arsene, EMMI-GSI, 2011/12/07 
//
//===============================================================

#include "TList.h"

#include "AliAnalysisTaskSE.h"

class TH1D;
class TList;
class AliAnalysisCuts;
class AliCFContainer;
class AliVEvent;
class AliDielectronHistos;
class AliESDv0Cuts;
class AliESDv0KineCuts;

class AliAnalysisTaskSingleParticle : public AliAnalysisTaskSE {
  
public:
  enum { kNMaxDimensions = 20 };
    
  AliAnalysisTaskSingleParticle();
  AliAnalysisTaskSingleParticle(const char *name);
  virtual ~AliAnalysisTaskSingleParticle();

  virtual void UserExec(Option_t *option);
  virtual void UserCreateOutputObjects();
  virtual void FinishTaskOutput();
    
  void SetFillTRDfriendPH(Bool_t fill=kTRUE) {fFillTRDfriendPH = fill;}
  void UsePhysicsSelection(Bool_t phy=kTRUE) {fSelectPhysics=phy;}
  void SetTriggerMask(UInt_t mask) {fTriggerMask=mask;}
  UInt_t GetTriggerMask() const { return fTriggerMask; }
  void SetRejectPileup(Bool_t pileup=kTRUE)     { fRejectPileup=pileup;     }
  
  void SetEventFilter(AliAnalysisCuts * const filter) {fEventFilter=filter;}
  void SetTrackFilter(AliAnalysisCuts * const filter) {fTrackFilter=filter;}
  void SetPairFilter(AliAnalysisCuts* const filter) {fPairFilter=filter;}
  void SetV0Cuts(AliESDv0Cuts* const cuts) {fV0Cuts = cuts;}
  void SetLambdaFilter(AliAnalysisCuts* const filter) {fLambdaFilter = filter;}
  void SetK0sFilter(AliAnalysisCuts* const filter) {fK0sFilter = filter;}
  void SetHistogramManager(AliDielectronHistos * const histos) { fHistos=histos; }
  void SetV0KineCuts(AliESDv0KineCuts* const v0cuts) {fV0KineCuts = v0cuts;}

  void AddCFVar(Int_t var, Int_t nbins, Double_t lowLim, Double_t highLim);
  void AddCFVar(Int_t var, const Char_t* bins);

protected:
//  enum {kAllEvents=0, kPhysicsSelectionEvents, kFilteredEvents, kEventStatBins};
//  enum {kEventVtxZ=0, kNTracklets, kCentrality, kPt, kPin, kPhi, kEta, kDeltaPt, kDeltaPhi, kDeltaEta, kTPCnCls, kTPCnSigEle, kTPCnSigPio, kTPCnSigPro, kNVariables}; 

  AliCFContainer*  fCfContainer;      //  CF container
  AliDielectronHistos *fHistos;       // Histogram manager
  TList            fHistogramList;    // histogram list from the manager

  Bool_t           fSelectPhysics;    // Whether to use physics selection
  UInt_t           fTriggerMask;      // Event trigger mask
  Bool_t           fRejectPileup;     // pileup rejection wanted
  Bool_t           fFillTRDfriendPH;  // use the task to fill a TRD tracklet PH container

  AliAnalysisCuts* fEventFilter;      // event filter
  AliAnalysisCuts* fTrackFilter;      // tracking filter
  AliAnalysisCuts* fPairFilter;       // pair filter
  AliESDv0Cuts*    fV0Cuts;           // v0 standard filter
  AliAnalysisCuts* fLambdaFilter;     // additional cuts for lambda v0 exclusion
  AliAnalysisCuts* fK0sFilter;        // additional cuts for K0s v0 exclusion
  AliESDv0KineCuts* fV0KineCuts;      // V0 kine cuts
  
  Int_t            fCFNVars;          // number of CF variables
  Int_t            fCFVarsEnabled[kNMaxDimensions];    // id for every dimension
  Int_t            fCFVarsNbins[kNMaxDimensions];      // number of bins for every CF dimension
  Double_t         fCFVarRanges[kNMaxDimensions][2];   // range for CF dimensions
  TString          fCFVarBins[kNMaxDimensions];        // bin limits for CF dimensions

  TH1D *fEventStat;                  //! Histogram with event statistics
  
  void FillContainer(Int_t step, const Double_t* values, Int_t trackId, Int_t pdg);
  
  AliAnalysisTaskSingleParticle(const AliAnalysisTaskSingleParticle &c);
  AliAnalysisTaskSingleParticle& operator= (const AliAnalysisTaskSingleParticle &c);
  
  ClassDef(AliAnalysisTaskSingleParticle, 2); //Analysis Task handling single particle cuts
};
#endif
 AliAnalysisTaskSingleParticle.h:1
 AliAnalysisTaskSingleParticle.h:2
 AliAnalysisTaskSingleParticle.h:3
 AliAnalysisTaskSingleParticle.h:4
 AliAnalysisTaskSingleParticle.h:5
 AliAnalysisTaskSingleParticle.h:6
 AliAnalysisTaskSingleParticle.h:7
 AliAnalysisTaskSingleParticle.h:8
 AliAnalysisTaskSingleParticle.h:9
 AliAnalysisTaskSingleParticle.h:10
 AliAnalysisTaskSingleParticle.h:11
 AliAnalysisTaskSingleParticle.h:12
 AliAnalysisTaskSingleParticle.h:13
 AliAnalysisTaskSingleParticle.h:14
 AliAnalysisTaskSingleParticle.h:15
 AliAnalysisTaskSingleParticle.h:16
 AliAnalysisTaskSingleParticle.h:17
 AliAnalysisTaskSingleParticle.h:18
 AliAnalysisTaskSingleParticle.h:19
 AliAnalysisTaskSingleParticle.h:20
 AliAnalysisTaskSingleParticle.h:21
 AliAnalysisTaskSingleParticle.h:22
 AliAnalysisTaskSingleParticle.h:23
 AliAnalysisTaskSingleParticle.h:24
 AliAnalysisTaskSingleParticle.h:25
 AliAnalysisTaskSingleParticle.h:26
 AliAnalysisTaskSingleParticle.h:27
 AliAnalysisTaskSingleParticle.h:28
 AliAnalysisTaskSingleParticle.h:29
 AliAnalysisTaskSingleParticle.h:30
 AliAnalysisTaskSingleParticle.h:31
 AliAnalysisTaskSingleParticle.h:32
 AliAnalysisTaskSingleParticle.h:33
 AliAnalysisTaskSingleParticle.h:34
 AliAnalysisTaskSingleParticle.h:35
 AliAnalysisTaskSingleParticle.h:36
 AliAnalysisTaskSingleParticle.h:37
 AliAnalysisTaskSingleParticle.h:38
 AliAnalysisTaskSingleParticle.h:39
 AliAnalysisTaskSingleParticle.h:40
 AliAnalysisTaskSingleParticle.h:41
 AliAnalysisTaskSingleParticle.h:42
 AliAnalysisTaskSingleParticle.h:43
 AliAnalysisTaskSingleParticle.h:44
 AliAnalysisTaskSingleParticle.h:45
 AliAnalysisTaskSingleParticle.h:46
 AliAnalysisTaskSingleParticle.h:47
 AliAnalysisTaskSingleParticle.h:48
 AliAnalysisTaskSingleParticle.h:49
 AliAnalysisTaskSingleParticle.h:50
 AliAnalysisTaskSingleParticle.h:51
 AliAnalysisTaskSingleParticle.h:52
 AliAnalysisTaskSingleParticle.h:53
 AliAnalysisTaskSingleParticle.h:54
 AliAnalysisTaskSingleParticle.h:55
 AliAnalysisTaskSingleParticle.h:56
 AliAnalysisTaskSingleParticle.h:57
 AliAnalysisTaskSingleParticle.h:58
 AliAnalysisTaskSingleParticle.h:59
 AliAnalysisTaskSingleParticle.h:60
 AliAnalysisTaskSingleParticle.h:61
 AliAnalysisTaskSingleParticle.h:62
 AliAnalysisTaskSingleParticle.h:63
 AliAnalysisTaskSingleParticle.h:64
 AliAnalysisTaskSingleParticle.h:65
 AliAnalysisTaskSingleParticle.h:66
 AliAnalysisTaskSingleParticle.h:67
 AliAnalysisTaskSingleParticle.h:68
 AliAnalysisTaskSingleParticle.h:69
 AliAnalysisTaskSingleParticle.h:70
 AliAnalysisTaskSingleParticle.h:71
 AliAnalysisTaskSingleParticle.h:72
 AliAnalysisTaskSingleParticle.h:73
 AliAnalysisTaskSingleParticle.h:74
 AliAnalysisTaskSingleParticle.h:75
 AliAnalysisTaskSingleParticle.h:76
 AliAnalysisTaskSingleParticle.h:77
 AliAnalysisTaskSingleParticle.h:78
 AliAnalysisTaskSingleParticle.h:79
 AliAnalysisTaskSingleParticle.h:80
 AliAnalysisTaskSingleParticle.h:81
 AliAnalysisTaskSingleParticle.h:82
 AliAnalysisTaskSingleParticle.h:83
 AliAnalysisTaskSingleParticle.h:84
 AliAnalysisTaskSingleParticle.h:85
 AliAnalysisTaskSingleParticle.h:86
 AliAnalysisTaskSingleParticle.h:87
 AliAnalysisTaskSingleParticle.h:88
 AliAnalysisTaskSingleParticle.h:89
 AliAnalysisTaskSingleParticle.h:90
 AliAnalysisTaskSingleParticle.h:91
 AliAnalysisTaskSingleParticle.h:92