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()
TList * list
TDirectory file where lists per trigger are stored in train ouput.
AliJetContainer * fJetsCont
AliClusterContainer * GetClusterContainer() const
AliPIDResponse * fPIDResponse
TH1F * fHistJetPt
// (Njets) vs Corrected Jet Pt (local rho)
TH1F * fHistHighJetPt
// raw jet pt (uncorrected)
void ExecOnce()
Perform steps needed to initialize the analysis.
Bool_t IsJetTrack(AliEmcalJet *jet, Int_t itrack, Bool_t sorted=kFALSE) const
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
AliParticleContainer * GetParticleContainer() const
UShort_t GetNumberOfClusters() const
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.
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
Get cluster container attached to this task.
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()
Main initialization function on the worker.
AliParticleContainer * fTracksCont
Jets.
Double_t fRhoVal
! event rho value, same for local rho
TH1F * fHistJetPhi
// AOD Object
AliVCluster * GetNextAcceptCluster()
void SetMakeGeneralHistograms(Bool_t g)