ROOT logo
#ifndef ALIANALYSISTASKLEADINGTRACKUE_H
#define ALIANALYSISTASKLEADINGTRACKUE_H

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

////////////////////////////////////////////////////////////////////////
//
// Analysis class for Underlying Event studies w.r.t. leading track
//
// Look for correlations on the tranverse regions w.r.t
// the leading track in the event
//
// This class needs input AODs.
// The output is a list of analysis-specific containers.
//
// The AOD can be either connected to the InputEventHandler  
// for a chain of AOD files 
// or 
// to the OutputEventHandler
// for a chain of ESD files,
// in this case the class should be in the train after the jet-finder
//
//    Authors:
//    Arian Abrahantes Quintana 
//    Jan Fiete Grosse-Oetringhaus
//    Ernesto Lopez Torres
//    Sara Vallero
// 
////////////////////////////////////////////////////////////////////////

#include "AliAnalysisTask.h"
#include "AliUEHist.h"

class AliAODEvent;
class AliAnalyseLeadingTrackUE;
class AliInputEventHandler;
class AliMCEvent;
class AliMCEventHandler;
class AliUEHistograms;
class AliVParticle;
class TH1D;
class TObjArray;

class  AliAnalysisTaskLeadingTrackUE : public AliAnalysisTask
  {
  public:
    AliAnalysisTaskLeadingTrackUE(const char* name="AliAnalysisTaskLeadingTrackUE");
    virtual           ~AliAnalysisTaskLeadingTrackUE();
       
      
    // Implementation of interace methods
    virtual     Bool_t Notify();
    virtual     void   ConnectInputData(Option_t *);
    virtual     void   CreateOutputObjects();
    virtual     void   Exec(Option_t *option);
    virtual     void   Terminate(Option_t *);

    void FillReducedEfficiency(Int_t eventId, AliUEHist::CFStep step,const TObjArray* ltRECO, Bool_t twoStep);

    // Setters/Getters
    // general configuration
    virtual     void    SetDebugLevel( Int_t level )  { fDebug = level; }
    virtual     void    SetMode(Int_t mode)           { fMode  = mode;  }
    virtual     void    SetReduceMemoryFootprint(Bool_t flag) { fReduceMemoryFootprint = flag; }
    
    // histogram settings
    void   		SetPtRangeInHist( Int_t bin, Double_t min, Double_t max ) {
      				fBinsPtInHist = bin; 
      				fMinJetPtInHist = min; 
      				fMaxJetPtInHist = max; 
    				}
    void SetTrackingEfficiency( const TH1D* hist) { fkTrackingEfficiency = hist; }

    // for event QA
    void   SetTracksInVertex( Int_t val ){ fnTracksVertex = val; }
    void   SetZVertex( Double_t val )    { fZVertex = val; }
    
    // track cuts
    void   SetTrackEtaCut(Double_t val)       { fTrackEtaCut = val; }
    void   SetLeadingTrackEtaCut( Double_t val )    { fLeadingTrackEtaCut = val; }
    void   SetFilterBit( UInt_t val )        { fFilterBit = val;  }
    void   SetEventSelectionBit( UInt_t val )        { fSelectBit = val;  }
    void   SetUseChargeHadrons( Bool_t val ) { fUseChargeHadrons = val; }
    
  protected:
  static AliAnalysisTaskLeadingTrackUE*     fgTaskLeadingTrackUE;       // Pointer to single instance

  private:
    AliAnalysisTaskLeadingTrackUE(const  AliAnalysisTaskLeadingTrackUE &det);
    AliAnalysisTaskLeadingTrackUE&   operator=(const  AliAnalysisTaskLeadingTrackUE &det);
    void            AddSettingsTree();                                  // add list of settings to output list
    // Analysis methods
    void            AnalyseCorrectionMode();                            // main algorithm to get correction maps
    void            AnalyseDataMode();                                  // main algorithm to get raw distributions
    void            Initialize(); 			                // initialize some common pointer



    // General configuration
    Int_t               fDebug;           //  Debug flag
    Int_t 	        fMode;            //  fMode = 0: data-like analysis 
    				          //  fMode = 1: corrections analysis	
    Bool_t              fReduceMemoryFootprint; // reduce memory consumption by writing less debug histograms
    
    // Pointers to external UE classes
    AliAnalyseLeadingTrackUE*     fAnalyseUE;      //! points to class containing common analysis algorithms
    AliUEHistograms*  fHistosUE;       //! points to class to handle histograms/containers  
    
    const TH1D* fkTrackingEfficiency;       // used for study of bias by tracking 

    // Handlers and events
    AliAODEvent*             fAOD;             //! AOD Event 
    TClonesArray*            fArrayMC;         //! Array of MC particles 
    AliInputEventHandler*    fInputHandler;    //! Generic InputEventHandler 
    AliMCEvent*              fMcEvent;         //! MC event
    AliMCEventHandler*       fMcHandler;       //! MCEventHandler 
    
    // Histogram settings
    TList*              fListOfHistos;    //  Output list of containers 
    Int_t          	fBinsPtInHist;     //  # bins for pT histos
    Double_t       	fMinJetPtInHist;   //  min Jet Pt value for histo range
    Double_t       	fMaxJetPtInHist;   //  max Jet Pt value for histo range
    
    
    // Event QA cuts
    Int_t          	fnTracksVertex;        // QA tracks pointing to principal vertex (= 3 default) 
    Double_t       	fZVertex;              // Position of Vertex in Z direction
    
    // Track cuts
    Double_t            fTrackEtaCut;          // Eta cut on inclusive tracks
    Double_t      	fLeadingTrackEtaCut;   // Eta cut on leading track
    UInt_t         	fFilterBit;            // Select tracks from an specific track cut (default 0xFF all track selected)
    UInt_t         	fSelectBit;            // Select events according to AliAnalysisTaskJetServices bit maps 
    Bool_t         	fUseChargeHadrons;     // Only use charge hadrons
    
    // MC cross-section 
    Double_t      	fAvgTrials;        // average trials used to fill the fh1Trials histogram in case we do not have trials on a event by event basis

    ClassDef( AliAnalysisTaskLeadingTrackUE, 1); // Analysis task for Underlying Event analysis w.r.t. leading track
  };

#endif

    
 AliAnalysisTaskLeadingTrackUE.h:1
 AliAnalysisTaskLeadingTrackUE.h:2
 AliAnalysisTaskLeadingTrackUE.h:3
 AliAnalysisTaskLeadingTrackUE.h:4
 AliAnalysisTaskLeadingTrackUE.h:5
 AliAnalysisTaskLeadingTrackUE.h:6
 AliAnalysisTaskLeadingTrackUE.h:7
 AliAnalysisTaskLeadingTrackUE.h:8
 AliAnalysisTaskLeadingTrackUE.h:9
 AliAnalysisTaskLeadingTrackUE.h:10
 AliAnalysisTaskLeadingTrackUE.h:11
 AliAnalysisTaskLeadingTrackUE.h:12
 AliAnalysisTaskLeadingTrackUE.h:13
 AliAnalysisTaskLeadingTrackUE.h:14
 AliAnalysisTaskLeadingTrackUE.h:15
 AliAnalysisTaskLeadingTrackUE.h:16
 AliAnalysisTaskLeadingTrackUE.h:17
 AliAnalysisTaskLeadingTrackUE.h:18
 AliAnalysisTaskLeadingTrackUE.h:19
 AliAnalysisTaskLeadingTrackUE.h:20
 AliAnalysisTaskLeadingTrackUE.h:21
 AliAnalysisTaskLeadingTrackUE.h:22
 AliAnalysisTaskLeadingTrackUE.h:23
 AliAnalysisTaskLeadingTrackUE.h:24
 AliAnalysisTaskLeadingTrackUE.h:25
 AliAnalysisTaskLeadingTrackUE.h:26
 AliAnalysisTaskLeadingTrackUE.h:27
 AliAnalysisTaskLeadingTrackUE.h:28
 AliAnalysisTaskLeadingTrackUE.h:29
 AliAnalysisTaskLeadingTrackUE.h:30
 AliAnalysisTaskLeadingTrackUE.h:31
 AliAnalysisTaskLeadingTrackUE.h:32
 AliAnalysisTaskLeadingTrackUE.h:33
 AliAnalysisTaskLeadingTrackUE.h:34
 AliAnalysisTaskLeadingTrackUE.h:35
 AliAnalysisTaskLeadingTrackUE.h:36
 AliAnalysisTaskLeadingTrackUE.h:37
 AliAnalysisTaskLeadingTrackUE.h:38
 AliAnalysisTaskLeadingTrackUE.h:39
 AliAnalysisTaskLeadingTrackUE.h:40
 AliAnalysisTaskLeadingTrackUE.h:41
 AliAnalysisTaskLeadingTrackUE.h:42
 AliAnalysisTaskLeadingTrackUE.h:43
 AliAnalysisTaskLeadingTrackUE.h:44
 AliAnalysisTaskLeadingTrackUE.h:45
 AliAnalysisTaskLeadingTrackUE.h:46
 AliAnalysisTaskLeadingTrackUE.h:47
 AliAnalysisTaskLeadingTrackUE.h:48
 AliAnalysisTaskLeadingTrackUE.h:49
 AliAnalysisTaskLeadingTrackUE.h:50
 AliAnalysisTaskLeadingTrackUE.h:51
 AliAnalysisTaskLeadingTrackUE.h:52
 AliAnalysisTaskLeadingTrackUE.h:53
 AliAnalysisTaskLeadingTrackUE.h:54
 AliAnalysisTaskLeadingTrackUE.h:55
 AliAnalysisTaskLeadingTrackUE.h:56
 AliAnalysisTaskLeadingTrackUE.h:57
 AliAnalysisTaskLeadingTrackUE.h:58
 AliAnalysisTaskLeadingTrackUE.h:59
 AliAnalysisTaskLeadingTrackUE.h:60
 AliAnalysisTaskLeadingTrackUE.h:61
 AliAnalysisTaskLeadingTrackUE.h:62
 AliAnalysisTaskLeadingTrackUE.h:63
 AliAnalysisTaskLeadingTrackUE.h:64
 AliAnalysisTaskLeadingTrackUE.h:65
 AliAnalysisTaskLeadingTrackUE.h:66
 AliAnalysisTaskLeadingTrackUE.h:67
 AliAnalysisTaskLeadingTrackUE.h:68
 AliAnalysisTaskLeadingTrackUE.h:69
 AliAnalysisTaskLeadingTrackUE.h:70
 AliAnalysisTaskLeadingTrackUE.h:71
 AliAnalysisTaskLeadingTrackUE.h:72
 AliAnalysisTaskLeadingTrackUE.h:73
 AliAnalysisTaskLeadingTrackUE.h:74
 AliAnalysisTaskLeadingTrackUE.h:75
 AliAnalysisTaskLeadingTrackUE.h:76
 AliAnalysisTaskLeadingTrackUE.h:77
 AliAnalysisTaskLeadingTrackUE.h:78
 AliAnalysisTaskLeadingTrackUE.h:79
 AliAnalysisTaskLeadingTrackUE.h:80
 AliAnalysisTaskLeadingTrackUE.h:81
 AliAnalysisTaskLeadingTrackUE.h:82
 AliAnalysisTaskLeadingTrackUE.h:83
 AliAnalysisTaskLeadingTrackUE.h:84
 AliAnalysisTaskLeadingTrackUE.h:85
 AliAnalysisTaskLeadingTrackUE.h:86
 AliAnalysisTaskLeadingTrackUE.h:87
 AliAnalysisTaskLeadingTrackUE.h:88
 AliAnalysisTaskLeadingTrackUE.h:89
 AliAnalysisTaskLeadingTrackUE.h:90
 AliAnalysisTaskLeadingTrackUE.h:91
 AliAnalysisTaskLeadingTrackUE.h:92
 AliAnalysisTaskLeadingTrackUE.h:93
 AliAnalysisTaskLeadingTrackUE.h:94
 AliAnalysisTaskLeadingTrackUE.h:95
 AliAnalysisTaskLeadingTrackUE.h:96
 AliAnalysisTaskLeadingTrackUE.h:97
 AliAnalysisTaskLeadingTrackUE.h:98
 AliAnalysisTaskLeadingTrackUE.h:99
 AliAnalysisTaskLeadingTrackUE.h:100
 AliAnalysisTaskLeadingTrackUE.h:101
 AliAnalysisTaskLeadingTrackUE.h:102
 AliAnalysisTaskLeadingTrackUE.h:103
 AliAnalysisTaskLeadingTrackUE.h:104
 AliAnalysisTaskLeadingTrackUE.h:105
 AliAnalysisTaskLeadingTrackUE.h:106
 AliAnalysisTaskLeadingTrackUE.h:107
 AliAnalysisTaskLeadingTrackUE.h:108
 AliAnalysisTaskLeadingTrackUE.h:109
 AliAnalysisTaskLeadingTrackUE.h:110
 AliAnalysisTaskLeadingTrackUE.h:111
 AliAnalysisTaskLeadingTrackUE.h:112
 AliAnalysisTaskLeadingTrackUE.h:113
 AliAnalysisTaskLeadingTrackUE.h:114
 AliAnalysisTaskLeadingTrackUE.h:115
 AliAnalysisTaskLeadingTrackUE.h:116
 AliAnalysisTaskLeadingTrackUE.h:117
 AliAnalysisTaskLeadingTrackUE.h:118
 AliAnalysisTaskLeadingTrackUE.h:119
 AliAnalysisTaskLeadingTrackUE.h:120
 AliAnalysisTaskLeadingTrackUE.h:121
 AliAnalysisTaskLeadingTrackUE.h:122
 AliAnalysisTaskLeadingTrackUE.h:123
 AliAnalysisTaskLeadingTrackUE.h:124
 AliAnalysisTaskLeadingTrackUE.h:125
 AliAnalysisTaskLeadingTrackUE.h:126
 AliAnalysisTaskLeadingTrackUE.h:127
 AliAnalysisTaskLeadingTrackUE.h:128
 AliAnalysisTaskLeadingTrackUE.h:129
 AliAnalysisTaskLeadingTrackUE.h:130
 AliAnalysisTaskLeadingTrackUE.h:131
 AliAnalysisTaskLeadingTrackUE.h:132
 AliAnalysisTaskLeadingTrackUE.h:133
 AliAnalysisTaskLeadingTrackUE.h:134
 AliAnalysisTaskLeadingTrackUE.h:135
 AliAnalysisTaskLeadingTrackUE.h:136
 AliAnalysisTaskLeadingTrackUE.h:137
 AliAnalysisTaskLeadingTrackUE.h:138
 AliAnalysisTaskLeadingTrackUE.h:139
 AliAnalysisTaskLeadingTrackUE.h:140
 AliAnalysisTaskLeadingTrackUE.h:141
 AliAnalysisTaskLeadingTrackUE.h:142
 AliAnalysisTaskLeadingTrackUE.h:143
 AliAnalysisTaskLeadingTrackUE.h:144
 AliAnalysisTaskLeadingTrackUE.h:145