From 35789a2d96a198f73dc8e5978deda3783467011a Mon Sep 17 00:00:00 2001 From: mcosenti Date: Wed, 18 Apr 2012 07:40:38 +0000 Subject: [PATCH] including new Salvatore's patch --- PWGGA/CMakelibPWGGAEMCALTasks.pkg | 1 + PWGGA/EMCALJetTasks/AliEmcalJetTask.cxx | 14 +++++- PWGGA/EMCALJetTasks/AliEmcalJetTask.h | 1 - PWGGA/EMCALJetTasks/AliHadCorrTask.cxx | 49 +++++++++++++++---- .../AliEmcalClusTrackMatcherTask.cxx | 9 ++-- .../EMCALTasks/AliEmcalClusTrackMatcherTask.h | 1 - .../AliEmcalIsolatedPhotonsTask.cxx | 32 ++++++++++-- .../EMCALTasks/AliEmcalIsolatedPhotonsTask.h | 4 -- PWGGA/EMCALTasks/AliEmcalJet.cxx | 6 +-- PWGGA/EMCALTasks/AliEmcalJet.h | 17 ++++++- .../macros/AddTaskEmcalIsolatedPhotons.C | 17 +++---- PWGGA/PWGGAEMCALTasksLinkDef.h | 1 + 12 files changed, 112 insertions(+), 40 deletions(-) diff --git a/PWGGA/CMakelibPWGGAEMCALTasks.pkg b/PWGGA/CMakelibPWGGAEMCALTasks.pkg index 3906ed80fb2..56c765a120d 100644 --- a/PWGGA/CMakelibPWGGAEMCALTasks.pkg +++ b/PWGGA/CMakelibPWGGAEMCALTasks.pkg @@ -46,6 +46,7 @@ set ( SRCS EMCALTasks/AliAnalysisTaskTrgContam.cxx EMCALTasks/AliAnalysisTaskEMCALPhoton.cxx EMCALTasks/AliEmcalIsolatedPhotonsTask.cxx + EMCALTasks/AliEmcalAodTrackFilterTask.cxx ) string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" ) diff --git a/PWGGA/EMCALJetTasks/AliEmcalJetTask.cxx b/PWGGA/EMCALJetTasks/AliEmcalJetTask.cxx index e7473956251..d2a83d91533 100644 --- a/PWGGA/EMCALJetTasks/AliEmcalJetTask.cxx +++ b/PWGGA/EMCALJetTasks/AliEmcalJetTask.cxx @@ -10,8 +10,8 @@ #include #include "AliAnalysisManager.h" #include "AliCentrality.h" -#include "AliESDCaloCluster.h" -#include "AliESDtrack.h" +#include "AliVCluster.h" +#include "AliVTrack.h" #include "AliEmcalJet.h" #include "AliFJWrapper.h" @@ -183,21 +183,31 @@ void AliEmcalJetTask::FindJets(TObjArray *tracks, TObjArray *clus, Int_t algo, D InputEvent()->GetPrimaryVertex()->GetXYZ(vertex); vector constituents = fjw.GetJetConstituents(ij); Double_t neutralE = 0;Double_t maxTrack = 0;Double_t maxCluster=0; + jet->SetNumberOfTracks(constituents.size()); + jet->SetNumberOfClusters(constituents.size()); + Int_t nt = 0; + Int_t nc = 0; for(UInt_t ic=0; ic=0){ + jet->AddTrackAt(uid, nt); AliVTrack *t = static_cast(tracks->At(uid)); if (t->Pt()>maxTrack) maxTrack=t->Pt(); + nt++; } else { + jet->AddClusterAt(-(uid+1),nc); AliVCluster *c = dynamic_cast(clus->At(-(uid+1))); TLorentzVector nP; c->GetMomentum(nP, vertex); neutralE += nP.P(); if (nP.P()>maxCluster) maxCluster=nP.P(); + nc++; } } + jet->SetNumberOfTracks(nt); + jet->SetNumberOfClusters(nc); jet->SetMaxTrackPt(maxTrack); jet->SetMaxClusterPt(maxCluster); jet->SetNEF(neutralE/jet->E()); diff --git a/PWGGA/EMCALJetTasks/AliEmcalJetTask.h b/PWGGA/EMCALJetTasks/AliEmcalJetTask.h index ad8e7f92f7e..87a3b3c4f03 100644 --- a/PWGGA/EMCALJetTasks/AliEmcalJetTask.h +++ b/PWGGA/EMCALJetTasks/AliEmcalJetTask.h @@ -4,7 +4,6 @@ // $Id$ class TClonesArray; -class AliESDtrackCuts; class TList; class TH1; class TH2; diff --git a/PWGGA/EMCALJetTasks/AliHadCorrTask.cxx b/PWGGA/EMCALJetTasks/AliHadCorrTask.cxx index c0fab350c8e..ac801bcfa53 100644 --- a/PWGGA/EMCALJetTasks/AliHadCorrTask.cxx +++ b/PWGGA/EMCALJetTasks/AliHadCorrTask.cxx @@ -1,20 +1,24 @@ // $Id$ -#include "AliHadCorrTask.h" #include #include +#include +#include +#include +#include +#include + +#include "AliCentrality.h" #include "AliEmcalJet.h" #include "AliAnalysisManager.h" #include "AliESDtrack.h" #include "AliFJWrapper.h" #include "AliESDCaloCluster.h" -#include "TList.h" -#include "TH1F.h" -#include "TH2F.h" -#include "TChain.h" -#include -#include +#include "AliAODCaloCluster.h" #include "AliPicoTrack.h" +#include "AliVEventHandler.h" + +#include "AliHadCorrTask.h" ClassImp(AliHadCorrTask) @@ -73,7 +77,24 @@ AliHadCorrTask::~AliHadCorrTask() void AliHadCorrTask::UserCreateOutputObjects() { - fOutClusters = new TClonesArray("AliESDCaloCluster"); + AliVEventHandler* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler(); + + if (!handler) { + AliError("Input handler not available!"); + return; + } + + if (handler->InheritsFrom("AliESDInputHandler")) { + fOutClusters = new TClonesArray("AliESDCaloCluster"); + } + else if (handler->InheritsFrom("AliAODInputHandler")) { + fOutClusters = new TClonesArray("AliAODCaloCluster"); + } + else { + AliError("Input handler not recognized!"); + return; + } + fOutClusters->SetName(fOutCaloName); OpenFile(1); @@ -226,7 +247,17 @@ void AliHadCorrTask::UserExec(Option_t *) }//end had correction if if (energy>0){//Output new corrected clusters - AliESDCaloCluster *oc = new ((*fOutClusters)[clusCount]) AliESDCaloCluster(*(dynamic_cast(c))); + AliVCluster *oc; + if (c->InheritsFrom("AliESDCaloCluster")) { + oc = new ((*fOutClusters)[clusCount]) AliESDCaloCluster(*(dynamic_cast(c))); + } + else if (c->InheritsFrom("AliAODCaloCluster")) { + oc = new ((*fOutClusters)[clusCount]) AliAODCaloCluster(*(dynamic_cast(c))); + } + else { + AliError("Cluster type not recognized (nor ESD neither AOD)!"); + continue; + } oc->SetE(energy); clusCount++; } diff --git a/PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.cxx b/PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.cxx index a189e9585c0..21a42ad90f6 100644 --- a/PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.cxx +++ b/PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.cxx @@ -1,11 +1,14 @@ // $Id$ -#include "AliEmcalClusTrackMatcherTask.h" #include #include -#include "AliESDCaloCluster.h" -#include "AliESDtrack.h" + +#include "AliVCluster.h" +#include "AliVTrack.h" #include "AliPicoTrack.h" +#include "AliLog.h" + +#include "AliEmcalClusTrackMatcherTask.h" ClassImp(AliEmcalClusTrackMatcherTask) diff --git a/PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.h b/PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.h index cbb9151e270..4df9850b63c 100644 --- a/PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.h +++ b/PWGGA/EMCALTasks/AliEmcalClusTrackMatcherTask.h @@ -4,7 +4,6 @@ // $Id$ class TClonesArray; -class AliESDtrackCuts; #include "AliAnalysisTaskSE.h" diff --git a/PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.cxx b/PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.cxx index cb931d8db50..9efcaa2097d 100644 --- a/PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.cxx +++ b/PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.cxx @@ -18,6 +18,7 @@ #include "AliESDtrackCuts.h" #include "AliEmcalJet.h" #include "AliVEventHandler.h" +#include "AliPicoTrack.h" #include "AliEmcalIsolatedPhotonsTask.h" @@ -30,7 +31,6 @@ AliEmcalIsolatedPhotonsTask::AliEmcalIsolatedPhotonsTask() : fTracksName("Tracks"), fCaloName("CaloClusters"), fJetsName("Jets"), - fSkimmedESD(0), fESDTrackCuts(0), fFilterBit(16), fTracks(0), @@ -64,7 +64,6 @@ AliEmcalIsolatedPhotonsTask::AliEmcalIsolatedPhotonsTask(const char *name) : fTracksName("Tracks"), fCaloName("CaloClusters"), fJetsName("Jets"), - fSkimmedESD(0), fESDTrackCuts(0), fFilterBit(16), fTracks(0), @@ -276,7 +275,18 @@ void AliEmcalIsolatedPhotonsTask::FillHistograms() fHistTracksPt->Fill(track->Pt()); - //fHisTrPhiEta->Fill(track->Phi(), track->Eta()); + if(track->InheritsFrom("AliExternalTrackParam")) { + AliExternalTrackParam *trackparam = dynamic_cast(track); + fHistTrPhiEta->Fill(trackparam->Eta(), trackparam->Phi()); + } + else if (track->InheritsFrom("AliAODTrack")) { + AliAODTrack *aodtrack = dynamic_cast(track); + fHistTrPhiEta->Fill(aodtrack->Eta(), aodtrack->Phi()); + } + else if (track->InheritsFrom("AliPicoTrack")) { + AliPicoTrack *picotrack = dynamic_cast(track); + fHistTrPhiEta->Fill(picotrack->Eta(), picotrack->Phi()); + } Int_t clId = track->GetEMCALcluster(); if (clId > -1) { @@ -301,14 +311,26 @@ void AliEmcalIsolatedPhotonsTask::FillHistograms() fHistJetsEnergy->Fill(jet->E()); fHistJetsNEF->Fill(jet->NEF()); fHistJetsNE->Fill(jet->E() * jet->NEF()); + //if (jet->E() <= 0) + //continue; + for (Int_t it = 0; it < jet->GetNumberOfTracks(); it++) { + Int_t trackid = jet->TrackAt(it); + AliVTrack *track = GetTrack(trackid); + if (track) + fHistJetsZ->Fill(track->Pt() / jet->E()); + } + for (Int_t ic = 0; ic < jet->GetNumberOfClusters(); ic++) { + Int_t clusterid = jet->ClusterAt(ic); + AliVCluster *cluster = GetCaloCluster(clusterid); + if (cluster) + fHistJetsZ->Fill(cluster->E() / jet->E()); + } } //jet loop } //________________________________________________________________________ Bool_t AliEmcalIsolatedPhotonsTask::AcceptTrack(AliVTrack *track) { - //if (fSkimmedESD) return 1; - if (!strcmp(track->ClassName(), "AliESDTrack") && fESDTrackCuts) { AliESDtrack *esdtrack = dynamic_cast(track); if(esdtrack) { diff --git a/PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.h b/PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.h index 47f61c5a338..332f759688b 100644 --- a/PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.h +++ b/PWGGA/EMCALTasks/AliEmcalIsolatedPhotonsTask.h @@ -32,9 +32,6 @@ class AliEmcalIsolatedPhotonsTask : public AliAnalysisTaskSE { virtual AliESDtrackCuts *GetTrackCuts() const { return fESDTrackCuts ; } virtual void SetAODFilterBit(const Int_t b) { fFilterBit = b ; } virtual Int_t GetAODFilterBit() const { return fFilterBit ; } - virtual void SetSkimmedESD(const Bool_t s) { fSkimmedESD = s ; } - virtual Bool_t GetSkimmedESD() const { return fSkimmedESD ; } - protected: @@ -53,7 +50,6 @@ class AliEmcalIsolatedPhotonsTask : public AliAnalysisTaskSE { TString fTracksName; // name of track collection TString fCaloName; // name of calo cluster collection TString fJetsName; // name of jet collection - Bool_t fSkimmedESD; // flag if skimmed ESD AliESDtrackCuts *fESDTrackCuts; // Track cuts Int_t fFilterBit; // AOD filter bit TClonesArray *fTracks; //!Tracks diff --git a/PWGGA/EMCALTasks/AliEmcalJet.cxx b/PWGGA/EMCALTasks/AliEmcalJet.cxx index 2b4c688ae69..dd5aab71ba2 100644 --- a/PWGGA/EMCALTasks/AliEmcalJet.cxx +++ b/PWGGA/EMCALTasks/AliEmcalJet.cxx @@ -11,7 +11,7 @@ AliEmcalJet::AliEmcalJet(Double_t px, Double_t py, Double_t pz) fEta(TMath::ASinH(pz/fPt)), fPhi(0), fM(0), fNEF(0), fArea(0), fNch(0), fNn(0), - fMaxCPt(0), fMaxNPt(0) + fMaxCPt(0), fMaxNPt(0), fClusterIDs(new TArrayI()), fTrackIDs(new TArrayI()) { // Constructor. @@ -28,7 +28,7 @@ AliEmcalJet::AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m) : fPt(pt), fEta(eta), fPhi(phi), fM(m), fNEF(0), fArea(0), fNch(0), fNn(0), - fMaxCPt(0), fMaxNPt(0) + fMaxCPt(0), fMaxNPt(0), fClusterIDs(new TArrayI()), fTrackIDs(new TArrayI()) { // Constructor. @@ -42,7 +42,7 @@ AliEmcalJet::AliEmcalJet(const AliEmcalJet &jet) : fPt(jet.fPt), fEta(jet.fEta), fPhi(jet.fPhi), fM(jet.fM), fNEF(jet.fNEF), fArea(jet.fArea), fNch(jet.fNch), fNn(jet.fNn), - fMaxCPt(jet.fMaxCPt), fMaxNPt(jet.fMaxNPt) + fMaxCPt(jet.fMaxCPt), fMaxNPt(jet.fMaxNPt), fClusterIDs(new TArrayI(*(jet.fClusterIDs))), fTrackIDs(new TArrayI(*(jet.fTrackIDs))) { // Constructor. } diff --git a/PWGGA/EMCALTasks/AliEmcalJet.h b/PWGGA/EMCALTasks/AliEmcalJet.h index 6f2af1db8e8..e10c56a064b 100644 --- a/PWGGA/EMCALTasks/AliEmcalJet.h +++ b/PWGGA/EMCALTasks/AliEmcalJet.h @@ -6,12 +6,13 @@ #include "AliVParticle.h" #include #include +#include class AliEmcalJet : public AliVParticle { public: AliEmcalJet() : AliVParticle(), fPt(0), fEta(0), fPhi(0), fM(0), fNEF(0), fArea(0), - fNch(0), fNn(0), fMaxCPt(0), fMaxNPt(0) {;} + fNch(0), fNn(0), fMaxCPt(0), fMaxNPt(0), fClusterIDs(0), fTrackIDs(0) {;} AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m); AliEmcalJet(Double_t px, Double_t py, Double_t pz); AliEmcalJet(const AliEmcalJet &jet); @@ -52,6 +53,16 @@ class AliEmcalJet : public AliVParticle void SetMaxTrackPt(Double32_t t) { fMaxCPt = t; } void SetMaxClusterPt(Double32_t t) { fMaxNPt = t; } + void SetNumberOfClusters(Int_t n) { fClusterIDs->Set(n); } + void SetNumberOfTracks(Int_t n) { fTrackIDs->Set(n); } + void AddClusterAt(Int_t clus, Int_t idx) { fClusterIDs->AddAt(clus, idx); } + void AddTrackAt(Int_t track, Int_t idx) { fTrackIDs->AddAt(track, idx); } + + Int_t GetNumberOfClusters() const { return fClusterIDs->GetSize(); } + Int_t GetNumberOfTracks() const { return fTrackIDs->GetSize(); } + Int_t ClusterAt(Int_t idx) const { return fClusterIDs->At(idx); } + Int_t TrackAt(Int_t idx) const { return fTrackIDs->At(idx); } + protected: Double32_t fPt; //[0,0,12] pt Double32_t fEta; //[-1,1,12] eta @@ -63,7 +74,9 @@ class AliEmcalJet : public AliVParticle UShort_t fNn; // number of neutral constituents Double32_t fMaxCPt; //[0,0,12] pt of maximum track Double32_t fMaxNPt; //[0,0,12] pt of maximum cluster + TArrayI *fClusterIDs; // array of cluster constituents + TArrayI *fTrackIDs; // array of track constituents - ClassDef(AliEmcalJet,1) // ESD jet class in cylindrical coordinates + ClassDef(AliEmcalJet,2) // ESD jet class in cylindrical coordinates }; #endif diff --git a/PWGGA/EMCALTasks/macros/AddTaskEmcalIsolatedPhotons.C b/PWGGA/EMCALTasks/macros/AddTaskEmcalIsolatedPhotons.C index 925490292e5..5a7a8b2c9ca 100644 --- a/PWGGA/EMCALTasks/macros/AddTaskEmcalIsolatedPhotons.C +++ b/PWGGA/EMCALTasks/macros/AddTaskEmcalIsolatedPhotons.C @@ -2,8 +2,6 @@ AliEmcalIsolatedPhotonsTask* AddTaskEmcalIsolatedPhotons( const char *ntracks = "Tracks", const char *nclusters = "CaloClusters", const char *njets = "Jets", - const Bool_t skimmedESD = 0, - const Bool_t AODmode = 0, const Int_t AODtrackFilterBit = 256 // hybrid LHC11h tracks ) { @@ -32,10 +30,7 @@ AliEmcalIsolatedPhotonsTask* AddTaskEmcalIsolatedPhotons( phTask->SetTracksName(ntracks); phTask->SetClusName(nclusters); phTask->SetJetsName(njets); - phTask->SetSkimmedESD(skimmedESD); - if (AODmode) { - phTask->SetAODFilterBit(AODtrackFilterBit); // global hybrids for LHC11h - } + phTask->SetAODFilterBit(AODtrackFilterBit); // global hybrids for LHC11h //------------------------------------------------------- // Final settings, pass to manager and set the containers @@ -45,11 +40,13 @@ AliEmcalIsolatedPhotonsTask* AddTaskEmcalIsolatedPhotons( // Create containers for input/output AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ; - AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer() ; - + + AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("histosEMCALIsoPhoton_aiola", + TList::Class(),AliAnalysisManager::kOutputContainer, + Form("%s", AliAnalysisManager::GetCommonFileName())); mgr->ConnectInput (phTask, 0, cinput1 ); - mgr->ConnectOutput (phTask, 0, coutput1 ); - + mgr->ConnectOutput (phTask, 1, coutput1 ); + return phTask; } diff --git a/PWGGA/PWGGAEMCALTasksLinkDef.h b/PWGGA/PWGGAEMCALTasksLinkDef.h index c0b240a0cd3..ef632134c29 100644 --- a/PWGGA/PWGGAEMCALTasksLinkDef.h +++ b/PWGGA/PWGGAEMCALTasksLinkDef.h @@ -19,6 +19,7 @@ #pragma link C++ class AliEmcalSetupTask+; #pragma link C++ class AliEmcalTrackPropagatorTask+; #pragma link C++ class AliEmcalIsolatedPhotonsTask+; +#pragma link C++ class AliEmcalAodTrackFilterTask+; #pragma link C++ class AliEsdSkimTask+; #pragma link C++ class AliEsdTrackExt+; #pragma link C++ class AliPicoTrack+; -- 2.43.0