Added possibilit to revertex before refiltering
authorshahoian <ruben.shahoyan@cern.ch>
Thu, 16 Jan 2014 17:23:08 +0000 (18:23 +0100)
committershahoian <ruben.shahoyan@cern.ch>
Thu, 16 Jan 2014 17:23:08 +0000 (18:23 +0100)
ANALYSIS/ESDfilter/AliAnalysisTaskESDfilter.cxx
ANALYSIS/ESDfilter/AliAnalysisTaskESDfilter.h
ANALYSIS/macros/AODtrain.C

index a1ea831..de6a4f4 100644 (file)
@@ -65,6 +65,7 @@
 #include "AliAODTrdTrack.h"
 #include "AliAODTrdTracklet.h"
 #include "AliEMCALRecoUtils.h"
+#include "AliESDUtils.h"
 
 using std::cout;
 using std::endl;
@@ -124,7 +125,9 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter():
   fIsPidOwner(kFALSE),
   fTPCaloneTrackCuts(0),
   fDoPropagateTrackToEMCal(kTRUE),
-  fEMCalSurfaceDistance(440)
+  fEMCalSurfaceDistance(440),
+  fRefitVertexTracks(-1),
+  fRefitVertexTracksCuts(0)
 {
   // Default constructor
     fV0Cuts[0] =  33.   ;   // max allowed chi2
@@ -198,7 +201,9 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter(const char* name):
     fIsPidOwner(kFALSE),
     fTPCaloneTrackCuts(0),
     fDoPropagateTrackToEMCal(kTRUE),
-    fEMCalSurfaceDistance(440)
+    fEMCalSurfaceDistance(440),
+    fRefitVertexTracks(-1),
+    fRefitVertexTracksCuts(0)
 {
   // Constructor
 
@@ -224,7 +229,9 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter(const char* name):
 }
 AliAnalysisTaskESDfilter::~AliAnalysisTaskESDfilter(){
     if(fIsPidOwner) delete fESDpid;
+    delete fRefitVertexTracksCuts;
 }
+
 //______________________________________________________________________________
 void AliAnalysisTaskESDfilter::UserCreateOutputObjects()
 {
@@ -304,6 +311,8 @@ void AliAnalysisTaskESDfilter::PrintTask(Option_t *option, Int_t indent) const
        cout << spaces.Data() << Form("PHOS triggers  are %s",fArePHOSTriggerEnabled ? "ENABLED":"DISABLED") << endl;
        cout << spaces.Data() << Form("Tracklets      are %s",fAreTrackletsEnabled ? "ENABLED":"DISABLED") << endl;  
        cout << spaces.Data() << Form("PropagateTrackToEMCal  is %s", fDoPropagateTrackToEMCal ? "ENABLED":"DISABLED") << endl; 
+       if (fRefitVertexTracks<0) cout << spaces.Data() << Form("RefitVerteTracks is DISABLED") << endl;
+       else cout << spaces.Data() << Form("RefitVerteTracks is ENABLED to %d",fRefitVertexTracks) << endl;
 }
 
 //______________________________________________________________________________
@@ -2274,6 +2283,8 @@ void AliAnalysisTaskESDfilter::ConvertESDtoAOD()
   if(!esd)return;
 
   AliCodeTimerAuto("",0);
+
+  if (fRefitVertexTracks) AliESDUtils::RefitESDVertexTracks(esd,fRefitVertexTracks,fRefitVertexTracksCuts);
   
   fOldESDformat = ( esd->GetAliESDOld() != 0x0 );
  
@@ -2628,5 +2639,15 @@ void  AliAnalysisTaskESDfilter::CopyCaloProps(AliESDtrack *tre, AliAODTrack *tra
 }
 
 //______________________________________________________________________________
-
-
+void AliAnalysisTaskESDfilter::SetRefitVertexTracks(Int_t algo, Double_t* cuts)
+{
+  // request vertexTrack reprocessing from ESDtracks
+  // if algo>=0 and cuts==0 then algo is interpreted as the algorithm ID to be run with default cuts
+  // otherwise it is number of cuts to digest
+  fRefitVertexTracks = algo;
+  //
+  if (algo>0 && cuts) {
+    fRefitVertexTracksCuts = new Double_t[fRefitVertexTracks];
+    for (int i=fRefitVertexTracks;i--;) fRefitVertexTracksCuts[i] = cuts[i];
+  }
+}
index 6a48321..fff0a36 100644 (file)
@@ -91,6 +91,7 @@ class AliAnalysisTaskESDfilter : public AliAnalysisTaskSE
   void SetPropagateTrackToEMCal(Bool_t propagate) {fDoPropagateTrackToEMCal = propagate;}
   void SetEMCalSurfaceDistance(Double_t d) {fEMCalSurfaceDistance = d;}
 
+  void SetRefitVertexTracks(Int_t algo=6, Double_t* cuts=0);
   
 private:
     AliAnalysisTaskESDfilter(const AliAnalysisTaskESDfilter&);
@@ -181,9 +182,11 @@ private:
   Double_t        fCascadeCuts[8];  // Array to store the values for the different reco selections cascades related
   Bool_t fDoPropagateTrackToEMCal;  // whether or not to propagate the tracks to the EMCal surface -- true by default
   Double_t fEMCalSurfaceDistance;   // EMCal surface distance from the center of the detector (r = 440 by default)
+  //
+  Int_t     fRefitVertexTracks;      // request to refit the vertex if >=0 (algoID if cuts not supplied, otherwise ncuts)
+  Double_t* fRefitVertexTracksCuts;  // optional cuts for vertex refit
   
-  
-  ClassDef(AliAnalysisTaskESDfilter, 17); // Analysis task for standard ESD filtering
+  ClassDef(AliAnalysisTaskESDfilter, 18); // Analysis task for standard ESD filtering
 };
 
 #endif
index 68614b7..e79753d 100644 (file)
@@ -21,6 +21,7 @@ Bool_t      useSysInfo          = kFALSE; // use sys info
 //==============================================================================
 Int_t       iAODhandler        = 1;      // Analysis produces an AOD or dAOD's
 Int_t       iESDfilter         = 1;      // ESD to AOD filter (barrel + muon tracks)
+Int_t       iESDfilterReVtx    = -1;     // Request revertexing in ESD filtering
 Int_t       iMUONcopyAOD       = 1;      // Task that copies only muon events in a separate AOD (PWG3)
 Int_t       iJETAN             = 1;      // Jet analysis (PWG4)
 Int_t       iJETANdelta        = 1;      // Jet delta AODs
@@ -69,7 +70,10 @@ void AODtrain(Int_t merge=0)
    printf("=  Configuring analysis train for:                               =\n");
    if (usePhysicsSelection)   printf("=  Physics selection                                                =\n");
    if (useTender)    printf("=  TENDER                                                        =\n");
-   if (iESDfilter)   printf("=  ESD filter                                                    =\n");
+   if (iESDfilter)   {
+     printf("=  ESD filter                                                    =\n");
+     if (iESDfilterReVtx>=0)  printf("=  ESD event revertexed before filterering, algo %2d              =\n",iESDfilterReVtx);
+   }
    if (iMUONcopyAOD) printf("=  MUON copy AOD                                                 =\n");
    if (iJETAN)       printf("=  Jet analysis                                                  =\n");
    if (iJETANdelta)  printf("=     Jet delta AODs                                             =\n");
@@ -220,15 +224,17 @@ void AddAnalysisTasks(const char *cdb_location){
 
    if (iESDfilter) {
       //  ESD filter task configuration.
-      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");
+      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/ESDfilter/macros/AddTaskESDFilter.C");
+      AliAnalysisTaskESDfilter *taskesdfilter = 0;
       if (iMUONcopyAOD) {
          printf("Registering delta AOD file\n");
          mgr->RegisterExtraFile("AliAOD.Muons.root");
          mgr->RegisterExtraFile("AliAOD.Dimuons.root");
-         AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kTRUE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag);
+         taskesdfilter = AddTaskESDFilter(useKFILTER, kTRUE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag);
       } else {
-          AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kFALSE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag); // others
+       taskesdfilter = AddTaskESDFilter(useKFILTER, kFALSE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag); // others
       }   
+      if (iESDfilterReVtx>=0 && taskesdfilter) taskesdfilter->SetRefitVertexTracks(iESDfilterReVtx);
    }   
 
 // ********** PWG3 wagons ******************************************************