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 | |
9 | class AliESDEvent; |
10 | class AliAODEvent; |
11 | class TH1F; |
12 | class TH2F; |
13 | class TH1I; |
623ed0a0 |
14 | class TProfile; |
f3050824 |
15 | class TVector3; |
6ef5bfa4 |
16 | class TTree; |
f3050824 |
17 | |
6ef5bfa4 |
18 | class 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 | |