impoved num precision
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskUE.h
CommitLineData
f3050824 1#ifndef ALIANALYSISTASKUE_H
2#define ALIANALYSISTASKUE_H
6ef5bfa4 3
f3050824 4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6ef5bfa4 6
f3050824 7#include "AliAnalysisTaskSE.h"
8
9class AliESDEvent;
10class AliAODEvent;
11class TH1F;
12class TH2F;
13class TH1I;
623ed0a0 14class TProfile;
f3050824 15class TVector3;
6ef5bfa4 16class TTree;
f3050824 17
6ef5bfa4 18class AliAnalysisTaskUE : public AliAnalysisTask
19 {
20 public:
21 AliAnalysisTaskUE(const char* name="AliAnalysisTaskUE");
22 virtual ~AliAnalysisTaskUE() {;}
23
1e996f55 24 // Implementation of interace methods
623ed0a0 25 virtual Bool_t Notify();
6ef5bfa4 26 virtual void ConnectInputData(Option_t *);
27 virtual void CreateOutputObjects();
28 virtual void Exec(Option_t *option);
29 virtual void Terminate(Option_t *);
30
31 // Setters
32 virtual void SetDebugLevel( Int_t level ) { fDebug = level; }
33 void SetPtRangeInHist( Int_t bin, Double_t min, Double_t max ) {
34 fBinsPtInHist = bin;
35 fMinJetPtInHist = min;
36 fMaxJetPtInHist = max;
37 }
623ed0a0 38 // Setters for MC
39 void SetUseMCBranch(){fUseMCParticleBranch = kTRUE;}
40 void SetConstrainDistance(Bool_t val1, Double_t val2){ fMinDistance = val2; fConstrainDistance = val1;}
41 void SetSimulateChJetPt(){fSimulateChJetPt = kTRUE;}
42 void SetUseAODMCParticle(){fUseAliStack = kFALSE;}
6ef5bfa4 43
44 void SetAnaTopology( Int_t val ) { fAnaType = val; }
45 void SetRegionType( Int_t val ) { fRegionType = val; }
46 void SetUseChPartJet( Int_t val ) { fUseChPartJet = val; }
47 void SetPtSumOrdering( Bool_t val ) { fOrdering = val; }
48 void SetFilterBit( UInt_t val ) { fFilterBit = val; }
49 void SetJetsOnFly( Bool_t val ) { fJetsOnFly = val; }
50 void SetConeRadius( Double_t val ) { fConeRadius = val; }
623ed0a0 51 void SetConePosition(Int_t val) { fConePosition= val; }
6ef5bfa4 52 void SetUseSingleCharge() { fUseSingleCharge = kTRUE; }
53 void SetUseNegativeChargeType() { fUsePositiveCharge = kFALSE; }
54 // Jet cuts
623ed0a0 55 void SetPtMinChPartJet( Double_t val ) { fChJetPtMin = val; }
6ef5bfa4 56 void SetJet1EtaCut( Double_t val ) { fJet1EtaCut = val; }
57 void SetJet2DeltaPhiCut( Double_t val ) { fJet2DeltaPhiCut = val; }
58 void SetJet2RatioPtCut( Double_t val ) { fJet2RatioPtCut = val; }
59 void SetJet3PtCut( Double_t val ) { fJet3PtCut = val; }
60 // track cuts
61 void SetTrackPtCut( Double_t val ) { fTrackPtCut = val; }
62 void SetTrackEtaCut( Double_t val ) { fTrackEtaCut = val; }
63
64 private:
65 AliAnalysisTaskUE(const AliAnalysisTaskUE &det);
66 AliAnalysisTaskUE& operator=(const AliAnalysisTaskUE &det);
67
68 void AnalyseUE();
69 Int_t IsTrackInsideRegion(TVector3 *jetVect, TVector3 *partVect);
70 void CreateHistos();
71 void SetRegionArea(TVector3 *jetVect);
72 void FillSumPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
73 void FillAvePartPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
74 void FillMultRegion( Double_t leadingE, Double_t nTrackPtmax, Double_t nTrackPtmin, Double_t ptMin );
75 TObjArray* FindChargedParticleJets();
76 void QSortTracks(TObjArray &a, Int_t first, Int_t last);
77 void WriteSettings();
78
79 Int_t fDebug; // Debug flag
80 AliAODEvent* fAOD; //! AOD Event
81 AliAODEvent* fAODjets; //! AOD Event for reconstructed on the fly (see ConnectInputData()
82 TList* fListOfHistos; // Output list of histograms
83
84 // Config
85 Int_t fBinsPtInHist; // # bins for Pt histos range
86 Double_t fMinJetPtInHist; // min Jet Pt value for histo range
87 Double_t fMaxJetPtInHist; // max Jet Pt value for histo range
88
623ed0a0 89 // For MC
90 Bool_t fUseMCParticleBranch; // Run Over mcparticles branch in AOD
91 Bool_t fConstrainDistance; // Constrain Distance between rec jet and pyth
92 Double_t fMinDistance; // Minimum distance between rec jet and pyth
93 Bool_t fSimulateChJetPt; // Naive simulation of charged jet Pt from original Jet in MC Header
94 Bool_t fUseAliStack; // Use AliSatck for particle info otherwise "mcparticles" branch in AOD
95
6ef5bfa4 96 // Cuts
97 Int_t fAnaType; // Analysis type on jet topology:
98 // 1=inclusive (default)
99 // 2=back to back inclusive
100 // 3=back to back exclusive
101 // 4=gama jet (back to back) ???
102 // Minimum bias
103 // 31 = Semi jet (charged leading particle jets)
104 // 32 = Random jetcone ?
105 // 33 = Swiss chees ?
106
107 // UE analysis is conducted in different type of regions
108 // Transverse are those like defined in: R. Field Acta Physica Polonica B. Vol 36 No. 2 pg 167 (2005)
109 // Cone regions like defined in: Phys. Rev. D 70, 072002 (2004)
110 Int_t fRegionType; // 1 = transverse regions (default)
111 // 2 = cone regions
112 Double_t fConeRadius; // if selected Cone-like region type, set Radius (=0.7 default)
623ed0a0 113 Int_t fConePosition; // This parameter set how will cone center in transversal zone will be set
114 // 1 : To be used in any jet topology (default value)
115 // eta_cone = eta_leadingjet
116 // phi_cone = phi_leadingjet + - 90
117 // 2 : To be used in multiple jet topology (code will cry otherwise)
118 // eta_cone = (eta_leadingjet + eta_subleadingjet)/2
119 // phi_cone = phi_leadingjet + - 90
6ef5bfa4 120 Double_t fAreaReg; // Area of the region To be used as normalization factor when filling histograms
121 // if fRegionType = 2 not always it is included within eta range
122 Bool_t fUseChPartJet; // Use "Charged Particle Jet" instead of jets from AOD
123 // see FindChargedParticleJets()
124
125 // Theoreticians ask for tools charge-aware
126 // especially those which are related to multiplicity and MC-tunings
127 // see arXiv:hep-ph/0507008v3
128 Bool_t fUseSingleCharge; //Make analysis for a single type of charge (=kFALSE default)
129 Bool_t fUsePositiveCharge; //If Single type of charge used then set which one (=kTRUE default positive)
130
131 Int_t fOrdering; // Pt and multiplicity summation ordering:
132 // 1=CDF-like -independent sorting according quantity to be scored: Double sorting- (default)
133 // if Pt summation will be scored take Pt minimum between both zones and
134 // fill Pt Max. and Min. histog. accordingly
135 // if Multiplicity summation will be scored take Mult. minimum between both zones and
136 // fill Mult Max and Min histog. accordingly
137 // Bib:
138 // 2=Marchesini-like (Only Pt sorting: Single sorting)
139 // sort only according Pt summation scored, find minimum between both zones and
140 // fill Pt and Multiplicity Max and Min summation histog. following only this criterium
141 // Bib: Phys. Rev. D 38, 3419 (1988)
142 // 3=User Selection sorting (NOTE: USER must implement it within cxx)
143
144 UInt_t fFilterBit; // Select tracks from an specific track cut (default 0xFF all track selected)
145 Bool_t fJetsOnFly; // if jets are reconstructed on the fly from AOD tracks (see ConnectInputData() )
146
623ed0a0 147 // Jet cuts
148 Double_t fChJetPtMin; // Min Pt for charged Particle Jet
6ef5bfa4 149 Double_t fJet1EtaCut; // |jet1 eta| < fJet1EtaCut (fAnaType = 1,2,3)
150 Double_t fJet2DeltaPhiCut; // |Jet1.Phi - Jet2.Phi| < fJet2DeltaPhiCut (fAnaType = 2,3)
151 Double_t fJet2RatioPtCut; // Jet2.Pt/Jet1Pt > fJet2RatioPtCut (fAnaType = 2,3)
152 Double_t fJet3PtCut; // Jet3.Pt < fJet3PtCut (fAnaType = 3)
153 // track cuts
154 Double_t fTrackPtCut; // Pt cut of tracks in the regions
155 Double_t fTrackEtaCut; // Eta cut on tracks in the regions (fRegionType=1)
519378fb 156 Double_t fAvgTrials; // average trials used to fill the fh1Triasl histogram in case we do not have trials on a event by event basis
6ef5bfa4 157
158 // Histograms ( are owned by fListOfHistos TList )
159 TH1F* fhNJets; //!
160 TH1F* fhEleadingPt; //!
161
162 TH1F* fhMinRegPtDist; //!
163 TH1F* fhRegionMultMin; //!
164 TH1F* fhMinRegAvePt; //!
165 TH1F* fhMinRegSumPt; //!
166 TH1F* fhMinRegMaxPtPart; //!
167 TH1F* fhMinRegSumPtvsMult; //!
168
de6f8090 169 TH1F* fhdNdEtaPhiDist; //!
6ef5bfa4 170 TH2F* fhFullRegPartPtDistVsEt; //!
171 TH2F* fhTransRegPartPtDistVsEt; //!
172
173 TH1F* fhRegionSumPtMaxVsEt; //!
174 TH1I* fhRegionMultMax; //!
175 TH1F* fhRegionMultMaxVsEt; //!
176 TH1F* fhRegionSumPtMinVsEt; //!
177 TH1F* fhRegionMultMinVsEt; //!
178 TH1F* fhRegionAveSumPtVsEt; //!
179 TH1F* fhRegionDiffSumPtVsEt; //!
180
181 TH1F* fhRegionAvePartPtMaxVsEt; //!
182 TH1F* fhRegionAvePartPtMinVsEt; //!
183 TH1F* fhRegionMaxPartPtMaxVsEt; //!
184
623ed0a0 185 // TH2F* fhValidRegion; //! test to be canceled
186
187 TProfile* fh1Xsec; //!
188 TH1F* fh1Trials; //!
189
6ef5bfa4 190 TTree* fSettingsTree; //! Fast Settings saving
191
623ed0a0 192
6ef5bfa4 193
519378fb 194 ClassDef( AliAnalysisTaskUE, 2); // Analysis task for Underlying Event analysis
6ef5bfa4 195 };
f3050824 196
f3050824 197#endif
6ef5bfa4 198
199