2 #include <TClonesArray.h>
5 #include "AliAODEvent.h"
6 #include "AliESDEvent.h"
7 #include "AliMCEvent.h"
9 #include "AliMCParticle.h"
10 #include "AliAODMCParticle.h"
34 fCaloClustersContRD(0),
60 fCaloClustersContRD(0),
75 DefineOutput(2, TList::Class());
149 AliAnalysisTaskEmcalJet::Terminate(opt);
235 fV0s =
dynamic_cast<TClonesArray*
>(InputEvent()->FindListObject(
"PicoV0s"));
238 AliError(Form(
"%s: Could not retrieve V0 %s!", GetName(),
"PicoV0s"));
256 Bool_t bStatusTmpH = TH1::AddDirectoryStatus();
257 TH1::AddDirectory(kFALSE);
274 const Int_t nV0Bin[nV0] = { 3, 4, 210, 210, 210, 210, 100, 1000 };
275 const Double_t dV0Min[nV0] = { -0.5, 0., -10., -10., -10., -10., -5., 0. };
276 const Double_t dV0Max[nV0] = { 2.5, 4., 200., 200., 200., 200., 5., 100. };
278 THnSparseD *hsReco =
new THnSparseD(
"hsReco",
"", nV0, nV0Bin, dV0Min, dV0Max);
fListUserOutputs->Add(hsReco);
279 THnSparseD *hsKine =
new THnSparseD(
"hsKine",
"", nV0, nV0Bin, dV0Min, dV0Max);
fListUserOutputs->Add(hsKine);
281 TH1::AddDirectory(bStatusTmpH);
292 if (!
fV0s)
return kTRUE;
300 THnSparseD *hs =
dynamic_cast<THnSparseD*
>(
fListUserOutputs->FindObject(
"hsReco"));
306 for (
Int_t i=0; i<
fV0s->GetEntriesFast(); i++) {
312 TVector3 vV0 = pV0->
KineMC().Vect();
327 if ((dInvM<dUpperL) || (dInvM>=dLowerR)) { pV0 = 0;
continue; }
342 if ((dInvM<dUpperL) || (dInvM>=dLowerR)) { pV0 = 0;
continue; }
357 if ((dInvM<dUpperL) || (dInvM>=dLowerR)) { pV0 = 0;
continue; }
362 if (dVar[0]<-0.5) { pV0 = 0;
continue; }
369 if (dVar[1]<0.) { pV0 = 0;
continue; }
399 THnSparseD *hs =
dynamic_cast<THnSparseD*
>(
fListUserOutputs->FindObject(
"hsKine"));
405 AliStack *pStack = 0;
406 if (
fEventESD) { pStack = MCEvent()->Stack();
if (!pStack)
return kTRUE; }
410 AliAODMCParticle *pAOD = 0;
411 for (
Int_t i=0; i<MCEvent()->GetNumberOfTracks(); i++) {
412 if (
fEventAOD) { pAOD = (AliAODMCParticle*)MCEvent()->GetTrack(i);
if (!pAOD)
continue; }
413 if (
fEventESD) { pESD = ((AliMCParticle*)MCEvent()->GetTrack(i))->Particle();
if (!pESD)
continue; }
416 if (pAOD) bPhy = pAOD->IsPhysicalPrimary();
417 if (pESD) bPhy = pStack->IsPhysicalPrimary(i);
418 if (!bPhy) { pAOD=0; pESD=0;
continue; }
421 if (pAOD) dEta = pAOD->Eta();
422 if (pESD) dEta = pESD->Eta();
426 if (pAOD)
id = pAOD->GetPdgCode();
427 if (pESD)
id = pESD->GetPdgCode();
430 if (
id== 310 ) dVar[0] = 0.;
431 if (
id== 3122) dVar[0] = 1.;
432 if (
id==-3122) dVar[0] = 2.;
433 if (dVar[0]<-0.5) { pAOD=0; pESD=0;
continue; }
436 if (pAOD) vV0.SetXYZ(pAOD->Px(), pAOD->Py(), pAOD->Pz());
437 if (pESD) vV0.SetXYZ(pESD->Px(), pESD->Py(), pESD->Pz());
444 if (dVar[1]<0.) { pAOD=0; pESD=0;
continue; }
451 if (pAOD) dVar[7] = pAOD->Pt();
452 if (pESD) dVar[7] = pESD->Pt();
479 vJet.SetPtEtaPhi(dPt, pJet->
Eta(), pJet->
Phi());
480 if (vJet.DeltaR(vV0)<dJetRadius)
return kTRUE;
TLorentzVector KineMC() const
AliJetContainer * fJetsContRD
TLorentzVector KineAntiLa()
Bool_t IsV0InJet(TVector3 vV0, Double_t dJetPtMin)
AliJetContainer * GetJetContainer(Int_t i=0) const
TLorentzVector KineKshort()
ClassImp(AliAnalysisTaskEmcalJetV0CF) AliAnalysisTaskEmcalJetV0CF
AliParticleContainer * fTracksContMC
AliClusterContainer * GetClusterContainer() const
Bool_t IsV0PhysicalPrimary() const
Bool_t fGeneralHistograms
whether or not it should fill some general histograms
Bool_t RetrieveEventObjects()
virtual void UserCreateOutputObjects()
virtual Bool_t RetrieveEventObjects()
void CreateUserOutputHistograms()
AliParticleContainer * GetParticleContainer() const
virtual Bool_t FillHistograms()
virtual Bool_t FillHistograms()
AliJetContainer * fJetsContMC
AliClusterContainer * fCaloClustersContRD
virtual Bool_t FillGeneralHistograms()
AliAnalysisTaskEmcalJetV0CF()
Bool_t IsAntiLa(Double_t dCuts[9])
AliParticleContainer * fTracksContRD
AliEmcalJet * GetNextAcceptJet()
virtual Bool_t IsEventSelected()
Float_t GetJetRadius() const
virtual Bool_t IsEventSelected()
TLorentzVector KineLambda()
Bool_t IsV0InEtaAcc(Double_t dMin, Double_t dMax)
Bool_t IsLambda(Double_t dCuts[9])
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
void UserCreateOutputObjects()
virtual Bool_t FillGeneralHistograms()
Bool_t fInitialized
whether or not the task has been already initialized
virtual void Terminate(Option_t *opt)
AliCentrality * fCentInfo
virtual ~AliAnalysisTaskEmcalJetV0CF()
Bool_t IsKshort(Double_t dCuts[9])
Double_t GetJetPtCorr(Int_t i) const