From daf100e130c59c97843c025ef544e15bc1ee19d5 Mon Sep 17 00:00:00 2001 From: morsch Date: Thu, 4 Mar 2010 08:59:04 +0000 Subject: [PATCH] - possibility of using AliPhysicsSelection in AddTaskESDFilter.C - "transient pointer" to the ESD event, as it has been done recently in AliESDtrack. --- ANALYSIS/macros/AddTaskESDFilter.C | 9 ++++++--- PWG3/muon/AddPWG3MuonTrain.C | 7 +++++-- PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx | 5 ++++- STEER/AliESDMuonTrack.cxx | 11 +++++++++-- STEER/AliESDMuonTrack.h | 7 ++++++- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/ANALYSIS/macros/AddTaskESDFilter.C b/ANALYSIS/macros/AddTaskESDFilter.C index fd5139f0542..99ad83f1dc8 100644 --- a/ANALYSIS/macros/AddTaskESDFilter.C +++ b/ANALYSIS/macros/AddTaskESDFilter.C @@ -1,6 +1,7 @@ AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE, Bool_t writeMuonAOD=kFALSE, - Bool_t writeDimuonAOD=kFALSE) + Bool_t writeDimuonAOD=kFALSE, + Bool_t usePhysicsSelection=kFALSE) { // Creates a filter task and adds it to the analysis manager. @@ -41,6 +42,10 @@ AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE, // Muons AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter"); mgr->AddTask(esdmuonfilter); + if(usePhysicsSelection){ + esdfilter->SelectCollisionCandidates(); + esdmuonfilter->SelectCollisionCandidates(); + } // Filtering of MC particles (decays conversions etc) // this task has to go AFTER all other filter tasks @@ -53,8 +58,6 @@ AliAnalysisTaskESDfilter *AddTaskESDFilter(Bool_t useKineFilter=kTRUE, mgr->AddTask(kinefilter); } - - // Cuts on primary tracks AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("Standard Track Cuts", "ESD Track Cuts"); esdTrackCutsL->SetMinNClustersTPC(50); diff --git a/PWG3/muon/AddPWG3MuonTrain.C b/PWG3/muon/AddPWG3MuonTrain.C index b3a2baf77a6..6dc45420feb 100644 --- a/PWG3/muon/AddPWG3MuonTrain.C +++ b/PWG3/muon/AddPWG3MuonTrain.C @@ -3,10 +3,11 @@ Int_t AddPWG3MuonTrain(Int_t iESDAnalysis=1, Int_t addMuonDistributions=0, Int_t addSingleMuonAnalysis=0, Int_t addMuonHFAnalysis=0, - Int_t addDimuonCFContainer=0) { + Int_t addDimuonCFContainer=0, + Bool_t usePhysicsSelection=kFALSE) { // Analysis wagons for PWG3Muon (Roberta) - + TString taskName="",loadMacroPath="$ALICE_ROOT/PWG3/muon/"; Int_t ntasks=0; @@ -16,11 +17,13 @@ Int_t AddPWG3MuonTrain(Int_t iESDAnalysis=1, Bool_t doInvMassFit = kTRUE; if(iESDAnalysis){ AliAnalysisTaskMuonDistributions *esdmuondistributionstask = AddTaskMuonDistributions("ESD",doInvMassFit); + if(usePhysicsSelection)esdmuondistributionstask->SelectCollisionCandidates(); } else if(iAODAnalysis){ AliAnalysisTaskMuonDistributions *aodmuondistributionstask = AddTaskMuonDistributions("AOD",doInvMassFit); } ntasks++; } + if(addSingleMuonAnalysis) { taskName="AddTaskSingleMuonAnalysis.C"; taskName.Prepend(loadMacroPath.Data()); diff --git a/PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx b/PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx index 69f3b65034c..9038a0d97ea 100644 --- a/PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx +++ b/PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx @@ -124,6 +124,7 @@ void AliAnalysisTaskESDMuonFilter::ConvertESDtoAOD() // Loop on muon tracks to fill the AOD track branch Int_t nMuTracks = esd->GetNumberOfMuonTracks(); + for (Int_t iTrack=0; iTrackGetMuonTrack(iTrack)->SetESDEvent(esd); // Update number of positive and negative tracks from AOD event (M.G.) Int_t nPosTracks = header->GetRefMultiplicityPos(); @@ -145,7 +146,9 @@ void AliAnalysisTaskESDMuonFilter::ConvertESDtoAOD() esdMuTrack = esd->GetMuonTrack(nMuTrack); if (!esdMuTrack->ContainTrackerData()) continue; - + + MuonsExist = kTRUE; + UInt_t selectInfo = 0; // Track selection if (fTrackFilter) { diff --git a/STEER/AliESDMuonTrack.cxx b/STEER/AliESDMuonTrack.cxx index 7b1250b842c..86c971f2629 100644 --- a/STEER/AliESDMuonTrack.cxx +++ b/STEER/AliESDMuonTrack.cxx @@ -27,6 +27,7 @@ #include "AliESDMuonTrack.h" #include "AliESDMuonCluster.h" +#include "AliESDEvent.h" #include #include @@ -69,7 +70,9 @@ AliESDMuonTrack::AliESDMuonTrack (): fHitsPatternInTrigCh(0), fNHit(0), fClusters(0x0), - fLabel(-1) + fLabel(-1), + fESDEvent(0) + { // /// Default constructor @@ -113,7 +116,8 @@ AliESDMuonTrack::AliESDMuonTrack (const AliESDMuonTrack& muonTrack): fHitsPatternInTrigCh(muonTrack.fHitsPatternInTrigCh), fNHit(muonTrack.fNHit), fClusters(0x0), - fLabel(muonTrack.fLabel) + fLabel(muonTrack.fLabel), + fESDEvent(muonTrack.fESDEvent) { // /// Copy constructor @@ -184,6 +188,8 @@ AliESDMuonTrack& AliESDMuonTrack::operator=(const AliESDMuonTrack& muonTrack) fMuonClusterMap = muonTrack.fMuonClusterMap; fLabel = muonTrack.fLabel; + + fESDEvent = muonTrack.fESDEvent; // necessary to make a copy of the objects and not only the pointers in TClonesArray delete fClusters; @@ -266,6 +272,7 @@ void AliESDMuonTrack::Reset() delete fClusters; fClusters = 0x0; for (Int_t i = 0; i < 15; i++) fCovariances[i] = 0.; fLabel = -1; + fESDEvent = 0; } //_____________________________________________________________________________ diff --git a/STEER/AliESDMuonTrack.h b/STEER/AliESDMuonTrack.h index 744a5f02c48..6e1c7e6d339 100644 --- a/STEER/AliESDMuonTrack.h +++ b/STEER/AliESDMuonTrack.h @@ -18,6 +18,7 @@ #include "AliVParticle.h" class AliESDMuonCluster; +class AliESDEvent; class TClonesArray; class TLorentzVector; @@ -220,6 +221,8 @@ public: /// Getting crossed slat or info static Int_t GetSlatOrInfo(UShort_t pattern); + AliESDEvent* GetESDEvent() const {return fESDEvent;} + void SetESDEvent(AliESDEvent* evt) {fESDEvent = evt;} protected: // parameters at vertex @@ -275,8 +278,10 @@ protected: mutable TClonesArray* fClusters; ///< Array of clusters attached to the track Int_t fLabel; ///< point to the corresponding MC track + + AliESDEvent* fESDEvent; //!Pointer back to event to which the track belongs - ClassDef(AliESDMuonTrack,11) // MUON ESD track class + ClassDef(AliESDMuonTrack,12) // MUON ESD track class }; #endif -- 2.39.3