- possibility of using AliPhysicsSelection in AddTaskESDFilter.C
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 Mar 2010 08:59:04 +0000 (08:59 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 Mar 2010 08:59:04 +0000 (08:59 +0000)
- "transient pointer" to the ESD event, as it has been done recently in AliESDtrack.

ANALYSIS/macros/AddTaskESDFilter.C
PWG3/muon/AddPWG3MuonTrain.C
PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx
STEER/AliESDMuonTrack.cxx
STEER/AliESDMuonTrack.h

index fd5139f..99ad83f 100644 (file)
@@ -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);
index b3a2baf..6dc4542 100644 (file)
@@ -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());
index 69f3b65..9038a0d 100644 (file)
@@ -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; iTrack<nMuTracks; ++iTrack) esd->GetMuonTrack(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) {
index 7b1250b..86c971f 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "AliESDMuonTrack.h"
 #include "AliESDMuonCluster.h"
+#include "AliESDEvent.h"
 
 #include <TClonesArray.h>
 #include <TLorentzVector.h>
@@ -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;
 }
 
 //_____________________________________________________________________________
index 744a5f0..6e1c7e6 100644 (file)
@@ -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