Update responsibles for MCH, MTR, HMP
[u/mrichter/AliRoot.git] / JETAN / AliAnalysisTaskJetBackgroundSubtract.h
1 #ifndef ALIANALYSISTASKJETBACKGROUNDSUBTRACT_H
2 #define ALIANALYSISTASKJETBACKGROUNDSUBTRACT_H
3  
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // **************************************
8 // task used for background subtration of all jets found with clustering algos
9 // *******************************************
10
11 #include  "AliAnalysisTaskSE.h"
12 #include  "TObjString.h"
13 #include  "TString.h"
14
15
16 ////////////////
17 class AliJetHeader;
18 class AliESDEvent;
19 class AliAODEvent;
20 class AliAODExtension;
21 class AliAODJet;
22 class AliAODJetEventBackground;
23 class AliJetFinder;
24 class TList;
25 class TChain;
26 class TH2F;
27 class TH1F;
28 class TH3F;
29 class TProfile;
30 class TRandom3;
31 class TRefArray;
32 class TObjArray;
33
34 class AliAnalysisTaskJetBackgroundSubtract : public AliAnalysisTaskSE
35 {
36  public:
37     AliAnalysisTaskJetBackgroundSubtract();
38     AliAnalysisTaskJetBackgroundSubtract(const char* name);
39     virtual ~AliAnalysisTaskJetBackgroundSubtract();
40     // Implementation of interface methods
41     virtual void UserCreateOutputObjects();
42     virtual void Init();
43     virtual void LocalInit() { Init(); }
44     virtual void UserExec(Option_t *option);
45     virtual void Terminate(Option_t *option);
46     virtual Bool_t Notify();
47
48     // Task specific methods...
49     virtual void   AddJetBranch(const char* c); 
50     virtual void   SetSubtractionMethod(Int_t i){fSubtraction = i;}
51     virtual Int_t  GetSubtractionMethod(){return fSubtraction;}
52     virtual void   SetKeepJets(Bool_t b = kTRUE){fKeepJets = b;}
53     virtual void   SetExclude2Leading(Bool_t b=kTRUE){fExclude2Leading=b;}
54     virtual void   SetBackgroundBranch(char* c){fBackgroundBranch = c;}  
55     virtual void   SetNonStdOutputFile(char* c){fNonStdFile = c;}  
56     virtual void   SetToReplace(char* c){fReplaceString1 = c;}  
57     const char*    GetToReplace(){return fReplaceString1.Data();}  
58     virtual void   SetReplacementMask(char* c){fReplaceString2 = c;}  
59     const char*    GetReplacementMask(){return fReplaceString2.Data();}  
60    
61     enum {kNoSubtract = 0,kArea,k4Area,kRhoRecalc,kRhoRC};
62  
63  private:
64
65     
66
67     AliAnalysisTaskJetBackgroundSubtract(const AliAnalysisTaskJetBackgroundSubtract&);
68     AliAnalysisTaskJetBackgroundSubtract& operator=(const AliAnalysisTaskJetBackgroundSubtract&);
69     Bool_t RescaleJetMomentum(AliAODJet *jet,Float_t pT);
70     Bool_t RescaleJet4vector(AliAODJet *jet,TLorentzVector backgroundv);
71     Int_t  MultFromJetRefs(TClonesArray* jets);
72     Double_t RecalcRho(TClonesArray* fbkgclusters,Double_t meanarea);
73     Double_t RhoRC(TClonesArray* fbkgclustersRC);
74     void ResetOutJets();
75     void PrintAODContents();
76
77     AliAODEvent     *fAODOut;                // ! where we take the jets from and they are modified
78     AliAODEvent     *fAODIn;                 // ! where we may take the background from, only in case we do not find it in the output
79     AliAODExtension *fAODExtension;          // ! where we take the jets from can be input or output AOD
80     TObjArray       *fJBArray;               // Array that stores the name of all jet branches to be subtracted   
81     TString         fBackgroundBranch;       // name of the branch used for background subtraction
82     //
83     TString         fNonStdFile;        // The optional name of the output file the non-std brnach is written to
84     TString         fReplaceString1;     // To construct the new output name  
85     TString         fReplaceString2;     // To construct the new output name   
86     Int_t           fSubtraction;       // Parameter for subtraction mode 
87     Bool_t          fKeepJets;          // keeps the jets with negative p_t rescaled to 0.1 GeV
88     Bool_t          fExclude2Leading;     //background excluding 2 leading jets, background 3 in AliAnalysisTaskJetCluster.cxx
89     TList *fInJetArrayList; //! transient list to make ease the handling of input jets
90     TList *fOutJetArrayList; //! transient list to make ease the reset of output jets
91   
92     TH2F*         fh2CentvsRho;   //! centrality vs background density  
93     TH2F*         fh2CentvsSigma;   //! centrality vs background sigma  
94     TH2F*         fh2MultvsRho;   //! centrality vs background density  
95     TH2F*         fh2MultvsSigma;   //! centrality vs background sigma  
96     TH2F*         fh2ShiftEta;   //! extended correction Eta
97     TH2F*         fh2ShiftPhi;   //! extended correction Phi
98     TH2F*         fh2ShiftEtaLeading;   //! extended correction Eta leading jet
99     TH2F*         fh2ShiftPhiLeading;   //! extended correction Phi leading jet
100
101  
102     TList *fHistList; //! the histograms output list
103    
104     ClassDef(AliAnalysisTaskJetBackgroundSubtract, 7) 
105 };
106  
107 #endif