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

// **************************************
// task used for background subtration of all jets found with clustering algos
// *******************************************

#include  "AliAnalysisTaskSE.h"
#include  "TObjString.h"
#include  "TString.h"


////////////////
class AliJetHeader;
class AliESDEvent;
class AliAODEvent;
class AliAODExtension;
class AliAODJet;
class AliAODJetEventBackground;
class AliJetFinder;
class TList;
class TChain;
class TH2F;
class TH1F;
class TH3F;
class TProfile;
class TRandom3;
class TRefArray;
class TObjArray;

class AliAnalysisTaskJetBackgroundSubtract : public AliAnalysisTaskSE
{
 public:
    AliAnalysisTaskJetBackgroundSubtract();
    AliAnalysisTaskJetBackgroundSubtract(const char* name);
    virtual ~AliAnalysisTaskJetBackgroundSubtract();
    // Implementation of interface methods
    virtual void UserCreateOutputObjects();
    virtual void Init();
    virtual void LocalInit() { Init(); }
    virtual void UserExec(Option_t *option);
    virtual void Terminate(Option_t *option);
    virtual Bool_t Notify();

    // Task specific methods...
    virtual void   AddJetBranch(const char* c); 
    virtual void   SetSubtractionMethod(Int_t i){fSubtraction = i;}
    virtual Int_t  GetSubtractionMethod(){return fSubtraction;}
    virtual void   SetKeepJets(Bool_t b = kTRUE){fKeepJets = b;}
    virtual void   SetExclude2Leading(Bool_t b=kTRUE){fExclude2Leading=b;}
    virtual void   SetBackgroundBranch(char* c){fBackgroundBranch = c;}  
    virtual void   SetNonStdOutputFile(char* c){fNonStdFile = c;}  
    virtual void   SetToReplace(char* c){fReplaceString1 = c;}  
    const char*    GetToReplace(){return fReplaceString1.Data();}  
    virtual void   SetReplacementMask(char* c){fReplaceString2 = c;}  
    const char*    GetReplacementMask(){return fReplaceString2.Data();}  
   
    enum {kNoSubtract = 0,kArea,k4Area,kRhoRecalc,kRhoRC};
 
 private:

    

    AliAnalysisTaskJetBackgroundSubtract(const AliAnalysisTaskJetBackgroundSubtract&);
    AliAnalysisTaskJetBackgroundSubtract& operator=(const AliAnalysisTaskJetBackgroundSubtract&);
    Bool_t RescaleJetMomentum(AliAODJet *jet,Float_t pT);
    Bool_t RescaleJet4vector(AliAODJet *jet,TLorentzVector backgroundv);
    Int_t  MultFromJetRefs(TClonesArray* jets);
    Double_t RecalcRho(TClonesArray* fbkgclusters,Double_t meanarea);
    Double_t RhoRC(TClonesArray* fbkgclustersRC);
    void ResetOutJets();
    void PrintAODContents();

    AliAODEvent     *fAODOut;                // ! where we take the jets from and they are modified
    AliAODEvent     *fAODIn;                 // ! where we may take the background from, only in case we do not find it in the output
    AliAODExtension *fAODExtension;          // ! where we take the jets from can be input or output AOD
    TObjArray       *fJBArray;               // Array that stores the name of all jet branches to be subtracted   
    TString         fBackgroundBranch;       // name of the branch used for background subtraction
    //
    TString         fNonStdFile;        // The optional name of the output file the non-std brnach is written to
    TString         fReplaceString1;     // To construct the new output name  
    TString         fReplaceString2;     // To construct the new output name   
    Int_t           fSubtraction;       // Parameter for subtraction mode 
    Bool_t          fKeepJets;          // keeps the jets with negative p_t rescaled to 0.1 GeV
    Bool_t          fExclude2Leading;     //background excluding 2 leading jets, background 3 in AliAnalysisTaskJetCluster.cxx
    TList *fInJetArrayList; //! transient list to make ease the handling of input jets
    TList *fOutJetArrayList; //! transient list to make ease the reset of output jets
  
    TH2F*         fh2CentvsRho;   //! centrality vs background density  
    TH2F*         fh2CentvsSigma;   //! centrality vs background sigma  
    TH2F*         fh2MultvsRho;   //! centrality vs background density  
    TH2F*         fh2MultvsSigma;   //! centrality vs background sigma  
    TH2F*         fh2ShiftEta;   //! extended correction Eta
    TH2F*         fh2ShiftPhi;   //! extended correction Phi
    TH2F*         fh2ShiftEtaLeading;   //! extended correction Eta leading jet
    TH2F*         fh2ShiftPhiLeading;   //! extended correction Phi leading jet

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