MCmodif1 EMCal phys sel off, EMCal trigger on
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / AliAnalysisTaskFlavourJetCorrelations.h
CommitLineData
c683985a 1#ifndef ALIANALYSISTASKFLAVOURJETCORRELATIONS_H
2#define ALIANALYSISTASKFLAVOURJETCORRELATIONS_H
3/**************************************************************************
b2705b43 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**************************************************************************/
c683985a 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"
60e4f65e 29#include "AliRhoParameter.h"
c683985a 30
31class TH3F;
32class TParticle ;
33class TClonesArray ;
34class AliMCParticle;
35class AliAODMCParticle;
36class AliRDHFCuts;
37class AliEmcalJet;
38class AliAODRecoDecayHF;
39class AliAODRecoCascadeHF;
40class AliAODEvent;
41
42class AliAnalysisTaskFlavourJetCorrelations : public AliAnalysisTaskEmcalJet
43{
b2705b43 44
45public:
46
47 enum ECandidateType{ kD0toKpi, kDstartoKpipi };
48
49 AliAnalysisTaskFlavourJetCorrelations();
50 AliAnalysisTaskFlavourJetCorrelations(const Char_t* name,AliRDHFCuts* cuts, ECandidateType candtype, Bool_t jetOnly=kFALSE);
51 virtual ~AliAnalysisTaskFlavourJetCorrelations();
52
53 virtual void UserCreateOutputObjects();
54 virtual Bool_t Run();
55 virtual void Terminate(Option_t *);
56 virtual void Init();
57 virtual void LocalInit() {Init();}
58
59 // inizializations
60 Bool_t DefineHistoForAnalysis();
61
62 // set MC usage
63 void SetMC(Bool_t theMCon) {fUseMCInfo = theMCon;}
64 Bool_t GetMC() const {return fUseMCInfo;}
65 // set usage of reconstructed tracks
66 void SetUseReco(Bool_t reco) {fUseReco=reco;}
67 Bool_t GetUseReco() const {return fUseReco;}
68 //no setter because needed in the constructor
69 Bool_t GetJetOnlyMode() const {return fJetOnlyMode;}
70 void SetTypeDJetSelection(Int_t type) {fTypeDInJet=type;} //see IsDInJet for possibilities
71 Int_t GetTypeDJetSelection() const {return fTypeDInJet;}
72
73 void SetMassLimits(Double_t range, Int_t pdg);
74 void SetMassLimits(Double_t lowlimit, Double_t uplimit);
75
76 //jet reconstruction algorithm
77 void SetJetArrayName(TString jetArrName) {fJetArrName=jetArrName;};
78 TString GetJetArrayName() const {return fJetArrName;};
79
80 // trigger on jet events
81 void SetTriggerOnLeadingJet(Bool_t triggerOnLeadingJet) {fLeadingJetOnly=triggerOnLeadingJet;};
82 Bool_t GetTriggerOnLeadingJet() const {return fLeadingJetOnly;}
83
84
85 // Array of D0 width for the Dstar
86 Bool_t SetD0WidthForDStar(Int_t nptbins,Float_t* width);
87
88 //Bool_t FillMCDJetInfo(AliPicoTrack *jetTrk,AliEmcalJet* jet, TClonesArray *mcArray,Double_t ptjet);
89 void FillHistogramsRecoJetCorr(AliVParticle* candidate, AliEmcalJet *jet, AliAODEvent* aodEvent);
ad6abcae 90 void FillHistogramsD0JetCorr(AliAODRecoDecayHF* candidate, Double_t dPhi, Double_t z, Double_t ptD, Double_t ptj, Bool_t bDInEMCalAcc, Bool_t bJetInEMCalAcc, AliAODEvent* aodEvent);
b2705b43 91
ad6abcae 92 void FillHistogramsDstarJetCorr(AliAODRecoCascadeHF* dstar, Double_t dPhi, Double_t z, Double_t ptD, Double_t ptj, Bool_t bDInEMCalAcc, Bool_t bJetInEMCalAcc);
93 void FillHistogramsMCGenDJetCorr(Double_t dPhi, Double_t z,Double_t ptD,Double_t ptjet, Bool_t bDInEMCalAcc, Bool_t bJetInEMCalAcc);
b2705b43 94 void SideBandBackground(AliAODRecoCascadeHF *candDstar, AliEmcalJet *jet);
a1a0a01b 95 void MCBackground(AliAODRecoDecayHF *candbg, AliEmcalJet *jet);
b2705b43 96 void FillMassHistograms(Double_t mass,Double_t ptD);
97 void FlagFlavour(AliEmcalJet* jet);
98 Int_t IsDzeroSideBand(AliAODRecoCascadeHF *candDstar);
ce11164d 99 Bool_t InEMCalAcceptance(AliVParticle *vpart);
ad6abcae 100
101 void LightTHnSparse(){
102 fSwitchOnSB=0;
103 fSwitchOnPhiAxis=0;
104 fSwitchOnOutOfConeAxis=0;
105 }
106 void HeavyTHnSparse(){
107 fSwitchOnSB=1;
108 fSwitchOnPhiAxis=1;
109 fSwitchOnOutOfConeAxis=1;
110 }
111
112 void TurnOffTHnSparse() {fSwitchOnSparses=kFALSE;}
113
114 /*
115 void SwitchOnSB(){fSwitchOnSB=1;};
116 void SwitchOffSB(){fSwitchOnSB=0;};
117 void SwitchOnPhiAxis(){fSwitchOnPhiAxis=1;}
118 void SwitchOffPhiAxis(){fSwitchOffPhiAxis=0;}
119 void SwitchOnOutOfConeAxis(){fSwitchOnOutOfConeAxis=1;}
120 void SwitchOffOutOfConeAxis(){fSwitchOnOutOfConeAxis=0;}
121 */
122
b2705b43 123private:
124
125 AliAnalysisTaskFlavourJetCorrelations(const AliAnalysisTaskFlavourJetCorrelations &source);
126 AliAnalysisTaskFlavourJetCorrelations& operator=(const AliAnalysisTaskFlavourJetCorrelations& source);
127
09fce7b3 128 Double_t Z(AliVParticle* part,AliEmcalJet* jet, Bool_t transverse=kFALSE) const;
129 Double_t Z(Double_t* p, Double_t *pj) const;
130 Double_t ZT(Double_t* p, Double_t *pj) const;
b2705b43 131 Float_t DeltaR(AliVParticle *p1, AliVParticle *p2) const;
132 Bool_t AreDaughtersInJet(AliEmcalJet *thejet, AliAODRecoDecayHF* charm, Int_t*& daughOutOfJet, AliAODTrack**& dtrks, Bool_t fillH);
133 Bool_t IsDInJet(AliEmcalJet *thejet, AliAODRecoDecayHF* charm, Bool_t fillH=kFALSE);
134 void RecalculateMomentum(Double_t* pj, const Double_t* pmissing) const;
135
136
137 Bool_t fUseMCInfo; // Use MC info
138 Bool_t fUseReco; // use reconstructed tracks when running on MC
139 Int_t fCandidateType; // Dstar or D0
140 Int_t fPDGmother; // PDG code of D meson
141 Int_t fNProngs; // number of prong of the decay channel
142 Int_t fPDGdaughters[4]; // PDG codes of daughters
143 Float_t fSigmaD0[30]; //
144 TString fBranchName; // AOD branch name
145 AliRDHFCuts *fCuts; // Cuts
146
147 Double_t fMinMass; // mass lower limit histogram
148 Double_t fMaxMass; // mass upper limit histogram
149
150 TString fJetArrName; // name of the jet array, taken from the task running the jet finder
151 TString fCandArrName; // string which correspond to the candidate type
152 Bool_t fLeadingJetOnly; // use only the leading jet in the event to make the correlations
153 Double_t fJetRadius; // jet radius (filled from the JetContainer)
154 TClonesArray *fCandidateArray; //! contains candidates selected by AliRDHFCuts
155 TClonesArray *fSideBandArray; //! contains candidates selected by AliRDHFCuts::IsSelected(kTracks), to be used for side bands (DStar case only!!)
156 Bool_t fJetOnlyMode; //switch to simple version which analyses jets only
157 Double_t fPmissing[3]; // jet missing momentum due to D mesons out of cone
158 Double_t fPtJet; // pt jet, if requeted corrected with the missing pt
159 Bool_t fIsDInJet; // flag D meson in jet
160 Int_t fTypeDInJet; // way of selecting D in jets (see IsDInJet in cxx)
161 TClonesArray *fTrackArr; //array of the tracks used in the jet finder
ad6abcae 162 Bool_t fSwitchOnSB; // flag to switch off/on the SB analysis (default is off)
163 Bool_t fSwitchOnPhiAxis; // flag to switch off/on the DeltaPhi axis in THnSparse (to be used in combination with switch OutOfCone)
164 Bool_t fSwitchOnOutOfConeAxis; //flag to switch off/on the out of cone axis in THnSparse (to be switch on if DeltaPhi is on)
165 Bool_t fSwitchOnSparses; // turn on/off all THnSparse
166
167 Int_t fNAxesBigSparse; // number of axis
168
169 ClassDef(AliAnalysisTaskFlavourJetCorrelations,6); // class for charm-jet CorrelationsExch
c683985a 170};
171
172#endif