ROOT logo
/* $Id$ */

#ifndef AliMultiplicityTask_H
#define AliMultiplicityTask_H

#include "AliAnalysisTask.h"

#include <TString.h>
#include "AliPWG0Helper.h"

class AliESDtrackCuts;
class AliMultiplicityCorrection;
class TNtuple;
class AliCorrection;
class TH1;
class TH1D;
class TH2F;
class TH3F;
class AliESDEvent;

class AliMultiplicityTask : public AliAnalysisTask {
  public:
    AliMultiplicityTask(const char* opt = "");
    virtual ~AliMultiplicityTask();

    virtual void   ConnectInputData(Option_t *);
    virtual void   CreateOutputObjects();
    virtual void   Exec(Option_t*);
    virtual void   Terminate(Option_t *);

    void SetTrackCuts(AliESDtrackCuts* cuts) { fEsdTrackCuts = cuts; }
    void SetPtSpectrum(TH1D* hist) { fPtSpectrum = hist; }

    void SetAnalysisMode(AliPWG0Helper::AnalysisMode mode) { fAnalysisMode = mode; }
    void SetTrigger(AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; }
    void SetDeltaPhiCut(Float_t cut) { fDeltaPhiCut = cut; }

    void SetReadMC(Bool_t flag = kTRUE) { fReadMC = flag; }
    void SetUseMCVertex(Bool_t flag = kTRUE) { fUseMCVertex = flag; }
    void SetSkipParticles(Bool_t flag = kTRUE) { fSystSkipParticles = flag; }
    void SetDiffTreatment(AliPWG0Helper::DiffTreatment diffTreatment) { fDiffTreatment = diffTreatment; }
  
 protected:
    AliESDEvent *fESD;    //! ESD object

    TString fOption;      // option string
    AliPWG0Helper::AnalysisMode fAnalysisMode; // detector that is used for analysis
    AliTriggerAnalysis::Trigger fTrigger;      // trigger that is used
    Float_t fDeltaPhiCut;                      // cut in delta phi (only SPD)
    AliPWG0Helper::DiffTreatment  fDiffTreatment;  // how to identify SD events (see AliPWG0Helper::GetEventProcessType)
    
    Bool_t  fReadMC;       // if true reads MC data (to build correlation maps)
    Bool_t  fUseMCVertex;  // the MC vtx is used instead of the ESD vertex (for syst. check)

    AliMultiplicityCorrection* fMultiplicity; //! object containing the extracted data
    AliESDtrackCuts* fEsdTrackCuts;           // Object containing the parameters of the esd track cuts

    Bool_t fSystSkipParticles;          // if true skips particles (systematic study)
    AliCorrection* fParticleCorrection[8]; //! correction from measured to generated particles for different particles for trigger, vertex sample in |eta| < 2; switch on with "particle-efficiency"
                                           // for each of the species (0..3): pi, k, p, other; for systematic study of pt cut off
                                           // 4..7 counts for the same species the decayed particles (in generated) and stopped (in measured)
    Int_t fSelectProcessType;        // 0 = all (default), 1 = ND, 2 = SD, 3 = DD (for systematic study)
    TNtuple *fParticleSpecies;       //! per event: vtx_mc, (pi, k, p, rest (in |eta| < 1)) X (true, recon) + (nolabel,
                                     // doubleTracks, doublePrimaries) [doubleTracks + doublePrimaries are already part of
                                     // rec. particles!); enable with: particle-species
    TH1* fdNdpT;                     //! true pT spectrum (MC)

    TH1D* fPtSpectrum;               // function that modifies the pt spectrum (syst. study)
    
    TH1* fTemp1;                                 //! temp histogram for quick study of variables
    TH1* fTemp2;                                 //! temp histogram for quick study of variables
    
    TH1* fEta[3];                    //! eta histogram of events in the acceptance region for each of the eta-bins (control histogram)

    // control histograms (ESD)
    TH3F* fVertex;                //! 3d vertex distribution
    TH2F* fEtaPhi;                //! raw eta - phi distribution
    
    TList* fOutput;                  //! list send on output slot 0
    
 private:
    AliMultiplicityTask(const AliMultiplicityTask&);
    AliMultiplicityTask& operator=(const AliMultiplicityTask&);

  ClassDef(AliMultiplicityTask, 1);
};

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