29 #include <TClonesArray.h>
33 #include <THnSparse.h>
35 #include <TLorentzVector.h>
36 #include <TParameter.h>
37 #include <TParticle.h>
40 #include <TObjArray.h>
43 #include "AliAODEvent.h"
44 #include "AliESDEvent.h"
45 #include "AliAnalysisManager.h"
46 #include "AliAnalysisTask.h"
47 #include "AliCentrality.h"
49 #include "AliAODJet.h"
50 #include "AliVCluster.h"
51 #include "AliVTrack.h"
52 #include <AliVEvent.h>
53 #include <AliVParticle.h>
60 #include "AliESDCaloCluster.h"
61 #include <AliESDtrackCuts.h>
65 #include <AliInputEventHandler.h>
66 #include <AliVEventHandler.h>
67 #include "AliESDInputHandler.h"
69 #include "AliEventPoolManager.h"
70 #include "AliAODTrack.h"
71 #include "AliESDtrack.h"
74 #include "AliPIDResponse.h"
75 #include "AliTPCPIDResponse.h"
76 #include "AliESDpid.h"
79 #include "TGeoGlobalMagField.h"
92 fPhimin(-10), fPhimax(10),
93 fEtamin(-0.9), fEtamax(0.9),
99 fPIDResponse(0x0), fTPCResponse(),
100 fJetsCont(0), fTracksCont(0), fCaloClustersCont(0), fTracksJetCont(0), fCaloClustersJetCont(0),
103 fHistCorJetPt(0), fHistJetPt(0),
107 fHistnJetTrackvnJetClusters(0)
121 fPhimin(-10), fPhimax(10),
122 fEtamin(-0.9), fEtamax(0.9),
128 fPIDResponse(0x0), fTPCResponse(),
129 fJetsCont(0), fTracksCont(0), fCaloClustersCont(0), fTracksJetCont(0), fCaloClustersJetCont(0),
132 fHistCorJetPt(0), fHistJetPt(0),
136 fHistnJetTrackvnJetClusters(0)
141 DefineInput(0,TChain::Class());
142 DefineOutput(1, TList::Class());
175 fHistJetPhi =
new TH1F(
"NjetvsPhi",
"NjetvsPhi", 288,-2*TMath::Pi(),2*TMath::Pi());
176 fHistJetPt =
new TH1F(
"NjetvsJetPt",
"NjetvsJetPt", 300, 0, 300);
183 fHistCorJetPt =
new TH1F(
"CorrJetPt",
"CorrJetPt", 300, -100, 200);
187 fHistHighJetPt =
new TH1F(
"HighestPtJetPerEvent",
"HighJetPt",80,0,80);
202 AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
204 AliFatal(
"Input handler needed");
212 AliError(
"PIDResponse object was not created");
238 if (!
fJets)
return kTRUE;
242 if (dynamic_cast<AliAODEvent*>(InputEvent())) useAOD = kTRUE;
243 else useAOD = kFALSE;
249 AliError(Form(
"ERROR: fESD not available\n"));
258 AliError(Form(
"ERROR: fAOD not available\n"));
266 if(MagF<0)MagSign = -1.0;
268 if (!TGeoGlobalMagField::Instance()->GetField()) {
269 AliMagF* field =
new AliMagF(
"Maps",
"Maps", MagSign, MagSign, AliMagF::k5kG);
270 TGeoGlobalMagField::Instance()->SetField(field);
275 InputEvent()->GetPrimaryVertex()->GetXYZ(fvertex);
281 AliError(Form(
"ERROR: list not attached\n"));
289 TClonesArray *jets = 0;
294 jets =
dynamic_cast<TClonesArray*
>(list->FindObject(
fJets));
296 AliError(Form(
"Pointer to jets %s == 0",
fJets->GetName()));
301 const Int_t Njets = jets->GetEntries();
302 if(Njets<1)
return kTRUE;
315 TLorentzVector nPart;
316 cluster->GetMomentum(nPart,
fVertex);
327 for (
Int_t ijet = 0; ijet < Njets; ijet++){
335 if(highestjetpt<jet->Pt()){
337 highestjetpt=jet->
Pt();
348 for (
Int_t iJets = 0; iJets < Njets; ++iJets) {
361 Int_t JetTracks = jet -> GetNumberOfTracks();
376 Int_t NumbTrackContainer = -999;
378 for(
int iTracks = 0; iTracks <= NumbTrackContainer; iTracks++){
381 AliError(Form(
"Couldn't get AliVTrack Container %d\n", iTracks));
386 Int_t emc1 = AcceptedTrack->GetEMCALcluster();
388 Double_t acceptTrackP = AcceptedTrack->P();
389 Double_t acceptTrackPt = AcceptedTrack->Pt();
393 AliESDtrack *ESDacceptedTrack =
static_cast<AliESDtrack*
>(AcceptedTrack);
394 if(!ESDacceptedTrack){
395 AliError(Form(
"Couldn't get AliESDTrack %d\n", iTracks));
398 Double_t dEdx = AcceptedTrack->GetTPCsignal();
403 AliError(Form(
"Couldn't get matched AliVCluster %d\n", emc1));
407 Double_t mClusterE = clusMatch->E();
409 EovP_mc = mClusterE/acceptTrackP;
411 if(EovP_mc < 0.2) bkgrnd1 = kTRUE;
422 if(bkgrnd1 == kTRUE) {
436 cout<<
"###########################"<<endl;
437 cout<<
"#### Task Finished ####"<<endl;
438 cout<<
"###########################"<<endl;
439 cout<<
"###########################"<<endl;
449 if (jet->
Area()==0)
return 0;
virtual ~AliAnalysisTaskEmcalJetFlavourTagExample()
void AddFlavourTag(Int_t tag)
virtual AliVParticle * GetNextAcceptParticle()
TH2F * fHistnJetTrackvnJetClusters
check
AliClusterContainer * fCaloClustersJetCont
JetTracks.
AliParticleContainer * fTracksJetCont
Clusters.
AliAODEvent * fAOD
// ESD object
Int_t GetNParticles() const
virtual void UserCreateOutputObjects()
AliJetContainer * fJetsCont
AliClusterContainer * GetClusterContainer() const
AliPIDResponse * fPIDResponse
TH1F * fHistJetPt
// (Njets) vs Corrected Jet Pt (local rho)
TH1F * fHistHighJetPt
// raw jet pt (uncorrected)
Bool_t IsJetTrack(AliEmcalJet *jet, Int_t itrack, Bool_t sorted=kFALSE) const
AliParticleContainer * GetParticleContainer(Int_t i=0) const
AliParticleContainer * GetParticleContainer() const
UShort_t GetNumberOfClusters() const
EFlavourTag
Bit definition for the flavor tagging.
AliRhoParameter * fRho
! event rho
virtual AliVParticle * GetParticle(Int_t i=-1) const
AliClusterContainer * GetClusterContainer(Int_t i=0) const
Double_t MaxTrackPt() const
virtual Int_t AcceptMyJet(AliEmcalJet *jet)
ClassImp(AliAnalysisTaskEmcalJetFlavourTagExample) AliAnalysisTaskEmcalJetFlavourTagExample
AliVCluster * GetCluster(Int_t i) const
TClonesArray * fJets
! jets
TH1F * fHistCorJetPt
// Njets vs Phi
AliEmcalList * fOutput
!output list
TClonesArray * fTracks
!tracks
TH2F * fHistdEdXvsPt
check
Double_t fVertex[3]
!event vertex
virtual void Terminate(Option_t *)
Bool_t fCreateHisto
whether or not create histograms
void SetMakeGeneralHistograms(Bool_t g)
AliESDEvent * fESD
JetClusters.
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
AliClusterContainer * fCaloClustersCont
Tracks.
AliAnalysisTaskEmcalJetFlavourTagExample()
void UserCreateOutputObjects()
AliParticleContainer * fTracksCont
Jets.
Double_t fRhoVal
! event rho value, same for local rho
TH1F * fHistJetPhi
// AOD Object
AliVCluster * GetNextAcceptCluster()
void SetMakeGeneralHistograms(Bool_t g)