5 #include <TClonesArray.h>
11 #include <TLorentzVector.h>
12 #include <TParameter.h>
13 #include <TParticle.h>
17 #include "AliAODEvent.h"
18 #include "AliAnalysisManager.h"
19 #include "AliAnalysisTask.h"
20 #include "AliCentrality.h"
21 #include "AliESDEvent.h"
22 #include "AliESDInputHandler.h"
24 #include "AliVCluster.h"
25 #include "AliVTrack.h"
29 #include "AliEMCALGeometry.h"
43 fHistNTMatchvsPtvsNtack0(0)
45 for (
int i = 0;i<3;i++){
47 fHistNTMatchvsPt[i] = 0;
48 fHistNCMatchvsPt[i] = 0;
49 fHistHadCorvsPt[i] = 0;
50 fHistNEFvsPtBias[i] = 0;
54 fHistNTMatchvsPtBias[i] = 0;
55 fHistNCMatchvsPtBias[i] = 0;
56 fHistHadCorvsPtBias[i] = 0;
57 fHistNconvsPtBias[i] = 0;
58 fHistNtvsPtBias[i] = 0;
59 fHistNcvsPtBias[i] = 0;
63 SetMakeGeneralHistograms(kTRUE);
75 fHistNTMatchvsPtvsNtack0(0)
77 for (
int i = 0;i<3;i++){
105 for (
int i = 0;i<3;i++){
108 sprintf(name,
"NEFvsPt%i",i);
111 sprintf(name,
"NTMatchvsPt%i",i);
114 sprintf(name,
"NCMatchvsPt%i",i);
117 sprintf(name,
"HadCorvsPt%i",i);
120 sprintf(name,
"NconvsPt%i",i);
123 sprintf(name,
"NtvsPt%i",i);
126 sprintf(name,
"NcvsPt%i",i);
129 sprintf(name,
"NEFvsPtBias%i",i);
132 sprintf(name,
"NTMatchvsPtBias%i",i);
135 sprintf(name,
"NCMatchvsPtBias%i",i);
138 sprintf(name,
"HadCorvsPtBias%i",i);
141 sprintf(name,
"NconvsPtBias%i",i);
144 sprintf(name,
"NtvsPtBias%i",i);
147 sprintf(name,
"NcvsPtBias%i",i);
151 fHistNTMatchvsPtvsNtack0 =
new TH3F(
"NTMmatchvsPtvsNtrack0",
"NTMatchsvsPtvsNtrack0", 100,0,100,500,-250,250,250,0,2500);
173 if (cent>=0 && cent<10)
175 else if (cent>=10 && cent<30)
177 else if (cent>=30 && cent<50)
188 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
189 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
190 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
191 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
192 double dphi = mphi-vphi;
193 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
194 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
211 AliError(Form(
"%s: Could not retrieve calo clusters %s!",GetName(),
fCalo2Name.Data()));
220 AliError(Form(
"%s: Could not retrieve MC Particles %s!",GetName(),
fMCParticlesName.Data()));
267 for (
Int_t iJets = 0; iJets < Njets; ++iJets) {
268 Int_t TrackMatch = 0;
281 vector<Int_t> cluster_id;
282 vector<Int_t> cluster_id2;
286 for (
int i = 0;i<nTrack;i++){
292 AliVTrack *track = (AliVTrack*)emctrack->
GetTrack();
299 Int_t iClus = track->GetEMCALcluster();
304 bool ischecked =
false;
305 for (
UInt_t icid = 0;icid<cluster_id.size();icid++)
306 if (cluster_id[icid] == iClus)
311 AliVCluster *cluster = emcluster->
GetCluster();
319 if (! (TMath::Abs(phidiff)< 0.025&&TMath::Abs(etadiff)<0.015))
322 cluster_id.push_back(iClus);
325 for (
Int_t ic = 0;ic < nCluster2;ic++){
327 AliVCluster *emcluster2 =
static_cast<AliVCluster*
>(
fCaloClusters2->At(ic));
334 TLorentzVector nPart;
335 cluster->GetMomentum(nPart,const_cast<Double_t*>(
fVertex));
336 TLorentzVector nPart2;
337 emcluster2->GetMomentum(nPart2,const_cast<Double_t*>(
fVertex));
338 float R = pow(pow(nPart.Eta()-nPart2.Eta(),2)+pow(nPart.Phi()-nPart2.Phi(),2),0.5);
340 cluster_id2.push_back(ic);
348 AliVCluster *emcluster2temp =
static_cast<AliVCluster*
>(
fCaloClusters2->At(ismatch));
349 Esub+=(cluster->E() - emcluster2temp->E());
TH2F * fHistNEFvsPtBias[3]
Bool_t AcceptTrack(AliVParticle *track, Int_t c=0) const
TH2F * fHistNconvsPtBias[3]
Bool_t fLocalInitialized
whether or not the task has been already initialized
virtual void UserCreateOutputObjects()
Bool_t AcceptCluster(AliVCluster *clus, Int_t c=0) const
Cluster selection.
AliVTrack * GetTrack() const
TH3F * fHistNTMatchvsPtvsNtack0
UShort_t GetNumberOfConstituents() const
UShort_t GetNumberOfTracks() const
Bool_t IsJetTrack(AliEmcalJet *jet, Int_t itrack, Bool_t sorted=kFALSE) const
TH2F * fHistNcvsPtBias[3]
Bool_t IsJetCluster(AliEmcalJet *jet, Int_t iclus, Bool_t sorted=kFALSE) const
TClonesArray * fCaloClusters
!clusters
AliRhoParameter * GetRhoFromEvent(const char *name)
UShort_t GetNumberOfClusters() const
TH2F * fHistNTMatchvsPt[3]
TClonesArray * fCaloClusters2
AliRhoParameter * fRho
! event rho
void ExecOnce()
Perform steps needed to initialize the analysis.
BeamType GetBeamType() const
Get beam type.
Double_t MaxTrackPt() const
Double_t fCent
!event centrality
TH2F * fHistNCMatchvsPtBias[3]
TClonesArray * fJets
! jets
TH2F * fHistHadCorvsPt[3]
TH2F * fHistHadCorvsPtBias[3]
AliEmcalList * fOutput
!output list
AliVCluster * GetCluster() const
TClonesArray * fTracks
!tracks
virtual Int_t GetCentBin(Double_t cent) const
Double_t fVertex[3]
!event vertex
Bool_t fCreateHisto
whether or not create histograms
void SetMakeGeneralHistograms(Bool_t g)
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
TH2F * fHistNTMatchvsPtBias[3]
TH2F * fHistNtvsPtBias[3]
TClonesArray * fMCParticles
Bool_t Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
void UserCreateOutputObjects()
Main initialization function on the worker.
static void GetEtaPhiDiff(const AliVTrack *t, const AliVCluster *v, Double_t &phidiff, Double_t &etadiff)
virtual Bool_t AcceptJet(AliEmcalJet *jet, Int_t c=0)
TH2F * fHistNCMatchvsPt[3]
Double_t fRhoVal
! event rho value, same for local rho
TH2F * fHistNjetvsCent
rho vs cent
TH2F * fHistNEFvsPt[3]
number of jets versus Centrality
Float_t RelativePhi(Double_t mphi, Double_t vphi) const
AliAnalysisTaskEmcalJetHadCorQA()