// $Id: AliAnalysisTaskEmcalJet.cxx 56756 2012-05-30 05:03:02Z loizides $ // // Emcal jet analysis base task. // // Author: S.Aiola #include "AliAnalysisTaskEmcalJet.h" #include #include #include #include #include "AliAnalysisManager.h" #include "AliCentrality.h" #include "AliEMCALGeometry.h" #include "AliESDEvent.h" #include "AliEmcalJet.h" #include "AliLog.h" #include "AliVCluster.h" #include "AliVEventHandler.h" #include "AliVParticle.h" ClassImp(AliAnalysisTaskEmcalJet) //________________________________________________________________________ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet() : AliAnalysisTaskEmcal("AliAnalysisTaskEmcalJet"), fJetRadius(0.4), fJetsName("Jets"), fPtBiasJetTrack(10), fPtBiasJetClus(10), fJetPtCut(1), fJetAreaCut(0.2), fMinEta(-0.9), fMaxEta(0.9), fMinPhi(-10), fMaxPhi(10), fMaxClusterPt(100), fMaxTrackPt(100), fJets(0) { // Default constructor. } //________________________________________________________________________ AliAnalysisTaskEmcalJet::AliAnalysisTaskEmcalJet(const char *name, Bool_t histo) : AliAnalysisTaskEmcal(name, histo), fJetRadius(0.4), fJetsName("Jets"), fPtBiasJetTrack(10), fPtBiasJetClus(10), fJetPtCut(1), fJetAreaCut(0.2), fMinEta(-0.9), fMaxEta(0.9), fMinPhi(-10), fMaxPhi(10), fMaxClusterPt(100), fMaxTrackPt(100), fJets(0) { // Standard constructor. } //________________________________________________________________________ AliAnalysisTaskEmcalJet::~AliAnalysisTaskEmcalJet() { // Destructor } //________________________________________________________________________ Bool_t AliAnalysisTaskEmcalJet::AcceptBiasJet(AliEmcalJet *jet) const { // Accept jet with a bias. if (jet->MaxTrackPt() < fPtBiasJetTrack && (fAnaType == kTPC || jet->MaxClusterPt() < fPtBiasJetClus)) return kFALSE; else return kTRUE; } //________________________________________________________________________ Bool_t AliAnalysisTaskEmcalJet::AcceptJet(AliEmcalJet *jet, Bool_t bias, Bool_t upCut) const { // Return true if jet is accepted. if (jet->Pt() <= fJetPtCut) return kFALSE; if (jet->Area() <= fJetAreaCut) return kFALSE; if (bias && !AcceptBiasJet(jet)) return kFALSE; if (upCut && (jet->MaxTrackPt() > fMaxTrackPt || jet->MaxClusterPt() > fMaxClusterPt)) return kFALSE; return (Bool_t)(jet->Eta() > fMinEta && jet->Eta() < fMaxEta && jet->Phi() > fMinPhi && jet->Phi() < fMaxPhi); } //________________________________________________________________________ void AliAnalysisTaskEmcalJet::Init() { // Init the analysis. AliAnalysisTaskEmcal::Init(); if (fAnaType == kTPC) { SetEtaLimits(-0.9 + fJetRadius, 0.9 - fJetRadius); SetPhiLimits(-10, 10); } else if (fAnaType == kEMCAL) { AliEMCALGeometry *geom = AliEMCALGeometry::GetInstance(); if (!geom) { AliFatal(Form("%s: Can not create geometry", GetName())); return; } SetEtaLimits(geom->GetArm1EtaMin() + fJetRadius, geom->GetArm1EtaMax() - fJetRadius); SetPhiLimits(geom->GetArm1PhiMin() * TMath::DegToRad() + fJetRadius, geom->GetArm1PhiMax() * TMath::DegToRad() - fJetRadius); } else { AliWarning(Form("%s: Analysis type not recognized! Assuming kTPC!", GetName())); SetAnaType(kTPC); } SetInitialized(); } //________________________________________________________________________ Bool_t AliAnalysisTaskEmcalJet::IsJetCluster(AliEmcalJet* jet, Int_t iclus, Bool_t sorted) const { // Return true if cluster is in jet. for (Int_t i = 0; i < jet->GetNumberOfClusters(); ++i) { Int_t ijetclus = jet->ClusterAt(i); if (sorted && ijetclus > iclus) return kFALSE; if (ijetclus == iclus) return kTRUE; } return kFALSE; } //________________________________________________________________________ Bool_t AliAnalysisTaskEmcalJet::IsJetTrack(AliEmcalJet* jet, Int_t itrack, Bool_t sorted) const { // Return true if track is in jet. for (Int_t i = 0; i < jet->GetNumberOfTracks(); ++i) { Int_t ijettrack = jet->TrackAt(i); if (sorted && ijettrack > itrack) return kFALSE; if (ijettrack == itrack) return kTRUE; } return kFALSE; } //________________________________________________________________________ Bool_t AliAnalysisTaskEmcalJet::RetrieveEventObjects() { // Retrieve objects from event. if (!AliAnalysisTaskEmcal::RetrieveEventObjects()) return kFALSE; if (!fJetsName.IsNull() && !fJets) { fJets = dynamic_cast(InputEvent()->FindListObject(fJetsName)); if (!fJets) { AliWarning(Form("%s: Could not retrieve jets %s!", GetName(), fJetsName.Data())); } } return kTRUE; }