Fixes to track selection for embedding in cluster task (Bastian), Do no select events...
[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 #include  "TObjArray.h"
15
16
17 ////////////////
18 class AliJetHeader;
19 class AliESDEvent;
20 class AliAODEvent;
21 class AliAODExtension;
22 class AliAODJet;
23 class AliAODJetEventBackground;
24 class AliJetFinder;
25 class TList;
26 class TChain;
27 class TH2F;
28 class TH1F;
29 class TH3F;
30 class TProfile;
31 class TRandom3;
32 class TRefArray;
33
34
35 class AliAnalysisTaskJetBackgroundSubtract : public AliAnalysisTaskSE
36 {
37  public:
38     AliAnalysisTaskJetBackgroundSubtract();
39     AliAnalysisTaskJetBackgroundSubtract(const char* name);
40     virtual ~AliAnalysisTaskJetBackgroundSubtract();
41     // Implementation of interface methods
42     virtual void UserCreateOutputObjects();
43     virtual void Init();
44     virtual void LocalInit() { Init(); }
45     virtual void UserExec(Option_t *option);
46     virtual void Terminate(Option_t *option);
47     virtual Bool_t Notify();
48
49     // Task specific methods...
50     virtual void   AddJetBranch(const char* c){fJBArray->Add(new TObjString(c));}
51     virtual void   SetSubtractionMethod(Int_t i){fSubtraction = i;}
52     virtual Int_t  GetSubtractionMethod(){return fSubtraction;}
53     virtual void   SetBackgroundBranch(char* c){fBackgroundBranch = c;}  
54     virtual void   SetNonStdOutputFile(char* c){fNonStdFile = c;}  
55     virtual void   SetToReplace(char* c){fReplaceString1 = c;}  
56     const char*    GetToReplace(){return fReplaceString1.Data();}  
57     virtual void   SetReplacementMask(char* c){fReplaceString2 = c;}  
58     const char*    GetReplacementMask(){return fReplaceString2.Data();}  
59    
60     enum {kNoSubtract = 0,kArea,k4Area,kRhoRecalc,kRhoRC};
61  
62  private:
63
64     
65
66     AliAnalysisTaskJetBackgroundSubtract(const AliAnalysisTaskJetBackgroundSubtract&);
67     AliAnalysisTaskJetBackgroundSubtract& operator=(const AliAnalysisTaskJetBackgroundSubtract&);
68     Bool_t RescaleJetMomentum(AliAODJet *jet,Float_t pT);
69     Bool_t RescaleJet4vector(AliAODJet *jet,TLorentzVector backgroundv);
70     Int_t  MultFromJetRefs(TClonesArray* jets);
71     Double_t RecalcRho(TClonesArray* fbkgclusters,Double_t meanarea);
72     Double_t RhoRC(TClonesArray* fbkgclustersRC);
73     void ResetOutJets();
74     void PrintAODContents();
75
76     AliAODEvent     *fAODOut;                // ! where we take the jets from and they are modified
77     AliAODEvent     *fAODIn;                 // ! where we may take the background from, only in case we do not find it in the output
78     AliAODExtension *fAODExtension;          // ! where we take the jets from can be input or output AOD
79     TObjArray       *fJBArray;               // Array that stores the name of all jet branches to be subtracted   
80     TString         fBackgroundBranch;       // name of the branch used for background subtraction
81     //
82     TString         fNonStdFile;        // The optional name of the output file the non-std brnach is written to
83     TString         fReplaceString1;     // To construct the new output name  
84     TString         fReplaceString2;     // To construct the new output name   
85     Int_t           fSubtraction;       // Parameter for subtraction mode 
86     TList *fInJetArrayList; //! transient list to make ease the handling of input jets
87     TList *fOutJetArrayList; //! transient list to make ease the reset of output jets
88
89     TH2F*         fh2CentvsRho;   //! centrality vs background density  
90     TH2F*         fh2CentvsSigma;   //! centrality vs background sigma  
91     TH2F*         fh2MultvsRho;   //! centrality vs background density  
92     TH2F*         fh2MultvsSigma;   //! centrality vs background sigma  
93     TH2F*         fh2ShiftEta;   //! extended correction Eta
94     TH2F*         fh2ShiftPhi;   //! extended correction Phi
95     TH2F*         fh2ShiftEtaLeading;   //! extended correction Eta leading jet
96     TH2F*         fh2ShiftPhiLeading;   //! extended correction Phi leading jet
97
98  
99     TList *fHistList; //! the histograms output list
100    
101     ClassDef(AliAnalysisTaskJetBackgroundSubtract, 5) 
102 };
103  
104 #endif