]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/FlavourJetTasks/AliAnalysisTaskFlavourJetCorrelations.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / AliAnalysisTaskFlavourJetCorrelations.h
1 #ifndef ALIANALYSISTASKFLAVOURJETCORRELATIONS_H
2 #define ALIANALYSISTASKFLAVOURJETCORRELATIONS_H
3 /**************************************************************************
4 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
5 *                                                                        *
6 * Author: The ALICE Off-line Project.                                    *
7 * Contributors are mentioned in the code where appropriate.              *
8 *                                                                        *
9 * Permission to use, copy, modify and distribute this software and its   *
10 * documentation strictly for non-commercial purposes is hereby granted   *
11 * without fee, provided that the above copyright notice appears in all   *
12 * copies and that both the copyright notice and this permission notice   *
13 * appear in the supporting documentation. The authors make no claims     *
14 * about the suitability of this software for any purpose. It is          *
15 * provided "as is" without express or implied warranty.                  *
16 **************************************************************************/
17
18 //-----------------------------------------------------------------------
19 // Author : A. Grelli,  Utrecht University
20 //          C. Bianchin, Utrecht University
21 //          X. Zhang, LBNL
22 //-----------------------------------------------------------------------
23
24
25 #include <TH2F.h>
26 #include "AliAODEvent.h"
27 #include "AliPicoTrack.h"
28 #include "AliAnalysisTaskEmcalJet.h"
29 #include "AliRhoParameter.h"
30
31 class TH3F;
32 class TParticle ;
33 class TClonesArray ;
34 class THnSparse;
35 class AliMCParticle;
36 class AliAODMCParticle;
37 class AliRDHFCuts;
38 class AliEmcalJet;
39 class AliAODRecoDecayHF;
40 class AliAODRecoCascadeHF;
41 class AliAODEvent;
42 class AliParticleContainer;
43 class AliClusterContainer;
44 class AliJetContainer;
45
46 class AliAnalysisTaskFlavourJetCorrelations : public AliAnalysisTaskEmcalJet 
47 {
48    
49 public:
50    
51    enum ECandidateType{ kD0toKpi, kDstartoKpipi };
52    
53    AliAnalysisTaskFlavourJetCorrelations();
54    AliAnalysisTaskFlavourJetCorrelations(const Char_t* name,AliRDHFCuts* cuts, ECandidateType candtype, Bool_t jetOnly=kFALSE);
55    virtual ~AliAnalysisTaskFlavourJetCorrelations();
56    
57    virtual void     UserCreateOutputObjects();
58    virtual Bool_t   Run();
59    virtual void     Terminate(Option_t *);
60    virtual void     Init();
61    virtual void     LocalInit() {Init();}
62    
63    // inizializations
64    Bool_t DefineHistoForAnalysis();  
65    
66    // set MC usage
67    void   SetMC(Bool_t theMCon) {fUseMCInfo = theMCon;}
68    Bool_t GetMC() const {return fUseMCInfo;}
69    // set usage of reconstructed tracks
70    void   SetUseReco(Bool_t reco) {fUseReco=reco;}
71    Bool_t GetUseReco() const {return fUseReco;}
72    //no setter because needed in the constructor
73    Bool_t GetJetOnlyMode() const {return fJetOnlyMode;}
74    void SetTypeDJetSelection(Int_t type) {fTypeDInJet=type;} //see IsDInJet for possibilities
75    Int_t GetTypeDJetSelection() const {return fTypeDInJet;} 
76    
77    void SetMassLimits(Double_t range, Int_t pdg);
78    void SetMassLimits(Double_t lowlimit, Double_t uplimit);
79    
80    //jet and track arrays
81    void SetJetArrayName(TString jetArrName) {fJetArrName=jetArrName;}
82    TString GetJetArrayName() const {return fJetArrName;}
83    void SetTrackArrayName(TString trackArrName) {fTrackArrName=trackArrName;}
84    TString GetTrackArrayName() const {return fTrackArrName;}
85    
86    // trigger on jet events
87    void SetTriggerOnLeadingJet(Bool_t triggerOnLeadingJet) {fLeadingJetOnly=triggerOnLeadingJet;};
88    Bool_t GetTriggerOnLeadingJet() const {return fLeadingJetOnly;}
89    
90    // resolution parameter used in this task
91    void SetRadius(Double_t r){fJetRadius=r;}
92    Double_t GetRadius() const {return fJetRadius;}
93    
94    // Array of D0 width for the Dstar
95    Bool_t SetD0WidthForDStar(Int_t nptbins,Float_t* width);
96    
97    //Bool_t   FillMCDJetInfo(AliPicoTrack *jetTrk,AliEmcalJet* jet, TClonesArray *mcArray,Double_t ptjet);
98    void FillHistogramsRecoJetCorr(AliVParticle* candidate, AliEmcalJet *jet, AliAODEvent* aodEvent);
99    void FillHistogramsD0JetCorr(AliAODRecoDecayHF* candidate, Double_t dPhi, Double_t z, Double_t ptD, Double_t ptj, Bool_t bDInEMCalAcc, Bool_t bJetInEMCalAcc, AliAODEvent* aodEvent);
100    
101    void FillHistogramsDstarJetCorr(AliAODRecoCascadeHF* dstar, Double_t dPhi,  Double_t z, Double_t ptD, Double_t ptj, Bool_t bDInEMCalAcc, Bool_t bJetInEMCalAcc);
102    void FillHistogramsMCGenDJetCorr(Double_t dPhi, Double_t z,Double_t ptD,Double_t ptjet, Bool_t bDInEMCalAcc, Bool_t bJetInEMCalAcc);
103    void SideBandBackground(AliAODRecoCascadeHF *candDstar, AliEmcalJet *jet);
104    void MCBackground(AliAODRecoDecayHF *candbg, AliEmcalJet *jet);
105    void FillMassHistograms(Double_t mass,Double_t ptD);
106    void FlagFlavour(AliEmcalJet* jet);
107    Int_t IsDzeroSideBand(AliAODRecoCascadeHF *candDstar);
108    Bool_t InEMCalAcceptance(AliVParticle *vpart);
109    
110    void LightTHnSparse(){
111       fSwitchOnSB=0;
112       fSwitchOnPhiAxis=0;
113       fSwitchOnOutOfConeAxis=0;
114    }
115    void HeavyTHnSparse(){
116       fSwitchOnSB=1;
117       fSwitchOnPhiAxis=1;
118       fSwitchOnOutOfConeAxis=1;
119    }
120    
121    void TurnOffTHnSparse() {fSwitchOnSparses=kFALSE;}
122    
123    /*
124    void SwitchOnSB(){fSwitchOnSB=1;};
125    void SwitchOffSB(){fSwitchOnSB=0;};
126    void SwitchOnPhiAxis(){fSwitchOnPhiAxis=1;}
127    void SwitchOffPhiAxis(){fSwitchOffPhiAxis=0;}
128    void SwitchOnOutOfConeAxis(){fSwitchOnOutOfConeAxis=1;}
129    void SwitchOffOutOfConeAxis(){fSwitchOnOutOfConeAxis=0;}
130    */
131    
132 private:
133    
134    AliAnalysisTaskFlavourJetCorrelations(const AliAnalysisTaskFlavourJetCorrelations &source);
135    AliAnalysisTaskFlavourJetCorrelations& operator=(const AliAnalysisTaskFlavourJetCorrelations& source); 
136    
137    Double_t Z(AliVParticle* part,AliEmcalJet* jet, Bool_t transverse=kFALSE) const;
138    Double_t Z(Double_t* p, Double_t *pj) const;
139    Double_t ZT(Double_t* p, Double_t *pj) const;
140    Float_t DeltaR(AliEmcalJet *p1, AliVParticle *p2) const;
141    Bool_t AreDaughtersInJet(AliEmcalJet *thejet, AliAODRecoDecayHF* charm, Int_t*& daughOutOfJet, AliAODTrack**& dtrks, Bool_t fillH);
142    Bool_t IsDInJet(AliEmcalJet *thejet, AliAODRecoDecayHF* charm, Bool_t fillH=kFALSE);
143    void RecalculateMomentum(Double_t* pj, const Double_t* pmissing) const;
144    
145    
146    Bool_t fUseMCInfo;             //  Use MC info
147    Bool_t fUseReco;               // use reconstructed tracks when running on MC
148    Int_t  fCandidateType;         // Dstar or D0
149    Int_t  fPDGmother;             // PDG code of D meson
150    Int_t  fNProngs;               // number of prong of the decay channel  
151    Int_t  fPDGdaughters[4];       // PDG codes of daughters
152    Float_t fSigmaD0[30];          //
153    TString fBranchName;           // AOD branch name
154    AliRDHFCuts *fCuts;            // Cuts 
155    
156    Double_t fMinMass;             // mass lower limit histogram
157    Double_t fMaxMass;             // mass upper limit histogram
158    
159    TString  fJetArrName;          // name of the jet array, taken from the task running the jet finder
160    TString fTrackArrName;         // name of the array of tracks, default "PicoTracks"
161    TString fCandArrName;          // string which correspond to the candidate type
162    Bool_t fLeadingJetOnly;        // use only the leading jet in the event to make the correlations
163    Double_t fJetRadius;           // jet radius (filled from the JetContainer)
164    TClonesArray *fCandidateArray;   //! contains candidates selected by AliRDHFCuts
165    TClonesArray *fSideBandArray;    //! contains candidates selected by AliRDHFCuts::IsSelected(kTracks), to be used for side bands (DStar case only!!)
166    Bool_t fJetOnlyMode;           //switch to simple version which analyses jets only
167    Double_t fPmissing[3];             // jet missing momentum due to D mesons out of cone
168    Double_t fPtJet;                   // pt jet, if requeted corrected with the missing pt
169    Bool_t   fIsDInJet;                // flag D meson in jet
170    Int_t    fTypeDInJet;              // way of selecting D in jets (see IsDInJet in cxx)
171    TClonesArray *fTrackArr;      //array of the tracks used in the jet finder 
172    Bool_t fSwitchOnSB;          // flag to switch off/on the SB analysis (default is off)
173    Bool_t fSwitchOnPhiAxis;     // flag to switch off/on the DeltaPhi axis in THnSparse (to be used in combination with switch OutOfCone)
174    Bool_t fSwitchOnOutOfConeAxis; //flag to switch off/on the out of cone axis in THnSparse (to be switch on if DeltaPhi is on)
175    Bool_t fSwitchOnSparses;     // turn on/off all THnSparse
176     
177    Int_t fNAxesBigSparse;      // number of axis
178    AliJetContainer      *fJetCont;      //! jets attachedto the task
179    AliParticleContainer *fTrackCont;    //! tracks attached to the jet container
180    AliClusterContainer  *fClusterCont;  //! Clusters  attached to the jet container 
181   
182    
183    // Histograms
184    TH1I* fhstat;                    //!
185    //generic jet and jet track distributions
186    TH1F* fhPtJetTrks;               //!
187    TH1F* fhPhiJetTrks;              //!
188    TH1F* fhEtaJetTrks;              //!
189    TH1F* fhEjetTrks;                //!
190    TH1F* fhPtJet;                   //!
191    TH1F* fhPhiJet;                  //!
192    TH1F* fhEtaJet;                  //!
193    TH1F* fhEjet;                    //!
194    TH1F* fhNtrArr;                  //!
195    TH1F* fhNJetPerEv;               //!
196    TH1F* fhdeltaRJetTracks;         //!
197    THnSparse* fhsJet; //available in jet only mode
198    TH2F* fhImpPar;                  //!
199    //TH2F* fhImpParB;                 //!
200    // event characteristics;        
201    TH1F* fhNDPerEvNoJet;            //!
202    TH1F* fhptDPerEvNoJet;           //!
203    TH1F* fhNJetPerEvNoD;            //!
204    TH1F* fhPtJetPerEvNoD;           //!
205    TH1F* fhVtxX;                    //!
206    TH1F* fhVtxY;                    //!
207    TH1F* fhVtxZ;                    //!
208    //D mesons                       
209    THnSparse* fhsDstandalone;       //!
210    TH2F* fhInvMassptD;              //!
211    TH2F* fhDiffSideBand;            //!
212    TH2F* fhInvMassptDbg;            //!
213    TH1F* fhPtPion;                  //!
214                                     //!
215    //histograms for checks          
216    TH1F* fhztracksinjet;            //!
217    TH1F* fhDiffPtTrPtJzNok;         //!
218    TH1F* fhDiffPtTrPtJzok;          //!
219    TH1F* fhDiffPzTrPtJzok;          //!
220    TH1F* fhDiffPzTrPtJzNok;         //!
221    TH1I* fhNtrkjzNok;               //!
222    TH1F* fhztracksinjetT;           //!
223    TH1I* fhControlDInJ;             //!
224    TH1I* fhIDddaugh   ;             //!
225    TH1I* fhIDddaughOut;             //!
226    TH1I* fhIDjetTracks;             //!
227    TH1F* fhDRdaughOut ;             //!
228    TH1F* fhzDinjet;                 //!
229    TH1F* fhmissingp;                //!
230    TH1F**fhMissPi;                  //!
231    TH1F* fhDeltaPtJet;              //!
232    TH1F* fhRelDeltaPtJet;           //!
233    // D-jet correlation histograms  
234    TH1F* fhzDT;                     //!
235    TH1F* fhDeltaRD;                 //!
236    TH3F* fhDeltaRptDptj;            //!
237    TH3F* fhDeltaRptDptjB;           //!
238    //main histograms                
239    THnSparse* fhsDphiz;             //!
240    
241
242    ClassDef(AliAnalysisTaskFlavourJetCorrelations,7); // class for charm-jet CorrelationsExch
243 };
244
245 #endif