]>
Commit | Line | Data |
---|---|---|
0c9acc4c | 1 | /************************************************************************* |
2 | * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | //////////////////////////////////////////////////////// | |
17 | // // | |
18 | // Analysis task for parton discrimination studies // | |
19 | // // | |
20 | // Author: // | |
21 | // Hermes Leon Vargas (hleon@ikf.uni-frankfurt.de) // | |
22 | // // | |
23 | //////////////////////////////////////////////////////// | |
24 | ||
25 | #include "TROOT.h" | |
26 | #include "TDirectory.h" | |
27 | #include "TKey.h" | |
28 | #include "TList.h" | |
29 | #include "TSystem.h" | |
30 | #include "TChain.h" | |
31 | #include "TTree.h" | |
32 | #include "TFile.h" | |
33 | #include "TString.h" | |
34 | #include "TH1F.h" | |
35 | #include "TH1I.h" | |
36 | #include "TH2F.h" | |
37 | #include "TH2I.h" | |
38 | #include "TH3F.h" | |
39 | #include "TProfile.h" | |
40 | #include "TCanvas.h" | |
41 | #include "AliAnalysisTask.h" | |
42 | #include "AliAnalysisManager.h" | |
43 | #include "AliAODHandler.h" | |
44 | #include "AliVEvent.h" | |
45 | #include "AliAODEvent.h" | |
46 | #include "AliAODInputHandler.h" | |
47 | #include "AliVParticle.h" | |
48 | #include "AliAODMCParticle.h" | |
49 | #include "AliGenEventHeader.h" | |
50 | #include "AliGenPythiaEventHeader.h" | |
51 | #include "AliGenDPMjetEventHeader.h" | |
52 | #include "AliAODMCHeader.h" | |
53 | #include "AliMCEventHandler.h" | |
54 | #include "AliMCEvent.h" | |
55 | #include <algorithm> | |
56 | #include "AliLog.h" | |
57 | #include "AliAODVertex.h" | |
58 | #include "AliAODHeader.h" | |
59 | #include "AliESDtrack.h" | |
60 | #include "AliAnalysisHelperJetTasks.h" | |
61 | #include "AliAnalysisTaskPartonDisc.h" | |
62 | #include "AliAODVZERO.h" | |
63 | ||
64 | // Analysis task for parton discrimination | |
65 | ||
66 | ClassImp(AliAnalysisTaskPartonDisc) | |
67 | ||
8dcbcbbb | 68 | Double_t *AliAnalysisTaskPartonDisc::fgContainer = 0x0; |
0c9acc4c | 69 | |
70 | //________________________________________________________________________ | |
71 | AliAnalysisTaskPartonDisc::AliAnalysisTaskPartonDisc() | |
8dcbcbbb | 72 | : AliAnalysisTaskSE(), fAOD(0), fUseAODMC(kFALSE), fPhojetMC(kFALSE), fBranchMC("jetsMC"), fBranchRec("jetsREC"), fBranchSecRec(""), fSqrts(0), fNtX(0), fJetRadius(0.), fFlavorRadius(0.), fFilterBit(0xFF), fOutputList(0), fJetPt(0), fJetPtSec(0), fJetPtMC(0), fJetEta(0), fJetEtaSec(0), fJetPhi(0), fJetPhiSec(0), fJetEtaMC(0), fJetPhiMC(0), fPtAODMC(0), fPtAOD(0), fEtaAODMC(0), fPhiAODMC(0), fEtaAOD(0), fPhiAOD(0), fFlavor(0), fNJetsMC(0), fNJetsRD(0), fNJetsRDSeco(0), fJetsMultPtMC(0), fJetsMultPtRD(0), fNChTrRD(0), fProfNChTrRD(0), fFracQQ(0), fFracGQ(0), fFracGG(0), fFracOutGoingQQ(0), fFracOutGoingGQ(0), fFracOutGoingGG(0), fh1Xsec(0), fh1Trials(0), fMpdg(0), fProcessJetPt(0), fFlavorLead(0), fProcessLeadJetPt(0), fPDGMothLPart(0), fFlavProc(0), fAvgTrials(1), fUseAODJetInput(kFALSE), fMinTrackPtInNTX(0), fMaxTrackPtInNTX(0), fSCMRD(0), fMinpTVal(0), fZVertex(0), fh1Events(0), fUseOnlyMC(kFALSE), fCheckMCStatus(kTRUE), fEvtCount(0), fNAccJetsMC(0), fNAccJetsRD(0), fNAccJetsRDSeco(0), fEnablePrints(kFALSE), fRecJetPtInclusive(0), fMCJetPtInclusive(0), fRecJetPtLeading(0), fMCJetPtLeading(0), fSecRecJetPtInclusive(0), fSecRecJetPtLeading(0), fHasPerpCone(kTRUE), fEtaPerpCoord(0), fPhiPerpCoord(0), fPtPerpCoord(0), fJetEvent(kFALSE), fPerpCone(0), fNChTrMCPerp(0), fNChTrRecPerp(0), fSCMMCPerp(0), fSCMRecPerp(0), fIsHIevent(kFALSE), fCurrentJetMinPtNT90(0), fBckgSbsJet(0), fCurrentJetMinPtNT90Recalc(0), fNChTrCorrMCQuark(0), fNChTrCorrMCGluon(0), fNChTrCorrMCPerp(0), fIsPossibleToSubstBckg(kTRUE), fNChTrRecECorr(0), fNChTrRecPerpECorr(0), fRefMult(0), fCurrentJetCharge(0), fRefMultWOJet(0), fVZEROMult(0), fMultWOJetVZero(0), fVZero(0), fRefMultFullV0(0), fRefMultV0Corr(0), fFullV0V0Corr(0), fNTXV0MultPt(0), fNTXCBMultPt(0), fMinpTValUE(2.0), fRefMultFullV0UJ(0), fRefMultV0CorrUJ(0), fFullV0V0CorrUJ(0), fMultWOJetVZeroUJ(0), fRefMultWOJetUJ(0), fMaxpTValUE(2.0), fRefAODTrackCount(0), fRefAODTrackCountUJ(0), fTrackCountWOJet(0), fTrackCountWOJetUJ(0), fTrackCountWOJetUJMC(0), fFullV0V0CorrUJMC(0), fMinpTValMC(2.0), fIncExcR(0.0), fForceNotTR(kFALSE), fNotExtDiJEx(kFALSE), fMinTrackPtInNTXRecalc(0), fMaxTrackPtInNTXRecalc(0), fPtDistInJetConeRaw(0), fPtDistInPerpConeRaw(0), fPtInPerpCon(0), fMinTrackPtInNTXR(0), fMaxTrackPtInNTXR(0), fEventCent(0), fJetEtaAll(0), fJetEtaOnlyTPCcut(0), fNChTrRecECorrPPMult(0), fNChTrRecPerpECorrPPMult(0), fForceSkipSJ(kFALSE), fJetPtCentPbPbRaw(0), fJetPtCentPbPbCorr(0), fJetAcceptance(0.5), fIncreasingExcl(kFALSE) |
0c9acc4c | 73 | { |
74 | ||
75 | // Constructor | |
76 | ||
77 | for(Int_t a=0; a<16;a++) | |
78 | { | |
79 | fJetFlags[a]=kTRUE; | |
80 | if(a<12) | |
81 | { | |
82 | fNChTr[a]=0; | |
83 | fHistPtParton[a]=0; | |
84 | fSCM[a]=0; | |
85 | if(a<8) | |
86 | { | |
87 | fNChTrRDMult[a]=0; | |
88 | fNAccJetsRDMult[a]=0; | |
89 | fTotalJetCharge[a]=0; | |
90 | fSCMRDMult[a]=0; | |
91 | fNChTrRDMultMC[a]=0; | |
92 | fSCMRDMultMC[a]=0; | |
93 | fNChTrRDMultSE[a]=0; | |
94 | fNAccJetsRDMultSE[a]=0; | |
95 | fTotalJetChargeSE[a]=0; | |
96 | fSCMRDMultSE[a]=0; | |
97 | fNChTrRDMultOJ[a]=0; | |
98 | fSCMRDMultOJ[a]=0; | |
99 | fNChTrRDMultSEOJ[a]=0; | |
100 | fSCMRDMultSEOJ[a]=0; | |
101 | fNChTrRDMultOJMC[a]=0; | |
102 | fSCMRDMultOJMC[a]=0; | |
103 | fNChTrRDMultSEOJMC[a]=0; | |
104 | fSCMRDMultSEOJMC[a]=0; | |
105 | fNChTrRecPerpMultSEOJ[a]=0; | |
106 | } | |
107 | if(a<6) | |
108 | { | |
109 | fProcessPDG[a]=0; | |
110 | fFragPion[a]=0; | |
111 | fFragKaon[a]=0; | |
112 | fFragProton[a]=0; | |
113 | fFragChargedR4[a]=0; | |
114 | fFragChargedR3[a]=0; | |
115 | fFragChargedR2[a]=0; | |
116 | fHistContainerR4[a]=0; | |
117 | fHistContainerR3[a]=0; | |
118 | fHistContainerR2[a]=0; | |
119 | if(a<3) | |
120 | { | |
121 | fJetEtaJetPt[a]=0; | |
122 | if(a<2) | |
123 | { | |
124 | fFragCandidates[a]=0; | |
125 | fMinTrackPtInNTXh[a]=0; | |
126 | fMaxTrackPtInNTXh[a]=0; | |
127 | } | |
128 | } | |
129 | } | |
130 | } | |
131 | } | |
132 | } | |
133 | //________________________________________________________________________ | |
134 | AliAnalysisTaskPartonDisc::AliAnalysisTaskPartonDisc(const char *name) | |
8dcbcbbb | 135 | : AliAnalysisTaskSE(name), fAOD(0), fUseAODMC(kFALSE), fPhojetMC(kFALSE), fBranchMC("jetsMC"), fBranchRec("jetsREC"), fBranchSecRec(""), fSqrts(0), fNtX(0), fJetRadius(0.), fFlavorRadius(0.), fFilterBit(0xFF), fOutputList(0), fJetPt(0), fJetPtSec(0), fJetPtMC(0), fJetEta(0), fJetEtaSec(0), fJetPhi(0), fJetPhiSec(0), fJetEtaMC(0), fJetPhiMC(0), fPtAODMC(0), fPtAOD(0), fEtaAODMC(0), fPhiAODMC(0), fEtaAOD(0), fPhiAOD(0), fFlavor(0), fNJetsMC(0), fNJetsRD(0), fNJetsRDSeco(0), fJetsMultPtMC(0), fJetsMultPtRD(0), fNChTrRD(0), fProfNChTrRD(0), fFracQQ(0), fFracGQ(0), fFracGG(0), fFracOutGoingQQ(0), fFracOutGoingGQ(0), fFracOutGoingGG(0), fh1Xsec(0), fh1Trials(0), fMpdg(0), fProcessJetPt(0), fFlavorLead(0), fProcessLeadJetPt(0), fPDGMothLPart(0), fFlavProc(0), fAvgTrials(1), fUseAODJetInput(kFALSE), fMinTrackPtInNTX(0), fMaxTrackPtInNTX(0), fSCMRD(0), fMinpTVal(0), fZVertex(0), fh1Events(0), fUseOnlyMC(kFALSE), fCheckMCStatus(kTRUE), fEvtCount(0), fNAccJetsMC(0), fNAccJetsRD(0), fNAccJetsRDSeco(0), fEnablePrints(kFALSE), fRecJetPtInclusive(0), fMCJetPtInclusive(0), fRecJetPtLeading(0), fMCJetPtLeading(0), fSecRecJetPtInclusive(0), fSecRecJetPtLeading(0), fHasPerpCone(kTRUE), fEtaPerpCoord(0), fPhiPerpCoord(0), fPtPerpCoord(0), fJetEvent(kFALSE), fPerpCone(0), fNChTrMCPerp(0), fNChTrRecPerp(0), fSCMMCPerp(0), fSCMRecPerp(0), fIsHIevent(kFALSE), fCurrentJetMinPtNT90(0), fBckgSbsJet(0), fCurrentJetMinPtNT90Recalc(0), fNChTrCorrMCQuark(0), fNChTrCorrMCGluon(0), fNChTrCorrMCPerp(0), fIsPossibleToSubstBckg(kTRUE), fNChTrRecECorr(0), fNChTrRecPerpECorr(0), fRefMult(0), fCurrentJetCharge(0), fRefMultWOJet(0), fVZEROMult(0), fMultWOJetVZero(0), fVZero(0), fRefMultFullV0(0), fRefMultV0Corr(0), fFullV0V0Corr(0), fNTXV0MultPt(0), fNTXCBMultPt(0), fMinpTValUE(2.0), fRefMultFullV0UJ(0), fRefMultV0CorrUJ(0), fFullV0V0CorrUJ(0), fMultWOJetVZeroUJ(0), fRefMultWOJetUJ(0), fMaxpTValUE(2.0), fRefAODTrackCount(0), fRefAODTrackCountUJ(0), fTrackCountWOJet(0), fTrackCountWOJetUJ(0), fTrackCountWOJetUJMC(0), fFullV0V0CorrUJMC(0), fMinpTValMC(2.0), fIncExcR(0.0), fForceNotTR(kFALSE), fNotExtDiJEx(kFALSE), fMinTrackPtInNTXRecalc(0), fMaxTrackPtInNTXRecalc(0), fPtDistInJetConeRaw(0), fPtDistInPerpConeRaw(0), fPtInPerpCon(0), fMinTrackPtInNTXR(0), fMaxTrackPtInNTXR(0), fEventCent(0), fJetEtaAll(0), fJetEtaOnlyTPCcut(0), fNChTrRecECorrPPMult(0), fNChTrRecPerpECorrPPMult(0), fForceSkipSJ(kFALSE), fJetPtCentPbPbRaw(0), fJetPtCentPbPbCorr(0), fJetAcceptance(0.5), fIncreasingExcl(kFALSE) |
0c9acc4c | 136 | { |
137 | ||
138 | // Constructor | |
139 | ||
140 | for(Int_t a=0; a<16;a++) | |
141 | { | |
142 | fJetFlags[a]=kTRUE; | |
143 | if(a<12) | |
144 | { | |
145 | fNChTr[a]=0; | |
146 | fHistPtParton[a]=0; | |
147 | fSCM[a]=0; | |
148 | if(a<8) | |
149 | { | |
150 | fNChTrRDMult[a]=0; | |
151 | fNAccJetsRDMult[a]=0; | |
152 | fTotalJetCharge[a]=0; | |
153 | fSCMRDMult[a]=0; | |
154 | fNChTrRDMultMC[a]=0; | |
155 | fSCMRDMultMC[a]=0; | |
156 | fNChTrRDMultSE[a]=0; | |
157 | fNAccJetsRDMultSE[a]=0; | |
158 | fTotalJetChargeSE[a]=0; | |
159 | fSCMRDMultSE[a]=0; | |
160 | fNChTrRDMultOJ[a]=0; | |
161 | fSCMRDMultOJ[a]=0; | |
162 | fNChTrRDMultSEOJ[a]=0; | |
163 | fSCMRDMultSEOJ[a]=0; | |
164 | fNChTrRDMultOJMC[a]=0; | |
165 | fSCMRDMultOJMC[a]=0; | |
166 | fNChTrRDMultSEOJMC[a]=0; | |
167 | fSCMRDMultSEOJMC[a]=0; | |
168 | fNChTrRecPerpMultSEOJ[a]=0; | |
169 | } | |
170 | if(a<6) | |
171 | { | |
172 | fProcessPDG[a]=0; | |
173 | fFragPion[a]=0; | |
174 | fFragKaon[a]=0; | |
175 | fFragProton[a]=0; | |
176 | fFragChargedR4[a]=0; | |
177 | fFragChargedR3[a]=0; | |
178 | fFragChargedR2[a]=0; | |
179 | fHistContainerR4[a]=0; | |
180 | fHistContainerR3[a]=0; | |
181 | fHistContainerR2[a]=0; | |
182 | if(a<3) | |
183 | { | |
184 | fJetEtaJetPt[a]=0; | |
185 | if(a<2) | |
186 | { | |
187 | fFragCandidates[a]=0; | |
188 | fMinTrackPtInNTXh[a]=0; | |
189 | fMaxTrackPtInNTXh[a]=0; | |
190 | } | |
191 | } | |
192 | } | |
193 | } | |
194 | } | |
195 | ||
196 | // Define input and output slots here | |
197 | // Input slot #0 works with a TChain | |
198 | DefineInput(0, TChain::Class()); | |
199 | // Output slot #0 id reserved by the base class for AOD | |
200 | // Output slot #1 writes into a TH1 container | |
201 | DefineOutput(1, TList::Class()); | |
202 | } | |
203 | //________________________________________________________________________ | |
204 | Bool_t AliAnalysisTaskPartonDisc::UserNotify() | |
205 | { | |
206 | // | |
207 | // read the cross sections | |
208 | // and number of trials from pyxsec.root | |
209 | // from AliAnalysisTaskJetSpectrum2 | |
210 | // | |
211 | ||
212 | TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree(); | |
213 | Float_t xsection = 0; | |
214 | Float_t ftrials = 1; | |
215 | Int_t nevents = 0; | |
216 | ||
217 | fAvgTrials = 1; | |
218 | if(tree) | |
219 | { | |
220 | TFile *curfile = tree->GetCurrentFile(); | |
221 | if (!curfile) | |
222 | { | |
223 | Error("Notify","No current file"); | |
224 | return kFALSE; | |
225 | } | |
226 | if(!fh1Xsec||!fh1Trials) | |
227 | { | |
228 | Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__); | |
229 | return kFALSE; | |
230 | } | |
231 | AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,ftrials); | |
232 | fh1Xsec->Fill("<#sigma>",xsection); | |
233 | // construct a poor man average trials (per event!?) | |
234 | Float_t nEntries = (Float_t)tree->GetTree()->GetEntries(); | |
235 | if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries; | |
236 | // number of events read out to create the AOD | |
237 | NumberOfReadEventsAOD(curfile->GetName(),nevents); | |
238 | fh1Events->Fill("#sum{nevents}",nevents); // filled once per file | |
239 | } | |
240 | return kTRUE; | |
241 | ||
242 | } | |
243 | //________________________________________________________________________ | |
244 | void AliAnalysisTaskPartonDisc::UserCreateOutputObjects() | |
245 | { | |
246 | // Create histograms | |
247 | // Called once | |
248 | ||
249 | fOutputList = new TList(); | |
250 | fOutputList->SetOwner(kTRUE); | |
251 | ||
252 | fJetPt = new TH1F("fJetPt", "p_{T} distribution of reco jets", 60, 0., 300.); | |
253 | fJetPt->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
254 | fJetPt->GetYaxis()->SetTitle("dN/dp_{T} (c/GeV)"); | |
255 | fJetPt->Sumw2(); | |
256 | fOutputList->Add(fJetPt); | |
257 | ||
258 | fJetPtSec = new TH1F("fJetPtSec", "p_{T} distribution of reco jets, seconday rec branch", 60, 0., 300.); | |
259 | fJetPtSec->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
260 | fJetPtSec->GetYaxis()->SetTitle("dN/dp_{T} (c/GeV)"); | |
261 | fJetPtSec->Sumw2(); | |
262 | fOutputList->Add(fJetPtSec); | |
263 | ||
264 | fJetPtMC = new TH1F("fJetPtMC", "p_{T} distribution of mc jets", 60, 0., 300.); | |
265 | fJetPtMC->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
266 | fJetPtMC->GetYaxis()->SetTitle("dN/dp_{T} (c/GeV)"); | |
267 | fJetPtMC->Sumw2(); | |
268 | fOutputList->Add(fJetPtMC); | |
269 | ||
270 | fJetEta = new TH2F("fJetEta", "Eta distribution of reconstructed jets", 50, -1.5, 1.5, 50, -1.5, 1.5); | |
271 | fJetEta->GetXaxis()->SetTitle("#eta"); | |
272 | fJetEta->GetYaxis()->SetTitle("#eta"); | |
273 | fJetEta->Sumw2(); | |
274 | fOutputList->Add(fJetEta); | |
275 | ||
276 | fJetEtaSec = new TH2F("fJetEtaSec", "Eta distribution of reconstructed jets, secondary branch", 50, -1.5, 1.5, 50, -1.5, 1.5); | |
277 | fJetEtaSec->GetXaxis()->SetTitle("#eta"); | |
278 | fJetEtaSec->GetYaxis()->SetTitle("#eta"); | |
279 | fJetEtaSec->Sumw2(); | |
280 | fOutputList->Add(fJetEtaSec); | |
281 | ||
282 | fJetPhi = new TH2F("fJetPhi", "Phi distribution of reconstructed jets", 50, 0., TMath::TwoPi(), 50, 0., TMath::TwoPi()); | |
283 | fJetPhi->GetXaxis()->SetTitle("#phi"); | |
284 | fJetPhi->GetYaxis()->SetTitle("#phi"); | |
285 | fJetPhi->Sumw2(); | |
286 | fOutputList->Add(fJetPhi); | |
287 | ||
288 | fJetPhiSec = new TH2F("fJetPhiSec", "Phi distribution of reconstructed jets, secondary branch", 50, 0., TMath::TwoPi(), 50, 0., TMath::TwoPi()); | |
289 | fJetPhiSec->GetXaxis()->SetTitle("#phi"); | |
290 | fJetPhiSec->GetYaxis()->SetTitle("#phi"); | |
291 | fJetPhiSec->Sumw2(); | |
292 | fOutputList->Add(fJetPhiSec); | |
293 | ||
294 | fJetEtaMC = new TH2F("fJetEtaMC", "Eta distribution of MC jets", 50, -1.5, 1.5, 50, -1.5, 1.5); | |
295 | fJetEtaMC->GetXaxis()->SetTitle("#eta"); | |
296 | fJetEtaMC->GetYaxis()->SetTitle("#eta"); | |
297 | fJetEtaMC->Sumw2(); | |
298 | fOutputList->Add(fJetEtaMC); | |
299 | ||
300 | fJetPhiMC = new TH2F("fJetPhiMC", "Phi distribution of MC jets", 50, 0., TMath::TwoPi(), 50, 0., TMath::TwoPi()); | |
301 | fJetPhiMC->GetXaxis()->SetTitle("#phi"); | |
302 | fJetPhiMC->GetYaxis()->SetTitle("#phi"); | |
303 | fJetPhiMC->Sumw2(); | |
304 | fOutputList->Add(fJetPhiMC); | |
305 | ||
306 | fPtAODMC = new TH2F("fPtAODMC", "p_{T} distribution of mc tracks", 200, 0., 100., 200, 0., 100.); | |
307 | fPtAODMC->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
308 | fPtAODMC->GetYaxis()->SetTitle("p_{T} (GeV/c)"); | |
309 | fPtAODMC->Sumw2(); | |
310 | fOutputList->Add(fPtAODMC); | |
311 | ||
312 | fPtAOD = new TH2F("fPtAOD", "p_{T} distribution of aod tracks", 200, 0., 100., 200, 0., 100.); | |
313 | fPtAOD->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
314 | fPtAOD->GetYaxis()->SetTitle("p_{T} (GeV/c)"); | |
315 | fPtAOD->Sumw2(); | |
316 | fOutputList->Add(fPtAOD); | |
317 | ||
318 | fEtaAODMC = new TH2F("fEtaAODMC", "Eta distribution of MC aod tracks", 50, -1.5, 1.5, 50, -1.5, 1.5); | |
319 | fEtaAODMC->GetXaxis()->SetTitle("#eta"); | |
320 | fEtaAODMC->GetYaxis()->SetTitle("#eta"); | |
321 | fEtaAODMC->Sumw2(); | |
322 | fOutputList->Add(fEtaAODMC); | |
323 | ||
324 | fPhiAODMC = new TH2F("fPhiAODMC", "Phi distribution of MC aod tracks", 50, 0., TMath::TwoPi(), 50, 0., TMath::TwoPi()); | |
325 | fPhiAODMC->GetXaxis()->SetTitle("#phi"); | |
326 | fPhiAODMC->GetYaxis()->SetTitle("#phi"); | |
327 | fPhiAODMC->Sumw2(); | |
328 | fOutputList->Add(fPhiAODMC); | |
329 | ||
330 | fEtaAOD = new TH2F("fEtaAOD", "Eta distribution of aod tracks", 50, -1.5, 1.5, 50, -1.5, 1.5); | |
331 | fEtaAOD->GetXaxis()->SetTitle("#eta"); | |
332 | fEtaAOD->GetYaxis()->SetTitle("#eta"); | |
333 | fEtaAOD->Sumw2(); | |
334 | fOutputList->Add(fEtaAOD); | |
335 | ||
336 | fPhiAOD = new TH2F("fPhiAOD", "Phi distribution of aod tracks", 50, 0.,TMath::TwoPi(), 50, 0.,TMath::TwoPi()); | |
337 | fPhiAOD->GetXaxis()->SetTitle("#phi"); | |
338 | fPhiAOD->GetYaxis()->SetTitle("#phi"); | |
339 | fPhiAOD->Sumw2(); | |
340 | fOutputList->Add(fPhiAOD); | |
341 | ||
342 | fFlavor = new TH2F("fFlavor", "Flavor distribution of jets", 27, -5.5, 21.5, 60, 0., 300.); | |
343 | fFlavor->GetXaxis()->SetTitle("PDG code"); | |
344 | fFlavor->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
345 | fFlavor->Sumw2(); | |
346 | fOutputList->Add(fFlavor); | |
347 | ||
348 | fNJetsMC = new TH2F("fNJetsMC", "Number of simulated jets per event, as a function of p_T", 101, -0.5, 100.5, 101, -0.5, 100.5); | |
349 | fNJetsMC->GetXaxis()->SetTitle("Number of jets"); | |
350 | fNJetsMC->GetYaxis()->SetTitle("Number of jets"); | |
351 | fNJetsMC->Sumw2(); | |
352 | fOutputList->Add(fNJetsMC); | |
353 | ||
354 | fNJetsRD = new TH2F("fNJetsRD", "Number of jets per event in real data", 101, -0.5, 100.5, 101, -0.5, 100.5); | |
355 | fNJetsRD->GetXaxis()->SetTitle("Number of jets"); | |
356 | fNJetsRD->GetYaxis()->SetTitle("Number of jets"); | |
357 | fNJetsRD->Sumw2(); | |
358 | fOutputList->Add(fNJetsRD); | |
359 | ||
360 | fNJetsRDSeco = new TH2F("fNJetsRDSeco", "Number of jets per event in real data, secondary branch", 101, -0.5, 100.5, 101, -0.5, 100.5); | |
361 | fNJetsRDSeco->GetXaxis()->SetTitle("Number of jets"); | |
362 | fNJetsRDSeco->GetYaxis()->SetTitle("Number of jets"); | |
363 | fNJetsRDSeco->Sumw2(); | |
364 | fOutputList->Add(fNJetsRDSeco); | |
365 | ||
366 | fJetsMultPtMC = new TH2F("fJetsMultPtMC", "Jet multiplicity associated to jet pT, as a function of p_T MC", 60, 0., 300., 7, -0.5, 6.5); | |
367 | fJetsMultPtMC->GetXaxis()->SetTitle("p_{T}^{JET}"); | |
368 | fJetsMultPtMC->GetYaxis()->SetTitle("Number of jets"); | |
369 | fJetsMultPtMC->Sumw2(); | |
370 | fOutputList->Add(fJetsMultPtMC); | |
371 | ||
372 | fJetsMultPtRD = new TH2F("fJetsMultPtRD", "Jet multiplicity associated to jet pT, as a function of p_T Reco Data",60, 0., 300., 7, -0.5, 6.5); | |
373 | fJetsMultPtRD->GetXaxis()->SetTitle("p_{T}^{JET}"); | |
374 | fJetsMultPtRD->GetYaxis()->SetTitle("Number of jets"); | |
375 | fJetsMultPtRD->Sumw2(); | |
376 | fOutputList->Add(fJetsMultPtRD); | |
377 | ||
378 | fNChTrRD = new TH2F("fNChTrRD","Number of tracks to recover transverse energy, jet_{p_{T}}",101,-0.5,100.5, 60, 0., 300.); | |
379 | fNChTrRD->GetXaxis()->SetTitle("NTracks"); | |
380 | fNChTrRD->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
381 | fNChTrRD->Sumw2(); | |
382 | fOutputList->Add(fNChTrRD); | |
383 | ||
384 | fProfNChTrRD = new TProfile("fProfNChTrRD","Number of tracks to recover transverse energy, jet_{p_{T}}", 50, 0, 250); | |
385 | fProfNChTrRD->GetXaxis()->SetTitle("p_{T}^{JET}"); | |
386 | fProfNChTrRD->GetYaxis()->SetTitle("NTracks"); | |
387 | fProfNChTrRD->Sumw2(); | |
388 | fOutputList->Add(fProfNChTrRD); | |
389 | ||
390 | fFracQQ = new TH1F("fFracQQ","QQ",1000,0.,0.5); | |
391 | fFracQQ->GetXaxis()->SetTitle("x_{T}"); | |
392 | fFracQQ->GetYaxis()->SetTitle("Entries"); | |
393 | fFracQQ->Sumw2(); | |
394 | fOutputList->Add(fFracQQ); | |
395 | ||
396 | fFracGQ = new TH1F("fFracGQ","GQ",1000,0.,0.5); | |
397 | fFracGQ->GetXaxis()->SetTitle("x_{T}"); | |
398 | fFracGQ->GetYaxis()->SetTitle("Entries"); | |
399 | fFracGQ->Sumw2(); | |
400 | fOutputList->Add(fFracGQ); | |
401 | ||
402 | fFracGG = new TH1F("fFracGG","GG",1000,0.,0.5); | |
403 | fFracGG->GetXaxis()->SetTitle("x_{T}"); | |
404 | fFracGG->GetYaxis()->SetTitle("Entries"); | |
405 | fFracGG->Sumw2(); | |
406 | fOutputList->Add(fFracGG); | |
407 | ||
408 | fFracOutGoingQQ = new TH1F("fFracOutGoingQQ","QQ",1000,0.,0.5); | |
409 | fFracOutGoingQQ->GetXaxis()->SetTitle("x_{T}"); | |
410 | fFracOutGoingQQ->GetYaxis()->SetTitle("Entries"); | |
411 | fFracOutGoingQQ->Sumw2(); | |
412 | fOutputList->Add(fFracOutGoingQQ); | |
413 | ||
414 | fFracOutGoingGQ = new TH1F("fFracOutGoingGQ","GQ",1000,0.,0.5); | |
415 | fFracOutGoingGQ->GetXaxis()->SetTitle("x_{T}"); | |
416 | fFracOutGoingGQ->GetYaxis()->SetTitle("Entries"); | |
417 | fFracOutGoingGQ->Sumw2(); | |
418 | fOutputList->Add(fFracOutGoingGQ); | |
419 | ||
420 | fFracOutGoingGG = new TH1F("fFracOutGoingGG","GG",1000,0.,0.5); | |
421 | fFracOutGoingGG->GetXaxis()->SetTitle("x_{T}"); | |
422 | fFracOutGoingGG->GetYaxis()->SetTitle("Entries"); | |
423 | fFracOutGoingGG->Sumw2(); | |
424 | fOutputList->Add(fFracOutGoingGG); | |
425 | ||
426 | fh1Xsec = new TProfile("h1Xsec","xsec from pyxsec.root",1,0,1); | |
427 | fh1Xsec->SetXTitle("<#sigma>"); | |
428 | fh1Xsec->Sumw2(); | |
429 | fOutputList->Add(fh1Xsec); | |
430 | ||
431 | fh1Trials = new TH1F("h1Trials","trials from pyxsec.root",1,0,1); | |
432 | fh1Trials->SetXTitle("#sum{ntrials}"); | |
433 | fh1Trials->Sumw2(); | |
434 | fOutputList->Add(fh1Trials); | |
435 | ||
436 | fProcessJetPt = new TH2F("fProcessJetPt","Pythia process number, jet_{p_{T}}",70, 0.5, 70.5, 60, 0., 300.); | |
437 | fProcessJetPt->GetXaxis()->SetTitle("Pythia process"); | |
438 | fProcessJetPt->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
439 | fProcessJetPt->Sumw2(); | |
440 | fOutputList->Add(fProcessJetPt); | |
441 | ||
442 | fFlavorLead = new TH2F("fFlavorLead", "Flavor distribution of leading jets", 27, -5.5, 21.5, 60, 0., 300.); | |
443 | fFlavorLead->GetXaxis()->SetTitle("PDG code"); | |
444 | fFlavorLead->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
445 | fFlavorLead->Sumw2(); | |
446 | fOutputList->Add(fFlavorLead); | |
447 | ||
448 | fProcessLeadJetPt = new TH2F("fProcessLeadJetPt","Pythia process number for leading, jet_{p_{T}}",70, 0.5, 70.5, 60, 0., 300.); | |
449 | fProcessLeadJetPt->GetXaxis()->SetTitle("Pythia process"); | |
450 | fProcessLeadJetPt->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
451 | fProcessLeadJetPt->Sumw2(); | |
452 | fOutputList->Add(fProcessLeadJetPt); | |
453 | ||
454 | fPDGMothLPart = new TH3F("fPDGMothLPart","Mother of leading parton, leading parton, jet p_{T}", 27, -5.5, 21.5, 27, -5.5, 21.5, 60, 0., 300.); | |
455 | fPDGMothLPart->GetXaxis()->SetTitle("Mother of leading parton"); | |
456 | fPDGMothLPart->GetYaxis()->SetTitle("Leading parton"); | |
457 | fPDGMothLPart->GetZaxis()->SetTitle("p_{T}^{JET}"); | |
458 | fPDGMothLPart->Sumw2(); | |
459 | fOutputList->Add(fPDGMothLPart); | |
460 | ||
461 | fFlavProc = new TH2F("fFlavProc","Flavor, Flavor status code", 27, -5.5, 21.5, 101, -0.5, 100.5); | |
462 | fFlavProc->GetXaxis()->SetTitle("Jet flavor"); | |
463 | fFlavProc->GetYaxis()->SetTitle("Parton status code"); | |
464 | fFlavProc->Sumw2(); | |
465 | fOutputList->Add(fFlavProc); | |
466 | ||
467 | fSCMRD = new TH2F("fSCMRD","Second Central Moment, jet_{p_{T}}",200,0.,0.2, 60, 0., 300.); | |
468 | fSCMRD->GetXaxis()->SetTitle("<#delta R_{c}^{2}>"); | |
469 | fSCMRD->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
470 | fSCMRD->Sumw2(); | |
471 | fOutputList->Add(fSCMRD); | |
472 | ||
473 | fZVertex = new TH2F("fZVertex","Z vertex position, Z vertex position}",40,-20.,20., 40, -20., 20.); | |
474 | fZVertex->GetXaxis()->SetTitle("Vertex z"); | |
475 | fZVertex->GetYaxis()->SetTitle("Vertex z"); | |
476 | fZVertex->Sumw2(); | |
477 | fOutputList->Add(fZVertex); | |
478 | ||
479 | fh1Events = new TH1F("fh1Events","nevents from PWG4_JetTasksOutput.root",1,0,1); | |
480 | fh1Events->SetXTitle("#sum{nevents}"); | |
481 | fh1Events->Sumw2(); | |
482 | fOutputList->Add(fh1Events); | |
483 | ||
484 | fNAccJetsMC = new TH2F("fNAccJetsMC", "Number accepted simulated jets per event", 101, -0.5, 100.5, 101, -0.5, 100.5); | |
485 | fNAccJetsMC->GetXaxis()->SetTitle("Number of jets"); | |
486 | fNAccJetsMC->GetYaxis()->SetTitle("Number of jets"); | |
487 | fNAccJetsMC->Sumw2(); | |
488 | fOutputList->Add(fNAccJetsMC); | |
489 | ||
490 | fNAccJetsRD = new TH2F("fNAccJetsRD", "Number of accepted jets per event in real data", 101, -0.5, 100.5, 101, -0.5, 100.5); | |
491 | fNAccJetsRD->GetXaxis()->SetTitle("Number of jets"); | |
492 | fNAccJetsRD->GetYaxis()->SetTitle("Number of jets"); | |
493 | fNAccJetsRD->Sumw2(); | |
494 | fOutputList->Add(fNAccJetsRD); | |
495 | ||
496 | fNAccJetsRDSeco = new TH2F("fNAccJetsRDSeco", "Number of accepted jets per event in real data, secondary branch", 101, -0.5, 100.5, 101, -0.5, 100.5); | |
497 | fNAccJetsRDSeco->GetXaxis()->SetTitle("Number of jets"); | |
498 | fNAccJetsRDSeco->GetYaxis()->SetTitle("Number of jets"); | |
499 | fNAccJetsRDSeco->Sumw2(); | |
500 | fOutputList->Add(fNAccJetsRDSeco); | |
501 | ||
502 | fRecJetPtInclusive = new TH1F("fRecJetPtInclusive", "p_{T} distribution of inclusive reco jets", 60, 0., 300.); | |
503 | fRecJetPtInclusive->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
504 | fRecJetPtInclusive->GetYaxis()->SetTitle("d#sigma (mb)"); | |
505 | fRecJetPtInclusive->Sumw2(); | |
506 | fOutputList->Add(fRecJetPtInclusive); | |
507 | ||
508 | fMCJetPtInclusive = new TH1F("fMCJetPtInclusive", "p_{T} distribution of inclusive MC jets", 60, 0., 300.); | |
509 | fMCJetPtInclusive->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
510 | fMCJetPtInclusive->GetYaxis()->SetTitle("d#sigma (mb)"); | |
511 | fMCJetPtInclusive->Sumw2(); | |
512 | fOutputList->Add(fMCJetPtInclusive); | |
513 | ||
514 | fRecJetPtLeading = new TH1F("fRecJetPtLeading", "p_{T} distribution of leading reco jets", 60, 0., 300.); | |
515 | fRecJetPtLeading->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
516 | fRecJetPtLeading->GetYaxis()->SetTitle("d#sigma (mb)"); | |
517 | fRecJetPtLeading->Sumw2(); | |
518 | fOutputList->Add(fRecJetPtLeading); | |
519 | ||
520 | fMCJetPtLeading = new TH1F("fMCJetPtLeading", "p_{T} distribution of leading MC jets", 60, 0., 300.); | |
521 | fMCJetPtLeading->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
522 | fMCJetPtLeading->GetYaxis()->SetTitle("d#sigma (mb)"); | |
523 | fMCJetPtLeading->Sumw2(); | |
524 | fOutputList->Add(fMCJetPtLeading); | |
525 | ||
526 | fSecRecJetPtInclusive = new TH1F("fSecRecJetPtInclusive", "p_{T} distribution of inclusive reco jets (2nd branch)", 60, 0., 300.); | |
527 | fSecRecJetPtInclusive->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
528 | fSecRecJetPtInclusive->GetYaxis()->SetTitle("d#sigma (mb)"); | |
529 | fSecRecJetPtInclusive->Sumw2(); | |
530 | fOutputList->Add(fSecRecJetPtInclusive); | |
531 | ||
532 | fSecRecJetPtLeading = new TH1F("fSecRecJetPtLeading", "p_{T} distribution of leading reco jets (2nd branch)", 60, 0., 300.); | |
533 | fSecRecJetPtLeading->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
534 | fSecRecJetPtLeading->GetYaxis()->SetTitle("d#sigma (mb)"); | |
535 | fSecRecJetPtLeading->Sumw2(); | |
536 | fOutputList->Add(fSecRecJetPtLeading); | |
537 | ||
538 | fNChTrMCPerp = new TH2F("fNChTrMCPerp","Number of tracks to recover transverse energy of perp. cone, jet_{p_{T} MC}",101,-0.5,100.5, 60, 0., 300.); | |
539 | fNChTrMCPerp->GetXaxis()->SetTitle("NTracks Perp"); | |
540 | fNChTrMCPerp->GetYaxis()->SetTitle("p_{T}^{MC JET}"); | |
541 | fNChTrMCPerp->Sumw2(); | |
542 | fOutputList->Add(fNChTrMCPerp); | |
543 | ||
544 | fNChTrRecPerp = new TH2F("fNChTrRecPerp","Number of tracks to recover transverse energy of perp. cone, jet_{p_{T} Rec}",101,-0.5,100.5, 60, 0., 300.); | |
545 | fNChTrRecPerp->GetXaxis()->SetTitle("NTracks Perp"); | |
546 | fNChTrRecPerp->GetYaxis()->SetTitle("p_{T}^{RECO JET}"); | |
547 | fNChTrRecPerp->Sumw2(); | |
548 | fOutputList->Add(fNChTrRecPerp); | |
549 | ||
550 | fSCMMCPerp = new TH2F("fSCMMCPerp","Second Central Moment of perp. cone, jet_{p_{T} MC}",200,0.,0.2, 60, 0., 300.); | |
551 | fSCMMCPerp->GetXaxis()->SetTitle("<#delta R_{c}^{2}> Perp"); | |
552 | fSCMMCPerp->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
553 | fSCMMCPerp->Sumw2(); | |
554 | fOutputList->Add(fSCMMCPerp); | |
555 | ||
556 | fSCMRecPerp = new TH2F("fSCMRecPerp","Second Central Moment of perp. cone, jet_{p_{T} Reco}",200,0.,0.2, 60, 0., 300.); | |
557 | fSCMRecPerp->GetXaxis()->SetTitle("<#delta R_{c}^{2}> Perp"); | |
558 | fSCMRecPerp->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
559 | fSCMRecPerp->Sumw2(); | |
560 | fOutputList->Add(fSCMRecPerp); | |
561 | ||
562 | fNChTrCorrMCQuark = new TH2F("fNChTrCorrMCQuark","Number of tracks to recover corrected transverse energy, MC quarks",101,-0.5,100.5, 60, 0., 300.); | |
563 | fNChTrCorrMCQuark->GetXaxis()->SetTitle("NTracks"); | |
564 | fNChTrCorrMCQuark->GetYaxis()->SetTitle("p_{T}^{MC Corr. JET}"); | |
565 | fNChTrCorrMCQuark->Sumw2(); | |
566 | fOutputList->Add(fNChTrCorrMCQuark); | |
567 | ||
568 | fNChTrCorrMCGluon = new TH2F("fNChTrCorrMCGluon","Number of tracks to recover corrected transverse energy, MC gluons",101,-0.5,100.5, 60, 0., 300.); | |
569 | fNChTrCorrMCGluon->GetXaxis()->SetTitle("NTracks"); | |
570 | fNChTrCorrMCGluon->GetYaxis()->SetTitle("p_{T}^{MC Corr. JET}"); | |
571 | fNChTrCorrMCGluon->Sumw2(); | |
572 | fOutputList->Add(fNChTrCorrMCGluon); | |
573 | ||
574 | fNChTrCorrMCPerp = new TH2F("fNChTrCorrMCPerp","Number of tracks to recover perp. cone. after corrected jet pT",101,-0.5,100.5, 60, 0., 300.); | |
575 | fNChTrCorrMCPerp->GetXaxis()->SetTitle("NTracks"); | |
576 | fNChTrCorrMCPerp->GetYaxis()->SetTitle("p_{T}^{MC Corr. JET}"); | |
577 | fNChTrCorrMCPerp->Sumw2(); | |
578 | fOutputList->Add(fNChTrCorrMCPerp); | |
579 | ||
580 | // 9 selection bins: (nuevo) | |
581 | // 1st. Proton collisions fill 1 Bin1 [0.5,1.5) | |
582 | // 2nd. PbPb collisions, Bin 0-10 fill 2 Bin2 [1.5,2.5) | |
583 | // 3rd. PbPb collisions, Bin 10-20 fill 3 Bin3 [2.5,3.5) | |
584 | // 4rd. PbPb collisions, Bin 20-30 fill 4 Bin4 [3.5,4.5) | |
585 | // 5th. PbPb collisions, Bin 30-40 fill 5 Bin5 [4.5,5.5) | |
586 | // 6th. PbPb collisions, Bin 40-50 fill 6 Bin6 [5.5,6.5) | |
587 | // 7th. PbPb collisions, Bin 50-60 fill 7 Bin7 [6.5,7.5) | |
588 | // 8th. PbPb collisions, Bin 60-70 fill 8 Bin8 [7.5,8.5) | |
589 | // 9th. PbPb collisions, Bin 70-80 fill 9 Bin9 [8.5,9.5) | |
590 | // 10th. PbPb collisions, Bin 80-100.1 fill 10 Bin10 [9.5,10.5) | |
591 | ||
592 | fNChTrRecECorr = new TH3F("fNChTrRecECorr","NTX in ener. corr. jet , corr. jet pT, centrality",101,-0.5,100.5, 60, 0., 300.,10,0.5,10.5); | |
593 | fNChTrRecECorr->GetXaxis()->SetTitle("NTracks"); | |
594 | fNChTrRecECorr->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
595 | fNChTrRecECorr->GetZaxis()->SetTitle("Selection Bin"); | |
596 | fNChTrRecECorr->Sumw2(); | |
597 | fOutputList->Add(fNChTrRecECorr); | |
598 | ||
599 | fNChTrRecPerpECorr = new TH3F("fNChTrRecPerpECorr","Tracks above min in perp.cone , corr. jet pT, centrality",101,-0.5,100.5, 60, 0., 300.,10,0.5,10.5); | |
600 | fNChTrRecPerpECorr->GetXaxis()->SetTitle("NTracks"); | |
601 | fNChTrRecPerpECorr->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
602 | fNChTrRecPerpECorr->GetZaxis()->SetTitle("Selection Bin"); | |
603 | fNChTrRecPerpECorr->Sumw2(); | |
604 | fOutputList->Add(fNChTrRecPerpECorr); | |
605 | ||
606 | fRefMult = new TH1F("fRefMult", "Reference multiplicity in the AOD", 301, -0.5, 300.5); | |
607 | fRefMult->GetXaxis()->SetTitle("Reference multiplicity"); | |
608 | fRefMult->Sumw2(); | |
609 | fOutputList->Add(fRefMult); | |
610 | ||
611 | fRefMultWOJet = new TH2F("fRefMultWOJet", "Reference multiplicity in the AOD, multiplicity without jets", 301, -0.5, 300.5, 301, -0.5, 300.5); | |
612 | fRefMultWOJet->GetXaxis()->SetTitle("Reference multiplicity"); | |
613 | fRefMultWOJet->GetYaxis()->SetTitle("Multiplicity without jets"); | |
614 | fRefMultWOJet->Sumw2(); | |
615 | fOutputList->Add(fRefMultWOJet); | |
616 | ||
617 | fVZEROMult = new TH2F("fVZEROMult", "Multiplicity V0A and V0C", 501, -0.5, 500.5, 501, -0.5, 500.5); | |
618 | fVZEROMult->GetXaxis()->SetTitle("Multiplicity V0A"); | |
619 | fVZEROMult->GetYaxis()->SetTitle("Multiplicity V0C"); | |
620 | fVZEROMult->Sumw2(); | |
621 | fOutputList->Add(fVZEROMult); | |
622 | ||
623 | fMultWOJetVZero = new TH2F("fMultWOJetVZero", "Multiplicity without jets and VZERO mult.",301, -0.5, 300.5, 1001, -0.5, 1000.5); | |
624 | fMultWOJetVZero->GetXaxis()->SetTitle("Multiplicity without jets TPC"); | |
625 | fMultWOJetVZero->GetYaxis()->SetTitle("Multiplicity full V0"); | |
626 | fMultWOJetVZero->Sumw2(); | |
627 | fOutputList->Add(fMultWOJetVZero); | |
628 | ||
629 | fRefMultFullV0 = new TH2F("fRefMultFullV0", "Reference multiplicity in the AOD, multiplicity from full V0",301, -0.5, 300.5, 1001, -0.5, 1000.5); | |
630 | fRefMultFullV0->GetXaxis()->SetTitle("Reference multiplicity in AOD"); | |
631 | fRefMultFullV0->GetYaxis()->SetTitle("Multiplicity full V0"); | |
632 | fRefMultFullV0->Sumw2(); | |
633 | fOutputList->Add(fRefMultFullV0); | |
634 | ||
635 | fRefMultV0Corr = new TH2F("fRefMultV0Corr", "Reference multiplicity in the AOD, multiplicity from corrected V0",301, -0.5, 300.5, 1001, -0.5, 1000.5); | |
636 | fRefMultV0Corr->GetXaxis()->SetTitle("Reference multiplicity in AOD"); | |
637 | fRefMultV0Corr->GetYaxis()->SetTitle("Multiplicity V0 no jets"); | |
638 | fRefMultV0Corr->Sumw2(); | |
639 | fOutputList->Add(fRefMultV0Corr); | |
640 | ||
641 | fFullV0V0Corr = new TH2F("fFullV0V0Corr", "Multiplicity from full V0, multiplicity from corrected V0",1001, -0.5, 1000.5, 1001, -0.5, 1000.5); | |
642 | fFullV0V0Corr->GetXaxis()->SetTitle("Multiplicity from full V0"); | |
643 | fFullV0V0Corr->GetYaxis()->SetTitle("Multiplicity V0 no jets"); | |
644 | fFullV0V0Corr->Sumw2(); | |
645 | fOutputList->Add(fFullV0V0Corr); | |
646 | ||
647 | fNTXV0MultPt = new TH3F("fNTXV0MultPt", "NTX, Multiplicity from corrected V0, jet pT",101,-0.5,100.5, 1001, -0.5, 1000.5, 60, 0., 300.); | |
648 | fNTXV0MultPt->GetXaxis()->SetTitle("NTracks"); | |
649 | fNTXV0MultPt->GetYaxis()->SetTitle("Multiplicity V0 no jets"); | |
650 | fNTXV0MultPt->GetZaxis()->SetTitle("p_{T}^{JET}"); | |
651 | fNTXV0MultPt->Sumw2(); | |
652 | fOutputList->Add(fNTXV0MultPt); | |
653 | ||
654 | fNTXCBMultPt = new TH3F("fNTXCBMultPt", "NTX, Multiplicity from corrected Central Barrel, jet pT",101,-0.5,100.5, 301, -0.5, 300.5, 60, 0., 300.); | |
655 | fNTXCBMultPt->GetXaxis()->SetTitle("NTracks"); | |
656 | fNTXCBMultPt->GetYaxis()->SetTitle("Multiplicity corrected Central Barrel"); | |
657 | fNTXCBMultPt->GetZaxis()->SetTitle("p_{T}^{JET}"); | |
658 | fNTXCBMultPt->Sumw2(); | |
659 | fOutputList->Add(fNTXCBMultPt); | |
660 | ||
661 | fRefMultFullV0UJ = new TH2F("fRefMultFullV0UJ", "Reference multiplicity in the AOD, multiplicity from full V0, 1 jet event",301, -0.5, 300.5, 1001, -0.5, 1000.5); | |
662 | fRefMultFullV0UJ->GetXaxis()->SetTitle("Reference multiplicity in AOD"); | |
663 | fRefMultFullV0UJ->GetYaxis()->SetTitle("Multiplicity full V0"); | |
664 | fRefMultFullV0UJ->Sumw2(); | |
665 | fOutputList->Add(fRefMultFullV0UJ); | |
666 | ||
667 | fRefMultV0CorrUJ = new TH2F("fRefMultV0CorrUJ", "Reference multiplicity in the AOD, multiplicity from corrected V0, 1 jet event",301, -0.5, 300.5, 1001, -0.5, 1000.5); | |
668 | fRefMultV0CorrUJ->GetXaxis()->SetTitle("Reference multiplicity in AOD"); | |
669 | fRefMultV0CorrUJ->GetYaxis()->SetTitle("Multiplicity V0 no jets"); | |
670 | fRefMultV0CorrUJ->Sumw2(); | |
671 | fOutputList->Add(fRefMultV0CorrUJ); | |
672 | ||
673 | fFullV0V0CorrUJ = new TH2F("fFullV0V0CorrUJ", "Multiplicity from full V0, multiplicity from corrected V0, 1 jet event",1001, -0.5, 1000.5, 1001, -0.5, 1000.5); | |
674 | fFullV0V0CorrUJ->GetXaxis()->SetTitle("Multiplicity from full V0"); | |
675 | fFullV0V0CorrUJ->GetYaxis()->SetTitle("Multiplicity V0 no jets"); | |
676 | fFullV0V0CorrUJ->Sumw2(); | |
677 | fOutputList->Add(fFullV0V0CorrUJ); | |
678 | ||
679 | fMultWOJetVZeroUJ = new TH2F("fMultWOJetVZeroUJ", "Multiplicity without jets and VZERO mult., 1 jet event",301, -0.5, 300.5, 1001, -0.5, 1000.5); | |
680 | fMultWOJetVZeroUJ->GetXaxis()->SetTitle("Multiplicity without jets TPC"); | |
681 | fMultWOJetVZeroUJ->GetYaxis()->SetTitle("Multiplicity full V0"); | |
682 | fMultWOJetVZeroUJ->Sumw2(); | |
683 | fOutputList->Add(fMultWOJetVZeroUJ); | |
684 | ||
685 | fRefMultWOJetUJ = new TH2F("fRefMultWOJetUJ", "Reference multiplicity in the AOD, multiplicity without jets, 1 jet event", 301, -0.5, 300.5, 301, -0.5, 300.5); | |
686 | fRefMultWOJetUJ->GetXaxis()->SetTitle("Reference multiplicity"); | |
687 | fRefMultWOJetUJ->GetYaxis()->SetTitle("Multiplicity without jets"); | |
688 | fRefMultWOJetUJ->Sumw2(); | |
689 | fOutputList->Add(fRefMultWOJetUJ); | |
690 | ||
691 | fRefAODTrackCount = new TH2F("fRefAODTrackCount", "Reference multiplicity in the AOD, my own referece mult.", 301, -0.5, 300.5, 301, -0.5, 300.5); | |
692 | fRefAODTrackCount->GetXaxis()->SetTitle("AOD Reference multiplicity"); | |
693 | fRefAODTrackCount->GetYaxis()->SetTitle("My Reference multiplicity"); | |
694 | fRefAODTrackCount->Sumw2(); | |
695 | fOutputList->Add(fRefAODTrackCount); | |
696 | ||
697 | fRefAODTrackCountUJ = new TH2F("fRefAODTrackCountUJ", "Reference multiplicity in the AOD, my own referece mult., 1 jet event", 301, -0.5, 300.5, 301, -0.5, 300.5); | |
698 | fRefAODTrackCountUJ->GetXaxis()->SetTitle("AOD Reference multiplicity"); | |
699 | fRefAODTrackCountUJ->GetYaxis()->SetTitle("My Reference multiplicity"); | |
700 | fRefAODTrackCountUJ->Sumw2(); | |
701 | fOutputList->Add(fRefAODTrackCountUJ); | |
702 | ||
703 | fTrackCountWOJet = new TH2F("fTrackCountWOJet", "My own total referece mult., soft mult", 151, -0.5, 150.5, 151, -0.5, 150.5); | |
704 | fTrackCountWOJet->GetXaxis()->SetTitle("Total TPC multiplicity"); | |
705 | fTrackCountWOJet->GetYaxis()->SetTitle("Soft TPC multiplicity"); | |
706 | fTrackCountWOJet->Sumw2(); | |
707 | fOutputList->Add(fTrackCountWOJet); | |
708 | ||
709 | fTrackCountWOJetUJ = new TH2F("fTrackCountWOJetUJ", "My own total referece mult., soft mult, 1 jet", 151, -0.5, 150.5, 151, -0.5, 150.5); | |
710 | fTrackCountWOJetUJ->GetXaxis()->SetTitle("Total TPC multiplicity"); | |
711 | fTrackCountWOJetUJ->GetYaxis()->SetTitle("Soft TPC multiplicity"); | |
712 | fTrackCountWOJetUJ->Sumw2(); | |
713 | fOutputList->Add(fTrackCountWOJetUJ); | |
714 | ||
715 | fTrackCountWOJetUJMC = new TH2F("fTrackCountWOJetUJMC", "My own total referece mult., soft mult, 1 jet, MC!", 151, -0.5, 150.5, 151, -0.5, 150.5); | |
716 | fTrackCountWOJetUJMC->GetXaxis()->SetTitle("Total TPC (eta) multiplicity"); | |
717 | fTrackCountWOJetUJMC->GetYaxis()->SetTitle("Soft TPC (eta) multiplicity"); | |
718 | fTrackCountWOJetUJMC->Sumw2(); | |
719 | fOutputList->Add(fTrackCountWOJetUJMC); | |
720 | ||
721 | fFullV0V0CorrUJMC = new TH2F("fFullV0V0CorrUJMC", "Multiplicity from full V0, multiplicity from corrected V0, 1 jet event, MC!",1001, -0.5, 1000.5, 1001, -0.5, 1000.5); | |
722 | fFullV0V0CorrUJMC->GetXaxis()->SetTitle("Multiplicity from full V0 (acceptance)"); | |
723 | fFullV0V0CorrUJMC->GetYaxis()->SetTitle("Multiplicity V0(acceptance) no jets"); | |
724 | fFullV0V0CorrUJMC->Sumw2(); | |
725 | fOutputList->Add(fFullV0V0CorrUJMC); | |
726 | ||
8dcbcbbb | 727 | fMinTrackPtInNTXRecalc = new TH3F("fMinTrackPtInNTXRecalc", "Minimum track pT for the jets after pT correction, raw jet pT", 200, 0., 100., 60, 0., 300.,10,0.5,10.5); |
0c9acc4c | 728 | fMinTrackPtInNTXRecalc->GetXaxis()->SetTitle("p_{T}^{TRACK} (GeV/c)"); |
729 | fMinTrackPtInNTXRecalc->GetYaxis()->SetTitle("p_{T}^{JET} (GeV/c)"); | |
8dcbcbbb | 730 | fMinTrackPtInNTXRecalc->GetZaxis()->SetTitle("Selection Bin"); // 9 selections bins as fNChTrRecECorr |
0c9acc4c | 731 | fMinTrackPtInNTXRecalc->Sumw2(); |
732 | fOutputList->Add(fMinTrackPtInNTXRecalc); | |
733 | ||
734 | fMaxTrackPtInNTXRecalc = new TH2F("fMaxTrackPtInNTXRecalc", "Maximum track pT for the jets after pT correction, raw jet pT", 200, 0., 100., 60, 0., 300.); | |
735 | fMaxTrackPtInNTXRecalc->GetXaxis()->SetTitle("p_{T}^{TRACK} (GeV/c)"); | |
736 | fMaxTrackPtInNTXRecalc->GetYaxis()->SetTitle("p_{T}^{JET} (GeV/c)"); | |
737 | fMaxTrackPtInNTXRecalc->Sumw2(); | |
738 | fOutputList->Add(fMaxTrackPtInNTXRecalc); | |
739 | ||
740 | fPtDistInJetConeRaw = new TH3F("fPtDistInJetConeRaw","pT of tracks in cone, raw jet pT bin, centrality", 200, 0., 100., 8, 0.5, 8.5, 10, 0.5, 10.5); | |
741 | fPtDistInJetConeRaw->GetXaxis()->SetTitle("p_{T}^{TRACK} (GeV/c)"); | |
742 | fPtDistInJetConeRaw->GetYaxis()->SetTitle("p_{T}^{JET} Bin"); | |
743 | fPtDistInJetConeRaw->GetZaxis()->SetTitle("Centrality Bin"); | |
744 | fPtDistInJetConeRaw->Sumw2(); | |
745 | fOutputList->Add(fPtDistInJetConeRaw); | |
746 | ||
747 | fPtDistInPerpConeRaw = new TH3F("fPtDistInPerpConeRaw","pT of tracks in cone, raw jet pT bin, centrality", 200, 0., 100., 8, 0.5, 8.5, 10, 0.5, 10.5); | |
748 | fPtDistInPerpConeRaw->GetXaxis()->SetTitle("p_{T}^{TRACK} (GeV/c)"); | |
749 | fPtDistInPerpConeRaw->GetYaxis()->SetTitle("p_{T}^{JET} Bin"); | |
750 | fPtDistInPerpConeRaw->GetZaxis()->SetTitle("Centrality Bin"); | |
751 | fPtDistInPerpConeRaw->Sumw2(); | |
752 | fOutputList->Add(fPtDistInPerpConeRaw); | |
753 | ||
754 | fPtInPerpCon = new TH3F("fPtInPerpCon","Summed pT of perpendicular cone, raw jet pT bin, centrality", 200, 0., 100., 8, 0.5, 8.5, 10, 0.5, 10.5); | |
755 | fPtInPerpCon->GetXaxis()->SetTitle("p_{T}^{PERP.CONE} (GeV/c)"); | |
756 | fPtInPerpCon->GetYaxis()->SetTitle("p_{T}^{JET} Bin"); | |
757 | fPtInPerpCon->GetZaxis()->SetTitle("Centrality Bin"); | |
758 | fPtInPerpCon->Sumw2(); | |
759 | fOutputList->Add(fPtInPerpCon); | |
760 | ||
761 | fJetEtaAll = new TH1F("fJetEtaAll", "Eta distribution of reconstructed jets, no cuts", 50, -1.5, 1.5); | |
762 | fJetEtaAll->GetXaxis()->SetTitle("#eta"); | |
763 | fJetEtaAll->GetYaxis()->SetTitle("entries"); | |
764 | fJetEtaAll->Sumw2(); | |
765 | fOutputList->Add(fJetEtaAll); | |
766 | ||
767 | fJetEtaOnlyTPCcut = new TH1F("fJetEtaOnlyTPCcut", "Eta distribution of reconstructed jets, only tpc acceptance cut", 50, -1.5, 1.5); | |
768 | fJetEtaOnlyTPCcut->GetXaxis()->SetTitle("#eta"); | |
769 | fJetEtaOnlyTPCcut->GetYaxis()->SetTitle("entries"); | |
770 | fJetEtaOnlyTPCcut->Sumw2(); | |
771 | fOutputList->Add(fJetEtaOnlyTPCcut); | |
772 | ||
773 | // 9 multiplicity bins | |
774 | // 1st. <5 TPC tracks fill 1 Bin1 [0.5,1.5) | |
775 | // 2nd. >= 5 <10 TPC tracks fill 2 Bin2 [1.5,2.5) | |
776 | // 3rd. >= 10 <15 TPC tracks fill 3 Bin3 [2.5,3.5) | |
777 | // 4rd. >= 15 <20 TPC tracks fill 4 Bin4 [3.5,4.5) | |
778 | // 5th. >= 20 <30 TPC tracks fill 5 Bin5 [4.5,5.5) | |
779 | // 6th. >= 30 <40 TPC tracks fill 6 Bin6 [5.5,6.5) | |
780 | // 7th. >= 40 <50 TPC tracks fill 7 Bin7 [6.5,7.5) | |
781 | // 8th. >50 TPC tracks fill 8 Bin8 [7.5,8.5) | |
782 | ||
783 | fNChTrRecECorrPPMult = new TH3F("fNChTrRecECorrPPMult","NTX in ener. corr. jet , corr. jet pT, pp mult.",101,-0.5,100.5, 60, 0., 300.,8,0.5,8.5); | |
784 | fNChTrRecECorrPPMult->GetXaxis()->SetTitle("NTracks_Corrected"); | |
785 | fNChTrRecECorrPPMult->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
786 | fNChTrRecECorrPPMult->GetZaxis()->SetTitle("Multiplicity Bin"); | |
787 | fNChTrRecECorrPPMult->Sumw2(); | |
788 | fOutputList->Add(fNChTrRecECorrPPMult); | |
789 | ||
790 | fNChTrRecPerpECorrPPMult = new TH3F("fNChTrRecPerpECorrPPMult","Tracks above min in perp.cone , corr. jet pT, centrality",101,-0.5,100.5, 60, 0., 300.,8,0.5,8.5); | |
791 | fNChTrRecPerpECorrPPMult->GetXaxis()->SetTitle("NTracks_Corrected"); | |
792 | fNChTrRecPerpECorrPPMult->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
793 | fNChTrRecPerpECorrPPMult->GetZaxis()->SetTitle("Multiplicity Bin"); | |
794 | fNChTrRecPerpECorrPPMult->Sumw2(); | |
795 | fOutputList->Add(fNChTrRecPerpECorrPPMult); | |
796 | ||
8dcbcbbb | 797 | fJetPtCentPbPbRaw = new TH2F("fJetPtCentPbPbRaw", "raw p_{T} distribution of reco jets", 60, 0., 300.,10,0.5,10.5); |
798 | fJetPtCentPbPbRaw->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
799 | fJetPtCentPbPbRaw->GetYaxis()->SetTitle("Selection Bin"); | |
800 | fJetPtCentPbPbRaw->Sumw2(); | |
801 | fOutputList->Add(fJetPtCentPbPbRaw); | |
802 | ||
803 | fJetPtCentPbPbCorr = new TH2F("fJetPtCentPbPbCorr", "Corrected p_{T} distribution of reco jets", 60, 0., 300.,10,0.5,10.5); | |
804 | fJetPtCentPbPbCorr->GetXaxis()->SetTitle("p_{T} (GeV/c)"); | |
805 | fJetPtCentPbPbCorr->GetYaxis()->SetTitle("Selection Bin"); | |
806 | fJetPtCentPbPbCorr->Sumw2(); | |
807 | fOutputList->Add(fJetPtCentPbPbCorr); | |
808 | ||
0c9acc4c | 809 | for(Int_t ipt=0;ipt<12;ipt++) |
810 | { | |
811 | fNChTr[ipt] = new TH2F(Form("fNChTr[%i]",ipt),"Number of tracks to recover transverse energy, jet_{p_{T}}",101,-0.5,100.5, 60, 0., 300.); | |
812 | fNChTr[ipt]->GetXaxis()->SetTitle("NTracks"); | |
813 | fNChTr[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
814 | fNChTr[ipt]->Sumw2(); | |
815 | fOutputList->Add(fNChTr[ipt]); | |
816 | ||
817 | fHistPtParton[ipt] = new TH1F(Form("fHistPtParton[%i]",ipt),"pT distribution of jets",50,0.,250.); | |
818 | fHistPtParton[ipt]->GetXaxis()->SetTitle("p_{T}^{JET}"); | |
819 | fHistPtParton[ipt]->GetYaxis()->SetTitle("Entries"); | |
820 | fHistPtParton[ipt]->Sumw2(); | |
821 | fOutputList->Add(fHistPtParton[ipt]); | |
822 | ||
823 | fSCM[ipt] = new TH2F(Form("fSCM[%i]",ipt),"Second Central Moment, jet_{p_{T}}",200,0.,0.2, 60, 0., 300.); | |
824 | fSCM[ipt]->GetXaxis()->SetTitle("<#delta R_{c}^{2}>"); | |
825 | fSCM[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
826 | fSCM[ipt]->Sumw2(); | |
827 | fOutputList->Add(fSCM[ipt]); | |
828 | ||
829 | if(ipt<8) | |
830 | { | |
831 | fNChTrRDMult[ipt] = new TH2F(Form("fNChTrRDMult[%i]",ipt),"Number of tracks to recover transverse energy, jet_{p_{T}}",101,-0.5,100.5, 60, 0., 300.); | |
832 | fNChTrRDMult[ipt]->GetXaxis()->SetTitle("NTracks"); | |
833 | fNChTrRDMult[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
834 | fNChTrRDMult[ipt]->Sumw2(); | |
835 | fOutputList->Add(fNChTrRDMult[ipt]); | |
836 | ||
837 | fNAccJetsRDMult[ipt] = new TH1F(Form("fNAccJetsRDMult[%i]",ipt),"Number of accepted jets per event in real data", 101, -0.5, 100.5); | |
838 | fNAccJetsRDMult[ipt]->GetXaxis()->SetTitle("Number of jets"); | |
839 | fNAccJetsRDMult[ipt]->Sumw2(); | |
840 | fOutputList->Add(fNAccJetsRDMult[ipt]); | |
841 | ||
842 | fTotalJetCharge[ipt] = new TH1F(Form("fTotalJetCharge[%i]",ipt),"Charge in the jet", 41, -20.5, 20.5); | |
843 | fTotalJetCharge[ipt]->GetXaxis()->SetTitle("Charge in jet"); | |
844 | fTotalJetCharge[ipt]->Sumw2(); | |
845 | fOutputList->Add(fTotalJetCharge[ipt]); | |
846 | ||
847 | fSCMRDMult[ipt] = new TH2F(Form("fSCMRDMult[%i]",ipt),"Second Central Moment, jet_{p_{T}}",200,0.,0.2, 60, 0., 300.); | |
848 | fSCMRDMult[ipt]->GetXaxis()->SetTitle("<#delta R_{c}^{2}>"); | |
849 | fSCMRDMult[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
850 | fSCMRDMult[ipt]->Sumw2(); | |
851 | fOutputList->Add(fSCMRDMult[ipt]); | |
852 | ||
853 | fNChTrRDMultMC[ipt] = new TH2F(Form("fNChTrRDMultMC[%i]",ipt),"Number of tracks to recover transverse energy, jet_{p_{T}}",101,-0.5,100.5, 60, 0., 300.); | |
854 | fNChTrRDMultMC[ipt]->GetXaxis()->SetTitle("NTracks"); | |
855 | fNChTrRDMultMC[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
856 | fNChTrRDMultMC[ipt]->Sumw2(); | |
857 | fOutputList->Add(fNChTrRDMultMC[ipt]); | |
858 | ||
859 | fSCMRDMultMC[ipt] = new TH2F(Form("fSCMRDMultMC[%i]",ipt),"Second Central Moment, jet_{p_{T}}",200,0.,0.2, 60, 0., 300.); | |
860 | fSCMRDMultMC[ipt]->GetXaxis()->SetTitle("<#delta R_{c}^{2}>"); | |
861 | fSCMRDMultMC[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
862 | fSCMRDMultMC[ipt]->Sumw2(); | |
863 | fOutputList->Add(fSCMRDMultMC[ipt]); | |
864 | ||
865 | //Second multiplicity estimator, removing jets and an area | |
866 | fNChTrRDMultSE[ipt] = new TH2F(Form("fNChTrRDMultSE[%i]",ipt),"Number of tracks to recover transverse energy, jet_{p_{T}}",101,-0.5,100.5, 60, 0., 300.); | |
867 | fNChTrRDMultSE[ipt]->GetXaxis()->SetTitle("NTracks"); | |
868 | fNChTrRDMultSE[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
869 | fNChTrRDMultSE[ipt]->Sumw2(); | |
870 | fOutputList->Add(fNChTrRDMultSE[ipt]); | |
871 | ||
872 | fNAccJetsRDMultSE[ipt] = new TH1F(Form("fNAccJetsRDMultSE[%i]",ipt),"Number of accepted jets per event in real data", 101, -0.5, 100.5); | |
873 | fNAccJetsRDMultSE[ipt]->GetXaxis()->SetTitle("Number of jets"); | |
874 | fNAccJetsRDMultSE[ipt]->Sumw2(); | |
875 | fOutputList->Add(fNAccJetsRDMultSE[ipt]); | |
876 | ||
877 | fTotalJetChargeSE[ipt] = new TH1F(Form("fTotalJetChargeSE[%i]",ipt),"Charge in the jet", 41, -20.5, 20.5); | |
878 | fTotalJetChargeSE[ipt]->GetXaxis()->SetTitle("Charge in jet"); | |
879 | fTotalJetChargeSE[ipt]->Sumw2(); | |
880 | fOutputList->Add(fTotalJetChargeSE[ipt]); | |
881 | ||
882 | fSCMRDMultSE[ipt] = new TH2F(Form("fSCMRDMultSE[%i]",ipt),"Second Central Moment, jet_{p_{T}}",200,0.,0.2, 60, 0., 300.); | |
883 | fSCMRDMultSE[ipt]->GetXaxis()->SetTitle("<#delta R_{c}^{2}>"); | |
884 | fSCMRDMultSE[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
885 | fSCMRDMultSE[ipt]->Sumw2(); | |
886 | fOutputList->Add(fSCMRDMultSE[ipt]); | |
887 | ||
888 | fNChTrRDMultOJ[ipt] = new TH2F(Form("fNChTrRDMultOJ[%i]",ipt),"Number of tracks to recover transverse energy, jet_{p_{T}, 1 jet}",101,-0.5,100.5, 60, 0., 300.); | |
889 | fNChTrRDMultOJ[ipt]->GetXaxis()->SetTitle("NTracks"); | |
890 | fNChTrRDMultOJ[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
891 | fNChTrRDMultOJ[ipt]->Sumw2(); | |
892 | fOutputList->Add(fNChTrRDMultOJ[ipt]); | |
893 | ||
894 | fSCMRDMultOJ[ipt] = new TH2F(Form("fSCMRDMultOJ[%i]",ipt),"Second Central Moment, jet_{p_{T}}, 1 jet",200,0.,0.2, 60, 0., 300.); | |
895 | fSCMRDMultOJ[ipt]->GetXaxis()->SetTitle("<#delta R_{c}^{2}>"); | |
896 | fSCMRDMultOJ[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
897 | fSCMRDMultOJ[ipt]->Sumw2(); | |
898 | fOutputList->Add(fSCMRDMultOJ[ipt]); | |
899 | ||
900 | fNChTrRDMultSEOJ[ipt] = new TH2F(Form("fNChTrRDMultSEOJ[%i]",ipt),"Number of tracks to recover transverse energy, jet_{p_{T}}, 1 jet",101,-0.5,100.5, 60, 0., 300.); | |
901 | fNChTrRDMultSEOJ[ipt]->GetXaxis()->SetTitle("NTracks"); | |
902 | fNChTrRDMultSEOJ[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
903 | fNChTrRDMultSEOJ[ipt]->Sumw2(); | |
904 | fOutputList->Add(fNChTrRDMultSEOJ[ipt]); | |
905 | ||
906 | fSCMRDMultSEOJ[ipt] = new TH2F(Form("fSCMRDMultSEOJ[%i]",ipt),"Second Central Moment, jet_{p_{T}}, 1 jet",200,0.,0.2, 60, 0., 300.); | |
907 | fSCMRDMultSEOJ[ipt]->GetXaxis()->SetTitle("<#delta R_{c}^{2}>"); | |
908 | fSCMRDMultSEOJ[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
909 | fSCMRDMultSEOJ[ipt]->Sumw2(); | |
910 | fOutputList->Add(fSCMRDMultSEOJ[ipt]); | |
911 | ||
912 | fNChTrRDMultOJMC[ipt] = new TH2F(Form("fNChTrRDMultOJMC[%i]",ipt),"Number of tracks to recover transverse energy, jet_{p_{T}, 1 jet, MC}",101,-0.5,100.5, 60, 0., 300.); | |
913 | fNChTrRDMultOJMC[ipt]->GetXaxis()->SetTitle("NTracks"); | |
914 | fNChTrRDMultOJMC[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
915 | fNChTrRDMultOJMC[ipt]->Sumw2(); | |
916 | fOutputList->Add(fNChTrRDMultOJMC[ipt]); | |
917 | ||
918 | fSCMRDMultOJMC[ipt] = new TH2F(Form("fSCMRDMultOJMC[%i]",ipt),"Second Central Moment, jet_{p_{T}}, 1 jet, MC",200,0.,0.2, 60, 0., 300.); | |
919 | fSCMRDMultOJMC[ipt]->GetXaxis()->SetTitle("<#delta R_{c}^{2}>"); | |
920 | fSCMRDMultOJMC[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
921 | fSCMRDMultOJMC[ipt]->Sumw2(); | |
922 | fOutputList->Add(fSCMRDMultOJMC[ipt]); | |
923 | ||
924 | fNChTrRDMultSEOJMC[ipt] = new TH2F(Form("fNChTrRDMultSEOJMC[%i]",ipt),"Number of tracks to recover transverse energy, jet_{p_{T}}, 1 jet, MC",101,-0.5,100.5, 60, 0., 300.); | |
925 | fNChTrRDMultSEOJMC[ipt]->GetXaxis()->SetTitle("NTracks"); | |
926 | fNChTrRDMultSEOJMC[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
927 | fNChTrRDMultSEOJMC[ipt]->Sumw2(); | |
928 | fOutputList->Add(fNChTrRDMultSEOJMC[ipt]); | |
929 | ||
930 | fSCMRDMultSEOJMC[ipt] = new TH2F(Form("fSCMRDMultSEOJMC[%i]",ipt),"Second Central Moment, jet_{p_{T}}, 1 jet, MC",200,0.,0.2, 60, 0., 300.); | |
931 | fSCMRDMultSEOJMC[ipt]->GetXaxis()->SetTitle("<#delta R_{c}^{2}>"); | |
932 | fSCMRDMultSEOJMC[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
933 | fSCMRDMultSEOJMC[ipt]->Sumw2(); | |
934 | fOutputList->Add(fSCMRDMultSEOJMC[ipt]); | |
935 | ||
936 | fNChTrRecPerpMultSEOJ[ipt] = new TH2F(Form("fNChTrRecPerpMultSEOJ[%i]",ipt),"Number of tracks above the min pT used in NTX_Raw, jet_{p_{T}}, 1 jet",101,-0.5,100.5, 60, 0., 300.); | |
937 | fNChTrRecPerpMultSEOJ[ipt]->GetXaxis()->SetTitle("NTracks_{Exc.}"); | |
938 | fNChTrRecPerpMultSEOJ[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
939 | fNChTrRecPerpMultSEOJ[ipt]->Sumw2(); | |
940 | fOutputList->Add(fNChTrRecPerpMultSEOJ[ipt]); | |
941 | } // end if <8 | |
942 | ||
943 | if(ipt<6) // only entries for reconstructed || simulated jets | |
944 | { | |
945 | fProcessPDG[ipt] = new TH2I(Form("fProcessPDG[%i]",ipt),"Pythia process and jet p_T", 60, 0., 300., 70, 0.5, 70.5); | |
946 | fProcessPDG[ipt]->GetXaxis()->SetTitle("p_{T}^{JET}"); | |
947 | fProcessPDG[ipt]->GetYaxis()->SetTitle("Pythia process code"); | |
948 | fProcessPDG[ipt]->Sumw2(); | |
949 | fOutputList->Add(fProcessPDG[ipt]); | |
950 | ||
951 | fFragPion[ipt] = new TH2F(Form("fFragPion[%i]",ipt),"Fragmentation in pions",35,0.,8.,50,0.,250.); | |
952 | fFragPion[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
953 | fFragPion[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
954 | fFragPion[ipt]->Sumw2(); | |
955 | fOutputList->Add(fFragPion[ipt]); | |
956 | ||
957 | fFragKaon[ipt] = new TH2F(Form("fFragKaon[%i]",ipt),"Fragmentation in kaons",35,0.,8.,50,0.,250.); | |
958 | fFragKaon[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
959 | fFragKaon[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
960 | fFragKaon[ipt]->Sumw2(); | |
961 | fOutputList->Add(fFragKaon[ipt]); | |
962 | ||
963 | fFragProton[ipt] = new TH2F(Form("fFragProton[%i]",ipt),"Fragmentation in protons",35,0.,8.,50,0.,250.); | |
964 | fFragProton[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
965 | fFragProton[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
966 | fFragProton[ipt]->Sumw2(); | |
967 | fOutputList->Add(fFragProton[ipt]); | |
968 | ||
969 | fFragChargedR4[ipt] = new TH2F(Form("fFragChargedR4[%i]",ipt),"Fragmentation in charged particles",35,0.,8.,50,0.,250.); | |
970 | fFragChargedR4[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
971 | fFragChargedR4[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
972 | fFragChargedR4[ipt]->Sumw2(); | |
973 | fOutputList->Add(fFragChargedR4[ipt]); | |
974 | ||
975 | fFragChargedR3[ipt] = new TH2F(Form("fFragChargedR3[%i]",ipt),"Fragmentation in charged particles",35,0.,8.,50,0.,250.); | |
976 | fFragChargedR3[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
977 | fFragChargedR3[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
978 | fFragChargedR3[ipt]->Sumw2(); | |
979 | fOutputList->Add(fFragChargedR3[ipt]); | |
980 | ||
981 | fFragChargedR2[ipt] = new TH2F(Form("fFragChargedR2[%i]",ipt),"Fragmentation in charged particles",35,0.,8.,50,0.,250.); | |
982 | fFragChargedR2[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
983 | fFragChargedR2[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
984 | fFragChargedR2[ipt]->Sumw2(); | |
985 | fOutputList->Add(fFragChargedR2[ipt]); | |
986 | ||
987 | // do not add the temporary containers | |
988 | fHistContainerR4[ipt] = new TH2F(Form("fHistContainerR4[%i]",ipt),"Temporary fragmentation in charged particles",35,0.,8.,50,0.,250.); | |
989 | fHistContainerR4[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
990 | fHistContainerR4[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
991 | fHistContainerR4[ipt]->Sumw2(); | |
992 | ||
993 | fHistContainerR3[ipt] = new TH2F(Form("fHistContainerR3[%i]",ipt),"Temporary fragmentation in charged particles",35,0.,8.,50,0.,250.); | |
994 | fHistContainerR3[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
995 | fHistContainerR3[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
996 | fHistContainerR3[ipt]->Sumw2(); | |
997 | ||
998 | fHistContainerR2[ipt] = new TH2F(Form("fHistContainerR2[%i]",ipt),"Temporary fragmentation in charged particles",35,0.,8.,50,0.,250.); | |
999 | fHistContainerR2[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
1000 | fHistContainerR2[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
1001 | fHistContainerR2[ipt]->Sumw2(); | |
1002 | ||
1003 | if(ipt<3) | |
1004 | { | |
1005 | fJetEtaJetPt[ipt] = new TH1F(Form("fJetEtaJetPt[%i]",ipt), "Eta distribution of reconstructed jets, all cut, with pT upper boundary", 50, -1.5, 1.5); | |
1006 | fJetEtaJetPt[ipt]->GetXaxis()->SetTitle("#eta"); | |
1007 | fJetEtaJetPt[ipt]->GetYaxis()->SetTitle("entries"); | |
1008 | fJetEtaJetPt[ipt]->Sumw2(); | |
1009 | fOutputList->Add(fJetEtaJetPt[ipt]); | |
1010 | ||
1011 | if(ipt<2) | |
1012 | { | |
1013 | fFragCandidates[ipt] = new TH2F(Form("fFragCandidates[%i]",ipt),"Parton identified candidates",35,0.,8.,50,0.,250.); | |
1014 | fFragCandidates[ipt]->GetXaxis()->SetTitle("#xi=ln[Jet_{E_{T}}/H_{p_{T}}]"); | |
1015 | fFragCandidates[ipt]->GetYaxis()->SetTitle("Jet_{E_{T}}"); | |
1016 | fFragCandidates[ipt]->Sumw2(); | |
1017 | fOutputList->Add(fFragCandidates[ipt]); | |
1018 | ||
8dcbcbbb | 1019 | fMinTrackPtInNTXh[ipt] = new TH3F(Form("fMinTrackPtInNTXh[%i]",ipt), "Minimum track pT for the jets", 200, 0., 100., 60, 0., 300.,10,0.5,10.5); |
0c9acc4c | 1020 | fMinTrackPtInNTXh[ipt]->GetXaxis()->SetTitle("p_{T}^{TRACK}"); |
1021 | fMinTrackPtInNTXh[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
8dcbcbbb | 1022 | fMinTrackPtInNTXh[ipt]->GetZaxis()->SetTitle("Selection Bin"); //9 selection bins as fNChTrRecECorr |
0c9acc4c | 1023 | fMinTrackPtInNTXh[ipt]->Sumw2(); |
1024 | fOutputList->Add(fMinTrackPtInNTXh[ipt]); | |
1025 | ||
1026 | fMaxTrackPtInNTXh[ipt] = new TH2F(Form("fMaxTrackPtInNTXh[%i]",ipt), "Maximum track pT for the jets", 200, 0., 100., 60, 0., 300.); | |
1027 | fMaxTrackPtInNTXh[ipt]->GetXaxis()->SetTitle("p_{T}^{TRACK}"); | |
1028 | fMaxTrackPtInNTXh[ipt]->GetYaxis()->SetTitle("p_{T}^{JET}"); | |
1029 | fMaxTrackPtInNTXh[ipt]->Sumw2(); | |
1030 | fOutputList->Add(fMaxTrackPtInNTXh[ipt]); | |
1031 | } // index < 2 | |
1032 | } // index < 3 | |
1033 | } // index < 6 | |
1034 | } // index < 12 | |
1035 | ||
1036 | fPerpCone = new AliAODJet(); | |
1037 | fBckgSbsJet = new Double_t[3]; | |
1038 | ||
1039 | PostData(1, fOutputList); // Post data for ALL output slots >0 here, to get at least an empty histogram | |
1040 | } | |
1041 | ||
1042 | //________________________________________________________________________ | |
1043 | void AliAnalysisTaskPartonDisc::UserExec(Option_t *) | |
1044 | { | |
1045 | // Main loop | |
1046 | // Called for each event | |
1047 | ||
1048 | // fAOD | |
1049 | if(fUseAODJetInput) | |
1050 | { | |
1051 | fAOD = dynamic_cast<AliAODEvent*>(InputEvent()); | |
1052 | if(!fAOD) | |
1053 | { | |
1054 | Printf("%s:%d AODEvent not found in Input Manager %d",(char*)__FILE__,__LINE__,fUseAODJetInput); | |
1055 | return; | |
1056 | } | |
1057 | // fetch the header | |
1058 | } | |
1059 | else | |
1060 | { | |
1061 | // assume that the AOD is in the general output... | |
1062 | fAOD = AODEvent(); | |
1063 | if(!fAOD) | |
1064 | { | |
1065 | Printf("%s:%d AODEvent not found in the Output",(char*)__FILE__,__LINE__); | |
1066 | return; | |
1067 | } | |
1068 | } | |
1069 | ||
1070 | // fin de test para fAOD | |
1071 | ||
1072 | if(!fInputEvent) | |
1073 | { | |
1074 | Error("UserExec","No event found!"); | |
1075 | return; | |
1076 | } | |
1077 | ||
1078 | AliAODHandler *aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler()); | |
1079 | if(!aodHandler) | |
1080 | { | |
1081 | AliError("No AOD Handler!"); | |
1082 | return; | |
1083 | } | |
1084 | ||
1085 | fEventCent=900; //dummy val for debugging | |
1086 | ||
1087 | if(fIsHIevent) | |
1088 | { | |
1089 | AliAODHeader *aodHeader = fAOD->GetHeader(); | |
1090 | fEventCent = aodHeader->GetCentrality(); | |
1091 | } | |
1092 | ||
8dcbcbbb | 1093 | // Jet eta exclusion |
1094 | if(fIncreasingExcl) | |
1095 | fJetAcceptance = 0.5 - fIncExcR; // if the increase is 0.1 -> only jets within |eta|<0.4 | |
1096 | ||
0c9acc4c | 1097 | // First test of reference multiplicity |
1098 | Int_t refMultiplicity = fAOD->GetHeader()->GetRefMultiplicity(); | |
1099 | fRefMult->Fill(refMultiplicity); | |
1100 | ||
1101 | // Multiplicity from V0 (V0A+V0C) | |
1102 | fVZero = fAOD->GetVZEROData(); | |
1103 | Float_t multV0A = 0.0; | |
1104 | Float_t multV0C = 0.0; | |
1105 | Float_t multFullV0 = 0.0; | |
1106 | if(fVZero) | |
1107 | { | |
1108 | multV0A = fVZero->GetMTotV0A(); | |
1109 | multV0C = fVZero->GetMTotV0C(); | |
1110 | multFullV0 = multV0A+multV0C; | |
1111 | } | |
1112 | fVZEROMult->Fill(multV0A,multV0C); | |
1113 | ||
1114 | fEvtCount++; | |
1115 | Double_t jfr = fJetRadius; // radius used during jet finding | |
1116 | Int_t ntx = fNtX; // NTX value | |
1117 | const Int_t maxJetNum=6; // maximum number of generated jets to process | |
1118 | AliAODJet genJets[6]; // containers for the | |
1119 | AliAODJet recJets[6]; // correlation gen-reco | |
1120 | Int_t nGenJets=0; | |
1121 | Int_t nRecJets=0; | |
1122 | Int_t genJetsFlavor[6]={0}; // flavor of the generated jets | |
1123 | Int_t evtype = 0; //pythia event type | |
1124 | // Variables para la variable de estructura | |
1125 | Double_t deltaPhiPt = 0.0; | |
1126 | Double_t deltaEtaPt = 0.0; | |
1127 | Double_t deltaPhiSqPt = 0.0; | |
1128 | Double_t deltaEtaSqPt = 0.0; | |
1129 | Double_t totalTrackPt = 0.0; | |
1130 | Double_t firstMomDeltPhi = 0.0; | |
1131 | Double_t firstMomDeltEta = 0.0; | |
1132 | Double_t secondMomDeltPhi = 0.0; | |
1133 | Double_t secondMomDeltEta = 0.0; | |
1134 | Double_t secondCentralPhi = 0.0; | |
1135 | Double_t secondCentralEta = 0.0; | |
1136 | Double_t secondCentralR = 0.0; | |
1137 | ||
1138 | // Variables para la variable de estructura | |
1139 | // del cono perpendicular | |
1140 | Double_t deltaPhiPtPerp = 0.0; | |
1141 | Double_t deltaEtaPtPerp = 0.0; | |
1142 | Double_t deltaPhiSqPtPerp = 0.0; | |
1143 | Double_t deltaEtaSqPtPerp = 0.0; | |
1144 | Double_t totalTrackPtPerp = 0.0; | |
1145 | Double_t firstMomDeltPhiPerp = 0.0; | |
1146 | Double_t firstMomDeltEtaPerp = 0.0; | |
1147 | Double_t secondMomDeltPhiPerp = 0.0; | |
1148 | Double_t secondMomDeltEtaPerp = 0.0; | |
1149 | Double_t secondCentralPhiPerp = 0.0; | |
1150 | Double_t secondCentralEtaPerp = 0.0; | |
1151 | Double_t secondCentralRPerp = 0.0; | |
1152 | ||
1153 | Double_t perpendicularPt; | |
1154 | Float_t px,py,pz,en; // jet 4-vector à la UA1 | |
1155 | Float_t pTbs, etabs, phibs; // energy corrected jet properties | |
1156 | ||
1157 | // Process the MC info from the AOD | |
1158 | if(fUseAODMC) | |
1159 | { | |
1160 | // Get the MC array | |
1161 | TClonesArray *mcarray = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName())); | |
1162 | if(!mcarray) | |
1163 | { | |
1164 | AliError("ERROR:No MC info in the AOD input"); | |
1165 | return; | |
1166 | } | |
1167 | ||
1168 | AliMCEvent* mcEvent = MCEvent(); | |
1169 | if(mcEvent) | |
1170 | { | |
1171 | if(!fPhojetMC) // if it is pythia | |
1172 | evtype = GetMCEventType(mcEvent); | |
1173 | // From pythia 6.2 manual pp 414 | |
1174 | // QCD Hard Processes | |
1175 | // 11 f_{i}+f_{j} -> f_{i}+f_{j} com77, ben84, eic84, chi90 | |
1176 | // 12 f_{i}+barf_{i} -> f_{k}+barf_{k} | |
1177 | // 13 f_{i}+barf_{i} -> g+g | |
1178 | // 28 f_{i}+g -> f_{i}+g | |
1179 | // 53 g+g -> f_{k}+barf_{k} | |
1180 | // 68 g+g -> g+g | |
1181 | if(fPhojetMC) // if it is phojet | |
1182 | evtype = GetPhojetEventType(mcEvent); | |
1183 | } | |
1184 | if(!mcEvent) // if a pure AOD event | |
1185 | { | |
1186 | AliDebug(2,Form("%s:%d No MCEvent \n",(char*)__FILE__,__LINE__)); | |
1187 | AliDebug(2,Form("Trying to get the MC header \n")); | |
1188 | AliAODMCHeader *genEvH = static_cast<AliAODMCHeader*>(fAOD->FindListObject("mcHeader")); | |
1189 | if(!genEvH) | |
1190 | { | |
1191 | AliDebug(2,Form(" %s:%d No Pythia header!",(char*)__FILE__,__LINE__)); | |
1192 | evtype = 0; | |
1193 | } | |
1194 | if(genEvH) | |
1195 | evtype = genEvH->GetEventType(); | |
1196 | } | |
1197 | // Get the branch with the MC jets | |
1198 | TClonesArray *aodMCJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchMC.Data())); | |
1199 | if(!aodMCJets) | |
1200 | { | |
1201 | AliDebug(2,Form("%s:%d no MC Jet array with name %s in AOD",(char*)__FILE__,__LINE__,fBranchMC.Data())); | |
1202 | return; | |
1203 | } | |
1204 | AliDebug(2,Form("There are %d MC jets in this event\n", aodMCJets->GetEntries())); | |
1205 | Int_t mcjets = aodMCJets->GetEntries(); | |
1206 | fNJetsMC->Fill(mcjets,mcjets); // number of jets FROM the branch, filled per event, this gives the event normalization... | |
1207 | HasOverlapedCones(aodMCJets); // Procedure for tagging usable jets | |
1208 | // Up 16 jets are flagged | |
1209 | ||
1210 | // Loop over AODMC physical primary charged particles | |
1211 | // for the complete event | |
1212 | Int_t tracksMC = mcarray->GetEntriesFast(); | |
1213 | AliDebug(2,Form("There are %i tracks in the mcarray",tracksMC)); | |
1214 | Double_t aodMCTrackEta = 0.0; | |
1215 | perpendicularPt = 0.0; | |
1216 | px=0.0; | |
1217 | py=0.0; | |
1218 | pz=0.0; | |
1219 | en=0.0; | |
1220 | pTbs=0.0; | |
1221 | etabs=0.0; | |
1222 | phibs=0.0; | |
1223 | fBckgSbsJet[0]=0.0; | |
1224 | fBckgSbsJet[1]=0.0; | |
1225 | fBckgSbsJet[2]=0.0; | |
1226 | Int_t softRefMcNoJets = 0; | |
1227 | Int_t myTotalMultiplicityMc = 0; | |
1228 | Int_t v0LikeTotalMcMult = 0; | |
1229 | for(Int_t aodMCTrack = 0; aodMCTrack < tracksMC; aodMCTrack++ ) | |
1230 | { | |
1231 | AliAODMCParticle *mctrackf = (AliAODMCParticle*) mcarray->At(aodMCTrack); | |
1232 | if(!mctrackf) continue; | |
1233 | if(!mctrackf->IsPhysicalPrimary()) continue; | |
1234 | if(mctrackf->Charge()==0||mctrackf->Charge()==-99) continue; | |
1235 | //Lo del V0, voy a contar particulas primarias cargadas | |
1236 | if(mctrackf->Pt()>fMinpTValMC) // cut off en MC | |
1237 | { | |
1238 | //V0A | |
1239 | if(((mctrackf->Eta())>(2.8))&&((mctrackf->Eta())<(5.1))) | |
1240 | v0LikeTotalMcMult++; | |
1241 | //V0C | |
1242 | if(((mctrackf->Eta())>(-3.7))&&((mctrackf->Eta())<(-1.7))) | |
1243 | v0LikeTotalMcMult++; | |
1244 | } | |
1245 | //Fin de lo del V0 | |
1246 | aodMCTrackEta = TMath::Abs(mctrackf->Eta()); | |
1247 | if(aodMCTrackEta>0.9) continue; | |
1248 | fPtAODMC->Fill(mctrackf->Pt(),mctrackf->Pt()); | |
1249 | fEtaAODMC->Fill(mctrackf->Eta(),mctrackf->Eta()); | |
1250 | fPhiAODMC->Fill(mctrackf->Phi(),mctrackf->Phi()); | |
1251 | if(fJetEvent) // if has an accepted jet, calculate the perpendicular cone | |
1252 | { | |
1253 | if(HasPerpendicularCone()) // If there is a perpendicular cone available | |
1254 | { | |
1255 | if(mctrackf->Pt()>fMinpTVal) | |
1256 | { | |
1257 | if(GetDeltaR(fEtaPerpCoord,fPhiPerpCoord,mctrackf->Eta(),mctrackf->Phi())<fJetRadius) | |
1258 | perpendicularPt = perpendicularPt + mctrackf->Pt(); | |
1259 | } | |
1260 | } | |
1261 | } // end IF jet event | |
1262 | if(mctrackf->Pt()>fMinpTValMC) // cut off en MC | |
1263 | { | |
1264 | myTotalMultiplicityMc++; // total multiplicity TPC like | |
1265 | if(mctrackf->Pt()<fMinpTValUE) continue; // pT cut fMinpTValUE | |
1266 | if(mctrackf->Pt()>fMaxpTValUE) continue; // pT cut fMaxpTValUE | |
1267 | if(!IsTrackInsideExcludedArea(mctrackf->Eta(), mctrackf->Phi(), aodMCJets)) | |
1268 | softRefMcNoJets++; | |
1269 | } | |
1270 | } // end loop over particles | |
1271 | ||
1272 | Int_t correctedV0LikeMult= v0LikeTotalMcMult-GetV0LikeExcludedMultMC(aodMCJets,mcarray); | |
1273 | ||
1274 | //estimadores | |
1275 | if(mcjets==1) // correlation for only monojet events | |
1276 | { | |
1277 | fFullV0V0CorrUJMC->Fill(v0LikeTotalMcMult,correctedV0LikeMult); | |
1278 | fTrackCountWOJetUJMC->Fill(myTotalMultiplicityMc,softRefMcNoJets); | |
1279 | } | |
1280 | ||
1281 | if(fJetEvent) // if has an accepted jet, calculate the perpendicular cone | |
1282 | { | |
1283 | if(HasPerpendicularCone()) // If there is a perpendicular cone available | |
1284 | { | |
1285 | px = perpendicularPt*TMath::Cos(fPhiPerpCoord); | |
1286 | py = perpendicularPt*TMath::Sin(fPhiPerpCoord); | |
1287 | pz = perpendicularPt/TMath::Tan(2.0*TMath::ATan(TMath::Exp(-fEtaPerpCoord))); | |
1288 | en = TMath::Sqrt(px*px + py*py + pz*pz); | |
1289 | fPerpCone->SetPxPyPzE(px, py, pz, en); | |
1290 | } | |
1291 | if(!HasPerpendicularCone()) | |
1292 | AliDebug(2,"No perpendicular cone!!!"); | |
1293 | } | |
1294 | ||
1295 | ||
1296 | fh1Trials->Fill("#sum{ntrials}",fAvgTrials); | |
1297 | ||
1298 | Int_t flavor = 0; // flavor of the jet | |
1299 | Int_t nTracksPerc; // ntx for the original jet | |
1300 | Int_t nTracksPercBckgSubst; // ntx for the energy corrected jet | |
1301 | Double_t jetPt=0; | |
1302 | Int_t pdgOfMCt; | |
1303 | Float_t trackxi; | |
1304 | Double_t jetXt; | |
1305 | Double_t jetPts[7]={0}; // to store the pt of the jets | |
1306 | Int_t mcJetCounter=0; // counter of MC jets | |
1307 | Int_t nTracksAboveThresholdPerp=0; // n tracks of the perpendicular cone | |
1308 | Int_t nTrUpThrPerpBckSubs=0; // n tracks of the perpendicular cone, after the minimum pT recalculation | |
1309 | fIsPossibleToSubstBckg = kTRUE; // Initialize before the loop | |
1310 | if(fJetEvent) // si tiene jets validos | |
1311 | { | |
1312 | if(!HasPerpendicularCone()) // pero no encontro un cono perpendicular libre | |
1313 | fIsPossibleToSubstBckg = kFALSE; // if not perpendicular cone, set to kFALSE, so no perpendicular calculations available | |
1314 | } | |
1315 | // Loop to fill a pT spectrum of the mc jets | |
1316 | Int_t imcj=0; // index for montecarlo jets to correlate | |
1317 | for (Int_t indxmc = 0; indxmc < mcjets; indxmc++) | |
1318 | { | |
1319 | AliAODJet *mcjet = dynamic_cast<AliAODJet*>(aodMCJets->At(indxmc)); | |
1320 | if (!mcjet) | |
1321 | { | |
1322 | AliDebug(2,Form("ERROR: Could not receive jet %d\n", indxmc)); | |
1323 | continue; | |
1324 | } | |
1325 | ||
1326 | /////////////////////////////////////////////////////////////////////////////// | |
1327 | ///// Part for Chritians plot of inclusive and leading jets comp at 2.76 TeV // | |
1328 | if(!IsInsideAcceptance(mcjet)) // old condition | |
1329 | continue; | |
1330 | if(indxmc==0) // leading jet | |
1331 | fMCJetPtLeading->Fill(mcjet->Pt()); | |
1332 | fMCJetPtInclusive->Fill(mcjet->Pt()); // all | |
1333 | ///// End of Christians Plot MC | |
1334 | /////////////////////////////////////////////////////////////////////////////// | |
1335 | ||
1336 | if(indxmc>15) | |
1337 | continue; | |
1338 | ||
1339 | if(!fJetFlags[indxmc]) // If the jet is flaged kFALSE, not usable | |
1340 | continue; | |
1341 | ||
1342 | //Initialize variables for this jet | |
1343 | //adiciones para la variable de estructura | |
1344 | nTracksPerc = 0; | |
1345 | nTracksPercBckgSubst = 0; | |
1346 | fMinTrackPtInNTX=200.0; //Initialize for each jet, overflown | |
1347 | fMaxTrackPtInNTX=200.0; //Initialize for each jet, overflown | |
1348 | fMinTrackPtInNTXR=200.0; //Initialize for each jet, overflown | |
1349 | fMaxTrackPtInNTXR=200.0; //Initialize for each jet, overflown | |
1350 | deltaPhiPt = 0.0; | |
1351 | deltaEtaPt = 0.0; | |
1352 | deltaPhiSqPt = 0.0; | |
1353 | deltaEtaSqPt = 0.0; | |
1354 | totalTrackPt = 0.0; | |
1355 | firstMomDeltPhi = 0.0; | |
1356 | firstMomDeltEta = 0.0; | |
1357 | secondMomDeltPhi = 0.0; | |
1358 | secondMomDeltEta = 0.0; | |
1359 | secondCentralPhi = 0.0; | |
1360 | secondCentralEta = 0.0; | |
1361 | secondCentralR = 0.0; | |
1362 | ||
1363 | if(imcj<maxJetNum) | |
1364 | genJets[imcj]= *mcjet; | |
1365 | if(mcJetCounter<maxJetNum) | |
1366 | jetPts[mcJetCounter]=mcjet->Pt(); | |
1367 | mcJetCounter++; // number of jets in the acceptance | |
1368 | jetPt = mcjet->Pt(); | |
1369 | flavor = GetJetFlavour(mcjet,tracksMC,mcarray); | |
1370 | if(imcj<maxJetNum) | |
1371 | genJetsFlavor[imcj] = flavor; | |
1372 | fJetPtMC->Fill(mcjet->Pt()); | |
1373 | fJetEtaMC->Fill(mcjet->Eta(),mcjet->Eta()); | |
1374 | fJetPhiMC->Fill(mcjet->Phi(),mcjet->Phi()); | |
1375 | fFlavor->Fill(flavor,jetPt); | |
1376 | AliDebug(4,Form("Sabor del jet con pt=%f es :%d \n",jetPt,flavor)); | |
1377 | nTracksPerc = GetNumberOfMcChargedTracks(ntx,mcjet,tracksMC,mcarray,jfr); // este fija el min track pT, si es posible substraer el bckg | |
1378 | if(fIsPossibleToSubstBckg&&!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) //calculating only if there is a perpendicular cone available //IsEqualRel(jetpT, 0.0) //fCurrentJetMinPtNT90!=7000. | |
1379 | { //and only if the method worked | |
1380 | AliDebug(4,Form("For this jet and I have a perpendicular cone available")); | |
1381 | // Aqui lo que debo contar es el numero de tracks arriba del min pT del jet correspondiente | |
1382 | // que es fCurrentJetMinPtNT90 | |
1383 | nTracksAboveThresholdPerp = GetNMcChargedTracksAboveThreshold(fPerpCone,tracksMC,mcarray,jfr); | |
1384 | } | |
1385 | // Corrected jet (pT) | |
1386 | if(fIsPossibleToSubstBckg) // for the current jet | |
1387 | { | |
1388 | pTbs= mcjet->Pt()-fPerpCone->Pt(); | |
1389 | etabs= mcjet->Eta(); | |
1390 | phibs= mcjet->Phi(); | |
1391 | fBckgSbsJet[0]=pTbs; //pT | |
1392 | fBckgSbsJet[1]=etabs; //eta | |
1393 | fBckgSbsJet[2]=phibs; //phi | |
1394 | // Now re-calculate nt90 for the energy corrected jet | |
1395 | nTracksPercBckgSubst = GetRecalcNTXMc(ntx,mcjet,tracksMC,mcarray,jfr); | |
1396 | // Now re-calculate the perpendicular cone NT90 background | |
1397 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) //calculating for the current jet, if the previos method worked //!IsEqualRel(fCurrentJetMinPtNT90, 7000.) //fCurrentJetMinPtNT90Recalc!=7000. | |
1398 | { | |
1399 | // Aqui lo que debo contar es el numero de tracks arriba del min pT del jet correspondiente | |
1400 | // despues de la correccion de energia del jet | |
1401 | nTrUpThrPerpBckSubs = GetRecalcNMcChTrUpThr(fPerpCone,tracksMC,mcarray,jfr); | |
1402 | } | |
1403 | } | |
1404 | ||
1405 | //check cross sections incoming partons | |
1406 | jetXt= 2*jetPt/fSqrts; | |
1407 | if(evtype==11||evtype==12||evtype==13) //QQ | |
1408 | fFracQQ->Fill(jetXt); | |
1409 | if(evtype==28) //GQ | |
1410 | fFracGQ->Fill(jetXt); | |
1411 | if(evtype==53||evtype==68) //GG | |
1412 | fFracGG->Fill(jetXt); | |
1413 | ||
1414 | //check cross sections outgoing partons | |
1415 | if(evtype==11||evtype==12||evtype==53) //QQ | |
1416 | fFracOutGoingQQ->Fill(jetXt); | |
1417 | if(evtype==28) //GQ | |
1418 | fFracOutGoingGQ->Fill(jetXt); | |
1419 | if(evtype==13||evtype==68) //GG | |
1420 | fFracOutGoingGG->Fill(jetXt); | |
1421 | ||
1422 | fProcessJetPt->Fill(evtype,jetPt); // pythia process, filled for each jet in acceptance | |
1423 | ||
1424 | //Fill jet flavor as a function of pT and the pythia process but only leading jet | |
1425 | if(imcj==0) //leading jet | |
1426 | { | |
1427 | fFlavorLead->Fill(flavor,jetPt); | |
1428 | fProcessLeadJetPt->Fill(evtype,jetPt); | |
1429 | } | |
1430 | AliDebug(4,Form("Before the check of comparison")); | |
1431 | // To check tracks related to this MC jet | |
1432 | // RefTracks check | |
1433 | Bool_t rTrkFlagMC = kFALSE; | |
1434 | Int_t trkinmcjet = mcjet->GetRefTracks()->GetEntriesFast(); | |
1435 | if(trkinmcjet!=0&&!fForceNotTR) | |
1436 | rTrkFlagMC = kTRUE; | |
1437 | AliDebug(4,Form("Number of tracks in RefTracks MC jet:%i \n",trkinmcjet)); | |
1438 | if(rTrkFlagMC) // If there are tracks refs available | |
1439 | { | |
1440 | AliDebug(4,Form("Checking composition in MC with track refs")); | |
1441 | for(Int_t aodMCT = 0; aodMCT < trkinmcjet; aodMCT++ ) | |
1442 | { | |
1443 | pdgOfMCt=0; | |
1444 | trackxi=0; | |
1445 | AliAODMCParticle *mctrack = (AliAODMCParticle*) mcjet->GetRefTracks()->At(aodMCT); | |
1446 | if(!mctrack) continue; | |
1447 | if(!mctrack->IsPhysicalPrimary()) continue; | |
1448 | if(mctrack->Charge()==0||mctrack->Charge()==-99) continue; | |
1449 | if(mctrack->Pt()<fMinpTVal) continue; // MC no cut in the case of track reference, should be in, NO, cut anyhow to be safe | |
1450 | deltaPhiPt += DeltaPhiMC(mcjet, mctrack)*mctrack->Pt(); | |
1451 | deltaEtaPt += DeltaEtaMC(mcjet, mctrack)*mctrack->Pt(); | |
1452 | deltaPhiSqPt += DeltaPhiSqMC(mcjet, mctrack)*mctrack->Pt(); | |
1453 | deltaEtaSqPt += DeltaEtaSqMC(mcjet, mctrack)*mctrack->Pt(); | |
1454 | totalTrackPt += mctrack->Pt(); | |
1455 | ||
1456 | pdgOfMCt=abs(mctrack->GetPdgCode()); | |
1457 | if(!IsEqualRel(mctrack->Pt(), 0.0)) //!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.) // mctrack->Pt()!=0 | |
1458 | trackxi= log(jetPt/mctrack->Pt()); | |
1459 | switch(abs(flavor)) | |
1460 | { | |
1461 | case 1: | |
1462 | if(pdgOfMCt==321) | |
1463 | fFragKaon[0]->Fill(trackxi,jetPt); | |
1464 | if(pdgOfMCt==211) | |
1465 | fFragPion[0]->Fill(trackxi,jetPt); | |
1466 | if(pdgOfMCt==2212) | |
1467 | fFragProton[0]->Fill(trackxi,jetPt); | |
1468 | break; | |
1469 | case 2: | |
1470 | if(pdgOfMCt==321) | |
1471 | fFragKaon[1]->Fill(trackxi,jetPt); | |
1472 | if(pdgOfMCt==211) | |
1473 | fFragPion[1]->Fill(trackxi,jetPt); | |
1474 | if(pdgOfMCt==2212) | |
1475 | fFragProton[1]->Fill(trackxi,jetPt); | |
1476 | break; | |
1477 | case 3: | |
1478 | if(pdgOfMCt==321) | |
1479 | fFragKaon[2]->Fill(trackxi,jetPt); | |
1480 | if(pdgOfMCt==211) | |
1481 | fFragPion[2]->Fill(trackxi,jetPt); | |
1482 | if(pdgOfMCt==2212) | |
1483 | fFragProton[2]->Fill(trackxi,jetPt); | |
1484 | break; | |
1485 | case 4: | |
1486 | if(pdgOfMCt==321) | |
1487 | fFragKaon[3]->Fill(trackxi,jetPt); | |
1488 | if(pdgOfMCt==211) | |
1489 | fFragPion[3]->Fill(trackxi,jetPt); | |
1490 | if(pdgOfMCt==2212) | |
1491 | fFragProton[3]->Fill(trackxi,jetPt); | |
1492 | break; | |
1493 | case 5: | |
1494 | if(pdgOfMCt==321) | |
1495 | fFragKaon[4]->Fill(trackxi,jetPt); | |
1496 | if(pdgOfMCt==211) | |
1497 | fFragPion[4]->Fill(trackxi,jetPt); | |
1498 | if(pdgOfMCt==2212) | |
1499 | fFragProton[4]->Fill(trackxi,jetPt); | |
1500 | break; | |
1501 | case 21: | |
1502 | if(pdgOfMCt==321) | |
1503 | fFragKaon[5]->Fill(trackxi,jetPt); | |
1504 | if(pdgOfMCt==211) | |
1505 | fFragPion[5]->Fill(trackxi,jetPt); | |
1506 | if(pdgOfMCt==2212) | |
1507 | fFragProton[5]->Fill(trackxi,jetPt); | |
1508 | break; | |
1509 | default: | |
1510 | break; | |
1511 | } // end switch flavor | |
1512 | }// end loop over AODMC particles of trackrefs | |
1513 | if(!IsEqualRel(totalTrackPt, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) //totalTrackPt!=0.0 | |
1514 | { | |
1515 | firstMomDeltPhi = deltaPhiPt/totalTrackPt; | |
1516 | firstMomDeltEta = deltaEtaPt/totalTrackPt; | |
1517 | secondMomDeltPhi = deltaPhiSqPt/totalTrackPt; | |
1518 | secondMomDeltEta = deltaEtaSqPt/totalTrackPt; | |
1519 | secondCentralPhi = secondMomDeltPhi - firstMomDeltPhi*firstMomDeltPhi; | |
1520 | secondCentralEta = secondMomDeltEta - firstMomDeltEta*firstMomDeltEta; | |
1521 | secondCentralR = secondCentralPhi + secondCentralEta; | |
1522 | } // end if totalTrackPt!=0.0 | |
1523 | if(IsEqualRel(totalTrackPt, 0.0)) //totalTrackPt==0.0 | |
1524 | secondCentralR = 10.0; //overflow | |
1525 | }// end version with ref tracks (flag check) | |
1526 | ||
1527 | if(!rTrkFlagMC) // No ref tracks available | |
1528 | { | |
1529 | AliDebug(4,Form("Checking composition in MC without track refs")); | |
1530 | for(Int_t aodMCT = 0; aodMCT < tracksMC; aodMCT++ ) | |
1531 | { | |
1532 | pdgOfMCt=0; | |
1533 | trackxi=0; | |
1534 | AliAODMCParticle *mctrack = (AliAODMCParticle*) mcarray->At(aodMCT); | |
1535 | if(!mctrack) continue; | |
1536 | if(!mctrack->IsPhysicalPrimary()) continue; | |
1537 | if(mctrack->Charge()==0||mctrack->Charge()==-99) continue; | |
1538 | if(!IsMCTrackInsideThisJet(mctrack, mcjet, jfr)) continue; | |
1539 | if(mctrack->Pt()<fMinpTVal) continue; // MC: HERE PT CUT, NO TRACK REF | |
1540 | deltaPhiPt += DeltaPhiMC(mcjet, mctrack)*mctrack->Pt(); | |
1541 | deltaEtaPt += DeltaEtaMC(mcjet, mctrack)*mctrack->Pt(); | |
1542 | deltaPhiSqPt += DeltaPhiSqMC(mcjet, mctrack)*mctrack->Pt(); | |
1543 | deltaEtaSqPt += DeltaEtaSqMC(mcjet, mctrack)*mctrack->Pt(); | |
1544 | totalTrackPt += mctrack->Pt(); | |
1545 | ||
1546 | pdgOfMCt=abs(mctrack->GetPdgCode()); | |
1547 | if(!IsEqualRel(mctrack->Pt(), 0.0)) //!IsEqualRel(mctrack->Pt(), 0.0) // mctrack->Pt()!=0 | |
1548 | trackxi= log(jetPt/mctrack->Pt()); | |
1549 | switch(flavor) | |
1550 | { | |
1551 | case 1: | |
1552 | if(pdgOfMCt==321) | |
1553 | fFragKaon[0]->Fill(trackxi,jetPt); | |
1554 | if(pdgOfMCt==211) | |
1555 | fFragPion[0]->Fill(trackxi,jetPt); | |
1556 | if(pdgOfMCt==2212) | |
1557 | fFragProton[0]->Fill(trackxi,jetPt); | |
1558 | break; | |
1559 | case 2: | |
1560 | if(pdgOfMCt==321) | |
1561 | fFragKaon[1]->Fill(trackxi,jetPt); | |
1562 | if(pdgOfMCt==211) | |
1563 | fFragPion[1]->Fill(trackxi,jetPt); | |
1564 | if(pdgOfMCt==2212) | |
1565 | fFragProton[1]->Fill(trackxi,jetPt); | |
1566 | break; | |
1567 | case 3: | |
1568 | if(pdgOfMCt==321) | |
1569 | fFragKaon[2]->Fill(trackxi,jetPt); | |
1570 | if(pdgOfMCt==211) | |
1571 | fFragPion[2]->Fill(trackxi,jetPt); | |
1572 | if(pdgOfMCt==2212) | |
1573 | fFragProton[2]->Fill(trackxi,jetPt); | |
1574 | break; | |
1575 | case 4: | |
1576 | if(pdgOfMCt==321) | |
1577 | fFragKaon[3]->Fill(trackxi,jetPt); | |
1578 | if(pdgOfMCt==211) | |
1579 | fFragPion[3]->Fill(trackxi,jetPt); | |
1580 | if(pdgOfMCt==2212) | |
1581 | fFragProton[3]->Fill(trackxi,jetPt); | |
1582 | break; | |
1583 | case 5: | |
1584 | if(pdgOfMCt==321) | |
1585 | fFragKaon[4]->Fill(trackxi,jetPt); | |
1586 | if(pdgOfMCt==211) | |
1587 | fFragPion[4]->Fill(trackxi,jetPt); | |
1588 | if(pdgOfMCt==2212) | |
1589 | fFragProton[4]->Fill(trackxi,jetPt); | |
1590 | break; | |
1591 | case 21: | |
1592 | if(pdgOfMCt==321) | |
1593 | fFragKaon[5]->Fill(trackxi,jetPt); | |
1594 | if(pdgOfMCt==211) | |
1595 | fFragPion[5]->Fill(trackxi,jetPt); | |
1596 | if(pdgOfMCt==2212) | |
1597 | fFragProton[5]->Fill(trackxi,jetPt); | |
1598 | break; | |
1599 | default: | |
1600 | break; | |
1601 | } // end switch flavor | |
1602 | }// end loop over AODMC particles | |
1603 | if(!IsEqualRel(totalTrackPt, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) // totalTrackPt!=0.0 | |
1604 | { | |
1605 | firstMomDeltPhi = deltaPhiPt/totalTrackPt; | |
1606 | firstMomDeltEta = deltaEtaPt/totalTrackPt; | |
1607 | secondMomDeltPhi = deltaPhiSqPt/totalTrackPt; | |
1608 | secondMomDeltEta = deltaEtaSqPt/totalTrackPt; | |
1609 | secondCentralPhi = secondMomDeltPhi - firstMomDeltPhi*firstMomDeltPhi; | |
1610 | secondCentralEta = secondMomDeltEta - firstMomDeltEta*firstMomDeltEta; | |
1611 | secondCentralR = secondCentralPhi + secondCentralEta; | |
1612 | } // end if totalTrackPt!=0.0 | |
1613 | if(IsEqualRel(totalTrackPt, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) //totalTrackPt==0.0 | |
1614 | secondCentralR = 10.0; //overflow | |
1615 | } //End old version (no ref tracks) | |
1616 | ||
1617 | if(fIsPossibleToSubstBckg) | |
1618 | { | |
1619 | // To make sure, re-initialize | |
1620 | deltaPhiPtPerp = 0.0; | |
1621 | deltaEtaPtPerp = 0.0; | |
1622 | deltaPhiSqPtPerp = 0.0; | |
1623 | deltaEtaSqPtPerp = 0.0; | |
1624 | totalTrackPtPerp = 0.0; | |
1625 | firstMomDeltPhiPerp = 0.0; | |
1626 | firstMomDeltEtaPerp = 0.0; | |
1627 | secondMomDeltPhiPerp = 0.0; | |
1628 | secondMomDeltEtaPerp = 0.0; | |
1629 | secondCentralPhiPerp = 0.0; | |
1630 | secondCentralEtaPerp = 0.0; | |
1631 | secondCentralRPerp = 0.0; | |
1632 | ||
1633 | AliDebug(4,Form("Checking SCM in MC for the perpendicular cone")); | |
1634 | for(Int_t aodMCperp = 0; aodMCperp < tracksMC; aodMCperp++ ) | |
1635 | { | |
1636 | AliAODMCParticle *mctrackperp = (AliAODMCParticle*) mcarray->At(aodMCperp); | |
1637 | if(!mctrackperp) continue; | |
1638 | if(!mctrackperp->IsPhysicalPrimary()) continue; | |
1639 | if(mctrackperp->Charge()==0||mctrackperp->Charge()==-99) continue; | |
1640 | if(!IsMCTrackInsideThisJet(mctrackperp, fPerpCone, jfr)) continue; | |
1641 | if(mctrackperp->Pt()<fMinpTVal) continue; // MC: HERE PT CUT | |
1642 | deltaPhiPtPerp += DeltaPhiMC(fPerpCone, mctrackperp)*mctrackperp->Pt(); | |
1643 | deltaEtaPtPerp += DeltaEtaMC(fPerpCone, mctrackperp)*mctrackperp->Pt(); | |
1644 | deltaPhiSqPtPerp += DeltaPhiSqMC(fPerpCone, mctrackperp)*mctrackperp->Pt(); | |
1645 | deltaEtaSqPtPerp += DeltaEtaSqMC(fPerpCone, mctrackperp)*mctrackperp->Pt(); | |
1646 | totalTrackPtPerp += mctrackperp->Pt(); | |
1647 | }// end loop over AODMC particles | |
1648 | if(!IsEqualRel(totalTrackPtPerp, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) // totalTrackPtPerp!=0.0 | |
1649 | { | |
1650 | firstMomDeltPhiPerp = deltaPhiPtPerp/totalTrackPtPerp; | |
1651 | firstMomDeltEtaPerp = deltaEtaPtPerp/totalTrackPtPerp; | |
1652 | secondMomDeltPhiPerp = deltaPhiSqPtPerp/totalTrackPtPerp; | |
1653 | secondMomDeltEtaPerp = deltaEtaSqPtPerp/totalTrackPtPerp; | |
1654 | secondCentralPhiPerp = secondMomDeltPhiPerp - firstMomDeltPhiPerp*firstMomDeltPhiPerp; | |
1655 | secondCentralEtaPerp = secondMomDeltEtaPerp - firstMomDeltEtaPerp*firstMomDeltEtaPerp; | |
1656 | secondCentralRPerp = secondCentralPhiPerp + secondCentralEtaPerp; | |
1657 | } // end if totalTrackPt!=0.0 | |
1658 | if(IsEqualRel(totalTrackPtPerp, 0.0)) //!IsEqualRel(totalTrackPtPerp, 0.0) //totalTrackPtPerp==0.0 | |
1659 | secondCentralRPerp = 10.0; //overflow | |
1660 | } | |
1661 | ///// end of adding the SCM for the perpendicular cone | |
1662 | ||
1663 | if(mcjets==1) // if only one jet in the whole event, and inside acceptance | |
1664 | { | |
1665 | // reference multiplicity stuff in pp, also filled in PbPb, but does not matter. | |
1666 | // set to: V0 like corrected multiplicity: correctedV0LikeMult | |
1667 | if(correctedV0LikeMult<25) | |
1668 | { | |
1669 | fNChTrRDMultOJMC[0]->Fill(nTracksPerc,jetPt); | |
1670 | fSCMRDMultOJMC[0]->Fill(secondCentralR,jetPt); | |
1671 | } | |
1672 | if(correctedV0LikeMult>=25&&correctedV0LikeMult<50) | |
1673 | { | |
1674 | fNChTrRDMultOJMC[1]->Fill(nTracksPerc,jetPt); | |
1675 | fSCMRDMultOJMC[1]->Fill(secondCentralR,jetPt); | |
1676 | } | |
1677 | if(correctedV0LikeMult>=50&&correctedV0LikeMult<90) | |
1678 | { | |
1679 | fNChTrRDMultOJMC[2]->Fill(nTracksPerc,jetPt); | |
1680 | fSCMRDMultOJMC[2]->Fill(secondCentralR,jetPt); | |
1681 | } | |
1682 | if(correctedV0LikeMult>=90&&correctedV0LikeMult<120) | |
1683 | { | |
1684 | fNChTrRDMultOJMC[3]->Fill(nTracksPerc,jetPt); | |
1685 | fSCMRDMultOJMC[3]->Fill(secondCentralR,jetPt); | |
1686 | } | |
1687 | if(correctedV0LikeMult>=120&&correctedV0LikeMult<150) | |
1688 | { | |
1689 | fNChTrRDMultOJMC[4]->Fill(nTracksPerc,jetPt); | |
1690 | fSCMRDMultOJMC[4]->Fill(secondCentralR,jetPt); | |
1691 | } | |
1692 | if(correctedV0LikeMult>=150&&correctedV0LikeMult<200) | |
1693 | { | |
1694 | fNChTrRDMultOJMC[5]->Fill(nTracksPerc,jetPt); | |
1695 | fSCMRDMultOJMC[5]->Fill(secondCentralR,jetPt); | |
1696 | } | |
1697 | if(correctedV0LikeMult>=200&&correctedV0LikeMult<300) | |
1698 | { | |
1699 | fNChTrRDMultOJMC[6]->Fill(nTracksPerc,jetPt); | |
1700 | fSCMRDMultOJMC[6]->Fill(secondCentralR,jetPt); | |
1701 | } | |
1702 | if(correctedV0LikeMult>=300) | |
1703 | { | |
1704 | fNChTrRDMultOJMC[7]->Fill(nTracksPerc,jetPt); | |
1705 | fSCMRDMultOJMC[7]->Fill(secondCentralR,jetPt); | |
1706 | } | |
1707 | //Results for inclusive jets | |
1708 | // 2nd. Reference: set to: TPC tracks minus jet, minus dijet area | |
1709 | if(softRefMcNoJets<5) | |
1710 | { | |
1711 | fNChTrRDMultSEOJMC[0]->Fill(nTracksPerc,jetPt); | |
1712 | fSCMRDMultSEOJMC[0]->Fill(secondCentralR,jetPt); | |
1713 | } | |
1714 | if(softRefMcNoJets>=5&&softRefMcNoJets<10) | |
1715 | { | |
1716 | fNChTrRDMultSEOJMC[1]->Fill(nTracksPerc,jetPt); | |
1717 | fSCMRDMultSEOJMC[1]->Fill(secondCentralR,jetPt); | |
1718 | } | |
1719 | if(softRefMcNoJets>=10&&softRefMcNoJets<15) | |
1720 | { | |
1721 | fNChTrRDMultSEOJMC[2]->Fill(nTracksPerc,jetPt); | |
1722 | fSCMRDMultSEOJMC[2]->Fill(secondCentralR,jetPt); | |
1723 | } | |
1724 | if(softRefMcNoJets>=15&&softRefMcNoJets<20) | |
1725 | { | |
1726 | fNChTrRDMultSEOJMC[3]->Fill(nTracksPerc,jetPt); | |
1727 | fSCMRDMultSEOJMC[3]->Fill(secondCentralR,jetPt); | |
1728 | } | |
1729 | if(softRefMcNoJets>=20&&softRefMcNoJets<30) | |
1730 | { | |
1731 | fNChTrRDMultSEOJMC[4]->Fill(nTracksPerc,jetPt); | |
1732 | fSCMRDMultSEOJMC[4]->Fill(secondCentralR,jetPt); | |
1733 | } | |
1734 | if(softRefMcNoJets>=30&&softRefMcNoJets<40) | |
1735 | { | |
1736 | fNChTrRDMultSEOJMC[5]->Fill(nTracksPerc,jetPt); | |
1737 | fSCMRDMultSEOJMC[5]->Fill(secondCentralR,jetPt); | |
1738 | } | |
1739 | if(softRefMcNoJets>=40&&softRefMcNoJets<50) | |
1740 | { | |
1741 | fNChTrRDMultSEOJMC[6]->Fill(nTracksPerc,jetPt); | |
1742 | fSCMRDMultSEOJMC[6]->Fill(secondCentralR,jetPt); | |
1743 | } | |
1744 | if(softRefMcNoJets>=50) | |
1745 | { | |
1746 | fNChTrRDMultSEOJMC[7]->Fill(nTracksPerc,jetPt); | |
1747 | fSCMRDMultSEOJMC[7]->Fill(secondCentralR,jetPt); | |
1748 | } | |
1749 | } | |
1750 | //End results for inclusive jets,starts parton by parton | |
1751 | ||
1752 | switch(abs(flavor)) | |
1753 | { | |
1754 | case 1: | |
1755 | fNChTr[0]->Fill(nTracksPerc,jetPt); | |
1756 | fProcessPDG[0]->Fill(jetPt,evtype); | |
1757 | fHistPtParton[0]->Fill(jetPt); | |
1758 | fSCM[0]->Fill(secondCentralR,jetPt); | |
8dcbcbbb | 1759 | fMinTrackPtInNTXh[0]->Fill(fMinTrackPtInNTX,jetPt,1); // 0 for pp MC |
0c9acc4c | 1760 | fMaxTrackPtInNTXh[0]->Fill(fMaxTrackPtInNTX,jetPt); // 0 for MC |
1761 | if(fIsPossibleToSubstBckg) | |
1762 | { | |
1763 | fNChTrCorrMCQuark->Fill(nTracksPercBckgSubst,pTbs); | |
1764 | fSCMMCPerp->Fill(secondCentralR,jetPt); | |
1765 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) //!IsEqualRel(mctrack->Pt(), 0.0) // fCurrentJetMinPtNT90!=7000. | |
1766 | fNChTrMCPerp->Fill(nTracksAboveThresholdPerp,jetPt); | |
1767 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) // !IsEqualRel(fCurrentJetMinPtNT90, 7000.) // fCurrentJetMinPtNT90Recalc!=7000. | |
1768 | fNChTrCorrMCPerp->Fill(nTrUpThrPerpBckSubs,pTbs); | |
1769 | } | |
1770 | break; | |
1771 | case 2: | |
1772 | fNChTr[1]->Fill(nTracksPerc,jetPt); | |
1773 | fProcessPDG[1]->Fill(jetPt,evtype); | |
1774 | fHistPtParton[1]->Fill(jetPt); | |
1775 | fSCM[1]->Fill(secondCentralR,jetPt); | |
8dcbcbbb | 1776 | fMinTrackPtInNTXh[0]->Fill(fMinTrackPtInNTX,jetPt,1); // 0 for pp MC |
0c9acc4c | 1777 | fMaxTrackPtInNTXh[0]->Fill(fMaxTrackPtInNTX,jetPt); // 0 for MC |
1778 | if(fIsPossibleToSubstBckg) | |
1779 | { | |
1780 | fNChTrCorrMCQuark->Fill(nTracksPercBckgSubst,pTbs); | |
1781 | fSCMMCPerp->Fill(secondCentralR,jetPt); | |
1782 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
1783 | fNChTrMCPerp->Fill(nTracksAboveThresholdPerp,jetPt); | |
1784 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) | |
1785 | fNChTrCorrMCPerp->Fill(nTrUpThrPerpBckSubs,pTbs); | |
1786 | } | |
1787 | break; | |
1788 | case 3: | |
1789 | fNChTr[2]->Fill(nTracksPerc,jetPt); | |
1790 | fProcessPDG[2]->Fill(jetPt,evtype); | |
1791 | fHistPtParton[2]->Fill(jetPt); | |
1792 | fSCM[2]->Fill(secondCentralR,jetPt); | |
8dcbcbbb | 1793 | fMinTrackPtInNTXh[0]->Fill(fMinTrackPtInNTX,jetPt,1); // 0 for pp MC |
0c9acc4c | 1794 | fMaxTrackPtInNTXh[0]->Fill(fMaxTrackPtInNTX,jetPt); // 0 for MC |
1795 | if(fIsPossibleToSubstBckg) | |
1796 | { | |
1797 | fNChTrCorrMCQuark->Fill(nTracksPercBckgSubst,pTbs); | |
1798 | fSCMMCPerp->Fill(secondCentralR,jetPt); | |
1799 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
1800 | fNChTrMCPerp->Fill(nTracksAboveThresholdPerp,jetPt); | |
1801 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) | |
1802 | fNChTrCorrMCPerp->Fill(nTrUpThrPerpBckSubs,pTbs); | |
1803 | } | |
1804 | break; | |
1805 | case 4: | |
1806 | fNChTr[3]->Fill(nTracksPerc,jetPt); | |
1807 | fProcessPDG[3]->Fill(jetPt,evtype); | |
1808 | fHistPtParton[3]->Fill(jetPt); | |
1809 | fSCM[3]->Fill(secondCentralR,jetPt); | |
8dcbcbbb | 1810 | fMinTrackPtInNTXh[0]->Fill(fMinTrackPtInNTX,jetPt,1); // 0 for pp MC |
0c9acc4c | 1811 | fMaxTrackPtInNTXh[0]->Fill(fMaxTrackPtInNTX,jetPt); // 0 for MC |
1812 | if(fIsPossibleToSubstBckg) | |
1813 | { | |
1814 | fNChTrCorrMCQuark->Fill(nTracksPercBckgSubst,pTbs); | |
1815 | fSCMMCPerp->Fill(secondCentralR,jetPt); | |
1816 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
1817 | fNChTrMCPerp->Fill(nTracksAboveThresholdPerp,jetPt); | |
1818 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) | |
1819 | fNChTrCorrMCPerp->Fill(nTrUpThrPerpBckSubs,pTbs); | |
1820 | } | |
1821 | break; | |
1822 | case 5: | |
1823 | fNChTr[4]->Fill(nTracksPerc,jetPt); | |
1824 | fProcessPDG[4]->Fill(jetPt,evtype); | |
1825 | fHistPtParton[4]->Fill(jetPt); | |
1826 | fSCM[4]->Fill(secondCentralR,jetPt); | |
8dcbcbbb | 1827 | fMinTrackPtInNTXh[0]->Fill(fMinTrackPtInNTX,jetPt,1); // 0 for pp MC |
0c9acc4c | 1828 | fMaxTrackPtInNTXh[0]->Fill(fMaxTrackPtInNTX,jetPt); // 0 for MC |
1829 | if(fIsPossibleToSubstBckg) | |
1830 | { | |
1831 | fNChTrCorrMCQuark->Fill(nTracksPercBckgSubst,pTbs); | |
1832 | fSCMMCPerp->Fill(secondCentralR,jetPt); | |
1833 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
1834 | fNChTrMCPerp->Fill(nTracksAboveThresholdPerp,jetPt); | |
1835 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) | |
1836 | fNChTrCorrMCPerp->Fill(nTrUpThrPerpBckSubs,pTbs); | |
1837 | } | |
1838 | break; | |
1839 | case 21: | |
1840 | fNChTr[5]->Fill(nTracksPerc,jetPt); | |
1841 | fProcessPDG[5]->Fill(jetPt,evtype); | |
1842 | fHistPtParton[5]->Fill(jetPt); | |
1843 | fSCM[5]->Fill(secondCentralR,jetPt); | |
8dcbcbbb | 1844 | fMinTrackPtInNTXh[0]->Fill(fMinTrackPtInNTX,jetPt,1); // 0 for pp MC |
0c9acc4c | 1845 | fMaxTrackPtInNTXh[0]->Fill(fMaxTrackPtInNTX,jetPt); // 0 for MC |
1846 | if(fIsPossibleToSubstBckg) | |
1847 | { | |
1848 | fNChTrCorrMCGluon->Fill(nTracksPercBckgSubst,pTbs); | |
1849 | fSCMMCPerp->Fill(secondCentralR,jetPt); | |
1850 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
1851 | fNChTrMCPerp->Fill(nTracksAboveThresholdPerp,jetPt); | |
1852 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) | |
1853 | fNChTrCorrMCPerp->Fill(nTrUpThrPerpBckSubs,pTbs); | |
1854 | } | |
1855 | break; | |
1856 | default: | |
1857 | break; | |
1858 | } | |
1859 | AliDebug(4,Form("Sabor del jet numero:%d es: %d y se necesitaron %d tracks \n",indxmc,flavor,nTracksPerc)); | |
1860 | imcj++; | |
1861 | } // MC jets for cycle | |
1862 | nGenJets=imcj; | |
1863 | for(Int_t u=0 ; u<mcJetCounter ;u++) | |
1864 | { | |
1865 | if(u<7) | |
1866 | fJetsMultPtMC->Fill(jetPts[u],mcJetCounter); | |
1867 | } | |
1868 | // if(fEnablePrints) | |
1869 | // { | |
1870 | // if(mcJetCounter>=3) | |
1871 | // printf("%i Jets inside acceptance at event number:%i \n",mcJetCounter,fEvtCount-1); | |
1872 | // } | |
1873 | fNAccJetsMC->Fill(mcJetCounter,mcJetCounter); | |
1874 | } // end if MC info in AOD | |
1875 | ||
1876 | if(!fUseOnlyMC) | |
1877 | { | |
1878 | // Primero que todo, debe de ir la seleccion de eventos reconstruidos: | |
1879 | // 1. Que tenga un vertice reconstruido dentro de 10 cm. | |
1880 | // Vertex info for reconstructed events | |
1881 | AliAODVertex *pvx = fAOD->GetPrimaryVertex(); | |
1882 | if(!pvx) | |
1883 | { | |
1884 | AliError("No primary vertex!"); | |
1885 | return; | |
1886 | } | |
1887 | if(TMath::Abs(pvx->GetZ())>10.) // if the event vertex is larger than 10 cm, reject | |
1888 | return; | |
1889 | fZVertex->Fill(pvx->GetZ(),pvx->GetZ()); // vertex, provide number of accepted events as entries for reco jets | |
1890 | ||
1891 | /////////////////////////////////////// | |
1892 | // SECONDARY RECO BRANCH STUFF // | |
1893 | // Get the secondary branch with the reconstructed jets | |
1894 | if(fBranchSecRec!="") | |
1895 | { | |
1896 | AliDebug(4,Form("fBranchSecRec was not default \n")); | |
1897 | TClonesArray *aodSecRecJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchSecRec.Data())); | |
1898 | if(!aodSecRecJets) | |
1899 | { | |
1900 | AliError(Form("%s:%d no reconstructed Secondary Jet array with name %s in AOD",(char*)__FILE__,__LINE__,fBranchSecRec.Data())); | |
1901 | return; //stop the analysis | |
1902 | } | |
1903 | AliDebug(4,Form("There are %d reconstructed jets from the secondary branch in this event \n", aodSecRecJets->GetEntries())); | |
1904 | Int_t recojetsSEC = aodSecRecJets->GetEntries(); | |
1905 | fNJetsRDSeco->Fill(recojetsSEC,recojetsSEC); // number of jets in the secondary branch | |
1906 | ||
1907 | HasOverlapedCones(aodSecRecJets); // Procedure for tagging usable jets | |
1908 | // Up 16 jets are flagged | |
1909 | ||
1910 | AliDebug(4,"Antes de realizar el loop jets reconstruidos del segundo branch \n"); | |
1911 | Int_t secondjetacccounter = 0; | |
1912 | for (Int_t IDXS = 0; IDXS < recojetsSEC; IDXS++) | |
1913 | { | |
1914 | AliDebug(4,Form("Number of current jet:%i \n",IDXS)); | |
1915 | AliAODJet *rjetsec = dynamic_cast<AliAODJet*>(aodSecRecJets->At(IDXS)); | |
1916 | if (!rjetsec) | |
1917 | { | |
1918 | AliDebug(2,Form("ERROR: Could not receive jet %d from the second branch\n", IDXS)); | |
1919 | continue; | |
1920 | } | |
1921 | ||
1922 | /////////////////////////////////////////////////////////////////////////////// | |
1923 | ///// Part for Chritians plot of inclusive and leading jets comp at 2.76 TeV // | |
1924 | if(!IsInsideAcceptance(rjetsec)) // old condition | |
1925 | continue; | |
1926 | if(IDXS==0) // leading jet | |
1927 | fSecRecJetPtLeading->Fill(rjetsec->Pt()); | |
1928 | fSecRecJetPtInclusive->Fill(rjetsec->Pt()); // all | |
1929 | ///// End of Christians Plot reco 2nd branch | |
1930 | /////////////////////////////////////////////////////////////////////////////// | |
1931 | ||
1932 | if(IDXS>15) | |
1933 | continue; | |
1934 | ||
1935 | if(!fJetFlags[IDXS]) // If the jet is flaged kFALSE, not usable | |
1936 | continue; | |
1937 | ||
1938 | fJetPtSec->Fill(rjetsec->Pt()); | |
1939 | fJetEtaSec->Fill(rjetsec->Eta(),rjetsec->Eta()); | |
1940 | fJetPhiSec->Fill(rjetsec->Phi(),rjetsec->Phi()); | |
1941 | secondjetacccounter++; | |
1942 | } | |
1943 | fNAccJetsRDSeco->Fill(secondjetacccounter,secondjetacccounter); | |
1944 | } | |
1945 | // END OF SECONDARY BRANCH STUFF // | |
1946 | /////////////////////////////////////// | |
1947 | ||
1948 | // Get the branch with the reconstructed jets | |
1949 | TClonesArray *aodRecJets = dynamic_cast<TClonesArray*>(fAOD->FindListObject(fBranchRec.Data())); | |
1950 | if(!aodRecJets) | |
1951 | { | |
1952 | AliError(Form("%s:%d no reconstructed Jet array with name %s in AOD",(char*)__FILE__,__LINE__,fBranchRec.Data())); | |
1953 | return; | |
1954 | } | |
1955 | ||
1956 | AliDebug(4,Form("There are %d reconstructed jets in this event\n", aodRecJets->GetEntries())); | |
1957 | Int_t recojets = aodRecJets->GetEntries(); | |
1958 | fNJetsRD->Fill(recojets,recojets); // numero de jets directamente del branch | |
1959 | ||
1960 | HasOverlapedCones(aodRecJets); // Procedure for tagging usable jets | |
1961 | // Up 16 jets are flagged | |
1962 | ||
1963 | AliDebug(4,"Antes de realizar el loop sobre AOD tracks \n"); | |
1964 | // Loop over AOD tracks | |
1965 | Int_t tracksAOD = fAOD->GetNumberOfTracks(); | |
1966 | AliDebug(4,Form("Numero de tracks en el AOD:%d \n",tracksAOD)); | |
1967 | Double_t aodtracketa = 0.0; | |
1968 | perpendicularPt = 0.0; | |
1969 | px=0.0; | |
1970 | py=0.0; | |
1971 | pz=0.0; | |
1972 | en=0.0; | |
1973 | pTbs=0.0; | |
1974 | etabs=0.0; | |
1975 | phibs=0.0; | |
1976 | fBckgSbsJet[0]=0.0; | |
1977 | fBckgSbsJet[1]=0.0; | |
1978 | fBckgSbsJet[2]=0.0; | |
1979 | Int_t refNJMult = 0; | |
1980 | Int_t myTotalMultRef = 0; | |
1981 | Int_t myTotalSoftMultRef = 0; | |
1982 | for(Int_t aodT = 0; aodT < tracksAOD; aodT++ ) | |
1983 | { | |
1984 | AliAODTrack *aodtrack = fAOD->GetTrack(aodT); | |
1985 | if(!aodtrack) continue; | |
1986 | aodtracketa = TMath::Abs(aodtrack->Eta()); | |
1987 | if(aodtracketa>0.9) continue; | |
1988 | if(!aodtrack->TestFilterBit(fFilterBit)) continue; //track filter selection | |
1989 | if(!aodtrack->IsPrimaryCandidate()) continue; // only primaries, maybe is redundant with the previous selection... | |
1990 | fEtaAOD->Fill(aodtrack->Eta(),aodtrack->Eta()); | |
1991 | fPhiAOD->Fill(aodtrack->Phi(),aodtrack->Phi()); | |
1992 | fPtAOD->Fill(aodtrack->Pt(),aodtrack->Pt()); | |
1993 | if(fJetEvent) // if has an accepted jet, calculate the perpendicular cone | |
1994 | { | |
1995 | if(HasPerpendicularCone()) // If there is a perpendicular cone available | |
1996 | { | |
1997 | if(aodtrack->Pt()>fMinpTVal) | |
1998 | { | |
1999 | if(GetDeltaR(fEtaPerpCoord,fPhiPerpCoord,aodtrack->Eta(),aodtrack->Phi())<fJetRadius) | |
2000 | perpendicularPt = perpendicularPt + aodtrack->Pt(); | |
2001 | } | |
2002 | } | |
2003 | } // end if jet event | |
2004 | //Total TPC multiplicity of primaries | |
2005 | myTotalMultRef++; | |
2006 | if(aodtrack->Pt()<fMinpTValUE) continue; // pT cut fMinpTValUE | |
2007 | if(aodtrack->Pt()>fMaxpTValUE) continue; // pT cut fMaxpTValUE | |
2008 | myTotalSoftMultRef++; | |
2009 | if(!IsTrackInsideExcludedArea(aodtrack->Eta(), aodtrack->Phi(), aodRecJets)) | |
2010 | refNJMult++; | |
2011 | } // end track loop over the event... | |
2012 | ||
2013 | fRefMultWOJet->Fill(refMultiplicity,refNJMult); | |
2014 | fMultWOJetVZero->Fill(refNJMult,multFullV0); | |
2015 | Double_t v0CorrMult = multFullV0 - GetV0ExcludedMultiplicity(aodRecJets); | |
2016 | fRefMultFullV0->Fill(refMultiplicity,multFullV0); | |
2017 | fRefMultV0Corr->Fill(refMultiplicity,v0CorrMult); | |
2018 | fFullV0V0Corr->Fill(multFullV0,v0CorrMult); | |
2019 | fRefAODTrackCount->Fill(refMultiplicity,myTotalMultRef); | |
2020 | fTrackCountWOJet->Fill(myTotalMultRef,refNJMult); | |
2021 | ||
2022 | if(recojets==1) // correlation for only monojet events | |
2023 | { | |
2024 | fRefMultFullV0UJ->Fill(refMultiplicity,multFullV0); | |
2025 | fRefMultV0CorrUJ->Fill(refMultiplicity,v0CorrMult); | |
2026 | fFullV0V0CorrUJ->Fill(multFullV0,v0CorrMult); | |
2027 | fMultWOJetVZeroUJ->Fill(refNJMult,multFullV0); | |
2028 | fRefMultWOJetUJ->Fill(refMultiplicity,refNJMult); | |
2029 | fRefAODTrackCountUJ->Fill(refMultiplicity,myTotalMultRef); | |
2030 | fTrackCountWOJetUJ->Fill(myTotalMultRef,refNJMult); | |
2031 | } | |
2032 | ||
2033 | if(fJetEvent) // if has an accepted jet, calculate the perpendicular cone | |
2034 | { | |
2035 | if(HasPerpendicularCone()) // If there is a perpendicular cone available | |
2036 | { | |
2037 | px = perpendicularPt*TMath::Cos(fPhiPerpCoord); | |
2038 | py = perpendicularPt*TMath::Sin(fPhiPerpCoord); | |
2039 | pz = perpendicularPt/TMath::Tan(2.0*TMath::ATan(TMath::Exp(-fEtaPerpCoord))); | |
2040 | en = TMath::Sqrt(px*px + py*py + pz*pz); | |
2041 | fPerpCone->SetPxPyPzE(px, py, pz, en); | |
2042 | } | |
2043 | } | |
2044 | ||
2045 | // Loop to fill a pT spectrum of the reco jets | |
2046 | Int_t irecj=0; // index for reconstructed jets to correlate | |
2047 | Int_t nrectracks[6]={0}; | |
2048 | Double_t ptrecjet[6]={0}; | |
2049 | Double_t scmr[6]={0}; | |
2050 | Double_t aodtrackxi=0; | |
2051 | Int_t ntxreco; | |
2052 | Int_t nTRecAboveThresholdPerp=0; | |
2053 | Int_t ntxrecoRecalc; | |
2054 | Int_t nTRecAboveThresholdPerpRecalc=0; | |
2055 | ||
2056 | for(Int_t i=0; i<6; i++) // Reset per event | |
2057 | { | |
2058 | fHistContainerR4[i]->Reset(); | |
2059 | fHistContainerR3[i]->Reset(); | |
2060 | fHistContainerR2[i]->Reset(); | |
2061 | } | |
2062 | ||
2063 | Double_t jetPtsR[7]={0}; // to store the pt of the jets | |
2064 | Int_t rJetCounter=0; // counter of accepted reco jets | |
2065 | fIsPossibleToSubstBckg = kTRUE; // Initialize before the loop | |
2066 | if(fJetEvent) // si tiene jets validos | |
2067 | { | |
2068 | if(!HasPerpendicularCone()) // pero no encontro un cono perpendicular libre | |
2069 | fIsPossibleToSubstBckg = kFALSE; // if not perpendicular cone, set to kFALSE, so no perpendicular calculations available | |
2070 | } | |
2071 | ||
2072 | AliDebug(4,"Antes de realizar el loop jets reconstruidos \n"); | |
2073 | for (Int_t indxrec = 0; indxrec < recojets; indxrec++) | |
2074 | { | |
2075 | AliDebug(4,Form("Number of current jet:%i \n",indxrec)); | |
2076 | ntxreco = 0; | |
2077 | ntxrecoRecalc = 0; | |
2078 | fMinTrackPtInNTX=200.0; //Initialize for each jet, overflown | |
2079 | fMaxTrackPtInNTX=200.0; //Initialize for each jet, overflown | |
2080 | fMinTrackPtInNTXR=200.0; //Initialize for each jet, overflown | |
2081 | fMaxTrackPtInNTXR=200.0; //Initialize for each jet, overflown | |
2082 | deltaPhiPt = 0.0; | |
2083 | deltaEtaPt = 0.0; | |
2084 | deltaPhiSqPt = 0.0; | |
2085 | deltaEtaSqPt = 0.0; | |
2086 | totalTrackPt = 0.0; | |
2087 | firstMomDeltPhi = 0.0; | |
2088 | firstMomDeltEta = 0.0; | |
2089 | secondMomDeltPhi = 0.0; | |
2090 | secondMomDeltEta = 0.0; | |
2091 | secondCentralPhi = 0.0; | |
2092 | secondCentralEta = 0.0; | |
2093 | secondCentralR = 0.0; | |
2094 | ||
2095 | AliAODJet *rjet = dynamic_cast<AliAODJet*>(aodRecJets->At(indxrec)); | |
2096 | if (!rjet) | |
2097 | { | |
2098 | AliDebug(2,Form("ERROR: Could not receive jet %d\n", indxrec)); | |
2099 | continue; | |
2100 | } | |
2101 | fJetEtaAll->Fill(rjet->Eta());// all jets | |
2102 | ||
2103 | /////////////////////////////////////////////////////////////////////////////// | |
2104 | ///// Part for Chritians plot of inclusive and leading jets comp at 2.76 TeV // | |
2105 | if(!IsInsideAcceptance(rjet)) // old condition | |
2106 | continue; | |
2107 | if(indxrec==0) // leading jet | |
2108 | fRecJetPtLeading->Fill(rjet->Pt()); | |
2109 | fRecJetPtInclusive->Fill(rjet->Pt()); // all | |
2110 | fJetEtaOnlyTPCcut->Fill(rjet->Eta());// only eta acceptance cut for TPC | |
2111 | ///// End of Christians Plot reco | |
2112 | /////////////////////////////////////////////////////////////////////////////// | |
2113 | ||
2114 | if(indxrec>15) | |
2115 | continue; | |
2116 | ||
2117 | if(!fJetFlags[indxrec]) // If the jet is flaged kFALSE, not usable | |
2118 | continue; | |
2119 | ||
2120 | AliDebug(4,Form("Jet #%i is in the acceptance \n",indxrec)); | |
2121 | if(rJetCounter<7) | |
2122 | jetPtsR[rJetCounter]=rjet->Pt(); | |
2123 | rJetCounter++; | |
2124 | fJetPt->Fill(rjet->Pt()); | |
2125 | fJetEta->Fill(rjet->Eta(),rjet->Eta()); | |
2126 | fJetPhi->Fill(rjet->Phi(),rjet->Phi()); | |
2127 | ||
2128 | if(rjet->Pt()>10.) | |
2129 | fJetEtaJetPt[0]->Fill(rjet->Eta()); | |
2130 | if(rjet->Pt()>30.) | |
2131 | fJetEtaJetPt[1]->Fill(rjet->Eta()); | |
2132 | if(rjet->Pt()>50.) | |
2133 | fJetEtaJetPt[2]->Fill(rjet->Eta()); | |
2134 | ||
2135 | // Reco RefTracks check | |
2136 | Bool_t rTrkFlagRec = kFALSE; | |
2137 | Int_t trkinrecjet = rjet->GetRefTracks()->GetEntriesFast(); | |
2138 | if(trkinrecjet!=0&&!fForceNotTR) | |
2139 | rTrkFlagRec = kTRUE; | |
2140 | AliDebug(4,Form("Number of tracks in RefTracks reco jet:%i \n",trkinrecjet)); | |
2141 | if(rTrkFlagRec) | |
2142 | { | |
2143 | // Check the properties of the tracks in this jet with track refs | |
2144 | AliDebug(4,Form("Checking composition in Reco jets with track refs")); | |
2145 | for(Int_t aodT = 0; aodT <trkinrecjet; aodT++ ) | |
2146 | { | |
2147 | aodtrackxi=0; | |
2148 | AliAODTrack *aodtrack = dynamic_cast<AliAODTrack*>(rjet->GetRefTracks()->At(aodT)); | |
2149 | if(!aodtrack) | |
2150 | { | |
2151 | AliError("Error, no AOD Track!"); | |
2152 | continue; | |
2153 | } | |
2154 | if(!aodtrack->TestFilterBit(fFilterBit)) | |
2155 | { | |
2156 | // printf("Rejecting track from track refs due to wrong filterbit! \n"); | |
2157 | continue; //track filter selection | |
2158 | } | |
2159 | if(!aodtrack->IsPrimaryCandidate()) | |
2160 | { | |
2161 | // printf("Rejecting track from track refs due to no primary candidate! \n"); | |
2162 | continue; // only primaries | |
2163 | } | |
2164 | deltaPhiPt += DeltaPhiTrack(rjet, aodtrack)*aodtrack->Pt(); | |
2165 | deltaEtaPt += DeltaEtaTrack(rjet, aodtrack)*aodtrack->Pt(); | |
2166 | deltaPhiSqPt += DeltaPhiSqTrack(rjet, aodtrack)*aodtrack->Pt(); | |
2167 | deltaEtaSqPt += DeltaEtaSqTrack(rjet, aodtrack)*aodtrack->Pt(); | |
2168 | totalTrackPt += aodtrack->Pt(); | |
2169 | ||
2170 | if(!IsEqualRel(aodtrack->Pt(), 0.0)) //!IsEqualRel(totalTrackPtPerp, 0.0) //aodtrack->Pt()!=0 | |
2171 | aodtrackxi= log(rjet->Pt()/aodtrack->Pt()); | |
2172 | if(irecj<maxJetNum) | |
2173 | { | |
2174 | fHistContainerR4[irecj]->Fill(aodtrackxi,rjet->Pt()); | |
2175 | if(!IsTrackInsideThisJet(aodtrack, rjet, 0.3)) continue; | |
2176 | fHistContainerR3[irecj]->Fill(aodtrackxi,rjet->Pt()); | |
2177 | if(!IsTrackInsideThisJet(aodtrack, rjet, 0.2)) continue; | |
2178 | fHistContainerR2[irecj]->Fill(aodtrackxi,rjet->Pt()); | |
2179 | } | |
2180 | } //end loop over track references | |
2181 | if(!IsEqualRel(totalTrackPt, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) // totalTrackPt!=0.0 | |
2182 | { | |
2183 | firstMomDeltPhi = deltaPhiPt/totalTrackPt; | |
2184 | firstMomDeltEta = deltaEtaPt/totalTrackPt; | |
2185 | secondMomDeltPhi = deltaPhiSqPt/totalTrackPt; | |
2186 | secondMomDeltEta = deltaEtaSqPt/totalTrackPt; | |
2187 | secondCentralPhi = secondMomDeltPhi - firstMomDeltPhi*firstMomDeltPhi; | |
2188 | secondCentralEta = secondMomDeltEta - firstMomDeltEta*firstMomDeltEta; | |
2189 | secondCentralR = secondCentralPhi + secondCentralEta; | |
2190 | } // end if totalTrackPt!=0.0 | |
2191 | if(IsEqualRel(totalTrackPt, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) // totalTrackPt==0.0 | |
2192 | secondCentralR = 10.0; //overflow value | |
2193 | } // end if there are track references | |
2194 | ||
2195 | if(!rTrkFlagRec) | |
2196 | { | |
2197 | // Check properties of the tracks in this jet without track refs | |
2198 | AliDebug(4,Form("Checking composition in Reco jets without track refs")); | |
2199 | for(Int_t aodT = 0; aodT < tracksAOD; aodT++ ) | |
2200 | { | |
2201 | AliAODTrack *aodtrack = fAOD->GetTrack(aodT); | |
2202 | if(!aodtrack) continue; | |
2203 | if(!IsTrackInsideThisJet(aodtrack, rjet, jfr)) continue; | |
2204 | if(!aodtrack->TestFilterBit(fFilterBit)) continue; //track filter selection | |
2205 | if(!aodtrack->IsPrimaryCandidate()) continue; // only primaries, perhaps redundant with the previous | |
2206 | if(aodtrack->Pt()<fMinpTVal) continue; //DATA: PT CUT | |
2207 | deltaPhiPt += DeltaPhiTrack(rjet, aodtrack)*aodtrack->Pt(); | |
2208 | deltaEtaPt += DeltaEtaTrack(rjet, aodtrack)*aodtrack->Pt(); | |
2209 | deltaPhiSqPt += DeltaPhiSqTrack(rjet, aodtrack)*aodtrack->Pt(); | |
2210 | deltaEtaSqPt += DeltaEtaSqTrack(rjet, aodtrack)*aodtrack->Pt(); | |
2211 | totalTrackPt += aodtrack->Pt(); | |
2212 | ||
2213 | if(!IsEqualRel(aodtrack->Pt(), 0.0)) //!IsEqualRel(totalTrackPt, 0.0) //aodtrack->Pt()!=0 | |
2214 | aodtrackxi= log(rjet->Pt()/aodtrack->Pt()); | |
2215 | if(irecj<maxJetNum) | |
2216 | { | |
2217 | fHistContainerR4[irecj]->Fill(aodtrackxi,rjet->Pt()); | |
2218 | if(!IsTrackInsideThisJet(aodtrack, rjet, 0.3)) continue; | |
2219 | fHistContainerR3[irecj]->Fill(aodtrackxi,rjet->Pt()); | |
2220 | if(!IsTrackInsideThisJet(aodtrack, rjet, 0.2)) continue; | |
2221 | fHistContainerR2[irecj]->Fill(aodtrackxi,rjet->Pt()); | |
2222 | } | |
2223 | } // end loop over tracks | |
2224 | if(!IsEqualRel(totalTrackPt, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) //totalTrackPt!=0.0 | |
2225 | { | |
2226 | firstMomDeltPhi = deltaPhiPt/totalTrackPt; | |
2227 | firstMomDeltEta = deltaEtaPt/totalTrackPt; | |
2228 | secondMomDeltPhi = deltaPhiSqPt/totalTrackPt; | |
2229 | secondMomDeltEta = deltaEtaSqPt/totalTrackPt; | |
2230 | secondCentralPhi = secondMomDeltPhi - firstMomDeltPhi*firstMomDeltPhi; | |
2231 | secondCentralEta = secondMomDeltEta - firstMomDeltEta*firstMomDeltEta; | |
2232 | secondCentralR = secondCentralPhi + secondCentralEta; | |
2233 | } // end if totalTrackPt!=0.0 | |
2234 | if(IsEqualRel(totalTrackPt, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) // totalTrackPt==0.0 | |
2235 | secondCentralR = 10.0; //overflow value | |
2236 | } // end of no track references | |
2237 | //Esto es lo anterior, toma al jet como es, y calcula NT90 | |
2238 | ntxreco=GetNumberOfChargedTracks(ntx,rjet, tracksAOD, fAOD, jfr); // this call fixes the minimum pT track | |
2239 | //Y aqui calcula cuantos tracks se necesitan arriba del threshold establecido en la linea anterior | |
2240 | //esto debe ser para cada jet. Lo unico que se calcula una sola vez es el cono perpendicular | |
2241 | if(fIsPossibleToSubstBckg&&!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) //and only if the method worked | |
2242 | nTRecAboveThresholdPerp = GetNRecChargedTracksAboveThreshold(fPerpCone,tracksAOD, fAOD,jfr); //here one changes NTX | |
2243 | ||
2244 | // correct the jet pT | |
2245 | if(fIsPossibleToSubstBckg) // If there is a perpendicular cone available, substract backg and fill the new jet pT | |
2246 | { | |
2247 | pTbs= rjet->Pt()-fPerpCone->Pt(); | |
2248 | etabs= rjet->Eta(); | |
2249 | phibs= rjet->Phi(); | |
2250 | fBckgSbsJet[0]=pTbs; //pT | |
2251 | fBckgSbsJet[1]=etabs; //eta | |
2252 | fBckgSbsJet[2]=phibs; //phi | |
2253 | // Now re-calculate nt90 for the energy corrected jet | |
2254 | ntxrecoRecalc = GetRecalcNTXRec(ntx,rjet, tracksAOD, fAOD, jfr); //This call saves the new min pT | |
2255 | // Now re-calculate the perpendicular cone NT90 background | |
2256 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) //calculating for the current jet, if the previous method worked | |
2257 | nTRecAboveThresholdPerpRecalc = GetRecalcNRecChTrUpThr(fPerpCone,tracksAOD, fAOD,jfr); | |
2258 | } | |
2259 | ||
2260 | // SCM perpendicular cone | |
2261 | if(fIsPossibleToSubstBckg) | |
2262 | { | |
2263 | // To make sure, re-initialize | |
2264 | deltaPhiPtPerp = 0.0; | |
2265 | deltaEtaPtPerp = 0.0; | |
2266 | deltaPhiSqPtPerp = 0.0; | |
2267 | deltaEtaSqPtPerp = 0.0; | |
2268 | totalTrackPtPerp = 0.0; | |
2269 | firstMomDeltPhiPerp = 0.0; | |
2270 | firstMomDeltEtaPerp = 0.0; | |
2271 | secondMomDeltPhiPerp = 0.0; | |
2272 | secondMomDeltEtaPerp = 0.0; | |
2273 | secondCentralPhiPerp = 0.0; | |
2274 | secondCentralEtaPerp = 0.0; | |
2275 | secondCentralRPerp = 0.0; | |
2276 | AliDebug(4,Form("Checking SCM of perpendicular cone in Reco jets")); | |
2277 | for(Int_t aodTperp = 0; aodTperp < tracksAOD; aodTperp++ ) | |
2278 | { //fPerpCone | |
2279 | AliAODTrack *aodtrackperprec = fAOD->GetTrack(aodTperp); | |
2280 | if(!aodtrackperprec) continue; | |
2281 | if(!IsTrackInsideThisJet(aodtrackperprec, fPerpCone, jfr)) continue; | |
2282 | if(!aodtrackperprec->TestFilterBit(fFilterBit)) continue; //track filter selection | |
2283 | if(!aodtrackperprec->IsPrimaryCandidate()) continue; // only primaries, perhaps redundant with the previous | |
2284 | if(aodtrackperprec->Pt()<fMinpTVal) continue; //DATA: PT CUT | |
2285 | deltaPhiPtPerp += DeltaPhiTrack(fPerpCone, aodtrackperprec)*aodtrackperprec->Pt(); | |
2286 | deltaEtaPtPerp += DeltaEtaTrack(fPerpCone, aodtrackperprec)*aodtrackperprec->Pt(); | |
2287 | deltaPhiSqPtPerp += DeltaPhiSqTrack(fPerpCone, aodtrackperprec)*aodtrackperprec->Pt(); | |
2288 | deltaEtaSqPtPerp += DeltaEtaSqTrack(fPerpCone, aodtrackperprec)*aodtrackperprec->Pt(); | |
2289 | totalTrackPtPerp += aodtrackperprec->Pt(); | |
2290 | } // end loop over tracks | |
2291 | if(!IsEqualRel(totalTrackPtPerp, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) // totalTrackPtPerp!=0.0 | |
2292 | { | |
2293 | firstMomDeltPhiPerp = deltaPhiPtPerp/totalTrackPtPerp; | |
2294 | firstMomDeltEtaPerp = deltaEtaPtPerp/totalTrackPtPerp; | |
2295 | secondMomDeltPhiPerp = deltaPhiSqPtPerp/totalTrackPtPerp; | |
2296 | secondMomDeltEtaPerp = deltaEtaSqPtPerp/totalTrackPtPerp; | |
2297 | secondCentralPhiPerp = secondMomDeltPhiPerp - firstMomDeltPhiPerp*firstMomDeltPhiPerp; | |
2298 | secondCentralEtaPerp = secondMomDeltEtaPerp - firstMomDeltEtaPerp*firstMomDeltEtaPerp; | |
2299 | secondCentralRPerp = secondCentralPhiPerp + secondCentralEtaPerp; | |
2300 | } // end if totalTrackPt!=0.0 | |
2301 | if(IsEqualRel(totalTrackPtPerp, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) // totalTrackPtPerp==0.0 | |
2302 | secondCentralRPerp = 10.0; //overflow | |
2303 | } | |
2304 | ||
2305 | ///// end of adding the SCM for the perpendicular cone | |
2306 | ||
2307 | if(irecj<maxJetNum) | |
2308 | { | |
2309 | recJets[irecj]= *rjet; | |
2310 | nrectracks[irecj] = ntxreco; | |
2311 | ptrecjet[irecj] = rjet->Pt(); | |
2312 | scmr[irecj] = secondCentralR; | |
2313 | AliDebug(4,Form("Para el jet reco num: %d se necesitaron %d tracks \n",irecj,nrectracks[irecj])); | |
2314 | } | |
2315 | AliDebug(4,"Before filling the histograms for this jet \n"); | |
2316 | fNChTrRD->Fill(ntxreco,rjet->Pt()); | |
2317 | fSCMRD->Fill(secondCentralR,rjet->Pt()); | |
2318 | fProfNChTrRD->Fill(rjet->Pt(),ntxreco); | |
2319 | ||
2320 | fNTXV0MultPt->Fill(ntxreco,v0CorrMult,rjet->Pt()); | |
2321 | fNTXCBMultPt->Fill(ntxreco,refNJMult,rjet->Pt()); | |
2322 | ||
2323 | //refNJMult | |
2324 | // reference multiplicity stuff in pp, also filled in PbPb, but does not matter. | |
2325 | // set to: V0 corrected multiplicity: v0CorrMult | |
2326 | if(v0CorrMult<25) | |
2327 | { | |
2328 | fNChTrRDMult[0]->Fill(ntxreco,rjet->Pt()); | |
2329 | fSCMRDMult[0]->Fill(secondCentralR,rjet->Pt()); | |
2330 | fTotalJetCharge[0]->Fill(fCurrentJetCharge); | |
2331 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2332 | { | |
2333 | fNChTrRDMultOJ[0]->Fill(ntxreco,rjet->Pt()); | |
2334 | fSCMRDMultOJ[0]->Fill(secondCentralR,rjet->Pt()); | |
2335 | } | |
2336 | } | |
2337 | if(v0CorrMult>=25&&v0CorrMult<50) | |
2338 | { | |
2339 | fNChTrRDMult[1]->Fill(ntxreco,rjet->Pt()); | |
2340 | fSCMRDMult[1]->Fill(secondCentralR,rjet->Pt()); | |
2341 | fTotalJetCharge[1]->Fill(fCurrentJetCharge); | |
2342 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2343 | { | |
2344 | fNChTrRDMultOJ[1]->Fill(ntxreco,rjet->Pt()); | |
2345 | fSCMRDMultOJ[1]->Fill(secondCentralR,rjet->Pt()); | |
2346 | } | |
2347 | } | |
2348 | if(v0CorrMult>=50&&v0CorrMult<90) | |
2349 | { | |
2350 | fNChTrRDMult[2]->Fill(ntxreco,rjet->Pt()); | |
2351 | fSCMRDMult[2]->Fill(secondCentralR,rjet->Pt()); | |
2352 | fTotalJetCharge[2]->Fill(fCurrentJetCharge); | |
2353 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2354 | { | |
2355 | fNChTrRDMultOJ[2]->Fill(ntxreco,rjet->Pt()); | |
2356 | fSCMRDMultOJ[2]->Fill(secondCentralR,rjet->Pt()); | |
2357 | } | |
2358 | } | |
2359 | if(v0CorrMult>=90&&v0CorrMult<120) | |
2360 | { | |
2361 | fNChTrRDMult[3]->Fill(ntxreco,rjet->Pt()); | |
2362 | fSCMRDMult[3]->Fill(secondCentralR,rjet->Pt()); | |
2363 | fTotalJetCharge[3]->Fill(fCurrentJetCharge); | |
2364 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2365 | { | |
2366 | fNChTrRDMultOJ[3]->Fill(ntxreco,rjet->Pt()); | |
2367 | fSCMRDMultOJ[3]->Fill(secondCentralR,rjet->Pt()); | |
2368 | } | |
2369 | } | |
2370 | if(v0CorrMult>=120&&v0CorrMult<150) | |
2371 | { | |
2372 | fNChTrRDMult[4]->Fill(ntxreco,rjet->Pt()); | |
2373 | fSCMRDMult[4]->Fill(secondCentralR,rjet->Pt()); | |
2374 | fTotalJetCharge[4]->Fill(fCurrentJetCharge); | |
2375 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2376 | { | |
2377 | fNChTrRDMultOJ[4]->Fill(ntxreco,rjet->Pt()); | |
2378 | fSCMRDMultOJ[4]->Fill(secondCentralR,rjet->Pt()); | |
2379 | } | |
2380 | } | |
2381 | if(v0CorrMult>=150&&v0CorrMult<200) | |
2382 | { | |
2383 | fNChTrRDMult[5]->Fill(ntxreco,rjet->Pt()); | |
2384 | fSCMRDMult[5]->Fill(secondCentralR,rjet->Pt()); | |
2385 | fTotalJetCharge[5]->Fill(fCurrentJetCharge); | |
2386 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2387 | { | |
2388 | fNChTrRDMultOJ[5]->Fill(ntxreco,rjet->Pt()); | |
2389 | fSCMRDMultOJ[5]->Fill(secondCentralR,rjet->Pt()); | |
2390 | } | |
2391 | } | |
2392 | if(v0CorrMult>=200&&v0CorrMult<300) | |
2393 | { | |
2394 | fNChTrRDMult[6]->Fill(ntxreco,rjet->Pt()); | |
2395 | fSCMRDMult[6]->Fill(secondCentralR,rjet->Pt()); | |
2396 | fTotalJetCharge[6]->Fill(fCurrentJetCharge); | |
2397 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2398 | { | |
2399 | fNChTrRDMultOJ[6]->Fill(ntxreco,rjet->Pt()); | |
2400 | fSCMRDMultOJ[6]->Fill(secondCentralR,rjet->Pt()); | |
2401 | } | |
2402 | } | |
2403 | if(v0CorrMult>=300) | |
2404 | { | |
2405 | fNChTrRDMult[7]->Fill(ntxreco,rjet->Pt()); | |
2406 | fSCMRDMult[7]->Fill(secondCentralR,rjet->Pt()); | |
2407 | fTotalJetCharge[7]->Fill(fCurrentJetCharge); | |
2408 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2409 | { | |
2410 | fNChTrRDMultOJ[7]->Fill(ntxreco,rjet->Pt()); | |
2411 | fSCMRDMultOJ[7]->Fill(secondCentralR,rjet->Pt()); | |
2412 | } | |
2413 | } | |
2414 | ||
2415 | // 2nd. Reference: set to: TPC tracks minus jet, minus dijet area | |
2416 | if(refNJMult<5) //&&refNJMult>1 | |
2417 | { | |
2418 | fNChTrRDMultSE[0]->Fill(ntxreco,rjet->Pt()); | |
2419 | fSCMRDMultSE[0]->Fill(secondCentralR,rjet->Pt()); | |
2420 | fTotalJetChargeSE[0]->Fill(fCurrentJetCharge); | |
2421 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2422 | { | |
2423 | fNChTrRDMultSEOJ[0]->Fill(ntxreco,rjet->Pt()); | |
2424 | fSCMRDMultSEOJ[0]->Fill(secondCentralR,rjet->Pt()); | |
2425 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
2426 | fNChTrRecPerpMultSEOJ[0]->Fill(nTRecAboveThresholdPerp,rjet->Pt()); | |
2427 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
2428 | { | |
2429 | fNChTrRecECorrPPMult->Fill(ntxrecoRecalc,pTbs,1); //filling mult bin | |
2430 | fNChTrRecPerpECorrPPMult->Fill(nTRecAboveThresholdPerpRecalc,pTbs,1); //filling mult bin | |
2431 | } | |
2432 | } | |
2433 | } | |
2434 | if(refNJMult>=5&&refNJMult<10) | |
2435 | { | |
2436 | fNChTrRDMultSE[1]->Fill(ntxreco,rjet->Pt()); | |
2437 | fSCMRDMultSE[1]->Fill(secondCentralR,rjet->Pt()); | |
2438 | fTotalJetChargeSE[1]->Fill(fCurrentJetCharge); | |
2439 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2440 | { | |
2441 | fNChTrRDMultSEOJ[1]->Fill(ntxreco,rjet->Pt()); | |
2442 | fSCMRDMultSEOJ[1]->Fill(secondCentralR,rjet->Pt()); | |
2443 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
2444 | fNChTrRecPerpMultSEOJ[1]->Fill(nTRecAboveThresholdPerp,rjet->Pt()); | |
2445 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
2446 | { | |
2447 | fNChTrRecECorrPPMult->Fill(ntxrecoRecalc,pTbs,2); //filling mult bin | |
2448 | fNChTrRecPerpECorrPPMult->Fill(nTRecAboveThresholdPerpRecalc,pTbs,2); //filling mult bin | |
2449 | } | |
2450 | } | |
2451 | } | |
2452 | if(refNJMult>=10&&refNJMult<15) | |
2453 | { | |
2454 | fNChTrRDMultSE[2]->Fill(ntxreco,rjet->Pt()); | |
2455 | fSCMRDMultSE[2]->Fill(secondCentralR,rjet->Pt()); | |
2456 | fTotalJetChargeSE[2]->Fill(fCurrentJetCharge); | |
2457 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2458 | { | |
2459 | fNChTrRDMultSEOJ[2]->Fill(ntxreco,rjet->Pt()); | |
2460 | fSCMRDMultSEOJ[2]->Fill(secondCentralR,rjet->Pt()); | |
2461 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
2462 | fNChTrRecPerpMultSEOJ[2]->Fill(nTRecAboveThresholdPerp,rjet->Pt()); | |
2463 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
2464 | { | |
2465 | fNChTrRecECorrPPMult->Fill(ntxrecoRecalc,pTbs,3); //filling mult bin | |
2466 | fNChTrRecPerpECorrPPMult->Fill(nTRecAboveThresholdPerpRecalc,pTbs,3); //filling mult bin | |
2467 | } | |
2468 | } | |
2469 | } | |
2470 | if(refNJMult>=15&&refNJMult<20) | |
2471 | { | |
2472 | fNChTrRDMultSE[3]->Fill(ntxreco,rjet->Pt()); | |
2473 | fSCMRDMultSE[3]->Fill(secondCentralR,rjet->Pt()); | |
2474 | fTotalJetChargeSE[3]->Fill(fCurrentJetCharge); | |
2475 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2476 | { | |
2477 | fNChTrRDMultSEOJ[3]->Fill(ntxreco,rjet->Pt()); | |
2478 | fSCMRDMultSEOJ[3]->Fill(secondCentralR,rjet->Pt()); | |
2479 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
2480 | fNChTrRecPerpMultSEOJ[3]->Fill(nTRecAboveThresholdPerp,rjet->Pt()); | |
2481 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
2482 | { | |
2483 | fNChTrRecECorrPPMult->Fill(ntxrecoRecalc,pTbs,4); //filling mult bin | |
2484 | fNChTrRecPerpECorrPPMult->Fill(nTRecAboveThresholdPerpRecalc,pTbs,4); //filling mult bin | |
2485 | } | |
2486 | } | |
2487 | } | |
2488 | if(refNJMult>=20&&refNJMult<30) | |
2489 | { | |
2490 | fNChTrRDMultSE[4]->Fill(ntxreco,rjet->Pt()); | |
2491 | fSCMRDMultSE[4]->Fill(secondCentralR,rjet->Pt()); | |
2492 | fTotalJetChargeSE[4]->Fill(fCurrentJetCharge); | |
2493 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2494 | { | |
2495 | fNChTrRDMultSEOJ[4]->Fill(ntxreco,rjet->Pt()); | |
2496 | fSCMRDMultSEOJ[4]->Fill(secondCentralR,rjet->Pt()); | |
2497 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
2498 | fNChTrRecPerpMultSEOJ[4]->Fill(nTRecAboveThresholdPerp,rjet->Pt()); | |
2499 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
2500 | { | |
2501 | fNChTrRecECorrPPMult->Fill(ntxrecoRecalc,pTbs,5); //filling mult bin | |
2502 | fNChTrRecPerpECorrPPMult->Fill(nTRecAboveThresholdPerpRecalc,pTbs,5); //filling mult bin | |
2503 | } | |
2504 | } | |
2505 | } | |
2506 | if(refNJMult>=30&&refNJMult<40) | |
2507 | { | |
2508 | fNChTrRDMultSE[5]->Fill(ntxreco,rjet->Pt()); | |
2509 | fSCMRDMultSE[5]->Fill(secondCentralR,rjet->Pt()); | |
2510 | fTotalJetChargeSE[5]->Fill(fCurrentJetCharge); | |
2511 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2512 | { | |
2513 | fNChTrRDMultSEOJ[5]->Fill(ntxreco,rjet->Pt()); | |
2514 | fSCMRDMultSEOJ[5]->Fill(secondCentralR,rjet->Pt()); | |
2515 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
2516 | fNChTrRecPerpMultSEOJ[5]->Fill(nTRecAboveThresholdPerp,rjet->Pt()); | |
2517 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
2518 | { | |
2519 | fNChTrRecECorrPPMult->Fill(ntxrecoRecalc,pTbs,6); //filling mult bin | |
2520 | fNChTrRecPerpECorrPPMult->Fill(nTRecAboveThresholdPerpRecalc,pTbs,6); //filling mult bin | |
2521 | } | |
2522 | } | |
2523 | } | |
2524 | if(refNJMult>=40&&refNJMult<50) | |
2525 | { | |
2526 | fNChTrRDMultSE[6]->Fill(ntxreco,rjet->Pt()); | |
2527 | fSCMRDMultSE[6]->Fill(secondCentralR,rjet->Pt()); | |
2528 | fTotalJetChargeSE[6]->Fill(fCurrentJetCharge); | |
2529 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2530 | { | |
2531 | fNChTrRDMultSEOJ[6]->Fill(ntxreco,rjet->Pt()); | |
2532 | fSCMRDMultSEOJ[6]->Fill(secondCentralR,rjet->Pt()); | |
2533 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
2534 | fNChTrRecPerpMultSEOJ[6]->Fill(nTRecAboveThresholdPerp,rjet->Pt()); | |
2535 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
2536 | { | |
2537 | fNChTrRecECorrPPMult->Fill(ntxrecoRecalc,pTbs,7); //filling mult bin | |
2538 | fNChTrRecPerpECorrPPMult->Fill(nTRecAboveThresholdPerpRecalc,pTbs,7); //filling mult bin | |
2539 | } | |
2540 | } | |
2541 | } | |
2542 | if(refNJMult>=50) | |
2543 | { | |
2544 | fNChTrRDMultSE[7]->Fill(ntxreco,rjet->Pt()); | |
2545 | fSCMRDMultSE[7]->Fill(secondCentralR,rjet->Pt()); | |
2546 | fTotalJetChargeSE[7]->Fill(fCurrentJetCharge); | |
2547 | if(recojets==1) // if only one jet in the whole event, and inside acceptance | |
2548 | { | |
2549 | fNChTrRDMultSEOJ[7]->Fill(ntxreco,rjet->Pt()); | |
2550 | fSCMRDMultSEOJ[7]->Fill(secondCentralR,rjet->Pt()); | |
2551 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
2552 | fNChTrRecPerpMultSEOJ[7]->Fill(nTRecAboveThresholdPerp,rjet->Pt()); | |
2553 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
2554 | { | |
2555 | fNChTrRecECorrPPMult->Fill(ntxrecoRecalc,pTbs,8); //filling mult bin | |
2556 | fNChTrRecPerpECorrPPMult->Fill(nTRecAboveThresholdPerpRecalc,pTbs,8); //filling mult bin | |
2557 | } | |
2558 | } | |
2559 | } | |
2560 | ||
2561 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
2562 | { | |
2563 | if(!IsEqualRel(fCurrentJetMinPtNT90, 7000.)) | |
2564 | fNChTrRecPerp->Fill(nTRecAboveThresholdPerp,rjet->Pt()); // these are my previous histos | |
2565 | fSCMRecPerp->Fill(secondCentralRPerp,rjet->Pt()); // this are my previous histos | |
2566 | if(!fIsHIevent) //if is a proton proton event | |
2567 | { | |
2568 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,1); //filling proton bin | |
2569 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) | |
2570 | { | |
2571 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,1); //filling proton bin | |
2572 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) | |
2573 | { | |
2574 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,1); | |
2575 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 1, 1); | |
2576 | } | |
2577 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
2578 | { | |
2579 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,1); | |
2580 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 1, 2); | |
2581 | } | |
2582 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
2583 | { | |
2584 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,1); | |
2585 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 1, 3); | |
2586 | } | |
2587 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
2588 | { | |
2589 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,1); | |
2590 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 1, 4); | |
2591 | } | |
2592 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
2593 | { | |
2594 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,1); | |
2595 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 1, 5); | |
2596 | } | |
2597 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
2598 | { | |
2599 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,1); | |
2600 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 1, 6); | |
2601 | } | |
2602 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
2603 | { | |
2604 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,1); | |
2605 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 1, 7); | |
2606 | } | |
2607 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
2608 | { | |
2609 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,1); | |
2610 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 1, 8); | |
2611 | } | |
2612 | } | |
2613 | } | |
2614 | if(fIsHIevent) //if is a PbPb event | |
2615 | { | |
2616 | if(fEventCent>=0&&fEventCent<10.) | |
2617 | { | |
2618 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,2); //filling first centrality bin | |
8dcbcbbb | 2619 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),2); |
2620 | fJetPtCentPbPbCorr->Fill(pTbs,2); | |
0c9acc4c | 2621 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) |
2622 | { | |
2623 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,2); //filling first centrality bin | |
8dcbcbbb | 2624 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),2); |
2625 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),2); | |
0c9acc4c | 2626 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) |
2627 | { | |
2628 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,2); | |
2629 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 2, 1); | |
2630 | } | |
2631 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
2632 | { | |
2633 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,2); | |
2634 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 2, 2); | |
2635 | } | |
2636 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
2637 | { | |
2638 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,2); | |
2639 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 2, 3); | |
2640 | } | |
2641 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
2642 | { | |
2643 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,2); | |
2644 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 2, 4); | |
2645 | } | |
2646 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
2647 | { | |
2648 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,2); | |
2649 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 2, 5); | |
2650 | } | |
2651 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
2652 | { | |
2653 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,2); | |
2654 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 2, 6); | |
2655 | } | |
2656 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
2657 | { | |
2658 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,2); | |
2659 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 2, 7); | |
2660 | } | |
2661 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
2662 | { | |
2663 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,2); | |
2664 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 2, 8); | |
2665 | } | |
2666 | } | |
2667 | } | |
2668 | if(fEventCent>=10&&fEventCent<20.) | |
2669 | { | |
2670 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,3); //filling second centrality bin | |
8dcbcbbb | 2671 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),3); |
2672 | fJetPtCentPbPbCorr->Fill(pTbs,3); | |
0c9acc4c | 2673 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) |
2674 | { | |
2675 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,3); //filling second centrality bin | |
8dcbcbbb | 2676 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),3); |
2677 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),3); | |
0c9acc4c | 2678 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) |
2679 | { | |
2680 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,3); | |
2681 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 3, 1); | |
2682 | } | |
2683 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
2684 | { | |
2685 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,3); | |
2686 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 3, 2); | |
2687 | } | |
2688 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
2689 | { | |
2690 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,3); | |
2691 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 3, 3); | |
2692 | } | |
2693 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
2694 | { | |
2695 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,3); | |
2696 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 3, 4); | |
2697 | } | |
2698 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
2699 | { | |
2700 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,3); | |
2701 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 3, 5); | |
2702 | } | |
2703 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
2704 | { | |
2705 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,3); | |
2706 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 3, 6); | |
2707 | } | |
2708 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
2709 | { | |
2710 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,3); | |
2711 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 3, 7); | |
2712 | } | |
2713 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
2714 | { | |
2715 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,3); | |
2716 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 3, 8); | |
2717 | } | |
2718 | } | |
2719 | } | |
2720 | if(fEventCent>=20&&fEventCent<30.) | |
2721 | { | |
2722 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,4); //filling third centrality bin | |
8dcbcbbb | 2723 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),4); |
2724 | fJetPtCentPbPbCorr->Fill(pTbs,4); | |
0c9acc4c | 2725 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) |
2726 | { | |
2727 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,4); //filling third centrality bin | |
8dcbcbbb | 2728 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),4); |
2729 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),4); | |
0c9acc4c | 2730 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) |
2731 | { | |
2732 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,4); | |
2733 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 4, 1); | |
2734 | } | |
2735 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
2736 | { | |
2737 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,4); | |
2738 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 4, 2); | |
2739 | } | |
2740 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
2741 | { | |
2742 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,4); | |
2743 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 4, 3); | |
2744 | } | |
2745 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
2746 | { | |
2747 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,4); | |
2748 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 4, 4); | |
2749 | } | |
2750 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
2751 | { | |
2752 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,4); | |
2753 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 4, 5); | |
2754 | } | |
2755 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
2756 | { | |
2757 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,4); | |
2758 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 4, 6); | |
2759 | } | |
2760 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
2761 | { | |
2762 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,4); | |
2763 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 4, 7); | |
2764 | } | |
2765 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
2766 | { | |
2767 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,4); | |
2768 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 4, 8); | |
2769 | } | |
2770 | } | |
2771 | } | |
2772 | if(fEventCent>=30&&fEventCent<40.) | |
2773 | { | |
2774 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,5); //filling fourth centrality bin | |
8dcbcbbb | 2775 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),5); |
2776 | fJetPtCentPbPbCorr->Fill(pTbs,5); | |
0c9acc4c | 2777 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) |
2778 | { | |
2779 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,5); //filling fourth centrality bin | |
8dcbcbbb | 2780 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),5); |
2781 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),5); | |
0c9acc4c | 2782 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) |
2783 | { | |
2784 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,5); | |
2785 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 5, 1); | |
2786 | } | |
2787 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
2788 | { | |
2789 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,5); | |
2790 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 5, 2); | |
2791 | } | |
2792 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
2793 | { | |
2794 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,5); | |
2795 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 5, 3); | |
2796 | } | |
2797 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
2798 | { | |
2799 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,5); | |
2800 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 5, 4); | |
2801 | } | |
2802 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
2803 | { | |
2804 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,5); | |
2805 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 5, 5); | |
2806 | } | |
2807 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
2808 | { | |
2809 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,5); | |
2810 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 5, 6); | |
2811 | } | |
2812 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
2813 | { | |
2814 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,5); | |
2815 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 5, 7); | |
2816 | } | |
2817 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
2818 | { | |
2819 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,5); | |
2820 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 5, 8); | |
2821 | } | |
2822 | } | |
2823 | } | |
2824 | if(fEventCent>=40&&fEventCent<50.) | |
2825 | { | |
2826 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,6); //filling fourth centrality bin | |
8dcbcbbb | 2827 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),6); |
2828 | fJetPtCentPbPbCorr->Fill(pTbs,6); | |
0c9acc4c | 2829 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) |
2830 | { | |
2831 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,6); //filling fourth centrality bin | |
8dcbcbbb | 2832 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),6); |
2833 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),6); | |
0c9acc4c | 2834 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) |
2835 | { | |
2836 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,6); | |
2837 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 6, 1); | |
2838 | } | |
2839 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
2840 | { | |
2841 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,6); | |
2842 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 6, 2); | |
2843 | } | |
2844 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
2845 | { | |
2846 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,6); | |
2847 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 6, 3); | |
2848 | } | |
2849 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
2850 | { | |
2851 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,6); | |
2852 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 6, 4); | |
2853 | } | |
2854 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
2855 | { | |
2856 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,6); | |
2857 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 6, 5); | |
2858 | } | |
2859 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
2860 | { | |
2861 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,6); | |
2862 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 6, 6); | |
2863 | } | |
2864 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
2865 | { | |
2866 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,6); | |
2867 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 6, 7); | |
2868 | } | |
2869 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
2870 | { | |
2871 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,6); | |
2872 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 6, 8); | |
2873 | } | |
2874 | } | |
2875 | } | |
2876 | if(fEventCent>=50&&fEventCent<60.) | |
2877 | { | |
2878 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,7); //filling fourth centrality bin | |
8dcbcbbb | 2879 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),7); |
2880 | fJetPtCentPbPbCorr->Fill(pTbs,7); | |
0c9acc4c | 2881 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) |
2882 | { | |
2883 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,7); //filling fourth centrality bin | |
8dcbcbbb | 2884 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),7); |
2885 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),7); | |
0c9acc4c | 2886 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) |
2887 | { | |
2888 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,7); | |
2889 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 7, 1); | |
2890 | } | |
2891 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
2892 | { | |
2893 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,7); | |
2894 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 7, 2); | |
2895 | } | |
2896 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
2897 | { | |
2898 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,7); | |
2899 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 7, 3); | |
2900 | } | |
2901 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
2902 | { | |
2903 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,7); | |
2904 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 7, 4); | |
2905 | } | |
2906 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
2907 | { | |
2908 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,7); | |
2909 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 7, 5); | |
2910 | } | |
2911 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
2912 | { | |
2913 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,7); | |
2914 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 7, 6); | |
2915 | } | |
2916 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
2917 | { | |
2918 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,7); | |
2919 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 7, 7); | |
2920 | } | |
2921 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
2922 | { | |
2923 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,7); | |
2924 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 7, 8); | |
2925 | } | |
2926 | } | |
2927 | } | |
2928 | if(fEventCent>=60&&fEventCent<70.) | |
2929 | { | |
2930 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,8); //filling fourth centrality bin | |
8dcbcbbb | 2931 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),8); |
2932 | fJetPtCentPbPbCorr->Fill(pTbs,8); | |
0c9acc4c | 2933 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) |
2934 | { | |
2935 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,8); //filling fourth centrality bin | |
8dcbcbbb | 2936 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),8); |
2937 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),8); | |
0c9acc4c | 2938 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) |
2939 | { | |
2940 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,8); | |
2941 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 8, 1); | |
2942 | } | |
2943 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
2944 | { | |
2945 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,8); | |
2946 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 8, 2); | |
2947 | } | |
2948 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
2949 | { | |
2950 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,8); | |
2951 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 8, 3); | |
2952 | } | |
2953 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
2954 | { | |
2955 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,8); | |
2956 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 8, 4); | |
2957 | } | |
2958 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
2959 | { | |
2960 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,8); | |
2961 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 8, 5); | |
2962 | } | |
2963 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
2964 | { | |
2965 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,8); | |
2966 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 8, 6); | |
2967 | } | |
2968 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
2969 | { | |
2970 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,8); | |
2971 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 8, 7); | |
2972 | } | |
2973 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
2974 | { | |
2975 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,8); | |
2976 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 8, 8); | |
2977 | } | |
2978 | } | |
2979 | } | |
2980 | if(fEventCent>=70&&fEventCent<80.) | |
2981 | { | |
2982 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,9); //filling fourth centrality bin | |
8dcbcbbb | 2983 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),9); |
2984 | fJetPtCentPbPbCorr->Fill(pTbs,9); | |
0c9acc4c | 2985 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) |
2986 | { | |
2987 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,9); //filling fourth centrality bin | |
8dcbcbbb | 2988 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),9); |
2989 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),9); | |
0c9acc4c | 2990 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) |
2991 | { | |
2992 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,9); | |
2993 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 9, 1); | |
2994 | } | |
2995 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
2996 | { | |
2997 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,9); | |
2998 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 9, 2); | |
2999 | } | |
3000 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
3001 | { | |
3002 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,9); | |
3003 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 9, 3); | |
3004 | } | |
3005 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
3006 | { | |
3007 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,9); | |
3008 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 9, 4); | |
3009 | } | |
3010 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
3011 | { | |
3012 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,9); | |
3013 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 9, 5); | |
3014 | } | |
3015 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
3016 | { | |
3017 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,9); | |
3018 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 9, 6); | |
3019 | } | |
3020 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
3021 | { | |
3022 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,9); | |
3023 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 9, 7); | |
3024 | } | |
3025 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
3026 | { | |
3027 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,9); | |
3028 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 9, 8); | |
3029 | } | |
3030 | } | |
3031 | } | |
3032 | if(fEventCent>=80&&fEventCent<100.) | |
3033 | { | |
3034 | fNChTrRecECorr->Fill(ntxrecoRecalc,pTbs,10); //filling sixth centrality bin | |
8dcbcbbb | 3035 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),10); |
3036 | fJetPtCentPbPbCorr->Fill(pTbs,10); | |
0c9acc4c | 3037 | if(!IsEqualRel(fCurrentJetMinPtNT90Recalc, 7000.)) |
3038 | { | |
3039 | fNChTrRecPerpECorr->Fill(nTRecAboveThresholdPerpRecalc,pTbs,10); //filling sixth centrality bin | |
8dcbcbbb | 3040 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),10); |
3041 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),10); | |
0c9acc4c | 3042 | if((rjet->Pt()>10.)&&(rjet->Pt()<20.)) |
3043 | { | |
3044 | fPtInPerpCon->Fill(fPerpCone->Pt(),1,10); | |
3045 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 10, 1); | |
3046 | } | |
3047 | if((rjet->Pt()>20.)&&(rjet->Pt()<30.)) | |
3048 | { | |
3049 | fPtInPerpCon->Fill(fPerpCone->Pt(),2,10); | |
3050 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 10, 2); | |
3051 | } | |
3052 | if((rjet->Pt()>30.)&&(rjet->Pt()<40.)) | |
3053 | { | |
3054 | fPtInPerpCon->Fill(fPerpCone->Pt(),3,10); | |
3055 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 10, 3); | |
3056 | } | |
3057 | if((rjet->Pt()>40.)&&(rjet->Pt()<50.)) | |
3058 | { | |
3059 | fPtInPerpCon->Fill(fPerpCone->Pt(),4,10); | |
3060 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 10, 4); | |
3061 | } | |
3062 | if((rjet->Pt()>50.)&&(rjet->Pt()<60.)) | |
3063 | { | |
3064 | fPtInPerpCon->Fill(fPerpCone->Pt(),5,10); | |
3065 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 10, 5); | |
3066 | } | |
3067 | if((rjet->Pt()>60.)&&(rjet->Pt()<70.)) | |
3068 | { | |
3069 | fPtInPerpCon->Fill(fPerpCone->Pt(),6,10); | |
3070 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 10, 6); | |
3071 | } | |
3072 | if((rjet->Pt()>70.)&&(rjet->Pt()<80.)) | |
3073 | { | |
3074 | fPtInPerpCon->Fill(fPerpCone->Pt(),7,10); | |
3075 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 10, 7); | |
3076 | } | |
3077 | if((rjet->Pt()>80.)&&(rjet->Pt()<90.)) | |
3078 | { | |
3079 | fPtInPerpCon->Fill(fPerpCone->Pt(),8,10); | |
3080 | FillPerpConeHisto(fPtDistInPerpConeRaw, tracksAOD, fAOD, 10, 8); | |
3081 | } | |
3082 | } | |
3083 | } | |
3084 | } | |
3085 | } | |
3086 | ||
3087 | AliDebug(4,"Before filling the histograms for this jet of min and max pT in NTX \n"); | |
3088 | AliDebug(4,Form("Min:%f, Max:%f \n",fMinTrackPtInNTX,fMaxTrackPtInNTX)); | |
8dcbcbbb | 3089 | fMinTrackPtInNTXh[1]->Fill(fMinTrackPtInNTX,rjet->Pt(),1); // for rec pp or inclusive PbPb |
3090 | fJetPtCentPbPbRaw->Fill(rjet->Pt(),1); // for rec pp or inclusive PbPb | |
3091 | fJetPtCentPbPbCorr->Fill(pTbs,1); // for rec pp or inclusive PbPb | |
0c9acc4c | 3092 | fMaxTrackPtInNTXh[1]->Fill(fMaxTrackPtInNTX,rjet->Pt()); |
3093 | if(fIsPossibleToSubstBckg) // if it was possible to calculate a perpendicular cone | |
3094 | { | |
8dcbcbbb | 3095 | fMinTrackPtInNTXRecalc->Fill(fMinTrackPtInNTXR,rjet->Pt(),1); // for rec pp or inclusive PbPb |
0c9acc4c | 3096 | fMaxTrackPtInNTXRecalc->Fill(fMaxTrackPtInNTXR,rjet->Pt()); |
3097 | } | |
3098 | AliDebug(4,"After filling the histograms for this jet of min and max pT in NTX \n"); | |
3099 | for(Int_t v=0 ; v<rJetCounter; v++) | |
3100 | { | |
3101 | if(v<7) | |
3102 | fJetsMultPtRD->Fill(jetPtsR[v],rJetCounter); | |
3103 | } | |
3104 | irecj++; | |
3105 | } //reco jets | |
3106 | nRecJets=irecj; | |
3107 | fNAccJetsRD->Fill(rJetCounter,rJetCounter); | |
3108 | // reference multiplicity stuff in pp, also filled in PbPb, but does not matter. | |
3109 | if(v0CorrMult<25) | |
3110 | fNAccJetsRDMult[0]->Fill(rJetCounter); | |
3111 | if(v0CorrMult>=25&&v0CorrMult<50) | |
3112 | fNAccJetsRDMult[1]->Fill(rJetCounter); | |
3113 | if(v0CorrMult>=50&&v0CorrMult<90) | |
3114 | fNAccJetsRDMult[2]->Fill(rJetCounter); | |
3115 | if(v0CorrMult>=90&&v0CorrMult<120) | |
3116 | fNAccJetsRDMult[3]->Fill(rJetCounter); | |
3117 | if(v0CorrMult>=120&&v0CorrMult<150) | |
3118 | fNAccJetsRDMult[4]->Fill(rJetCounter); | |
3119 | if(v0CorrMult>=150&&v0CorrMult<200) | |
3120 | fNAccJetsRDMult[5]->Fill(rJetCounter); | |
3121 | if(v0CorrMult>=200&&v0CorrMult<300) | |
3122 | fNAccJetsRDMult[6]->Fill(rJetCounter); | |
3123 | if(v0CorrMult>=300) | |
3124 | fNAccJetsRDMult[7]->Fill(rJetCounter); | |
3125 | ||
3126 | // reference multiplicity from tracks in TPC minus jet related tracks | |
3127 | if(refNJMult<5) // &&refNJMult>1 | |
3128 | fNAccJetsRDMultSE[0]->Fill(rJetCounter); | |
3129 | if(refNJMult>=5&&refNJMult<10) | |
3130 | fNAccJetsRDMultSE[1]->Fill(rJetCounter); | |
3131 | if(refNJMult>=10&&refNJMult<15) | |
3132 | fNAccJetsRDMultSE[2]->Fill(rJetCounter); | |
3133 | if(refNJMult>=15&&refNJMult<20) | |
3134 | fNAccJetsRDMultSE[3]->Fill(rJetCounter); | |
3135 | if(refNJMult>=20&&refNJMult<30) | |
3136 | fNAccJetsRDMultSE[4]->Fill(rJetCounter); | |
3137 | if(refNJMult>=30&&refNJMult<40) | |
3138 | fNAccJetsRDMultSE[5]->Fill(rJetCounter); | |
3139 | if(refNJMult>=40&&refNJMult<50) | |
3140 | fNAccJetsRDMultSE[6]->Fill(rJetCounter); | |
3141 | if(refNJMult>=50) | |
3142 | fNAccJetsRDMultSE[7]->Fill(rJetCounter); | |
3143 | ||
3144 | AliDebug(4,"Checking if this data contains MC, in order to relate the jets \n"); | |
3145 | if(fUseAODMC) | |
3146 | { | |
3147 | AliDebug(4,"Relating MC jets with reconstructed jets"); | |
3148 | // Relate the jets | |
3149 | Int_t fCJDebug = 0; //debug level for getclosest jet | |
3150 | nGenJets = TMath::Min(nGenJets,maxJetNum); | |
3151 | nRecJets = TMath::Min(nRecJets,maxJetNum); | |
3152 | Int_t iGenIndex[maxJetNum]; // Index of the generated jet for i-th rec -1 if none | |
3153 | Int_t iRecIndex[maxJetNum]; // Index of the reco jet for i-th gen -1 if none | |
3154 | for(int i = 0;i<maxJetNum;++i) | |
3155 | { | |
3156 | iGenIndex[i] = iRecIndex[i] = -1; | |
3157 | } | |
3158 | ||
3159 | AliAnalysisHelperJetTasks::GetClosestJets(genJets,nGenJets,recJets,nRecJets, | |
3160 | iGenIndex,iRecIndex,fCJDebug); | |
3161 | if(fCJDebug > 10) | |
3162 | AliDebug(4,Form("%s:%d",(char*)__FILE__,__LINE__)); | |
3163 | if(fCJDebug > 3) | |
3164 | { | |
3165 | for(int i = 0;i<maxJetNum;++i) | |
3166 | { | |
3167 | if(iGenIndex[i]>=0) | |
3168 | { | |
3169 | AliDebug(4,Form("iGenFound: %d -> %d",i,iGenIndex[i])); | |
3170 | // para el i-esimo jet reconstruido corresponde el jet iGenIndex[i] | |
3171 | AliDebug(4,Form("El jet reconstruido numero %d tiene sabor %d",i, genJetsFlavor[iGenIndex[i]])); | |
3172 | } | |
3173 | if(iRecIndex[i]>=0) | |
3174 | { | |
3175 | AliDebug(4,Form("iRecFound: %d -> %d",i,iRecIndex[i])); | |
3176 | // para el i-esimo jet generado corresponde el jet iRecIndex[i] | |
3177 | } | |
3178 | } | |
3179 | } | |
3180 | AliDebug(4,"Helper part finished"); | |
3181 | ||
3182 | // Llenar los histogramas para los jets reconstruidos | |
3183 | ||
3184 | Int_t crf = 0; // current reco jet flavor | |
3185 | Int_t crt = 0; // current reco jet tracks | |
3186 | Double_t crpt = 0; // current jet pt | |
3187 | Double_t cscm = 0.0;// current second central moment | |
3188 | ||
3189 | for(Int_t ixr=0; ixr<maxJetNum; ixr++) | |
3190 | { | |
3191 | AliDebug(4,Form("Processing jet number:%i",ixr)); | |
3192 | if(iGenIndex[ixr]>=0) | |
3193 | { | |
3194 | crf = genJetsFlavor[iGenIndex[ixr]]; //para el reco jet con indice ixr | |
3195 | crt = nrectracks[ixr]; // se necesitaron este numero de tracks | |
3196 | crpt = ptrecjet[ixr]; | |
3197 | cscm = scmr[ixr]; | |
3198 | ||
3199 | //Fill candidates histos | |
3200 | if(crt>=7) //gluon candidate | |
3201 | fFragCandidates[0]->Add(fHistContainerR4[ixr]); | |
3202 | if(crt<=4) //quark candidate | |
3203 | fFragCandidates[1]->Add(fHistContainerR4[ixr]); | |
3204 | ||
3205 | switch(abs(crf)) | |
3206 | { | |
3207 | case 1: | |
3208 | fNChTr[6]->Fill(crt,crpt); | |
3209 | fHistPtParton[6]->Fill(crpt); | |
3210 | fSCM[6]->Fill(cscm,crpt); | |
3211 | fFragChargedR4[0]->Add(fHistContainerR4[ixr]); | |
3212 | fFragChargedR3[0]->Add(fHistContainerR3[ixr]); | |
3213 | fFragChargedR2[0]->Add(fHistContainerR2[ixr]); | |
3214 | break; | |
3215 | case 2: | |
3216 | fNChTr[7]->Fill(crt,crpt); | |
3217 | fHistPtParton[7]->Fill(crpt); | |
3218 | fSCM[7]->Fill(cscm,crpt); | |
3219 | fFragChargedR4[1]->Add(fHistContainerR4[ixr]); | |
3220 | fFragChargedR3[1]->Add(fHistContainerR3[ixr]); | |
3221 | fFragChargedR2[1]->Add(fHistContainerR2[ixr]); | |
3222 | break; | |
3223 | case 3: | |
3224 | fNChTr[8]->Fill(crt,crpt); | |
3225 | fHistPtParton[8]->Fill(crpt); | |
3226 | fSCM[8]->Fill(cscm,crpt); | |
3227 | fFragChargedR4[2]->Add(fHistContainerR4[ixr]); | |
3228 | fFragChargedR3[2]->Add(fHistContainerR3[ixr]); | |
3229 | fFragChargedR2[2]->Add(fHistContainerR2[ixr]); | |
3230 | break; | |
3231 | case 4: | |
3232 | fNChTr[9]->Fill(crt,crpt); | |
3233 | fHistPtParton[9]->Fill(crpt); | |
3234 | fSCM[9]->Fill(cscm,crpt); | |
3235 | fFragChargedR4[3]->Add(fHistContainerR4[ixr]); | |
3236 | fFragChargedR3[3]->Add(fHistContainerR3[ixr]); | |
3237 | fFragChargedR2[3]->Add(fHistContainerR2[ixr]); | |
3238 | break; | |
3239 | case 5: | |
3240 | fNChTr[10]->Fill(crt,crpt); | |
3241 | fHistPtParton[10]->Fill(crpt); | |
3242 | fSCM[10]->Fill(cscm,crpt); | |
3243 | fFragChargedR4[4]->Add(fHistContainerR4[ixr]); | |
3244 | fFragChargedR3[4]->Add(fHistContainerR3[ixr]); | |
3245 | fFragChargedR2[4]->Add(fHistContainerR2[ixr]); | |
3246 | break; | |
3247 | case 21: | |
3248 | fNChTr[11]->Fill(crt,crpt); | |
3249 | fHistPtParton[11]->Fill(crpt); | |
3250 | fSCM[11]->Fill(cscm,crpt); | |
3251 | fFragChargedR4[5]->Add(fHistContainerR4[ixr]); | |
3252 | fFragChargedR3[5]->Add(fHistContainerR3[ixr]); | |
3253 | fFragChargedR2[5]->Add(fHistContainerR2[ixr]); | |
3254 | break; | |
3255 | default: | |
3256 | break; | |
3257 | } // end switch | |
3258 | AliDebug(4,Form("Sabor del reco jet con pt:%f y numero:%d es: %d y se necesitaron %d tracks \n",crpt,ixr,crf,crt)); | |
3259 | } // end index condition | |
3260 | } // end for cycle correlation gen-reco flavor | |
3261 | } // end if MC info | |
3262 | } // end of only MC info in the AOD, no reco jets | |
3263 | PostData(1, fOutputList); | |
3264 | } | |
3265 | ||
3266 | //________________________________________________________________________ | |
3267 | void AliAnalysisTaskPartonDisc::Terminate(const Option_t *) | |
3268 | { | |
3269 | // Draw result to the screen | |
3270 | // Called once at the end of the query | |
3271 | } | |
3272 | //________________________________________________________________________ | |
3273 | Int_t AliAnalysisTaskPartonDisc::GetMCEventType(AliMCEvent *mcEvent) | |
3274 | { | |
3275 | // | |
3276 | // Get the event type from the pythia headers | |
3277 | // | |
3278 | ||
3279 | Int_t processNumber = 0; | |
3280 | AliGenEventHeader* genHeader = mcEvent->GenEventHeader(); | |
3281 | AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader); | |
3282 | ||
3283 | if(!pythiaGenHeader) | |
3284 | { | |
3285 | AliDebug(4,Form(" %s:%d No Pythia header!",(char*)__FILE__,__LINE__)); | |
3286 | return 0; | |
3287 | } | |
3288 | ||
3289 | processNumber = pythiaGenHeader->ProcessType(); | |
3290 | ||
3291 | return processNumber; | |
3292 | } | |
3293 | //________________________________________________________________________ | |
3294 | Int_t AliAnalysisTaskPartonDisc::GetPhojetEventType(AliMCEvent *mcEvent) | |
3295 | { | |
3296 | // | |
3297 | // Get the event type from the phojet header | |
3298 | // | |
3299 | ||
3300 | Int_t processNumber = 0; | |
3301 | AliGenEventHeader* genHeader = mcEvent->GenEventHeader(); | |
3302 | AliGenDPMjetEventHeader* phojetGenHeader = dynamic_cast<AliGenDPMjetEventHeader*>(genHeader); | |
3303 | ||
3304 | if(!phojetGenHeader) | |
3305 | { | |
3306 | AliDebug(4,Form(" %s:%d No Phojet header!",(char*)__FILE__,__LINE__)); | |
3307 | return 0; | |
3308 | } | |
3309 | ||
3310 | processNumber = phojetGenHeader->ProcessType(); | |
3311 | ||
3312 | return processNumber; | |
3313 | } | |
3314 | //________________________________________________________________________ | |
3315 | Bool_t AliAnalysisTaskPartonDisc::IsInsideAcceptance(AliAODJet *jet) | |
3316 | { | |
3317 | // | |
8dcbcbbb | 3318 | // Check if the jet is inside abs(eta)<=fJetAcceptance |
0c9acc4c | 3319 | // |
3320 | ||
3321 | Double_t jeteta = jet->Eta(); | |
8dcbcbbb | 3322 | if(TMath::Abs(jeteta)<=fJetAcceptance) |
0c9acc4c | 3323 | return kTRUE; |
3324 | else | |
3325 | return kFALSE; | |
3326 | ||
3327 | } | |
3328 | //________________________________________________________________________ | |
3329 | Int_t AliAnalysisTaskPartonDisc::GetJetFlavour(AliAODJet *jet, Int_t ntracks, TClonesArray *mcarray) | |
3330 | { | |
3331 | // | |
3332 | // Get the jet flavour, using the definition: | |
3333 | // The flavour will be that of the parton with the highest energy | |
3334 | // within an angular distance <= 0.3 | |
3335 | // This method also keeps track of the mother of the parton giving the flavor | |
3336 | // | |
3337 | ||
3338 | Int_t flavour = 0; | |
3339 | Int_t pdgCode; | |
3340 | Int_t aPDGcode; | |
3341 | Double_t currentEnergy = 0; | |
3342 | Double_t maxEnergy = 0; | |
3343 | Double_t jeteta = jet->Eta(); | |
3344 | Double_t jetphi = jet->Phi(); | |
3345 | Double_t tracketa = 0; | |
3346 | Double_t trackphi = 0; | |
3347 | Double_t flavrad = fFlavorRadius; //radius used for flavor | |
3348 | Int_t indexM = 0; | |
3349 | UInt_t status=0; //status code of leading parton | |
3350 | fMpdg=0; // Initialize before each selection | |
3351 | AliAODMCParticle *moftrack=0; | |
3352 | for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) | |
3353 | { | |
3354 | AliAODMCParticle *mctrack = (AliAODMCParticle*) mcarray->At(iTracks); | |
3355 | if(!mctrack) continue; | |
3356 | pdgCode = mctrack->GetPdgCode(); | |
3357 | aPDGcode = abs(pdgCode); | |
3358 | if(aPDGcode==1||aPDGcode==2||aPDGcode==3||aPDGcode==4||aPDGcode==5||aPDGcode==6||aPDGcode==9||aPDGcode==21) | |
3359 | { | |
3360 | tracketa = mctrack->Eta(); | |
3361 | trackphi = mctrack->Phi(); | |
3362 | if(GetDeltaR(jeteta, jetphi, tracketa, trackphi)<=flavrad) | |
3363 | { | |
3364 | currentEnergy = mctrack->E(); | |
3365 | if(currentEnergy>maxEnergy) | |
3366 | { | |
3367 | maxEnergy = currentEnergy; | |
3368 | flavour = pdgCode; | |
3369 | indexM = mctrack->GetMother(); | |
3370 | if(fCheckMCStatus) // default is true | |
3371 | status = mctrack->GetStatus(); | |
3372 | // fFlavProc->Fill(flavour,status); | |
3373 | //testing | |
3374 | if(indexM<=0) | |
3375 | fMpdg = 0; // Unknown | |
3376 | else | |
3377 | { | |
3378 | moftrack = (AliAODMCParticle*) mcarray->At(indexM); | |
3379 | fMpdg = moftrack->GetPdgCode(); | |
3380 | } | |
3381 | } | |
3382 | } | |
3383 | } | |
3384 | } | |
3385 | ||
3386 | // //Restriction to pythia string fragmentation | |
3387 | // if(!fPhojetMC) //if pythia | |
3388 | // { | |
3389 | // if(fMpdg!=0) // if not from the string | |
3390 | // flavour=0; | |
3391 | // } | |
3392 | ||
3393 | // PDG code of the mother of the leading parton, leading parton, jet pT | |
3394 | fPDGMothLPart->Fill(fMpdg,flavour,jet->Pt()); | |
3395 | fFlavProc->Fill(flavour,status); | |
3396 | ||
3397 | return flavour; | |
3398 | } | |
3399 | //________________________________________________________________________ | |
3400 | Double_t AliAnalysisTaskPartonDisc::GetDeltaR(Double_t eta1, Double_t phi1,Double_t eta2, Double_t phi2) | |
3401 | { | |
3402 | // | |
3403 | // Return R between the two jets or particles | |
3404 | // | |
3405 | ||
3406 | Double_t deltaphi = TMath::Abs(phi2-phi1); | |
3407 | if (deltaphi > TMath::Pi()) | |
3408 | deltaphi = 2.0 * TMath::Pi() - deltaphi; | |
3409 | ||
3410 | ||
3411 | Double_t deltaR = sqrt((eta2-eta1)*(eta2-eta1)+deltaphi*deltaphi); | |
3412 | return deltaR; | |
3413 | ||
3414 | } | |
3415 | //________________________________________________________________________ | |
3416 | Int_t AliAnalysisTaskPartonDisc::GetNumberOfMcChargedTracks(Int_t percentage,AliAODJet *jet, Int_t ntracks, TClonesArray *mcarray, Double_t jr) | |
3417 | { | |
3418 | // | |
3419 | // Calculate the number of charged particles necessary to | |
3420 | // add the given percentage of the jet energy (transverse energy) | |
3421 | // for the MC case | |
3422 | ||
3423 | Int_t numberOfChargedTracks = 0; | |
3424 | Int_t currentNumber = 0; | |
3425 | Double_t jeteta = jet->Eta(); | |
3426 | Double_t jetphi = jet->Phi(); | |
3427 | Double_t jetpT = jet->Pt(); | |
3428 | Double_t tracketa = 0; | |
3429 | Double_t trackphi = 0; | |
3430 | Int_t arraysize = 1000; | |
3431 | Bool_t rfTrkFlag = kFALSE; | |
3432 | fCurrentJetCharge=0; | |
3433 | ||
3434 | AliDebug(4,Form("Eta of the jet:%f ",jeteta)); | |
3435 | if(IsEqualRel(jetpT, 0.0)) //IsEqualRel(jetpT, 0.0) // jetpT==0 | |
3436 | return 0; | |
3437 | ||
3438 | // RefTracks | |
3439 | Int_t trkinjet = jet->GetRefTracks()->GetEntriesFast(); | |
3440 | if(trkinjet!=0) | |
3441 | rfTrkFlag = kTRUE; | |
3442 | AliDebug(4,Form("Number of tracks in this mc jet by RefTracks:%i \n",trkinjet)); | |
3443 | ||
3444 | AllocateStaticContainer(arraysize); | |
3445 | InitializeStaticContainer(arraysize); | |
3446 | ||
3447 | if(!rfTrkFlag) // if not track ref, check track by track | |
3448 | { | |
3449 | AliDebug(4,Form("Empty Track Refs (mc)!")); | |
3450 | for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) | |
3451 | { | |
3452 | AliAODMCParticle *mctrack = (AliAODMCParticle*) mcarray->At(iTracks); | |
3453 | if(!mctrack) continue; | |
3454 | tracketa = mctrack->Eta(); | |
3455 | trackphi = mctrack->Phi(); | |
3456 | if(mctrack->Pt()<fMinpTVal) continue; // pT cut, not using track refs | |
3457 | if(mctrack->IsPhysicalPrimary()) | |
3458 | { | |
3459 | if(mctrack->Charge()!=0&&mctrack->Charge()!=-99) | |
3460 | { | |
3461 | if(GetDeltaR(jeteta, jetphi, tracketa, trackphi)<=jr) | |
3462 | { | |
3463 | currentNumber++; | |
3464 | fCurrentJetCharge=fCurrentJetCharge+mctrack->Charge(); //add the charge of this track | |
3465 | fgContainer[currentNumber-1] = mctrack->Pt(); // save the current pt in the container | |
3466 | } // end if inside jet | |
3467 | } // end charged | |
3468 | } // end physical primary | |
3469 | } // end for tracks | |
3470 | } // end rfTrkFlag | |
3471 | ||
3472 | if(rfTrkFlag) // if track ref, use them | |
3473 | { | |
3474 | AliDebug(4,Form("Using Track Refs (mc)!")); | |
3475 | for(Int_t ixt=0; ixt<trkinjet;ixt++) | |
3476 | { | |
3477 | AliAODMCParticle *vtrack = dynamic_cast<AliAODMCParticle*>(jet->GetRefTracks()->At(ixt)); | |
3478 | if(!vtrack) continue; | |
3479 | if(vtrack->Charge()!=0&&vtrack->Charge()!=-99) | |
3480 | { | |
3481 | currentNumber++; | |
3482 | fCurrentJetCharge=fCurrentJetCharge+vtrack->Charge(); //add the charge of this track | |
3483 | fgContainer[currentNumber-1] = vtrack->Pt(); // save the current pt in the container | |
3484 | } | |
3485 | } // end trk in jet | |
3486 | } // end if trk ref | |
3487 | ||
3488 | // sort the contents of the container | |
3489 | SortArray(fgContainer,arraysize); | |
3490 | // loop over the contents and count how many tracks are necessary to recover the percentage of the energy | |
3491 | numberOfChargedTracks = TracksForPercentage(fgContainer, arraysize, percentage, jetpT); | |
3492 | AliDebug(4,Form("Number of tracks was:%i, returning",numberOfChargedTracks)); | |
3493 | return numberOfChargedTracks; | |
3494 | ||
3495 | } | |
3496 | //________________________________________________________________________ | |
3497 | Int_t AliAnalysisTaskPartonDisc::GetNumberOfChargedTracks(Int_t percentage,AliAODJet *jet, Int_t ntracks, AliAODEvent *aode, Double_t jr) | |
3498 | { | |
3499 | // | |
3500 | // Calculate the number of charged particles necessary to | |
3501 | // add the given percentage of the jet energy (transverse energy) | |
3502 | // for the AOD track case | |
3503 | ||
3504 | Int_t numberOfChargedTracks = 0; | |
3505 | Int_t currentNumber = 0; | |
3506 | Double_t jeteta = jet->Eta(); | |
3507 | Double_t jetphi = jet->Phi(); | |
3508 | Double_t jetpT = jet->Pt(); | |
3509 | Double_t tracketa = 0; | |
3510 | Double_t trackphi = 0; | |
3511 | Int_t arraysize = 1000; | |
3512 | Bool_t rfTrkFlag = kFALSE; | |
3513 | fCurrentJetCharge=0; | |
3514 | ||
3515 | if(IsEqualRel(jetpT, 0.0)) // IsEqualRel(jetpT, 0.0) // jetpT==0 | |
3516 | return 0; | |
3517 | ||
3518 | // RefTracks | |
3519 | Int_t trkinjet = jet->GetRefTracks()->GetEntriesFast(); | |
3520 | if(trkinjet!=0&&!fForceNotTR) | |
3521 | rfTrkFlag = kTRUE; | |
3522 | AliDebug(4,Form("Number of tracks in this reco jet by RefTracks:%i \n",trkinjet)); | |
3523 | ||
3524 | AllocateStaticContainer(arraysize); | |
3525 | InitializeStaticContainer(arraysize); | |
3526 | if(!rfTrkFlag) // if not track ref, check track by track | |
3527 | { | |
3528 | AliDebug(4,Form("Empty Track Refs (reco)!")); | |
3529 | for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) | |
3530 | { | |
3531 | AliAODTrack *aodtrack = aode->GetTrack(iTracks); | |
3532 | if(!aodtrack) continue; | |
3533 | tracketa = aodtrack->Eta(); | |
3534 | trackphi = aodtrack->Phi(); | |
3535 | if(GetDeltaR(jeteta, jetphi, tracketa, trackphi)<=jr) | |
3536 | { | |
3537 | if(!aodtrack->TestFilterBit(fFilterBit)) continue; //track filter selection | |
3538 | if(!aodtrack->IsPrimaryCandidate()) continue; // only primaries | |
3539 | if(aodtrack->Pt()<fMinpTVal) continue; // pT cut, not using track refs | |
3540 | currentNumber++; | |
3541 | fCurrentJetCharge=fCurrentJetCharge+aodtrack->Charge(); | |
3542 | fgContainer[currentNumber-1] = aodtrack->Pt(); // save the current pt in the container | |
3543 | ||
3544 | ////////start centrality dependent pT spec //////// | |
3545 | if(!fIsHIevent) //if is a proton proton event | |
3546 | { | |
3547 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3548 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,1); | |
3549 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3550 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,1); | |
3551 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3552 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,1); | |
3553 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3554 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,1); | |
3555 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3556 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,1); | |
3557 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3558 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,1); | |
3559 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3560 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,1); | |
3561 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3562 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,1); | |
3563 | } // end of pp event | |
3564 | if(fIsHIevent) //if is a PbPb event | |
3565 | { | |
3566 | if(fEventCent>=0&&fEventCent<10.) | |
3567 | { | |
3568 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3569 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,2); | |
3570 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3571 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,2); | |
3572 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3573 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,2); | |
3574 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3575 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,2); | |
3576 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3577 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,2); | |
3578 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3579 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,2); | |
3580 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3581 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,2); | |
3582 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3583 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,2); | |
3584 | } // end of 0-10 | |
3585 | if(fEventCent>=10&&fEventCent<20.) | |
3586 | { | |
3587 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3588 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,3); | |
3589 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3590 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,3); | |
3591 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3592 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,3); | |
3593 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3594 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,3); | |
3595 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3596 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,3); | |
3597 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3598 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,3); | |
3599 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3600 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,3); | |
3601 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3602 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,3); | |
3603 | } // end of 10-20 | |
3604 | if(fEventCent>=20&&fEventCent<30.) | |
3605 | { | |
3606 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3607 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,4); | |
3608 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3609 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,4); | |
3610 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3611 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,4); | |
3612 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3613 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,4); | |
3614 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3615 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,4); | |
3616 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3617 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,4); | |
3618 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3619 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,4); | |
3620 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3621 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,4); | |
3622 | } // end of 20-30 | |
3623 | if(fEventCent>=30&&fEventCent<40.) | |
3624 | { | |
3625 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3626 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,5); | |
3627 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3628 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,5); | |
3629 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3630 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,5); | |
3631 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3632 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,5); | |
3633 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3634 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,5); | |
3635 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3636 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,5); | |
3637 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3638 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,5); | |
3639 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3640 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,5); | |
3641 | } // end of 30-40 | |
3642 | if(fEventCent>=40&&fEventCent<50.) | |
3643 | { | |
3644 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3645 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,6); | |
3646 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3647 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,6); | |
3648 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3649 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,6); | |
3650 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3651 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,6); | |
3652 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3653 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,6); | |
3654 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3655 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,6); | |
3656 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3657 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,6); | |
3658 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3659 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,6); | |
3660 | } // end of 40-50 | |
3661 | if(fEventCent>=50&&fEventCent<60.) | |
3662 | { | |
3663 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3664 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,7); | |
3665 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3666 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,7); | |
3667 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3668 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,7); | |
3669 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3670 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,7); | |
3671 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3672 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,7); | |
3673 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3674 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,7); | |
3675 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3676 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,7); | |
3677 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3678 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,7); | |
3679 | } // end of 50-60 | |
3680 | if(fEventCent>=60&&fEventCent<70.) | |
3681 | { | |
3682 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3683 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,8); | |
3684 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3685 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,8); | |
3686 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3687 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,8); | |
3688 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3689 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,8); | |
3690 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3691 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,8); | |
3692 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3693 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,8); | |
3694 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3695 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,8); | |
3696 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3697 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,8); | |
3698 | } // end of 60-70 | |
3699 | if(fEventCent>=70&&fEventCent<80.) | |
3700 | { | |
3701 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3702 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,9); | |
3703 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3704 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,9); | |
3705 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3706 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,9); | |
3707 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3708 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,9); | |
3709 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3710 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,9); | |
3711 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3712 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,9); | |
3713 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3714 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,9); | |
3715 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3716 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,9); | |
3717 | } // end of 70-80 | |
3718 | if(fEventCent>=80&&fEventCent<100.) | |
3719 | { | |
3720 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3721 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),1,10); | |
3722 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3723 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),2,10); | |
3724 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3725 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),3,10); | |
3726 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3727 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),4,10); | |
3728 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3729 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),5,10); | |
3730 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3731 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),6,10); | |
3732 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3733 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),7,10); | |
3734 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3735 | fPtDistInJetConeRaw->Fill(aodtrack->Pt(),8,10); | |
3736 | } // end of 80-100 | |
3737 | } //end of PbPb event | |
3738 | ////////end centrality dependent pT spec///// | |
3739 | } // end if inside jet | |
3740 | } // end for tracks | |
3741 | } // end of no track ref | |
3742 | ||
3743 | if(rfTrkFlag) // if track ref, use them | |
3744 | { | |
3745 | AliDebug(4,Form("Using Track Refs (reco)!")); | |
3746 | for(Int_t ixt=0; ixt<trkinjet;ixt++) | |
3747 | { | |
3748 | AliVParticle *vtrack = dynamic_cast<AliVParticle*>(jet->GetRefTracks()->At(ixt)); | |
3749 | if(!vtrack) continue; | |
3750 | // No further checks, all cuts should be in in the track refs | |
3751 | if(vtrack->Charge()!=0&&vtrack->Charge()!=-99) | |
3752 | { | |
3753 | currentNumber++; | |
3754 | fCurrentJetCharge=fCurrentJetCharge+vtrack->Charge(); | |
3755 | fgContainer[currentNumber-1] = vtrack->Pt(); // save the current pt in the container | |
3756 | ||
3757 | ////////start centrality dependent pT spec //////// | |
3758 | if(!fIsHIevent) //if is a proton proton event | |
3759 | { | |
3760 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3761 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,1); | |
3762 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3763 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,1); | |
3764 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3765 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,1); | |
3766 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3767 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,1); | |
3768 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3769 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,1); | |
3770 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3771 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,1); | |
3772 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3773 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,1); | |
3774 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3775 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,1); | |
3776 | } // end of pp event | |
3777 | if(fIsHIevent) //if is a PbPb event | |
3778 | { | |
3779 | if(fEventCent>=0&&fEventCent<10.) | |
3780 | { | |
3781 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3782 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,2); | |
3783 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3784 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,2); | |
3785 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3786 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,2); | |
3787 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3788 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,2); | |
3789 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3790 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,2); | |
3791 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3792 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,2); | |
3793 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3794 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,2); | |
3795 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3796 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,2); | |
3797 | } // end of 0-10 | |
3798 | if(fEventCent>=10&&fEventCent<20.) | |
3799 | { | |
3800 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3801 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,3); | |
3802 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3803 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,3); | |
3804 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3805 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,3); | |
3806 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3807 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,3); | |
3808 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3809 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,3); | |
3810 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3811 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,3); | |
3812 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3813 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,3); | |
3814 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3815 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,3); | |
3816 | } // end of 10-20 | |
3817 | if(fEventCent>=20&&fEventCent<30.) | |
3818 | { | |
3819 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3820 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,4); | |
3821 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3822 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,4); | |
3823 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3824 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,4); | |
3825 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3826 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,4); | |
3827 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3828 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,4); | |
3829 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3830 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,4); | |
3831 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3832 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,4); | |
3833 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3834 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,4); | |
3835 | } // end of 20-30 | |
3836 | if(fEventCent>=30&&fEventCent<40.) | |
3837 | { | |
3838 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3839 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,5); | |
3840 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3841 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,5); | |
3842 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3843 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,5); | |
3844 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3845 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,5); | |
3846 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3847 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,5); | |
3848 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3849 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,5); | |
3850 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3851 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,5); | |
3852 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3853 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,5); | |
3854 | } // end of 30-40 | |
3855 | if(fEventCent>=40&&fEventCent<50.) | |
3856 | { | |
3857 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3858 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,6); | |
3859 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3860 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,6); | |
3861 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3862 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,6); | |
3863 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3864 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,6); | |
3865 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3866 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,6); | |
3867 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3868 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,6); | |
3869 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3870 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,6); | |
3871 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3872 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,6); | |
3873 | } // end of 40-50 | |
3874 | if(fEventCent>=50&&fEventCent<60.) | |
3875 | { | |
3876 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3877 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,7); | |
3878 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3879 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,7); | |
3880 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3881 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,7); | |
3882 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3883 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,7); | |
3884 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3885 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,7); | |
3886 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3887 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,7); | |
3888 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3889 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,7); | |
3890 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3891 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,7); | |
3892 | } // end of 50-60 | |
3893 | if(fEventCent>=60&&fEventCent<70.) | |
3894 | { | |
3895 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3896 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,8); | |
3897 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3898 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,8); | |
3899 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3900 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,8); | |
3901 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3902 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,8); | |
3903 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3904 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,8); | |
3905 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3906 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,8); | |
3907 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3908 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,8); | |
3909 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3910 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,8); | |
3911 | } // end of 60-70 | |
3912 | if(fEventCent>=70&&fEventCent<80.) | |
3913 | { | |
3914 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3915 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,9); | |
3916 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3917 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,9); | |
3918 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3919 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,9); | |
3920 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3921 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,9); | |
3922 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3923 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,9); | |
3924 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3925 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,9); | |
3926 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3927 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,9); | |
3928 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3929 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,9); | |
3930 | } // end of 70-80 | |
3931 | if(fEventCent>=80&&fEventCent<100.) | |
3932 | { | |
3933 | if((jet->Pt()>10.)&&(jet->Pt()<20.)) | |
3934 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),1,10); | |
3935 | if((jet->Pt()>20.)&&(jet->Pt()<30.)) | |
3936 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),2,10); | |
3937 | if((jet->Pt()>30.)&&(jet->Pt()<40.)) | |
3938 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),3,10); | |
3939 | if((jet->Pt()>40.)&&(jet->Pt()<50.)) | |
3940 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),4,10); | |
3941 | if((jet->Pt()>50.)&&(jet->Pt()<60.)) | |
3942 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),5,10); | |
3943 | if((jet->Pt()>60.)&&(jet->Pt()<70.)) | |
3944 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),6,10); | |
3945 | if((jet->Pt()>70.)&&(jet->Pt()<80.)) | |
3946 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),7,10); | |
3947 | if((jet->Pt()>80.)&&(jet->Pt()<90.)) | |
3948 | fPtDistInJetConeRaw->Fill(vtrack->Pt(),8,10); | |
3949 | } // end of 80-100 | |
3950 | } //end of PbPb event | |
3951 | ////////end centrality dependent pT spec///// | |
3952 | } | |
3953 | } // end trk in jet | |
3954 | } // end if trk ref | |
3955 | ||
3956 | ||
3957 | // sort the contents of the container | |
3958 | SortArray(fgContainer,arraysize); | |
3959 | // loop over the contents and count how many tracks are necessary to recover the percetage of the energy | |
3960 | numberOfChargedTracks = TracksForPercentage(fgContainer, arraysize, percentage, jetpT); | |
3961 | return numberOfChargedTracks; | |
3962 | } | |
3963 | //________________________________________________________________________ | |
3964 | void AliAnalysisTaskPartonDisc::AllocateStaticContainer(Int_t size) | |
3965 | { | |
3966 | // | |
3967 | // Allocate the static container with the given dimensions | |
3968 | // | |
3969 | ||
3970 | if(fgContainer) | |
3971 | return; | |
3972 | fgContainer = new Double_t[size]; | |
3973 | ||
3974 | } | |
3975 | //________________________________________________________________________ | |
3976 | void AliAnalysisTaskPartonDisc::InitializeStaticContainer(Int_t size) | |
3977 | { | |
3978 | // | |
3979 | // Initialize the static container with the given dimensions | |
3980 | // | |
3981 | ||
3982 | memset(fgContainer,0,size*sizeof(Double_t)); | |
3983 | ||
3984 | } | |
3985 | //________________________________________________________________________ | |
3986 | void AliAnalysisTaskPartonDisc::SortArray(Double_t *pointer, Int_t arraySize) | |
3987 | { | |
3988 | // | |
3989 | // Sort the contents of the array | |
3990 | // From lower to higher value | |
3991 | // | |
3992 | ||
3993 | std::sort(pointer,pointer+arraySize); | |
3994 | ||
3995 | } | |
3996 | //________________________________________________________________________ | |
3997 | Int_t AliAnalysisTaskPartonDisc::TracksForPercentage(Double_t *array, Int_t arraysize, Int_t percentage, Double_t jetenergy) | |
3998 | { | |
3999 | // | |
4000 | // Loop over the contents and count how many tracks are necessary to recover | |
4001 | // the given percentage of the energy. | |
4002 | // If all tracks did not sum the required fraction, it returns 500 | |
4003 | // | |
4004 | ||
4005 | AliDebug(4,Form("Calculating the number of tracks for a jet with energy:%f \n",jetenergy)); | |
4006 | Double_t ptsum = 0; | |
4007 | Double_t threshold = jetenergy*percentage/100; | |
4008 | Int_t tracknummer=0; | |
4009 | fCurrentJetMinPtNT90 = 7000.; //dummy value for debugging | |
4010 | for(Int_t inverse=arraysize; inverse>0; inverse--) | |
4011 | { | |
4012 | ptsum= ptsum + array[inverse-1]; | |
4013 | if(inverse==arraysize) //if the highest value | |
4014 | fMaxTrackPtInNTX=array[inverse-1]; //saving the highest pT track value | |
4015 | tracknummer++; | |
4016 | fMinTrackPtInNTX=array[inverse-1]; // this is the current lowest pT track used | |
4017 | if(fIsPossibleToSubstBckg) //Store the value if it was possible to find a perpendicular cone | |
4018 | fCurrentJetMinPtNT90=array[inverse-1]; | |
4019 | if(ptsum>=threshold) // the threshold was reached | |
4020 | break; | |
4021 | if((inverse==1)&&(ptsum<threshold)) //if it was not possible to reach the threshold | |
4022 | { | |
4023 | tracknummer = 500; //dummy value for debugging | |
4024 | fCurrentJetMinPtNT90 = 7000.; //dummy value for debugging | |
4025 | } | |
4026 | } | |
4027 | ||
4028 | AliDebug(4,"Done calculating the number of tracks, returning to main code \n"); | |
4029 | return tracknummer; | |
4030 | ||
4031 | } | |
4032 | //________________________________________________________________________ | |
4033 | Bool_t AliAnalysisTaskPartonDisc::IsMCTrackInsideThisJet(AliAODMCParticle *MCParticle, AliAODJet *Jet, Double_t jr) | |
4034 | { | |
4035 | // | |
4036 | // Return kTrue if the mc track is inside the area covered by the cone of the jet | |
4037 | // | |
4038 | ||
4039 | Double_t etapart = MCParticle->Eta(); | |
4040 | Double_t phipart = MCParticle->Phi(); | |
4041 | Double_t etajet = Jet->Eta(); | |
4042 | Double_t phijet = Jet->Phi(); | |
4043 | Double_t deltaeta = etajet-etapart; | |
4044 | Double_t deltaphi = TMath::Abs(phijet-phipart); | |
4045 | if (deltaphi > TMath::Pi()) | |
4046 | deltaphi = 2.0 * TMath::Pi() - deltaphi; | |
4047 | ||
4048 | Double_t deltar = sqrt(deltaeta*deltaeta+deltaphi*deltaphi); | |
4049 | if(deltar<=jr) | |
4050 | return kTRUE; | |
4051 | else | |
4052 | return kFALSE; | |
4053 | ||
4054 | } | |
4055 | //________________________________________________________________________ | |
4056 | Bool_t AliAnalysisTaskPartonDisc::IsTrackInsideThisJet(AliAODTrack *aodT, AliAODJet *Jet, Double_t jr) | |
4057 | { | |
4058 | // | |
4059 | // Return kTrue if the track is inside the area covered by the cone of the jet | |
4060 | // | |
4061 | ||
4062 | Double_t etapart = aodT->Eta(); | |
4063 | Double_t phipart = aodT->Phi(); | |
4064 | Double_t etajet = Jet->Eta(); | |
4065 | Double_t phijet = Jet->Phi(); | |
4066 | Double_t deltaeta = etajet-etapart; | |
4067 | Double_t deltaphi = TMath::Abs(phijet-phipart); | |
4068 | if (deltaphi > TMath::Pi()) | |
4069 | deltaphi = 2.0 * TMath::Pi() - deltaphi; | |
4070 | ||
4071 | Double_t deltar = sqrt(deltaeta*deltaeta+deltaphi*deltaphi); | |
4072 | if(deltar<=jr) | |
4073 | return kTRUE; | |
4074 | else | |
4075 | return kFALSE; | |
4076 | ||
4077 | } | |
4078 | //________________________________________________________________________ | |
4079 | Bool_t AliAnalysisTaskPartonDisc::VertexInJet(AliAODVertex *pvtx, AliAODVertex *vtx, AliAODJet *jet, Double_t jr) | |
4080 | { | |
4081 | // | |
4082 | // Return kTRUE if the cone covers the vector | |
4083 | // from the primary vertex to this vertex | |
4084 | // | |
4085 | ||
4086 | Double_t pvx = pvtx->GetX(); //primary vertex x | |
4087 | Double_t pvy = pvtx->GetY(); //primary vertex y | |
4088 | Double_t pvz = pvtx->GetZ(); //primary vertex z | |
4089 | ||
4090 | Double_t vx = vtx->GetX(); // vertex x | |
4091 | Double_t vy = vtx->GetY(); // vertex y | |
4092 | Double_t vz = vtx->GetZ(); // vertex z | |
4093 | ||
4094 | if(IsEqualRel(pvx, vx) && IsEqualRel(pvy, vy) && IsEqualRel(pvz, vz)) //!IsEqualRel(totalTrackPt, 0.0) // pvx==vx && pvy==vy && pvz==vz | |
4095 | return kFALSE; | |
4096 | ||
4097 | Double_t thetaval = GetThetaAngle(vx-pvx,vy-pvy,vz-pvz); | |
4098 | Double_t etaval = GetEtaValue(thetaval); | |
4099 | Double_t phival = GetPhiAngle(vx-pvx,vy-pvy); | |
4100 | ||
4101 | Double_t etajet = jet->Eta(); | |
4102 | Double_t phijet = jet->Phi(); | |
4103 | ||
4104 | if(GetDeltaR(etajet,phijet,etaval,phival)<=jr) | |
4105 | return kTRUE; | |
4106 | ||
4107 | return kFALSE; | |
4108 | } | |
4109 | //________________________________________________________________________ | |
4110 | Double_t AliAnalysisTaskPartonDisc::GetEtaValue(Double_t theta) const | |
4111 | { | |
4112 | // | |
4113 | // Get the eta value | |
4114 | // | |
4115 | ||
4116 | Double_t eta = -TMath::Log(theta/2); | |
4117 | return eta; | |
4118 | ||
4119 | } | |
4120 | //________________________________________________________________________ | |
4121 | Double_t AliAnalysisTaskPartonDisc::GetThetaAngle(Double_t xval, Double_t yval, Double_t zval) | |
4122 | { | |
4123 | // | |
4124 | // Get the theta angle related to these coordinates | |
4125 | // | |
4126 | ||
4127 | if(IsEqualRel(zval, 0.0)) //!IsEqualRel(totalTrackPt, 0.0) // zval==0 | |
4128 | return TMath::PiOver2(); | |
4129 | ||
4130 | Double_t theta = 0; | |
4131 | Double_t erre = TMath::Sqrt(xval*xval+yval*yval+zval*zval); | |
4132 | ||
4133 | if(zval>0) | |
4134 | theta = TMath::ACos(zval/erre); | |
4135 | ||
4136 | if(zval<0) | |
4137 | theta = TMath::Pi() - TMath::ACos(TMath::Abs(zval)/erre); | |
4138 | ||
4139 | if(IsEqualRel(theta, 0.0)) // theta==0 | |
4140 | AliError("ERROR in GetThetaAngle!"); | |
4141 | ||
4142 | return theta; | |
4143 | ||
4144 | } | |
4145 | //________________________________________________________________________ | |
4146 | Double_t AliAnalysisTaskPartonDisc::GetPhiAngle(Double_t xval, Double_t yval) | |
4147 | { | |
4148 | // | |
4149 | // Get the phi angle related to these coordinates | |
4150 | // | |
4151 | ||
4152 | if(IsEqualRel(xval, 0.0)) //IsEqualRel(zval, 0.0) // xval==0 | |
4153 | { | |
4154 | if(yval>0) | |
4155 | return TMath::PiOver2(); | |
4156 | if(yval<0) | |
4157 | return (3/2*TMath::Pi()); | |
4158 | } | |
4159 | Double_t phi = 0; | |
4160 | ||
4161 | if(xval>0) | |
4162 | { | |
4163 | if(yval>0) | |
4164 | phi = TMath::ATan(yval/xval); | |
4165 | if(yval<0) | |
4166 | phi = 2*TMath::Pi()- TMath::ATan(TMath::Abs(yval)/xval); | |
4167 | } | |
4168 | if(xval<0) | |
4169 | { | |
4170 | if(yval>0) | |
4171 | phi = TMath::Pi() - TMath::ATan(yval/TMath::Abs(xval)); | |
4172 | if(yval<0) | |
4173 | phi = TMath::Pi() + TMath::ATan(TMath::Abs(yval/xval)); | |
4174 | } | |
4175 | ||
4176 | return phi; | |
4177 | } | |
4178 | //________________________________________________________________________ | |
4179 | Double_t AliAnalysisTaskPartonDisc::DeltaPhiMC(AliAODJet *jet, AliAODMCParticle *particle) | |
4180 | { | |
4181 | // | |
4182 | // Get delta-phi MC jet-track | |
4183 | // | |
4184 | ||
4185 | Double_t deltaphi = jet->Phi()-particle->Phi(); | |
4186 | if (deltaphi > TMath::Pi()) | |
4187 | deltaphi = 2.0 * TMath::Pi() - deltaphi; | |
4188 | if (deltaphi < -TMath::Pi()) | |
4189 | deltaphi = -deltaphi- 2.0 * TMath::Pi(); | |
4190 | ||
4191 | return deltaphi; | |
4192 | ||
4193 | } | |
4194 | //________________________________________________________________________ | |
4195 | Double_t AliAnalysisTaskPartonDisc::DeltaEtaMC(AliAODJet *jet, AliAODMCParticle *particle) | |
4196 | { | |
4197 | // | |
4198 | // Get delta-eta MC jet-track | |
4199 | // | |
4200 | ||
4201 | Double_t deltaetaMC = jet->Eta() - particle->Eta(); | |
4202 | return deltaetaMC; | |
4203 | } | |
4204 | //________________________________________________________________________ | |
4205 | Double_t AliAnalysisTaskPartonDisc::DeltaPhiSqMC(AliAODJet *jet, AliAODMCParticle *particle) | |
4206 | { | |
4207 | // | |
4208 | // Get delta-phi^2 MC jet-track | |
4209 | // | |
4210 | ||
4211 | Double_t deltaphi = DeltaPhiMC(jet,particle); | |
4212 | Double_t deltaphiSqMC = deltaphi*deltaphi; | |
4213 | return deltaphiSqMC; | |
4214 | } | |
4215 | //________________________________________________________________________ | |
4216 | Double_t AliAnalysisTaskPartonDisc::DeltaEtaSqMC(AliAODJet *jet, AliAODMCParticle *particle) | |
4217 | { | |
4218 | // | |
4219 | // Get delta-eta^2 MC jet-track | |
4220 | // | |
4221 | ||
4222 | Double_t deltaeta = DeltaEtaMC(jet,particle); | |
4223 | Double_t deltaetaSqMC = deltaeta*deltaeta; | |
4224 | return deltaetaSqMC; | |
4225 | } | |
4226 | //________________________________________________________________________ | |
4227 | Double_t AliAnalysisTaskPartonDisc::DeltaPhiTrack(AliAODJet *jet, AliAODTrack *track) | |
4228 | { | |
4229 | // | |
4230 | // Get delta-phi Track jet-track | |
4231 | // | |
4232 | ||
4233 | // Double_t deltaphiTrack = jet->Phi() - track->Phi(); | |
4234 | // return deltaphiTrack; | |
4235 | ||
4236 | Double_t deltaphi = jet->Phi() - track->Phi(); | |
4237 | if (deltaphi > TMath::Pi()) | |
4238 | deltaphi = 2.0 * TMath::Pi() - deltaphi; | |
4239 | if (deltaphi < -TMath::Pi()) | |
4240 | deltaphi = -deltaphi- 2.0 * TMath::Pi(); | |
4241 | ||
4242 | return deltaphi; | |
4243 | ||
4244 | ||
4245 | } | |
4246 | //________________________________________________________________________ | |
4247 | Double_t AliAnalysisTaskPartonDisc::DeltaEtaTrack(AliAODJet *jet, AliAODTrack *track) | |
4248 | { | |
4249 | // | |
4250 | // Get delta-eta Track jet-track | |
4251 | // | |
4252 | ||
4253 | Double_t deltaetaTrack = jet->Eta() - track->Eta(); | |
4254 | return deltaetaTrack; | |
4255 | } | |
4256 | //________________________________________________________________________ | |
4257 | Double_t AliAnalysisTaskPartonDisc::DeltaPhiSqTrack(AliAODJet *jet, AliAODTrack *track) | |
4258 | { | |
4259 | // | |
4260 | // Get delta-phi^2 Track jet-track | |
4261 | // | |
4262 | ||
4263 | Double_t deltaphi = DeltaPhiTrack(jet,track); | |
4264 | Double_t deltaphiSqTrack = deltaphi*deltaphi; | |
4265 | return deltaphiSqTrack; | |
4266 | } | |
4267 | //________________________________________________________________________ | |
4268 | Double_t AliAnalysisTaskPartonDisc::DeltaEtaSqTrack(AliAODJet *jet, AliAODTrack *track) | |
4269 | { | |
4270 | // | |
4271 | // Get delta-eta^2 Track jet-track | |
4272 | // | |
4273 | ||
4274 | Double_t deltaeta = DeltaEtaTrack(jet,track); | |
4275 | Double_t deltaetaSqTrack = deltaeta*deltaeta; | |
4276 | return deltaetaSqTrack; | |
4277 | } | |
4278 | //_________________________________________________________________________ | |
4279 | Bool_t AliAnalysisTaskPartonDisc::NumberOfReadEventsAOD(const char* currFile, Int_t &fNEvents) | |
4280 | { | |
4281 | // | |
4282 | // get the number of events read out to create this AOD | |
4283 | // from the njets distribution from UA1 | |
4284 | // This is to called in Notify and should provide the path to the AOD/ESD file | |
4285 | // code from AliAnalysisTaskJetSpectrum2 | |
4286 | ||
4287 | TString file(currFile); | |
4288 | fNEvents = 1; | |
4289 | ||
4290 | if(file.Contains("root_archive.zip#")) | |
4291 | { | |
4292 | Ssiz_t pos1 = file.Index("root_archive",12,TString::kExact); | |
4293 | Ssiz_t pos = file.Index("#",1,pos1,TString::kExact); | |
4294 | file.Replace(pos+1,20,""); | |
4295 | } | |
4296 | else | |
4297 | { | |
4298 | // not an archive take the basename.... | |
4299 | file.ReplaceAll(gSystem->BaseName(file.Data()),""); | |
4300 | } | |
4301 | Printf("%s",file.Data()); | |
4302 | ||
4303 | TFile *fnev = TFile::Open(Form("%s%s",file.Data(),"PWG4_JetTasksOutput.root")); | |
4304 | if(!fnev) | |
4305 | { | |
4306 | return kFALSE; | |
4307 | } // no PWG4_JetTasksOutput.root | |
4308 | else | |
4309 | { | |
4310 | TList *list; | |
4311 | gDirectory->GetObject("PWG4_jethist_aodmc_ua104/jethist_aodmc_ua104;1",list); | |
4312 | if(!list) | |
4313 | { | |
4314 | fnev->Close(); | |
4315 | return kFALSE; | |
4316 | } | |
4317 | fNEvents = ((TH1*)list->FindObject("NJetsH"))->GetEntries(); | |
4318 | fnev->Close(); | |
4319 | } | |
4320 | return kTRUE; | |
4321 | } | |
4322 | //___________________________________________________________________________ | |
4323 | void AliAnalysisTaskPartonDisc::HasOverlapedCones(TClonesArray *JetArray) | |
4324 | { | |
4325 | // | |
4326 | // Check if there are jet cones that overlap on the current event | |
4327 | // for UA1 and SISCone, based on the cone axis and the radius. | |
4328 | // There can be maximum 7.85 jet in the phi acceptance, with no overlap in | |
4329 | // the phi direction (2pi/0.8). | |
4330 | // Plus there can be up to two jets in contained in the eta acceptance, | |
4331 | // if they are centered in -0.5 and 0.5 respectively, per phi interval | |
4332 | // In total there can be up to 15.7 jets | |
4333 | // Check up to 16 jets, inside the acceptance, | |
4334 | // set the flags for up to those 8 jets. | |
4335 | // | |
4336 | ||
4337 | // Now also check if there is a perpendicular area to the leading jet | |
4338 | // that does not contain a jet, if so, set a flag to kTRUE | |
4339 | // Possibility to remove single track jets if there are track references | |
4340 | ||
4341 | fJetEvent=kFALSE; | |
4342 | fHasPerpCone=kTRUE; | |
4343 | fEtaPerpCoord=0.0; | |
4344 | fPhiPerpCoord=0.0; | |
4345 | fPtPerpCoord=0.0; | |
4346 | ||
4347 | ResetJetFlags(); // reset the flags | |
4348 | ||
4349 | Int_t njets = JetArray->GetEntries(); | |
4350 | Int_t maxNjets = 16; | |
4351 | Double_t etaCoordinates[16]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; | |
4352 | Double_t phiCoordinates[16]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; | |
4353 | ||
4354 | for (Int_t idxj = 0; idxj < njets; idxj++) | |
4355 | { | |
4356 | if(idxj>15) | |
4357 | continue; //maximum 16 jets | |
4358 | ||
4359 | AliAODJet *currentJet = dynamic_cast<AliAODJet*>(JetArray->At(idxj)); | |
4360 | if (!currentJet) | |
4361 | { | |
4362 | AliDebug(2,Form("ERROR: Could not receive jet %d \n", idxj)); | |
4363 | continue; | |
4364 | } | |
4365 | // Store the axis coordinates of all sixteen jets | |
4366 | etaCoordinates[idxj]=currentJet->Eta(); | |
4367 | phiCoordinates[idxj]=currentJet->Phi(); | |
4368 | } //end of first cycle | |
4369 | ||
4370 | // Ahora checar que no tengan overlap | |
4371 | Double_t deltaeta = 0.0; | |
4372 | Double_t deltaphi = 0.0; | |
4373 | Double_t deltar = 0.0; | |
4374 | Int_t currentIdxJet = 0; | |
4375 | Int_t trkinjet = 0; | |
4376 | ||
4377 | for (Int_t inxoj = 0; inxoj < maxNjets; inxoj++) | |
4378 | { | |
4379 | // only check up to the number of found jets in the event | |
4380 | if(inxoj==njets) | |
4381 | break; | |
4382 | ||
4383 | // Optional RefTracks check for single track jets | |
4384 | if(fForceSkipSJ) | |
4385 | { | |
4386 | AliAODJet *currentJet = dynamic_cast<AliAODJet*>(JetArray->At(inxoj)); | |
4387 | if (!currentJet) | |
4388 | { | |
4389 | AliDebug(2,Form("ERROR: Could not receive jet %d \n", inxoj)); | |
4390 | continue; | |
4391 | } | |
4392 | trkinjet = currentJet->GetRefTracks()->GetEntriesFast(); | |
4393 | if(trkinjet==1) // si tiene 1 solo track se marca como malo | |
4394 | { | |
4395 | fJetFlags[inxoj]=kFALSE; | |
4396 | continue; | |
4397 | } | |
4398 | } // end of skip of single track jets condition | |
4399 | ||
4400 | // First check if the current jet has its axis inside acceptance | |
8dcbcbbb | 4401 | if(!(TMath::Abs(etaCoordinates[inxoj])<=fJetAcceptance)) // |
0c9acc4c | 4402 | { |
4403 | fJetFlags[inxoj]=kFALSE; | |
4404 | continue; | |
4405 | } | |
4406 | currentIdxJet = inxoj; | |
4407 | //Check this jet with the rest of the jets | |
4408 | for (Int_t idx2 = 0; idx2 < maxNjets; idx2++) | |
4409 | { | |
4410 | if(idx2==njets) // just check the number of found jets | |
4411 | break; | |
4412 | ||
4413 | if(currentIdxJet==idx2) // if the same jet | |
4414 | continue; | |
4415 | if(!fJetFlags[idx2]) // if the other jet is already not usable | |
4416 | continue; | |
8dcbcbbb | 4417 | if(!(TMath::Abs(etaCoordinates[idx2])<=fJetAcceptance)) // if the jet is outside acceptance |
0c9acc4c | 4418 | continue; |
4419 | deltaeta = etaCoordinates[currentIdxJet]-etaCoordinates[idx2]; | |
4420 | deltaphi = phiCoordinates[currentIdxJet]-phiCoordinates[idx2]; | |
4421 | if (deltaphi > TMath::Pi()) | |
4422 | deltaphi = 2.0 * TMath::Pi() - deltaphi; | |
4423 | deltar = sqrt(deltaeta*deltaeta+deltaphi*deltaphi); | |
4424 | if(deltar<=2.0*fJetRadius) // if the distance between jet axis is less than 2r with any jet, mark as not usable | |
4425 | { | |
4426 | fJetFlags[currentIdxJet]=kFALSE; | |
4427 | fJetFlags[idx2]=kFALSE; // both jets are not usable | |
4428 | // if(fEnablePrints) | |
4429 | // { | |
4430 | // printf("Rejecting jet #:%i because it had overlap with jet #:%i \n",currentIdxJet, idx2); | |
4431 | // printf("Eta1:%f, Phi1:%f \n", etaCoordinates[currentIdxJet],phiCoordinates[currentIdxJet]); | |
4432 | // printf("Eta2:%f, Phi2:%f \n", etaCoordinates[idx2],phiCoordinates[idx2]); | |
4433 | // printf("Current event number:%i \n",fEvtCount-1); | |
4434 | // } | |
4435 | } // end of actual flagging | |
4436 | } // end of checking the current jet with the rest | |
4437 | } // end of loop over the jets of the branch | |
4438 | ||
4439 | // Check if there is at least one accepted jet, so it makes sense to calculate the perpendicular cone | |
4440 | Int_t accJets = 0; | |
4441 | for (Int_t checkjets = 0; checkjets < maxNjets; checkjets++) | |
4442 | { | |
4443 | // only check up to the number of found jets in the event | |
4444 | if(checkjets==njets) | |
4445 | break; | |
4446 | if(fJetFlags[checkjets]) // find the accepted leading jet in acceptance | |
4447 | accJets++; | |
4448 | } | |
4449 | if(accJets>0) | |
4450 | fJetEvent=kTRUE; | |
4451 | ||
4452 | // Check for the leading jet on the event | |
4453 | for (Int_t searchlead = 0; searchlead < maxNjets; searchlead++) | |
4454 | { | |
4455 | // only check up to the number of found jets in the event | |
4456 | if(searchlead==njets) | |
4457 | break; | |
4458 | if(fJetFlags[searchlead]) // find the accepted leading jet in acceptance | |
4459 | { | |
4460 | // Phi + pi/2 | |
4461 | fPhiPerpCoord = phiCoordinates[searchlead] + 0.5*TMath::Pi(); | |
4462 | if(fPhiPerpCoord>2.0*TMath::Pi()) | |
4463 | fPhiPerpCoord = fPhiPerpCoord - 2.0*TMath::Pi(); | |
4464 | // Same eta | |
4465 | fEtaPerpCoord = etaCoordinates[searchlead]; | |
4466 | // Now check if this cone overlaps with any found jet | |
4467 | for (Int_t jets = 0; jets < maxNjets; jets++) | |
4468 | { | |
4469 | // only check up to the number of found jets in the event | |
4470 | if(jets==njets) | |
4471 | break; | |
4472 | // now check that this jet is not the same as the leading | |
4473 | if(jets==searchlead) | |
4474 | continue; | |
4475 | ||
4476 | deltaphi = phiCoordinates[jets]-fPhiPerpCoord; | |
4477 | if (deltaphi > TMath::Pi()) | |
4478 | deltaphi = 2.0 * TMath::Pi() - deltaphi; | |
4479 | if(deltaphi<=2.0*fJetRadius) // if the distance between cone axis is less than 2r with any jet, mark as not usable | |
4480 | { | |
4481 | fHasPerpCone=kFALSE; | |
4482 | } | |
4483 | // } | |
4484 | } // loop over accepted jets | |
4485 | break; // done doing stuff with the leading | |
4486 | } // if for the first accepted jet (leading) | |
4487 | } | |
4488 | } | |
4489 | //_______________________________________________________________________ | |
4490 | void AliAnalysisTaskPartonDisc::ResetJetFlags() | |
4491 | { | |
4492 | // | |
4493 | // Reset the flags used for tagging jets from the branches | |
4494 | // Use before calling HasOverlapedCones(jetbranch) | |
4495 | // | |
4496 | ||
4497 | for(Int_t a=0; a<16;a++) | |
4498 | { | |
4499 | fJetFlags[a]=kTRUE; | |
4500 | } | |
4501 | ||
4502 | } | |
4503 | //________________________________________________________________________ | |
4504 | Int_t AliAnalysisTaskPartonDisc::GetNMcChargedTracksAboveThreshold(AliAODJet *jet, Int_t ntracks, TClonesArray *mcarray, Double_t jr) | |
4505 | { | |
4506 | // Calculate the number of charged particles above threshold | |
4507 | // inside this jet for the MC case | |
4508 | // the threshold is fCurrentJetMinPtNT90 | |
4509 | ||
4510 | Int_t numberOfChargedTracks = 0; | |
4511 | Int_t currentNumber = 0; | |
4512 | Double_t jeteta = jet->Eta(); | |
4513 | Double_t jetphi = jet->Phi(); | |
4514 | Double_t jetpT = jet->Pt(); | |
4515 | Double_t tracketa = 0; | |
4516 | Double_t trackphi = 0; | |
4517 | ||
4518 | if(IsEqualRel(jetpT, 0.0)) //IsEqualRel(zval, 0.0) //jetpT==0 | |
4519 | return 0; | |
4520 | ||
4521 | if(IsEqualRel(fCurrentJetMinPtNT90, 7000.)) // fCurrentJetMinPtNT90==7000. | |
4522 | return 1000; //dummy val for debugging | |
4523 | ||
4524 | for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) | |
4525 | { | |
4526 | AliAODMCParticle *mctrack = (AliAODMCParticle*) mcarray->At(iTracks); | |
4527 | if(!mctrack) continue; | |
4528 | tracketa = mctrack->Eta(); | |
4529 | trackphi = mctrack->Phi(); | |
4530 | if(mctrack->Pt()<fCurrentJetMinPtNT90) continue; | |
4531 | if(mctrack->IsPhysicalPrimary()) | |
4532 | { | |
4533 | if(mctrack->Charge()!=0&&mctrack->Charge()!=-99) | |
4534 | { | |
4535 | if(GetDeltaR(jeteta, jetphi, tracketa, trackphi)<=jr) | |
4536 | { | |
4537 | currentNumber++; | |
4538 | } // end if inside jet | |
4539 | } // end charged | |
4540 | } // end physical primary | |
4541 | } // end for tracks | |
4542 | ||
4543 | numberOfChargedTracks = currentNumber; | |
4544 | AliDebug(4,Form("Number of tracks above threshold MC was:%i, returning",numberOfChargedTracks)); | |
4545 | return numberOfChargedTracks; | |
4546 | ||
4547 | } | |
4548 | //________________________________________________________________________ | |
4549 | Int_t AliAnalysisTaskPartonDisc::GetRecalcNTXMc(Int_t percentage, AliAODJet *originaljet, Int_t ntracks, TClonesArray *mcarray, Double_t jr) | |
4550 | { | |
4551 | // | |
4552 | // Calculate the number of charged particles necessary to | |
4553 | // add the given percentage of the jet energy (transverse energy) | |
4554 | // after background substraction, for the MC case | |
4555 | ||
4556 | Int_t numberOfChargedTracks = 0; | |
4557 | Int_t currentNumber = 0; | |
4558 | Double_t jetpT = fBckgSbsJet[0]; //pT | |
4559 | Double_t jeteta = fBckgSbsJet[1]; //eta | |
4560 | Double_t jetphi = fBckgSbsJet[2]; //phi | |
4561 | Double_t tracketa = 0; | |
4562 | Double_t trackphi = 0; | |
4563 | Int_t arraysize = 1000; | |
4564 | Bool_t rfTrkFlag = kFALSE; | |
4565 | ||
4566 | if(IsEqualRel(jetpT, 0.0)) //IsEqualRel(jetpT, 0.0) //jetpT==0 | |
4567 | return 0; | |
4568 | ||
4569 | // RefTracks | |
4570 | Int_t trkinjet = originaljet->GetRefTracks()->GetEntriesFast(); | |
4571 | if(trkinjet!=0) | |
4572 | rfTrkFlag = kTRUE; | |
4573 | AliDebug(4,Form("Number of tracks in this mc jet by RefTracks:%i \n",trkinjet)); | |
4574 | ||
4575 | AllocateStaticContainer(arraysize); | |
4576 | InitializeStaticContainer(arraysize); | |
4577 | ||
4578 | if(!rfTrkFlag) // if not track ref, check track by track | |
4579 | { | |
4580 | AliDebug(4,Form("Empty Track Refs (mc)!")); | |
4581 | for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) | |
4582 | { | |
4583 | AliAODMCParticle *mctrack = (AliAODMCParticle*) mcarray->At(iTracks); | |
4584 | if(!mctrack) continue; | |
4585 | tracketa = mctrack->Eta(); | |
4586 | trackphi = mctrack->Phi(); | |
4587 | if(mctrack->Pt()<fMinpTVal) continue; // pT cut, not using track refs | |
4588 | if(mctrack->IsPhysicalPrimary()) | |
4589 | { | |
4590 | if(mctrack->Charge()!=0&&mctrack->Charge()!=-99) | |
4591 | { | |
4592 | if(GetDeltaR(jeteta, jetphi, tracketa, trackphi)<=jr) | |
4593 | { | |
4594 | currentNumber++; | |
4595 | fgContainer[currentNumber-1] = mctrack->Pt(); // save the current pt in the container | |
4596 | } // end if inside jet | |
4597 | } // end charged | |
4598 | } // end physical primary | |
4599 | } // end for tracks | |
4600 | } // end rfTrkFlag | |
4601 | ||
4602 | if(rfTrkFlag) // if track ref, use them | |
4603 | { | |
4604 | AliDebug(4,Form("Using Track Refs (mc)!")); | |
4605 | for(Int_t ixt=0; ixt<trkinjet;ixt++) | |
4606 | { | |
4607 | AliAODMCParticle *vtrack = dynamic_cast<AliAODMCParticle*>(originaljet->GetRefTracks()->At(ixt)); | |
4608 | if(!vtrack) continue; | |
4609 | if(vtrack->Charge()!=0&&vtrack->Charge()!=-99) | |
4610 | { | |
4611 | currentNumber++; | |
4612 | fgContainer[currentNumber-1] = vtrack->Pt(); // save the current pt in the container | |
4613 | } | |
4614 | } // end trk in jet | |
4615 | } // end if trk ref | |
4616 | ||
4617 | // sort the contents of the container | |
4618 | SortArray(fgContainer,arraysize); | |
4619 | // loop over the contents and count how many tracks are necessary to recover the percentage of the energy | |
4620 | numberOfChargedTracks = TracksForPercentageRecalc(fgContainer, arraysize, percentage, jetpT); //este es el que tengo que modificar... | |
4621 | AliDebug(4,Form("Number of tracks was:%i, returning",numberOfChargedTracks)); | |
4622 | return numberOfChargedTracks; | |
4623 | } | |
4624 | //________________________________________________________________________ | |
4625 | Int_t AliAnalysisTaskPartonDisc::TracksForPercentageRecalc(Double_t *array, Int_t arraysize, Int_t percentage, Double_t jetenergy) | |
4626 | { | |
4627 | // | |
4628 | // Loop over the contents and count how many tracks are necessary to recover | |
4629 | // the given percentage of the energy. | |
4630 | // If all tracks did not sum the required fraction, it returns 500 | |
4631 | // this saves the minimum pT used, during the nt90 recalculation | |
4632 | // after jet energy correction | |
4633 | ||
4634 | AliDebug(4,Form("Re-calculating the number of tracks for a jet with corrected pT:%f \n",jetenergy)); | |
4635 | Double_t ptsum = 0; | |
4636 | Double_t threshold = jetenergy*percentage/100; | |
4637 | Int_t tracknummer=0; | |
4638 | fCurrentJetMinPtNT90Recalc=7000.; //dummy value for debugging | |
4639 | for(Int_t inverse=arraysize; inverse>0; inverse--) | |
4640 | { | |
4641 | ptsum= ptsum + array[inverse-1]; | |
4642 | if(inverse==arraysize) //if the highest value | |
4643 | fMaxTrackPtInNTXR=array[inverse-1]; //saving the highest pT track value in the recalculation | |
4644 | tracknummer++; | |
4645 | fMinTrackPtInNTXR=array[inverse-1]; // this is the current lowest pT track used in the recalculation | |
4646 | if(fIsPossibleToSubstBckg) //Store the value for the current jet, during recalculation | |
4647 | fCurrentJetMinPtNT90Recalc=array[inverse-1]; | |
4648 | if(ptsum>=threshold) // the threshold was reached | |
4649 | break; | |
4650 | if((inverse==1)&&(ptsum<threshold)) //if it was not possible to reach the threshold | |
4651 | { | |
4652 | tracknummer = 500; | |
4653 | fCurrentJetMinPtNT90Recalc=7000.; //dummy values for debugging | |
4654 | } | |
4655 | } | |
4656 | ||
4657 | AliDebug(4,"Done re-calculating the number of tracks, returning to main code \n"); | |
4658 | return tracknummer; | |
4659 | ||
4660 | } | |
4661 | //________________________________________________________________________ | |
4662 | Int_t AliAnalysisTaskPartonDisc::GetRecalcNMcChTrUpThr(AliAODJet *jet, Int_t ntracks, TClonesArray *mcarray, Double_t jr) | |
4663 | { | |
4664 | // Calculate the number of charged particles above threshold | |
4665 | // inside this jet for the MC case | |
4666 | // the threshold is fCurrentJetMinPtNT90Recalc | |
4667 | ||
4668 | Int_t numberOfChargedTracks = 0; | |
4669 | Int_t currentNumber = 0; | |
4670 | Double_t jeteta = jet->Eta(); | |
4671 | Double_t jetphi = jet->Phi(); | |
4672 | Double_t jetpT = jet->Pt(); | |
4673 | Double_t tracketa = 0; | |
4674 | Double_t trackphi = 0; | |
4675 | ||
4676 | if(IsEqualRel(jetpT, 0.0)) //IsEqualRel(jetpT, 0.0) //jetpT==0 | |
4677 | return 0; | |
4678 | ||
4679 | for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) | |
4680 | { | |
4681 | AliAODMCParticle *mctrack = (AliAODMCParticle*) mcarray->At(iTracks); | |
4682 | if(!mctrack) continue; | |
4683 | tracketa = mctrack->Eta(); | |
4684 | trackphi = mctrack->Phi(); | |
4685 | if(mctrack->Pt()<fCurrentJetMinPtNT90Recalc) continue; | |
4686 | if(mctrack->IsPhysicalPrimary()) | |
4687 | { | |
4688 | if(mctrack->Charge()!=0&&mctrack->Charge()!=-99) | |
4689 | { | |
4690 | if(GetDeltaR(jeteta, jetphi, tracketa, trackphi)<=jr) | |
4691 | { | |
4692 | currentNumber++; | |
4693 | } // end if inside jet | |
4694 | } // end charged | |
4695 | } // end physical primary | |
4696 | } // end for tracks | |
4697 | ||
4698 | numberOfChargedTracks = currentNumber; | |
4699 | AliDebug(4,Form("Recalculated number of tracks above threshold MC was:%i, returning",numberOfChargedTracks)); | |
4700 | return numberOfChargedTracks; | |
4701 | ||
4702 | } | |
4703 | //________________________________________________________________________ | |
4704 | Int_t AliAnalysisTaskPartonDisc::GetNRecChargedTracksAboveThreshold(AliAODJet *jet, Int_t ntracks, AliAODEvent *aode, Double_t jr) | |
4705 | { | |
4706 | // | |
4707 | // Calculate the number of charged particles | |
4708 | // above the threshold set by the NTX calculation | |
4709 | // for the AOD track case, the threshold is fCurrentJetMinPtNT90 | |
4710 | // the fCurrentJetMinPtNT90 was set when calling the NTX method before | |
4711 | ||
4712 | Int_t numberOfChargedTracks = 0; | |
4713 | Int_t currentNumber = 0; | |
4714 | Double_t jeteta = jet->Eta(); | |
4715 | Double_t jetphi = jet->Phi(); | |
4716 | Double_t jetpT = jet->Pt(); | |
4717 | Double_t tracketa = 0; | |
4718 | Double_t trackphi = 0; | |
4719 | ||
4720 | if(IsEqualRel(jetpT, 0.0)) //IsEqualRel(jetpT, 0.0) // jetpT==0 | |
4721 | return 0; | |
4722 | ||
4723 | for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) | |
4724 | { | |
4725 | AliAODTrack *aodtrack = aode->GetTrack(iTracks); | |
4726 | if(!aodtrack) continue; | |
4727 | tracketa = aodtrack->Eta(); | |
4728 | trackphi = aodtrack->Phi(); | |
4729 | if(GetDeltaR(jeteta, jetphi, tracketa, trackphi)<=jr) | |
4730 | { | |
4731 | if(!aodtrack->TestFilterBit(fFilterBit)) continue; //track filter selection | |
4732 | if(!aodtrack->IsPrimaryCandidate()) continue; // only primaries | |
4733 | if(aodtrack->Pt()<fCurrentJetMinPtNT90) continue; | |
4734 | currentNumber++; | |
4735 | } // end if inside jet | |
4736 | } // end for tracks | |
4737 | ||
4738 | numberOfChargedTracks = currentNumber; | |
4739 | return numberOfChargedTracks; | |
4740 | } | |
4741 | //________________________________________________________________________ | |
4742 | Int_t AliAnalysisTaskPartonDisc::GetRecalcNTXRec(Int_t percentage,AliAODJet *originaljet, Int_t ntracks, AliAODEvent *aode, Double_t jr) | |
4743 | { | |
4744 | // | |
4745 | // Calculate the number of charged particles necessary to | |
4746 | // add the given percentage of the jet energy (transverse energy) | |
4747 | // after pT recalculation, for the AOD track case | |
4748 | ||
4749 | Int_t numberOfChargedTracks = 0; | |
4750 | Int_t currentNumber = 0; | |
4751 | Double_t jetpT = fBckgSbsJet[0]; //pT | |
4752 | Double_t jeteta = fBckgSbsJet[1]; //eta | |
4753 | Double_t jetphi = fBckgSbsJet[2]; //phi | |
4754 | Double_t tracketa = 0; | |
4755 | Double_t trackphi = 0; | |
4756 | Int_t arraysize = 1000; | |
4757 | Bool_t rfTrkFlag = kFALSE; | |
4758 | ||
4759 | if(IsEqualRel(jetpT, 0.0)) //IsEqualRel(jetpT, 0.0) //jetpT==0 | |
4760 | return 0; | |
4761 | ||
4762 | // RefTracks | |
4763 | Int_t trkinjet = originaljet->GetRefTracks()->GetEntriesFast(); | |
4764 | if(trkinjet!=0&&!fForceNotTR) | |
4765 | rfTrkFlag = kTRUE; | |
4766 | AliDebug(4,Form("Number of tracks in this reco jet by RefTracks:%i \n",trkinjet)); | |
4767 | ||
4768 | AllocateStaticContainer(arraysize); | |
4769 | InitializeStaticContainer(arraysize); | |
4770 | if(!rfTrkFlag) // if not track ref, check track by track | |
4771 | { | |
4772 | AliDebug(4,Form("Empty Track Refs (reco)!")); | |
4773 | for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) | |
4774 | { | |
4775 | AliAODTrack *aodtrack = aode->GetTrack(iTracks); | |
4776 | if(!aodtrack) continue; | |
4777 | tracketa = aodtrack->Eta(); | |
4778 | trackphi = aodtrack->Phi(); | |
4779 | if(GetDeltaR(jeteta, jetphi, tracketa, trackphi)<=jr) | |
4780 | { | |
4781 | if(!aodtrack->TestFilterBit(fFilterBit)) continue; //track filter selection | |
4782 | if(!aodtrack->IsPrimaryCandidate()) continue; // only primaries | |
4783 | if(aodtrack->Pt()<fMinpTVal) continue; // pT cut, not using track refs | |
4784 | currentNumber++; | |
4785 | fgContainer[currentNumber-1] = aodtrack->Pt(); // save the current pt in the container | |
4786 | } // end if inside jet | |
4787 | } // end for tracks | |
4788 | } // end of no track ref | |
4789 | ||
4790 | if(rfTrkFlag) // if track ref, use them | |
4791 | { | |
4792 | AliDebug(4,Form("Using Track Refs (reco)!")); | |
4793 | for(Int_t ixt=0; ixt<trkinjet;ixt++) | |
4794 | { | |
4795 | AliVParticle *vtrack = dynamic_cast<AliVParticle*>(originaljet->GetRefTracks()->At(ixt)); | |
4796 | if(!vtrack) continue; | |
4797 | // No further checks, all cuts should be in in the track refs | |
4798 | if(vtrack->Charge()!=0&&vtrack->Charge()!=-99) | |
4799 | { | |
4800 | currentNumber++; | |
4801 | fgContainer[currentNumber-1] = vtrack->Pt(); // save the current pt in the container | |
4802 | } | |
4803 | } // end trk in jet | |
4804 | } // end if trk ref | |
4805 | ||
4806 | ||
4807 | // sort the contents of the container | |
4808 | SortArray(fgContainer,arraysize); | |
4809 | // loop over the contents and count how many tracks are necessary to recover the percetage of the energy | |
4810 | numberOfChargedTracks = TracksForPercentageRecalc(fgContainer, arraysize, percentage, jetpT); | |
4811 | return numberOfChargedTracks; | |
4812 | } | |
4813 | //________________________________________________________________________ | |
4814 | Int_t AliAnalysisTaskPartonDisc::GetRecalcNRecChTrUpThr(AliAODJet *jet, Int_t ntracks, AliAODEvent *aode, Double_t jr) | |
4815 | { | |
4816 | // | |
4817 | // Calculate the number of charged particles | |
4818 | // above the threshold set by the NTX calculation | |
4819 | // for the AOD track case, the threshold is fCurrentJetMinPtNT90Recalc | |
4820 | // the fCurrentJetMinPtNT90Recalc was set when calling the NTX method before | |
4821 | ||
4822 | Int_t numberOfChargedTracks = 0; | |
4823 | Int_t currentNumber = 0; | |
4824 | Double_t jeteta = jet->Eta(); | |
4825 | Double_t jetphi = jet->Phi(); | |
4826 | Double_t jetpT = jet->Pt(); | |
4827 | Double_t tracketa = 0; | |
4828 | Double_t trackphi = 0; | |
4829 | ||
4830 | if(IsEqualRel(jetpT, 0.0)) //IsEqualRel(jetpT, 0.0) // jetpT==0 | |
4831 | return 0; | |
4832 | ||
4833 | for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) | |
4834 | { | |
4835 | AliAODTrack *aodtrack = aode->GetTrack(iTracks); | |
4836 | if(!aodtrack) continue; | |
4837 | tracketa = aodtrack->Eta(); | |
4838 | trackphi = aodtrack->Phi(); | |
4839 | if(GetDeltaR(jeteta, jetphi, tracketa, trackphi)<=jr) | |
4840 | { | |
4841 | if(!aodtrack->TestFilterBit(fFilterBit)) continue; //track filter selection | |
4842 | if(!aodtrack->IsPrimaryCandidate()) continue; // only primaries | |
4843 | if(aodtrack->Pt()<fCurrentJetMinPtNT90Recalc) continue; | |
4844 | currentNumber++; | |
4845 | } // end if inside jet | |
4846 | } // end for tracks | |
4847 | ||
4848 | numberOfChargedTracks = currentNumber; | |
4849 | return numberOfChargedTracks; | |
4850 | } | |
4851 | //________________________________________________________________________ | |
4852 | Bool_t AliAnalysisTaskPartonDisc::IsTrackInsideExcludedArea(Double_t tracketa, Double_t trackphi, TClonesArray *recojetsA) | |
4853 | { | |
4854 | // | |
4855 | // Check if these track coordinates are in an excluded area | |
4856 | // | |
4857 | ||
4858 | //Primero: checar si esta dentro de cualquier jet, no importa si esta dentro de la | |
4859 | //aceptancia o no(en base al eje), aun podria haber tracks del jet dentro del | |
4860 | //evento. | |
4861 | Int_t numbRecJ = recojetsA->GetEntries(); | |
4862 | Double_t etaCurrJet = 0.0; | |
4863 | Double_t phiCurrJet = 0.0; | |
4864 | Double_t deltaeta = 0.0; | |
4865 | Double_t deltaphi = 0.0; | |
4866 | Double_t deltar = 0.0; | |
8dcbcbbb | 4867 | Double_t extendedRadius = fJetRadius+fIncExcR; |
0c9acc4c | 4868 | Double_t extendedRadiusDiJet = 0.0; |
4869 | Double_t phiCurrJetExArL = 0.0; // preliminary left boundary of exluded phi of current jet | |
4870 | Double_t phiCurrJetExArR = 0.0; // preliminary right boundary of exluded phi of current jet | |
4871 | Double_t leftBoundary = 0.0; | |
4872 | Double_t rightBoundary = 0.0; | |
4873 | ||
4874 | if(fNotExtDiJEx) | |
4875 | extendedRadiusDiJet = fJetRadius; // old behaviour | |
4876 | if(!fNotExtDiJEx) | |
4877 | extendedRadiusDiJet = fJetRadius+fIncExcR; // new behaviour | |
4878 | ||
4879 | for (Int_t indxrec = 0; indxrec < numbRecJ; indxrec++) | |
4880 | { | |
4881 | AliDebug(4,Form("Number of current jet:%i \n",indxrec)); | |
4882 | AliAODJet *rjet = dynamic_cast<AliAODJet*>(recojetsA->At(indxrec)); | |
4883 | if (!rjet) | |
4884 | { | |
4885 | AliDebug(2,Form("ERROR: Could not receive jet %d\n", indxrec)); | |
4886 | continue; | |
4887 | } | |
4888 | etaCurrJet = rjet->Eta(); | |
4889 | phiCurrJet = rjet->Phi(); | |
4890 | deltaeta = etaCurrJet-tracketa; | |
4891 | deltaphi = phiCurrJet-trackphi; | |
4892 | if (deltaphi > TMath::Pi()) | |
4893 | deltaphi = 2.0 * TMath::Pi() - deltaphi; | |
4894 | deltar = sqrt(deltaeta*deltaeta+deltaphi*deltaphi); | |
4895 | if(deltar<=extendedRadius) // if the track is inside the jet, reject (extended radius) | |
4896 | { | |
4897 | // printf("Excluding track for being in the extended jet area. Eta:%f, Phi:%f, deltar=%f \n",tracketa,trackphi,deltar); | |
4898 | return kTRUE; | |
4899 | } | |
4900 | // Now check if it is in the expected dijet area for the two hardest jets | |
4901 | if(indxrec==0||indxrec==1) //two hardest jets in the event | |
4902 | { | |
4903 | //left boundary | |
4904 | phiCurrJetExArL= phiCurrJet + TMath::Pi() - extendedRadiusDiJet; | |
4905 | if(phiCurrJetExArL>TMath::TwoPi()) | |
4906 | phiCurrJetExArL=phiCurrJetExArL-TMath::TwoPi(); | |
4907 | //right boundary | |
4908 | phiCurrJetExArR= phiCurrJet + TMath::Pi() + extendedRadiusDiJet; | |
4909 | if(phiCurrJetExArR>TMath::TwoPi()) | |
4910 | phiCurrJetExArR=phiCurrJetExArR-TMath::TwoPi(); | |
4911 | // //Assign left and right boundary | |
4912 | leftBoundary=phiCurrJetExArL; | |
4913 | rightBoundary=phiCurrJetExArR; | |
4914 | // now check if inside the excluded area | |
4915 | if(trackphi>=leftBoundary&&trackphi<=rightBoundary) | |
4916 | { | |
4917 | // printf("Excluding track for being in di-jet excluded area!!! \n"); | |
4918 | // printf("phi of track:%f, left bound:%f, right bound:%f \n",trackphi,leftBoundary,rightBoundary); | |
4919 | return kTRUE; | |
4920 | } | |
4921 | } | |
4922 | } | |
4923 | // Si sobrevive todos los tests, regresar kFALSE | |
4924 | return kFALSE; | |
4925 | } | |
4926 | //________________________________________________________________________ | |
4927 | Double_t AliAnalysisTaskPartonDisc::GetV0ExcludedMultiplicity(TClonesArray *recojets) | |
4928 | { | |
4929 | // | |
4930 | // Calculate the V0 MIP multiplicity that should be excluded due | |
4931 | // to possible jet activity | |
4932 | // | |
4933 | ||
4934 | //Check if there is V0 info | |
4935 | if(!fVZero) | |
4936 | { | |
4937 | AliDebug(2,"ERROR: There is not VZERO info in the AOD"); | |
4938 | // printf("No hay objeto fVZero \n"); | |
4939 | return 0.0; | |
4940 | } | |
4941 | ||
4942 | Int_t numbRecJ = recojets->GetEntries(); | |
4943 | Double_t phiCurrJet = 0.0; | |
4944 | //Check if there are jets | |
4945 | if(numbRecJ==0) | |
4946 | { | |
4947 | AliDebug(2,"ERROR: There are not jets in the event"); | |
4948 | return 0.0; | |
4949 | } | |
4950 | ||
4951 | //Flags for V0A sectors | |
4952 | Bool_t removeS0cells = kFALSE; | |
4953 | Bool_t removeS1cells = kFALSE; | |
4954 | Bool_t removeS2cells = kFALSE; | |
4955 | Bool_t removeS3cells = kFALSE; | |
4956 | Bool_t removeS4cells = kFALSE; | |
4957 | Bool_t removeS5cells = kFALSE; | |
4958 | Bool_t removeS6cells = kFALSE; | |
4959 | Bool_t removeS7cells = kFALSE; | |
4960 | //Flags for V0C sectors | |
4961 | Bool_t removeS0cellsV0C = kFALSE; | |
4962 | Bool_t removeS1cellsV0C = kFALSE; | |
4963 | Bool_t removeS2cellsV0C = kFALSE; | |
4964 | Bool_t removeS3cellsV0C = kFALSE; | |
4965 | Bool_t removeS4cellsV0C = kFALSE; | |
4966 | Bool_t removeS5cellsV0C = kFALSE; | |
4967 | Bool_t removeS6cellsV0C = kFALSE; | |
4968 | Bool_t removeS7cellsV0C = kFALSE; | |
4969 | //Excedent multiplicity in V0A, V0C and total | |
4970 | Double_t excedentV0A = 0.0; | |
4971 | Double_t excedentV0C = 0.0; | |
4972 | Double_t excedentV0Total = 0.0; | |
4973 | Double_t phiValLow = 0.0; | |
4974 | Double_t phiValUp = 0.0; | |
4975 | Double_t extendedR = fJetRadius + fIncExcR; | |
4976 | ||
4977 | for (Int_t indxrec = 0; indxrec < numbRecJ; indxrec++) | |
4978 | { | |
4979 | // Now check the two hardest jets | |
4980 | if(indxrec==0||indxrec==1) //two hardest jets in the event | |
4981 | { | |
4982 | AliAODJet *rjet = dynamic_cast<AliAODJet*>(recojets->At(indxrec)); | |
4983 | if (!rjet) | |
4984 | { | |
4985 | AliDebug(2,Form("ERROR: Could not receive jet %d\n", indxrec)); | |
4986 | continue; | |
4987 | } | |
4988 | phiCurrJet = rjet->Phi(); | |
4989 | ||
4990 | //Get the excluded phi boundaries | |
4991 | Double_t b1 = phiCurrJet + TMath::Pi() - extendedR; | |
4992 | Double_t b2 = phiCurrJet + TMath::Pi() + extendedR; | |
4993 | if(b1>TMath::TwoPi()) | |
4994 | b1 = b1 - TMath::TwoPi(); | |
4995 | if(b2>TMath::TwoPi()) | |
4996 | b2 = b2 - TMath::TwoPi(); | |
4997 | ||
4998 | phiValLow = b1; | |
4999 | phiValUp = b2; | |
5000 | ||
5001 | if(phiValLow>TMath::TwoPi()||phiValUp>TMath::TwoPi()||phiValLow<0.||phiValUp<0.) | |
5002 | return 500.0; | |
5003 | ||
5004 | // First V0A (EN EVE LA NUMERACION EMPIEZA EN 1...) | |
5005 | // Cells in sector S0 ( 0 to pi/4): 32,40,48,56 | |
5006 | // Cells in sector S1 ( pi/4 to pi/2): 33,41,49,57 | |
5007 | // Cells in sector S2 ( pi/2 to 3pi/4): 34,42,50,58 | |
5008 | // Cells in sector S3 (3pi/4 to pi ): 35,43,51,59 | |
5009 | // Cells in sector S4 ( pi to 5pi/4): 36,44,52,60 | |
5010 | // Cells in sector S5 (5pi/4 to 3pi/2): 37,45,53,61 | |
5011 | // Cells in sector S6 (3pi/2 to 7pi/4): 38,46,54,62 | |
5012 | // Cells in sector S7 (7pi/4 to 2pi ): 39,47,55,63 | |
5013 | ||
5014 | //Check if falls in sector S0 | |
5015 | if(phiValLow>=(0.)&&phiValLow<=(1./4.*TMath::Pi())) | |
5016 | removeS0cells = kTRUE; | |
5017 | if(phiValUp>=(0.)&&phiValUp<=(1./4.*TMath::Pi())) | |
5018 | removeS0cells = kTRUE; | |
5019 | //Check if falls in sector S1 | |
5020 | if(phiValLow>=(1./4.*TMath::Pi())&&phiValLow<=(1./2.*TMath::Pi())) | |
5021 | removeS1cells = kTRUE; | |
5022 | if(phiValUp>=(1./4.*TMath::Pi())&&phiValUp<=(1./2.*TMath::Pi())) | |
5023 | removeS1cells = kTRUE; | |
5024 | //Check if falls in sector S2 | |
5025 | if(phiValLow>=(1./2.*TMath::Pi())&&phiValLow<=(3./4.*TMath::Pi())) | |
5026 | removeS2cells = kTRUE; | |
5027 | if(phiValUp>=(1./2.*TMath::Pi())&&phiValUp<=(3./4.*TMath::Pi())) | |
5028 | removeS2cells = kTRUE; | |
5029 | //Check if falls in sector S3 | |
5030 | if(phiValLow>=(3./4.*TMath::Pi())&&phiValLow<=(TMath::Pi())) | |
5031 | removeS3cells = kTRUE; | |
5032 | if(phiValUp>=(3./4.*TMath::Pi())&&phiValUp<=(TMath::Pi())) | |
5033 | removeS3cells = kTRUE; | |
5034 | //Check if falls in sector S4 | |
5035 | if(phiValLow>=(TMath::Pi())&&phiValLow<=(5./4.*TMath::Pi())) | |
5036 | removeS4cells = kTRUE; | |
5037 | if(phiValUp>=(TMath::Pi())&&phiValUp<=(5./4.*TMath::Pi())) | |
5038 | removeS4cells = kTRUE; | |
5039 | //Check if falls in sector S5 | |
5040 | if(phiValLow>=(5./4.*TMath::Pi())&&phiValLow<=(3./2.*TMath::Pi())) | |
5041 | removeS5cells = kTRUE; | |
5042 | if(phiValUp>=(5./4.*TMath::Pi())&&phiValUp<=(3./2.*TMath::Pi())) | |
5043 | removeS5cells = kTRUE; | |
5044 | //Check if falls in sector S6 | |
5045 | if(phiValLow>=(3./2.*TMath::Pi())&&phiValLow<=(7./4.*TMath::Pi())) | |
5046 | removeS6cells = kTRUE; | |
5047 | if(phiValUp>=(3./2.*TMath::Pi())&&phiValUp<=(7./4.*TMath::Pi())) | |
5048 | removeS6cells = kTRUE; | |
5049 | //Check if falls in sector S7 | |
5050 | if(phiValLow>=(7./4.*TMath::Pi())&&phiValLow<=(TMath::TwoPi())) | |
5051 | removeS7cells = kTRUE; | |
5052 | if(phiValUp>=(7./4.*TMath::Pi())&&phiValUp<=(TMath::TwoPi())) | |
5053 | removeS7cells = kTRUE; | |
5054 | ||
5055 | ///////////////////////////////////////////////////////////////////////////////// | |
5056 | ||
5057 | // Now V0C (EN EVE LA NUMERACION EMPIEZA EN 1...) | |
5058 | // Cells in sector S0 ( pi/2 to 3pi/4): 0,8,16,24 | |
5059 | // Cells in sector S1 (3pi/4 to pi ): 1,9,17,25 | |
5060 | // Cells in sector S2 ( pi to 5pi/4): 2,10,18,26 | |
5061 | // Cells in sector S3 (5pi/4 to 3pi/2): 3,11,19,27 | |
5062 | // Cells in sector S4 (3pi/2 to 7pi/4): 4,12,20,28 | |
5063 | // Cells in sector S5 (7pi/4 to 2pi ): 5,13,21,29 | |
5064 | // Cells in sector S6 ( 0 to pi/4): 6,14,22,30 | |
5065 | // Cells in sector S7 ( pi/4 to pi/2): 7,15,23,31 | |
5066 | ||
5067 | //Check if falls in sector S0 | |
5068 | if(phiValLow>=(1./2.*TMath::Pi())&&phiValLow<=(3./4.*TMath::Pi())) | |
5069 | removeS0cellsV0C = kTRUE; | |
5070 | if(phiValUp>=(1./2.*TMath::Pi())&&phiValUp<=(3./4.*TMath::Pi())) | |
5071 | removeS0cellsV0C = kTRUE; | |
5072 | //Check if falls in sector S1 | |
5073 | if(phiValLow>=(3./4.*TMath::Pi())&&phiValLow<=(TMath::Pi())) | |
5074 | removeS1cellsV0C = kTRUE; | |
5075 | if(phiValUp>=(3./4.*TMath::Pi())&&phiValUp<=(TMath::Pi())) | |
5076 | removeS1cellsV0C = kTRUE; | |
5077 | //Check if falls in sector S2 | |
5078 | if(phiValLow>=(TMath::Pi())&&phiValLow<=(5./4.*TMath::Pi())) | |
5079 | removeS2cellsV0C = kTRUE; | |
5080 | if(phiValUp>=(TMath::Pi())&&phiValUp<=(5./4.*TMath::Pi())) | |
5081 | removeS2cellsV0C = kTRUE; | |
5082 | //Check if falls in sector S3 | |
5083 | if(phiValLow>=(5./4.*TMath::Pi())&&phiValLow<=(3./2.*TMath::Pi())) | |
5084 | removeS3cellsV0C = kTRUE; | |
5085 | if(phiValUp>=(5./4.*TMath::Pi())&&phiValUp<=(3./2.*TMath::Pi())) | |
5086 | removeS3cellsV0C = kTRUE; | |
5087 | //Check if falls in sector S4 | |
5088 | if(phiValLow>=(3./2.*TMath::Pi())&&phiValLow<=(7./4.*TMath::Pi())) | |
5089 | removeS4cellsV0C = kTRUE; | |
5090 | if(phiValUp>=(3./2.*TMath::Pi())&&phiValUp<=(7./4.*TMath::Pi())) | |
5091 | removeS4cellsV0C = kTRUE; | |
5092 | //Check if falls in sector S5 | |
5093 | if(phiValLow>=(7./4.*TMath::Pi())&&phiValLow<=(TMath::TwoPi())) | |
5094 | removeS5cellsV0C = kTRUE; | |
5095 | if(phiValUp>=(7./4.*TMath::Pi())&&phiValUp<=(TMath::TwoPi())) | |
5096 | removeS5cellsV0C = kTRUE; | |
5097 | //Check if falls in sector S6 | |
5098 | if(phiValLow>=(0.)&&phiValLow<=(1./4.*TMath::Pi())) | |
5099 | removeS6cellsV0C = kTRUE; | |
5100 | if(phiValUp>=(0.)&&phiValUp<=(1./4.*TMath::Pi())) | |
5101 | removeS6cellsV0C = kTRUE; | |
5102 | //Check if falls in sector S7 | |
5103 | if(phiValLow>=(1./4.*TMath::Pi())&&phiValLow<=(1./2.*TMath::Pi())) | |
5104 | removeS7cellsV0C = kTRUE; | |
5105 | if(phiValUp>=(1./4.*TMath::Pi())&&phiValUp<=(1./2.*TMath::Pi())) | |
5106 | removeS7cellsV0C = kTRUE; | |
5107 | ||
5108 | // printf("phi del jet:%f, philow:%f, phiup:%f \n",phiCurrJet,phiValLow,phiValUp); | |
5109 | } // end if leading jets (2) | |
5110 | } // end jet loop | |
5111 | ||
5112 | // printf("_________V0A____________\n"); | |
5113 | // printf("Status sector S0:%i \n",removeS0cells); | |
5114 | // printf("Status sector S1:%i \n",removeS1cells); | |
5115 | // printf("Status sector S2:%i \n",removeS2cells); | |
5116 | // printf("Status sector S3:%i \n",removeS3cells); | |
5117 | // printf("Status sector S4:%i \n",removeS4cells); | |
5118 | // printf("Status sector S5:%i \n",removeS5cells); | |
5119 | // printf("Status sector S6:%i \n",removeS6cells); | |
5120 | // printf("Status sector S7:%i \n",removeS7cells); | |
5121 | // printf("_______________________\n"); | |
5122 | ||
5123 | if(removeS0cells) | |
5124 | excedentV0A = excedentV0A + fVZero->GetMultiplicity(32)+fVZero->GetMultiplicity(40)+fVZero->GetMultiplicity(48)+fVZero->GetMultiplicity(56); | |
5125 | if(removeS1cells) | |
5126 | excedentV0A = excedentV0A + fVZero->GetMultiplicity(33)+fVZero->GetMultiplicity(41)+fVZero->GetMultiplicity(49)+fVZero->GetMultiplicity(57); | |
5127 | if(removeS2cells) | |
5128 | excedentV0A = excedentV0A + fVZero->GetMultiplicity(34)+fVZero->GetMultiplicity(42)+fVZero->GetMultiplicity(50)+fVZero->GetMultiplicity(58); | |
5129 | if(removeS3cells) | |
5130 | excedentV0A = excedentV0A + fVZero->GetMultiplicity(35)+fVZero->GetMultiplicity(43)+fVZero->GetMultiplicity(51)+fVZero->GetMultiplicity(59); | |
5131 | if(removeS4cells) | |
5132 | excedentV0A = excedentV0A + fVZero->GetMultiplicity(36)+fVZero->GetMultiplicity(44)+fVZero->GetMultiplicity(52)+fVZero->GetMultiplicity(60); | |
5133 | if(removeS5cells) | |
5134 | excedentV0A = excedentV0A + fVZero->GetMultiplicity(37)+fVZero->GetMultiplicity(45)+fVZero->GetMultiplicity(53)+fVZero->GetMultiplicity(61); | |
5135 | if(removeS6cells) | |
5136 | excedentV0A = excedentV0A + fVZero->GetMultiplicity(38)+fVZero->GetMultiplicity(46)+fVZero->GetMultiplicity(54)+fVZero->GetMultiplicity(62); | |
5137 | if(removeS7cells) | |
5138 | excedentV0A = excedentV0A + fVZero->GetMultiplicity(39)+fVZero->GetMultiplicity(47)+fVZero->GetMultiplicity(55)+fVZero->GetMultiplicity(63); | |
5139 | ||
5140 | // printf("________V0C____________\n"); | |
5141 | // printf("Status sector S0:%i \n",removeS0cellsV0C); | |
5142 | // printf("Status sector S1:%i \n",removeS1cellsV0C); | |
5143 | // printf("Status sector S2:%i \n",removeS2cellsV0C); | |
5144 | // printf("Status sector S3:%i \n",removeS3cellsV0C); | |
5145 | // printf("Status sector S4:%i \n",removeS4cellsV0C); | |
5146 | // printf("Status sector S5:%i \n",removeS5cellsV0C); | |
5147 | // printf("Status sector S6:%i \n",removeS6cellsV0C); | |
5148 | // printf("Status sector S7:%i \n",removeS7cellsV0C); | |
5149 | // printf("_______________________\n"); | |
5150 | ||
5151 | if(removeS0cellsV0C) | |
5152 | excedentV0C = excedentV0C + fVZero->GetMultiplicity(0)+fVZero->GetMultiplicity(8)+fVZero->GetMultiplicity(16)+fVZero->GetMultiplicity(24); | |
5153 | if(removeS1cellsV0C) | |
5154 | excedentV0C = excedentV0C + fVZero->GetMultiplicity(1)+fVZero->GetMultiplicity(9)+fVZero->GetMultiplicity(17)+fVZero->GetMultiplicity(25); | |
5155 | if(removeS2cellsV0C) | |
5156 | excedentV0C = excedentV0C + fVZero->GetMultiplicity(2)+fVZero->GetMultiplicity(10)+fVZero->GetMultiplicity(18)+fVZero->GetMultiplicity(26); | |
5157 | if(removeS3cellsV0C) | |
5158 | excedentV0C = excedentV0C + fVZero->GetMultiplicity(3)+fVZero->GetMultiplicity(11)+fVZero->GetMultiplicity(19)+fVZero->GetMultiplicity(27); | |
5159 | if(removeS4cellsV0C) | |
5160 | excedentV0C = excedentV0C + fVZero->GetMultiplicity(4)+fVZero->GetMultiplicity(12)+fVZero->GetMultiplicity(20)+fVZero->GetMultiplicity(28); | |
5161 | if(removeS5cellsV0C) | |
5162 | excedentV0C = excedentV0C + fVZero->GetMultiplicity(5)+fVZero->GetMultiplicity(13)+fVZero->GetMultiplicity(21)+fVZero->GetMultiplicity(29); | |
5163 | if(removeS6cellsV0C) | |
5164 | excedentV0C = excedentV0C + fVZero->GetMultiplicity(6)+fVZero->GetMultiplicity(14)+fVZero->GetMultiplicity(22)+fVZero->GetMultiplicity(30); | |
5165 | if(removeS7cellsV0C) | |
5166 | excedentV0C = excedentV0C + fVZero->GetMultiplicity(7)+fVZero->GetMultiplicity(15)+fVZero->GetMultiplicity(23)+fVZero->GetMultiplicity(31); | |
5167 | ||
5168 | excedentV0Total = excedentV0A+excedentV0C; | |
5169 | ||
5170 | // printf("La multiplicidad total en V0 es:%f, la multiplicidad excedente en V0A es:%f, y en V0C es:%f, la multiplicidad corregida es:%f \n",fVZero->GetMTotV0A()+fVZero->GetMTotV0C(),excedentV0A,excedentV0C,fVZero->GetMTotV0A()+fVZero->GetMTotV0C()-excedentV0Total); | |
5171 | ||
5172 | return excedentV0Total; | |
5173 | } | |
5174 | //________________________________________________________________________ | |
5175 | Int_t AliAnalysisTaskPartonDisc::GetV0LikeExcludedMultMC(TClonesArray *mcjets, TClonesArray *mcparticles) | |
5176 | { | |
5177 | // | |
5178 | // Calculate the V0 like multiplicity that should be excluded due | |
5179 | // to possible jet activity in MC events | |
5180 | // | |
5181 | ||
5182 | Int_t nMcJets = mcjets->GetEntries(); | |
5183 | Int_t tracksMC = mcparticles->GetEntriesFast(); | |
5184 | Double_t phiCurrJet = 0.0; | |
5185 | //Check if there are jets | |
5186 | if(nMcJets==0) | |
5187 | { | |
5188 | AliDebug(2,"ERROR: There are no MC jets in the event"); | |
5189 | return 0; | |
5190 | } | |
5191 | Int_t excludedMultV0Like = 0; | |
5192 | Double_t trackphi=0.0; | |
5193 | Double_t extendedR = fJetRadius + fIncExcR; | |
5194 | for (Int_t indxMC = 0; indxMC < nMcJets; indxMC++) | |
5195 | { | |
5196 | // Now check the two hardest jets | |
5197 | if(indxMC==0||indxMC==1) //two hardest jets in the event | |
5198 | { | |
5199 | AliAODJet *mcJet = dynamic_cast<AliAODJet*>(mcjets->At(indxMC)); | |
5200 | if (!mcJet) | |
5201 | { | |
5202 | AliDebug(2,Form("ERROR: Could not receive jet %d\n", indxMC)); | |
5203 | continue; | |
5204 | } | |
5205 | phiCurrJet = mcJet->Phi(); | |
5206 | //Get the excluded phi boundaries | |
5207 | Double_t b1 = phiCurrJet + TMath::Pi() - extendedR; | |
5208 | Double_t b2 = phiCurrJet + TMath::Pi() + extendedR; | |
5209 | if(b1>TMath::TwoPi()) | |
5210 | b1 = b1 - TMath::TwoPi(); | |
5211 | if(b2>TMath::TwoPi()) | |
5212 | b2 = b2 - TMath::TwoPi(); | |
5213 | // now check the charged tracks in the V0 acceptance | |
5214 | for(Int_t aodMCTrack = 0; aodMCTrack < tracksMC; aodMCTrack++ ) | |
5215 | { | |
5216 | AliAODMCParticle *mctrackf = (AliAODMCParticle*) mcparticles->At(aodMCTrack); | |
5217 | if(!mctrackf) continue; | |
5218 | if(!mctrackf->IsPhysicalPrimary()) continue; | |
5219 | if(mctrackf->Charge()==0||mctrackf->Charge()==-99) continue; | |
5220 | if(mctrackf->Pt()<fMinpTValMC) continue; // cut off en MC | |
5221 | trackphi = mctrackf->Phi(); | |
5222 | if(trackphi>=b1&&trackphi<=b2) | |
5223 | { | |
5224 | //V0A | |
5225 | if(((mctrackf->Eta())>(2.8))&&((mctrackf->Eta())<(5.1))) | |
5226 | excludedMultV0Like++; | |
5227 | //V0C | |
5228 | if(((mctrackf->Eta())>(-3.7))&&((mctrackf->Eta())<(-1.7))) | |
5229 | excludedMultV0Like++; | |
5230 | } | |
5231 | } | |
5232 | } // end of 2 hardest jets | |
5233 | } // end jet loop | |
5234 | return excludedMultV0Like; | |
5235 | } | |
5236 | //________________________________________________________________________ | |
5237 | void AliAnalysisTaskPartonDisc::FillPerpConeHisto(TH3F *currenthisto, Int_t ntracks, AliAODEvent *aode, Int_t CentralityBin, Int_t pTBin) | |
5238 | { | |
5239 | ||
5240 | // Fills the histrogram of the pT distribution in the perpendicular cone | |
5241 | ||
5242 | Double_t aodtracketaC = 0.; | |
5243 | ||
5244 | for(Int_t aodT = 0; aodT < ntracks; aodT++ ) | |
5245 | { | |
5246 | AliAODTrack *aodtrackC = aode->GetTrack(aodT); | |
5247 | if(!aodtrackC) continue; | |
5248 | aodtracketaC = TMath::Abs(aodtrackC->Eta()); | |
5249 | if(aodtracketaC>0.9) continue; | |
5250 | if(!aodtrackC->TestFilterBit(fFilterBit)) continue; //track filter selection | |
5251 | if(!aodtrackC->IsPrimaryCandidate()) continue; // only primaries, maybe is redundant with the previous selection... | |
5252 | if(fJetEvent) // if has an accepted jet, calculate the perpendicular cone | |
5253 | { | |
5254 | if(HasPerpendicularCone()) // If there is a perpendicular cone available | |
5255 | { | |
5256 | if(aodtrackC->Pt()>fMinpTVal) | |
5257 | { | |
5258 | if(GetDeltaR(fEtaPerpCoord,fPhiPerpCoord,aodtrackC->Eta(),aodtrackC->Phi())<fJetRadius) | |
5259 | { | |
5260 | currenthisto->Fill(aodtrackC->Pt(),pTBin,CentralityBin); | |
5261 | } | |
5262 | } | |
5263 | } | |
5264 | } // end if jet event | |
5265 | } | |
5266 | } | |
5267 | //________________________________________________________________________ | |
5268 | Bool_t AliAnalysisTaskPartonDisc::IsEqualRel(Double_t vA, Double_t vB) | |
5269 | { | |
5270 | // Comparison of Double_t values | |
5271 | ||
5272 | Double_t epsVal = 0.000001; | |
5273 | return TMath::Abs(vA-vB) <= epsVal*TMath::Abs(vA); | |
5274 | ||
5275 | } |