Adding the task to add additional track or MC branches to the AOD, FastEmbedding...
[u/mrichter/AliRoot.git] / JETAN / AliAnalysisTaskFastEmbedding.h
1 #ifndef ALIANALYSISTASKFASTEMBEDDING_H
2 #define ALIANALYSISTASKFASTEMBEDDING_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 #include "AliAnalysisTaskSE.h"
10
11 class AliAODEvent;
12 class TTree;
13 class TFile;
14 class TChain;
15 class TObjArray;
16 class TObjString;
17 class TRandom3;
18 class TH1F;
19 class TH2F;
20
21 class AliAnalysisTaskFastEmbedding : public AliAnalysisTaskSE {
22
23     public:
24         
25         AliAnalysisTaskFastEmbedding();
26         AliAnalysisTaskFastEmbedding(const char *name);
27         AliAnalysisTaskFastEmbedding(const AliAnalysisTaskFastEmbedding &copy);
28         AliAnalysisTaskFastEmbedding& operator=(const AliAnalysisTaskFastEmbedding &o);
29         virtual ~AliAnalysisTaskFastEmbedding();
30
31         virtual void UserCreateOutputObjects();
32         virtual void Init();
33         virtual void UserExec(Option_t*);
34         virtual void Terminate(Option_t */*option*/);
35
36         void SetAODPath(TString path) {fAODPath = path;}
37         void SetArrayOfAODPaths(TObjArray* arr) {fAODPathArray = arr;}
38         void SetTrackBranch(TString name) {fTrackBranch = name;}
39         void SetMCparticlesBranch(TString name) {fMCparticlesBranch = name;}
40
41         void SetNEntriesPerJob(Int_t n) {fNEntriesPerJob = n;}
42         Int_t GetNEntriesPerJob() { return fNEntriesPerJob;}
43
44         void SetEmbedMode(Int_t m) {fEmbedMode = m;}
45         Int_t GetEmbedMode() {return fEmbedMode;} 
46         void SetEvtSelecMode(Int_t s) {fEvtSelecMode = s;}
47         Int_t GetEvtSelecMode() {return fEvtSelecMode;}
48
49         void SetEvtSelJetPtRange(Float_t minPt, Float_t maxPt) {fEvtSelMinJetPt = minPt; fEvtSelMaxJetPt = maxPt;}
50         
51         void SetToyNumberOfTrackRange(Int_t minN = 1, Int_t maxN = 1){ fToyMinNbOfTracks = minN, fToyMaxNbOfTracks = maxN; }
52         void SetToyTrackRanges(Double_t minPt = 50., Double_t maxPt = 50., Double_t ptDistr=0,
53                 Double_t minEta = -.5, Double_t maxEta = .5,
54                 Double_t minPhi = 0., Double_t maxPhi = 2*TMath::Pi())
55                 {
56                 fToyMinTrackPt = minPt; fToyMaxTrackPt = maxPt; fToyDistributionTrackPt = ptDistr;
57                 fToyMinTrackEta = minEta; fToyMaxTrackEta = maxEta;
58                 fToyMinTrackPhi = minPhi; fToyMaxTrackPhi = maxPhi;}
59         void SetToyFilterMap(UInt_t f) {fToyFilterMap = f;}
60
61
62         // embedding modes
63         enum {kAODFull=0, kAODJetTracks, kAODJet4Mom, kToyTracks};
64         // event selection from AOD
65         enum {kEventsAll=0, kEventsJetPt};
66
67
68     private:
69
70         AliAODEvent* fAODout;    //! AOD out
71         AliAODEvent* fAODevent;  //! AOD in
72         TTree* fAODtree;         //! AODin tree
73         TFile* fAODfile;         //! AODin file
74         TRandom3* rndm;           //! random nummer generator
75
76         TObjArray* fAODPathArray;  // array of paths of AOD in file
77         TString fAODPath;  // path of AOD in file
78
79         TString fTrackBranch; // name of branch for extra tracks in AOD out
80         TString fMCparticlesBranch; // name of branch for extra mcparticles in AOD out
81
82         Int_t fEntry; // entry of extra AOD
83         Int_t fJobId; // (sub-)job counter
84         Int_t fNEntriesPerJob; // number of entries of extra AOD used per (sub-)job
85
86         Int_t fEmbedMode;
87         Int_t fEvtSelecMode;
88
89         // event selection from AOD
90         Float_t fEvtSelMinJetPt;       // minimum pt of the leading jet
91         Float_t fEvtSelMaxJetPt;       // maximum pt of the leading jet
92         // ... todo: eta, phi, ...
93         
94          
95         // settings for toy "track generation"
96         Int_t    fToyMinNbOfTracks;             // minimum nb. of tracks per event
97         Int_t    fToyMaxNbOfTracks;             // maximum nb. of tracks per event
98         Double_t fToyMinTrackPt;                // minimum track pT
99         Double_t fToyMaxTrackPt;                // maximum track pT
100         Double_t fToyDistributionTrackPt;       // distribution of track pt
101         Double_t fToyMinTrackEta;               // minimum eta of tracks
102         Double_t fToyMaxTrackEta;               // maximum eta of tracks
103         Double_t fToyMinTrackPhi;               // minimum phi of tracks
104         Double_t fToyMaxTrackPhi;               // maximum phi of tracks
105         UInt_t fToyFilterMap;                   // filter map of tracks
106
107
108         // qa histos
109         TList *fHistList;          //  list of histograms
110         TH1F  *fh1TrackPt;         //! track pt
111         TH2F  *fh2TrackEtaPhi;     //! track eta-phi
112         TH1F  *fh1TrackN;          //! nb. of tracks
113         TH1F  *fh1MCTrackPt;       //! MC track pt
114         TH2F  *fh2MCTrackEtaPhi;   //! MC track eta-phi
115         TH1F  *fh1MCTrackN;        //! nb. of MC tracks
116
117         // NEEDS TO BE TESTED
118         //Int_t GetJobID();    // get job id (i.e. aliencounter on the GRID)  // not tested yet
119
120
121         ClassDef(AliAnalysisTaskFastEmbedding, 1);
122 };
123
124 #endif
125