]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/JetTasks/AliAnalysisTaskUE.h
Adding some histograms for jet shape
[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
c4396fd4 7#include "AliAnalysisTask.h"
f3050824 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");
784b191d 22 virtual ~AliAnalysisTaskUE() {if ( fListOfHistos ) delete fListOfHistos; }
6ef5bfa4 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 *);
7fa8b2da 30
31 //Select the trigger
32 void SelectTrigger(Int_t trig) { fTrigger = trig; }
33
6ef5bfa4 34 // Setters
35 virtual void SetDebugLevel( Int_t level ) { fDebug = level; }
36 void SetPtRangeInHist( Int_t bin, Double_t min, Double_t max ) {
37 fBinsPtInHist = bin;
38 fMinJetPtInHist = min;
39 fMaxJetPtInHist = max;
40 }
c4396fd4 41
42 // Read deltaAODs
43 void ReadDeltaAOD() { fDeltaAOD = kTRUE; }
44 void SelectDeltaAODBranch(const char* val) { fDeltaAODBranch = val; }
e1060f2b 45 void SelectAODBranch(const char* val) { fAODBranch = val; }
c4396fd4 46
623ed0a0 47 // Setters for MC
48 void SetUseMCBranch(){fUseMCParticleBranch = kTRUE;}
49 void SetConstrainDistance(Bool_t val1, Double_t val2){ fMinDistance = val2; fConstrainDistance = val1;}
50 void SetSimulateChJetPt(){fSimulateChJetPt = kTRUE;}
51 void SetUseAODMCParticle(){fUseAliStack = kFALSE;}
6ef5bfa4 52
784b191d 53 //Setters for Events QA
54 void SetZVertex( Double_t val ) { fZVertex = val; }
55 void SetTracksInVertex( Int_t val ){ fnTracksVertex = val; }
56
57 // Stters for UE Analysis
6ef5bfa4 58 void SetAnaTopology( Int_t val ) { fAnaType = val; }
59 void SetRegionType( Int_t val ) { fRegionType = val; }
60 void SetUseChPartJet( Int_t val ) { fUseChPartJet = val; }
9d9a3c85 61 void SetUseChargeHadrons( Bool_t val ){ fUseChargeHadrons = val; }
e1060f2b 62 void SetPtSumOrdering( Int_t val ) { fOrdering = val; }
6ef5bfa4 63 void SetFilterBit( UInt_t val ) { fFilterBit = val; }
64 void SetJetsOnFly( Bool_t val ) { fJetsOnFly = val; }
65 void SetConeRadius( Double_t val ) { fConeRadius = val; }
623ed0a0 66 void SetConePosition(Int_t val) { fConePosition= val; }
6ef5bfa4 67 void SetUseSingleCharge() { fUseSingleCharge = kTRUE; }
68 void SetUseNegativeChargeType() { fUsePositiveCharge = kFALSE; }
baf36668 69 void SetDoNotNormalizeQuantities() { fIsNorm2Area = kFALSE; }
6ef5bfa4 70 // Jet cuts
623ed0a0 71 void SetPtMinChPartJet( Double_t val ) { fChJetPtMin = val; }
6ef5bfa4 72 void SetJet1EtaCut( Double_t val ) { fJet1EtaCut = val; }
73 void SetJet2DeltaPhiCut( Double_t val ) { fJet2DeltaPhiCut = val; }
74 void SetJet2RatioPtCut( Double_t val ) { fJet2RatioPtCut = val; }
75 void SetJet3PtCut( Double_t val ) { fJet3PtCut = val; }
76 // track cuts
77 void SetTrackPtCut( Double_t val ) { fTrackPtCut = val; }
78 void SetTrackEtaCut( Double_t val ) { fTrackEtaCut = val; }
79
80 private:
81 AliAnalysisTaskUE(const AliAnalysisTaskUE &det);
82 AliAnalysisTaskUE& operator=(const AliAnalysisTaskUE &det);
6ef5bfa4 83 void AnalyseUE();
84 Int_t IsTrackInsideRegion(TVector3 *jetVect, TVector3 *partVect);
85 void CreateHistos();
86 void SetRegionArea(TVector3 *jetVect);
87 void FillSumPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
88 void FillAvePartPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
89 void FillMultRegion( Double_t leadingE, Double_t nTrackPtmax, Double_t nTrackPtmin, Double_t ptMin );
90 TObjArray* FindChargedParticleJets();
02480db2 91 TObjArray* SortChargedParticles();
6ef5bfa4 92 void QSortTracks(TObjArray &a, Int_t first, Int_t last);
93 void WriteSettings();
94
7fa8b2da 95 Int_t fTrigger; //Trigger flag as defined in AliAnalysisHelperJetTasks.h
c4396fd4 96 Int_t fDebug; // Debug flag
97 Bool_t fDeltaAOD; // Read jets from delta AOD
98 TString fDeltaAODBranch; // Jet branch name from delta AOD
e1060f2b 99 TString fAODBranch; // Jet branch name from standard AOD
5cb0f438 100 TClonesArray* fArrayJets; //! Array of Jets from delta AOD
c4396fd4 101
6ef5bfa4 102 AliAODEvent* fAOD; //! AOD Event
103 AliAODEvent* fAODjets; //! AOD Event for reconstructed on the fly (see ConnectInputData()
104 TList* fListOfHistos; // Output list of histograms
105
106 // Config
107 Int_t fBinsPtInHist; // # bins for Pt histos range
108 Double_t fMinJetPtInHist; // min Jet Pt value for histo range
109 Double_t fMaxJetPtInHist; // max Jet Pt value for histo range
baf36668 110 Bool_t fIsNorm2Area; // Apply Area Normalization to collected observables
6ef5bfa4 111
623ed0a0 112 // For MC
113 Bool_t fUseMCParticleBranch; // Run Over mcparticles branch in AOD
114 Bool_t fConstrainDistance; // Constrain Distance between rec jet and pyth
115 Double_t fMinDistance; // Minimum distance between rec jet and pyth
116 Bool_t fSimulateChJetPt; // Naive simulation of charged jet Pt from original Jet in MC Header
117 Bool_t fUseAliStack; // Use AliSatck for particle info otherwise "mcparticles" branch in AOD
118
784b191d 119 // Cuts Events type
120 Int_t fnTracksVertex; // QA tracks pointing to principal vertex (= 3 default)
121 Double_t fZVertex; // Position of Vertex in Z direction
122
6ef5bfa4 123 // Cuts
124 Int_t fAnaType; // Analysis type on jet topology:
125 // 1=inclusive (default)
126 // 2=back to back inclusive
127 // 3=back to back exclusive
02480db2 128 // 4=Pt max (max Pt track in region)
129 // 5=gama jet (back to back) ???
6ef5bfa4 130 // Minimum bias
131 // 31 = Semi jet (charged leading particle jets)
132 // 32 = Random jetcone ?
133 // 33 = Swiss chees ?
134
135 // UE analysis is conducted in different type of regions
136 // Transverse are those like defined in: R. Field Acta Physica Polonica B. Vol 36 No. 2 pg 167 (2005)
137 // Cone regions like defined in: Phys. Rev. D 70, 072002 (2004)
138 Int_t fRegionType; // 1 = transverse regions (default)
02480db2 139 // 2 = cone regions
6ef5bfa4 140 Double_t fConeRadius; // if selected Cone-like region type, set Radius (=0.7 default)
623ed0a0 141 Int_t fConePosition; // This parameter set how will cone center in transversal zone will be set
02480db2 142 // 1 : To be used in any jet topology (default value)
143 // eta_cone = eta_leadingjet
144 // phi_cone = phi_leadingjet + - 90
145 // 2 : To be used in multiple jet topology (code will cry otherwise)
146 // eta_cone = (eta_leadingjet + eta_subleadingjet)/2
147 // phi_cone = phi_leadingjet + - 90
6ef5bfa4 148 Double_t fAreaReg; // Area of the region To be used as normalization factor when filling histograms
02480db2 149 // if fRegionType = 2 not always it is included within eta range
150 Bool_t fUseChPartJet; // Use "Charged Particle Jet" instead of jets from AOD see FindChargedParticleJets()
151 Bool_t fUseChPartMaxPt; // Use "Charged Particle with max Pt" instead of any jets to define forward region
152
153 Bool_t fUseChargeHadrons; // Only use charge hadrons
6ef5bfa4 154
155 // Theoreticians ask for tools charge-aware
156 // especially those which are related to multiplicity and MC-tunings
157 // see arXiv:hep-ph/0507008v3
158 Bool_t fUseSingleCharge; //Make analysis for a single type of charge (=kFALSE default)
159 Bool_t fUsePositiveCharge; //If Single type of charge used then set which one (=kTRUE default positive)
6ef5bfa4 160 Int_t fOrdering; // Pt and multiplicity summation ordering:
161 // 1=CDF-like -independent sorting according quantity to be scored: Double sorting- (default)
162 // if Pt summation will be scored take Pt minimum between both zones and
163 // fill Pt Max. and Min. histog. accordingly
164 // if Multiplicity summation will be scored take Mult. minimum between both zones and
165 // fill Mult Max and Min histog. accordingly
166 // Bib:
167 // 2=Marchesini-like (Only Pt sorting: Single sorting)
168 // sort only according Pt summation scored, find minimum between both zones and
169 // fill Pt and Multiplicity Max and Min summation histog. following only this criterium
170 // Bib: Phys. Rev. D 38, 3419 (1988)
02480db2 171 // 3=Nameless pt per track single sorting
172 // sort according to pt per track scored in each transverse zone
173 // lowest values indicates minimum zone.
174 // 4=User Selection sorting (NOTE: USER must implement it within cxx)
6ef5bfa4 175
176 UInt_t fFilterBit; // Select tracks from an specific track cut (default 0xFF all track selected)
177 Bool_t fJetsOnFly; // if jets are reconstructed on the fly from AOD tracks (see ConnectInputData() )
178
623ed0a0 179 // Jet cuts
180 Double_t fChJetPtMin; // Min Pt for charged Particle Jet
6ef5bfa4 181 Double_t fJet1EtaCut; // |jet1 eta| < fJet1EtaCut (fAnaType = 1,2,3)
182 Double_t fJet2DeltaPhiCut; // |Jet1.Phi - Jet2.Phi| < fJet2DeltaPhiCut (fAnaType = 2,3)
183 Double_t fJet2RatioPtCut; // Jet2.Pt/Jet1Pt > fJet2RatioPtCut (fAnaType = 2,3)
184 Double_t fJet3PtCut; // Jet3.Pt < fJet3PtCut (fAnaType = 3)
185 // track cuts
186 Double_t fTrackPtCut; // Pt cut of tracks in the regions
187 Double_t fTrackEtaCut; // Eta cut on tracks in the regions (fRegionType=1)
519378fb 188 Double_t fAvgTrials; // average trials used to fill the fh1Triasl histogram in case we do not have trials on a event by event basis
c4396fd4 189
6ef5bfa4 190 // Histograms ( are owned by fListOfHistos TList )
191 TH1F* fhNJets; //!
192 TH1F* fhEleadingPt; //!
193
194 TH1F* fhMinRegPtDist; //!
195 TH1F* fhRegionMultMin; //!
196 TH1F* fhMinRegAvePt; //!
197 TH1F* fhMinRegSumPt; //!
198 TH1F* fhMinRegMaxPtPart; //!
199 TH1F* fhMinRegSumPtvsMult; //!
200
9d9a3c85 201 TH2F* fhdNdEtaPhiDist; //!
6ef5bfa4 202 TH2F* fhFullRegPartPtDistVsEt; //!
203 TH2F* fhTransRegPartPtDistVsEt; //!
204
205 TH1F* fhRegionSumPtMaxVsEt; //!
206 TH1I* fhRegionMultMax; //!
207 TH1F* fhRegionMultMaxVsEt; //!
208 TH1F* fhRegionSumPtMinVsEt; //!
209 TH1F* fhRegionMultMinVsEt; //!
210 TH1F* fhRegionAveSumPtVsEt; //!
211 TH1F* fhRegionDiffSumPtVsEt; //!
212
213 TH1F* fhRegionAvePartPtMaxVsEt; //!
214 TH1F* fhRegionAvePartPtMinVsEt; //!
215 TH1F* fhRegionMaxPartPtMaxVsEt; //!
216
784b191d 217 //TH1F* fhRegForwardSumPtVsEt; //!
218 //TH1F* fhRegForwardMultVsEt; //!
219 //TH1F* fhRegBackwardSumPtVsEt; //!
220 //TH1F* fhRegBackwardMultVsEt; //!
baf36668 221 TH2F* fhRegForwardMult; //!
222 TH2F* fhRegForwardSumPtvsMult; //!
223 TH2F* fhRegBackwardMult; //!
224 TH2F* fhRegBackwardSumPtvsMult; //!
225 TH2F* fhRegForwardPartPtDistVsEt; //!
226 TH2F* fhRegBackwardPartPtDistVsEt; //!
227 TH2F* fhRegTransMult; //!
228 TH2F* fhRegTransSumPtVsMult; //!
784b191d 229 TH2F* fhMinRegSumPtJetPtBin; //!
5713f021 230 TH2F* fhMaxRegSumPtJetPtBin; //!
784b191d 231 TH1F* fhVertexMult;
baf36668 232
623ed0a0 233 // TH2F* fhValidRegion; //! test to be canceled
234
235 TProfile* fh1Xsec; //!
236 TH1F* fh1Trials; //!
237
6ef5bfa4 238 TTree* fSettingsTree; //! Fast Settings saving
02480db2 239
9d9a3c85 240 ClassDef( AliAnalysisTaskUE, 4); // Analysis task for Underlying Event analysis
6ef5bfa4 241 };
f3050824 242
f3050824 243#endif
6ef5bfa4 244
245