1 #ifndef ALIANALYSISTASKSE_H
10 #include <TProfile2D.h>
18 #include <THnSparse.h>
21 #include <TClonesArray.h>
25 #include <TInterpreter.h>
26 #include "AliAnalysisTask.h"
27 #include "AliCentrality.h"
29 #include "AliESDEvent.h"
31 #include "AliESDInputHandler.h"
32 #include "AliAODEvent.h"
33 #include "AliAODHandler.h"
34 #include "AliAnalysisManager.h"
35 #include "AliAnalysisTaskSE.h"
38 #include "AliInputEventHandler.h"
44 #include "AliGenEventHeader.h"
45 #include "AliGenPythiaEventHeader.h"
46 #include "AliGenHijingEventHeader.h"
47 #include "AliAODMCHeader.h"
48 #include "AliMCEvent.h"
52 #include "AliVEventHandler.h"
53 #include "AliVParticle.h"
54 #include "AliAODMCParticle.h"
55 #include "AliAODTrack.h"
56 #include "AliAnalysisUtils.h"
59 #include "AliVVertex.h"
69 #include "AliHeader.h"
70 #include "AliRunLoader.h"
71 #include "AliVVZERO.h"
73 #include "AliExternalTrackParam.h"
84 fUseDefaultVertexCut(1), fUsePileUpCut(1), fIsMC(0),
85 fSignalJetRadius(0.4),
86 fSignalJetEtaWindow(0.9 - fSignalJetRadius), fTrackEtaWindow(0.9), fMinTrackPt(0.150), fMinJetArea(0.0),
87 fCentralityType("V0A"), fHelperClass(0), fInitializedLocal(0),
88 fZVertexCut(10.0), fhJetPt(0x0), fhCuts(0x0), fhTrackPt(0x0),fhJetConstituentPt(0x0),fhJetEtaPt(0x0),fhJetAreaPt(0x0),fhJetPhiPt(0x0),fhZVertex(0x0),
89 fhYVertex(0x0),fhXVertex(0x0),fhJetPtRho(0x0),fhJetPtConeRho(0x0),fhRho(0x0),fhConeRho(0x0),fhTrackEtaPt(0x0),fhTrackPhiPt(0x0),fhKTJetPt(0x0),fhZVertexBC(0x0), fhRemx(0x0), fhPrimGenTrkPt(0x0), fhGenJetPt(0x0), fhRecTrkPt(0x0), fhFakeTrkPt(0x0),fhMult(0x0),fhTrackPhiCG(0x0),fhTrackPhiTPCG(0x0),fhAtimesRho(0x0)
95 fhInvPtQVsPhi[i] = NULL;
96 fhInvPtQVsEta[i] = NULL;
97 fhInvPtQVsPhiASide[i] = NULL;
98 fhInvPtQVsPhiCSide[i] = NULL;
99 fhSigmaPtOverPtVsPt[i] = NULL;
107 fUseDefaultVertexCut(1), fUsePileUpCut(1), fIsMC(0),
108 fSignalJetRadius(0.4),
109 fSignalJetEtaWindow(0.9 - fSignalJetRadius), fTrackEtaWindow(0.9), fMinTrackPt(0.150), fMinJetArea(0.0),
110 fCentralityType(
"V0A"), fHelperClass(0), fInitializedLocal(0),
111 fZVertexCut(10.0),fhJetPt(0x0),fhCuts(0x0), fhTrackPt(0x0),fhJetConstituentPt(0x0),fhJetEtaPt(0x0),fhJetAreaPt(0x0),fhJetPhiPt(0x0),fhZVertex(0x0),
112 fhYVertex(0x0),fhXVertex(0x0),fhJetPtRho(0x0),fhJetPtConeRho(0x0),fhRho(0x0),fhConeRho(0x0),fhTrackEtaPt(0x0),fhTrackPhiPt(0x0),fhKTJetPt(0x0),fhZVertexBC(0x0), fhRemx(0x0), fhPrimGenTrkPt(0x0), fhGenJetPt(0x0), fhRecTrkPt(0x0), fhFakeTrkPt(0x0),fhMult(0x0),fhTrackPhiCG(0x0),fhTrackPhiTPCG(0x0),fhAtimesRho(0x0)
117 for(
int i=0;i<2;i++){
126 DefineOutput(1, AliEmcalList::Class());
133 if(!event)
return kFALSE;
147 fhZVertexBC->Fill(event->GetPrimaryVertex()->GetZ());
155 if(TMath::Abs(event->GetPrimaryVertex()->GetZ()) >
fZVertexCut){
160 fhZVertex->Fill(event->GetPrimaryVertex()->GetZ());
161 fhXVertex->Fill(event->GetPrimaryVertex()->GetX());
162 fhYVertex->Fill(event->GetPrimaryVertex()->GetY());
173 if(!track)
return kFALSE;
176 if(!track->Charge())
return kFALSE;
177 if(!(static_cast<AliAODMCParticle*>(track))->IsPhysicalPrimary())
return kFALSE;
191 if(!jet)
return kFALSE;
230 AliError(
"??? Event pointer == 0 ???");
262 AliVParticle *constTrackRec = NULL;
263 AliVParticle *constTrackGen = NULL;
284 AliAODTrack *constTrackRecAod=NULL;
288 trkContRec->ResetCurrentID();
290 if(!constTrackRecAod->IsHybridGlobalConstrainedGlobal())
continue;
291 if(!constTrackRecAod)
continue;
294 phi =
Convert(constTrackRecAod->Phi());
296 fhTrackEtaPt->Fill(constTrackRecAod->Eta(),constTrackRecAod->Pt());
299 if(constTrackRecAod->IsGlobalConstrained()){
304 itrkq = (constTrackRecAod->Charge()<0) ? 0 : 1;
307 fhInvPtQVsEta[itrkq]->Fill(constTrackRecAod->Eta(), 1.0/constTrackRecAod->Pt());
309 if(constTrackRecAod->Eta()>0){
316 memset(cv, 0,
sizeof(
Double_t) * 21);
317 memset(pxpypz, 0,
sizeof(
Double_t) * 50);
318 memset(xyz, 0,
sizeof(
Double_t) * 50);
319 constTrackRecAod->GetXYZ(xyz);
320 constTrackRecAod->GetPxPyPz(pxpypz);
321 constTrackRecAod->GetCovarianceXYZPxPyPz(cv);
322 AliExternalTrackParam par(xyz, pxpypz, cv, constTrackRecAod->Charge());
323 fhSigmaPtOverPtVsPt[itrkq]->Fill(constTrackRecAod->Pt(), TMath::Abs(sqrt(par.GetSigma1Pt2())/par.GetSigned1Pt()));
327 fhMult->Fill(fMultCounter);
341 jetContRecAKT->ResetCurrentID();
343 if(!jetRec)
continue;
356 constTrackRec =
static_cast<AliVParticle*
> (jetRec->
TrackAt(iq, trkContRec->GetArray()));
357 if(!constTrackRec)
continue;
367 jetContRecKT->ResetCurrentID();
369 if(!jetRec)
continue;
380 parContGen->ResetCurrentID();
382 if(!constTrackGen)
continue;
392 if(trkContRec && parContGen){
393 trkContRec->ResetCurrentID();
395 if(!constTrackRecAod->IsHybridGlobalConstrainedGlobal())
continue;
396 if(!constTrackRec)
continue;
400 parContGen->ResetCurrentID();
402 if(!constTrackGen)
continue;
404 if(TMath::Abs(constTrackRec->GetLabel()) == TMath::Abs(constTrackGen->GetLabel())){
423 jetContGenAKT->ResetCurrentID();
425 if(!jetGen)
continue;
432 jetContRecAKT->ResetCurrentID();
434 if(!jetRec)
continue;
463 printf(
"ERROR: Output list not available\n");
472 if(
fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
486 Bool_t oldStatus = TH1::AddDirectoryStatus();
487 TH1::AddDirectory(kFALSE);
491 fhJetPt =
new TH1D(
"fhJetPt",
"Pt spectrum of the AKT jets",320,-20.0,300.0);
492 fhJetPtRho =
new TH1D(
"fhJetPtRho",
"Pt spectrum of the AKT jets - bg",320,-20.0,300.0);
493 fhJetPtConeRho =
new TH1D(
"fhJetPtConeRho",
"Pt spectrum of the AKT jets - bg",320,-20.0,300.0);
494 fhAtimesRho =
new TH1D(
"fhAtimesRho",
"AKT background times area",320,-20.0,300.0);
495 fhJetConstituentPt =
new TH1D(
"fhJetConstituentPt",
"Pt spectrum of the AKT jet constituents",300,0.0,300.0);
496 fhTrackPt =
new TH1D(
"fhTrackPt",
"Pt spectrum of tracks",300,0.0,300.0);
497 fhJetAreaPt =
new TH2D(
"fhJetAreaPt",
"Jet area vs pt",50,0.,2.,300,0.0,300.0);
500 fhJetPhiPt =
new TH2D(
"fhJetPhiPt",
"Phi-Pt distribution of jets",50,-TMath::Pi(),TMath::Pi(),300,0.0,300.0);
501 fhTrackPhiPt =
new TH2D(
"fhTrackPhiPt",
"Phi-Pt distribution of tracks",50,-TMath::Pi(),TMath::Pi(),300,0.0,300.0);
503 fhZVertexBC =
new TH1D(
"fhZVertexBC",
"Z vertex before the cut",200,-50.0,50.0);
506 fhCuts =
new TH1D(
"fhCuts",
"Cuts statistics",4,0,4);
507 fhRho =
new TH1D(
"fhRho",
"KT jet background",500,0,50.0);
508 fhConeRho =
new TH1D(
"fhConeRho",
"Local AKT jet background",500,0,50.0);
509 fhKTJetPt =
new TH1D(
"fhKTJetPt",
"KT jets Pt spectrum",300,0.0,300.0);
512 fhRecTrkPt =
new TH1D(
"fhRecTrkPt",
"Correctly rec. track pT",300,0.0,300.0);
514 fhRemx =
new TH2D(
"fhRemx",
"Response matrix",300,0.0,300.0,300,0.0,300.0);
515 fhMult =
new TH1D(
"fhMult",
"Reconstructed track multiplicity",300,0,300.0);
517 fhTrackPhiCG =
new TH2D(
"fhTrackPhiCG",
"Global tracks azimuth vs Pt ",300,0,300,50,-TMath::Pi(),TMath::Pi());
518 fhTrackPhiTPCG =
new TH2D(
"fhTrackPhiTPCG",
"Complementary tracks azimuth vs Pt",300,0,300.0,50,-TMath::Pi(),TMath::Pi());
519 for(
int i=0;i<2;i++){
520 name = Form(
"fhSigmaPtOverPtVsPt%i",i);
523 name = Form(
"fhInvPtQVsPhi%i",i);
524 fhInvPtQVsPhi[i] =
new TH2D(name.Data(),
"Negative track azimuth vs 1/pt",50,-TMath::Pi(),TMath::Pi(),300,0.0,0.25);
526 name = Form(
"fhInvPtQVsEta%i",i);
529 name = Form(
"fhInvPtQVsPhiASide%i",i);
530 fhInvPtQVsPhiASide[i] =
new TH2D(name.Data(),
"Negative phi vs 1/pt A-eta",50,-TMath::Pi(),TMath::Pi(),300,0.0,0.25);
532 name = Form(
"fhInvPtQVsPhiASide%i",i);
533 fhInvPtQVsPhiCSide[i] =
new TH2D(name.Data(),
"Negative phi vs 1/pt C-eta",50,-TMath::Pi(),TMath::Pi(),300,0.0,0.25);
576 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
581 TH1::AddDirectory(oldStatus);
609 if(!jetCont)
return rhoCone;
616 jetCont->ResetCurrentID();
623 if(jetpt <0.005) jetpt = 0.;
624 rhovec[nJetAcc] = jetpt/jet->
Area();
629 rhoCone = TMath::Median(nJetAcc, rhovec);
639 if(!jetCont)
return rhoCone;
642 AliVParticle* track = NULL;
659 jetCont->ResetCurrentID();
663 if(jet->
Pt()>highjetpt){
664 highjetpt = jet->
Pt();
665 highjeteta = jet->
Eta();
669 if(highjetpt<0)
return 0.;
670 perpphi1=
Convert(highjetphi+TMath::Pi()/2);
671 perpphi2=
Convert(highjetphi-TMath::Pi()/2);
673 trkCont->ResetCurrentID();
675 if(!((AliAODTrack*)track)->IsHybridGlobalConstrainedGlobal())
continue;
679 trackpt = track->Pt();
680 tracketa = track->Eta();
681 trackphi =
Convert(track->Phi());
682 trDeta = tracketa-highjeteta;
683 trDphi1 =
Convert(trackphi-perpphi1);
684 trDphi2 =
Convert(trackphi-perpphi2);
686 if((trDeta*trDeta+trDphi1*trDphi1 < coner2) || (trDeta*trDeta+trDphi2*trDphi2 < coner2)){
687 bgpt = bgpt + trackpt;
690 rhoCone = bgpt/(2*TMath::Pi()*coner2);
699 return TMath::ATan2(TMath::Sin(input),TMath::Cos(input));
Double_t EstimateBgKT(AliJetContainer *jetCont)
Bool_t IsSignalJetInAcceptance(AliEmcalJet *jet, Bool_t suppressGhost=1)
virtual AliVParticle * GetNextAcceptParticle()
TH1D * fhXVertex
Z vertex before cut.
TH2D * fhRemx
Track phi-pt distribution.
Bool_t IsTrackInAcceptance(AliVParticle *track, Bool_t isprimary=0)
AliEmcalJet * ClosestJet() const
AliJetContainer * GetJetContainer(Int_t i=0) const
ClassImp(AliAnalysisTaskJetPP) AliAnalysisTaskJetPP
TH1D * fhZVertex
Response matrix.
TH1D * fhJetPtConeRho
pt spectrum of AKT jets without kt bgk
TH2D * fhInvPtQVsEta[2]
Inverse pt vs phi.
TH2D * fhTrackPhiCG
Multiplicity.
TH2D * fhTrackPhiTPCG
Global tracks.
TH1D * fhRecTrkPt
Pt spectrum of MC jets.
TH1D * fhPrimGenTrkPt
Y vertex.
TH2D * fhTrackEtaPt
Jet eta-pt distribution.
TH1D * fhMult
Pt spectrum of fake tracks.
Bool_t RetrieveEventObjects()
TH2D * fhInvPtQVsPhiCSide[2]
Inverse pt vs phi in away-side rapidity.
TH1D * fhTrackPt
Jet constituent pt.
Double_t EstimateLocalBg(AliJetContainer *jetCont, AliParticleContainer *trkCont)
TH1D * fhJetConstituentPt
Histogram for pilup/vertex cuts.
Double_t fSignalJetEtaWindow
Container for particles within the EMCAL framework.
UShort_t GetNumberOfTracks() const
TH1D * fhJetPt
gc trigger if tracks/jets are loaded initiates calling ExecOnce
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Double_t Convert(Double_t input)
TH2D * fhTrackPhiPt
Jet phi-pt distribution.
TH2D * fhJetAreaPt
local KT bgk
TH1D * fhJetPtRho
ptspectrum of KT jets
void Terminate(Option_t *)
void UserCreateOutputObjects()
TH2D * fhInvPtQVsPhiASide[2]
Inverse pt vs eta.
TH2D * fhJetPhiPt
Track eta-pt distribution.
AliEmcalJet * GetNextAcceptJet()
TH1D * fhYVertex
X vertex.
Bool_t fInitializedLocal
gc Vertex selection helper
TH1D * fhKTJetPt
pt spectrum of AKT jets
TH2D * fhSigmaPtOverPtVsPt[2]
Inverse pt vs pi in close-side rapidity.
Enhanced TList-derived class that implements correct merging for pt_hard binned production.
TH1D * fhCuts
Jet background times area.
virtual ~AliAnalysisTaskJetPP()
TH2D * fhInvPtQVsPhi[2]
complementary tracks
AliEmcalList * fOutput
!output list
AliAnalysisUtils * fHelperClass
Short_t TrackAt(Int_t idx) const
Bool_t RetrieveEventObjects()
TH1D * fhAtimesRho
pt spectrum of AKT jets without local bgk
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
TH1D * fhZVertexBC
Z vertex.
void UserCreateOutputObjects()
Bool_t IsEventInAcceptance(AliVEvent *event)
TH1D * fhGenJetPt
Pt spectrum of MC particle.
Bool_t fUseDefaultVertexCut
Container for jet within the EMCAL jet framework.
TH1D * fhFakeTrkPt
Pt spectrum of correctly reconstructed tracks.
TH2D * fhJetEtaPt
Jet Area-pt distribution.