]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisTaskPIDResponse.cxx
HMPID related updates
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskPIDResponse.cxx
index 8e613d488449bd3da983d13e6eceace37a8f7572..f0a2f086322723e1529696e69229110033b4da4c 100644 (file)
@@ -25,6 +25,7 @@
 #include <AliVTrack.h>
 #include <AliLog.h>
 #include <AliPIDResponse.h>
+#include <AliESDpid.h>
 
 #include "AliAnalysisTaskPIDResponse.h"
 
@@ -34,10 +35,14 @@ ClassImp(AliAnalysisTaskPIDResponse)
 AliAnalysisTaskPIDResponse::AliAnalysisTaskPIDResponse():
 AliAnalysisTaskSE(),
 fIsMC(kFALSE),
+fCachePID(kTRUE),
+fOADBPath(),
 fPIDResponse(0x0),
 fRun(0),
 fOldRun(0),
-fRecoPass(0)
+fRecoPass(0),
+fIsTunedOnData(kFALSE),
+fRecoPassTuned(0)  
 {
   //
   // Dummy constructor
@@ -48,10 +53,14 @@ fRecoPass(0)
 AliAnalysisTaskPIDResponse::AliAnalysisTaskPIDResponse(const char* name):
 AliAnalysisTaskSE(name),
 fIsMC(kFALSE),
+fCachePID(kTRUE),
+fOADBPath(),
 fPIDResponse(0x0),
 fRun(0),
 fOldRun(0),
-fRecoPass(0)
+fRecoPass(0),
+fIsTunedOnData(kFALSE),
+fRecoPassTuned(0)
 {
   //
   // Default constructor
@@ -87,12 +96,14 @@ void AliAnalysisTaskPIDResponse::UserCreateOutputObjects()
   if (!fPIDResponse) AliFatal("PIDResponse object was not created");
 
   fPIDResponse->SetOADBPath(AliAnalysisManager::GetOADBPath());
+  if (!fOADBPath.IsNull()) fPIDResponse->SetOADBPath(fOADBPath.Data());
+
+  if(fIsTunedOnData) fPIDResponse->SetTunedOnData(kTRUE,fRecoPassTuned);
 }
 
 //______________________________________________________________________________
 void AliAnalysisTaskPIDResponse::UserExec(Option_t */*option*/)
 {
-  //
   // Setup the PID response functions and fill the QA histograms
   //
   AliVEvent *event=InputEvent();
@@ -105,6 +116,14 @@ void AliAnalysisTaskPIDResponse::UserExec(Option_t */*option*/)
   }
 
   fPIDResponse->InitialiseEvent(event,fRecoPass);
+  AliESDpid *pidresp = dynamic_cast<AliESDpid*>(fPIDResponse);
+  if(pidresp && AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()){
+      pidresp->SetEventHandler(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
+  }
+  //create and attach transient PID object
+  if (fCachePID) {
+    fPIDResponse->FillTrackDetectorPID();
+  }
 }
 
 //______________________________________________________________________________
@@ -132,12 +151,17 @@ void AliAnalysisTaskPIDResponse::SetRecoInfo()
   
   //find pass from file name (UGLY, but not stored in ESD... )
   TString fileName(file->GetName());
-  if (fileName.Contains("/pass1")) {
+  if (fileName.Contains("pass1") ) {
     fRecoPass=1;
-  } else if (fileName.Contains("/pass2")) {
+  } else if (fileName.Contains("pass2") ) {
     fRecoPass=2;
-  } else if (fileName.Contains("/pass3")) {
+  } else if (fileName.Contains("pass3") ) {
     fRecoPass=3;
+  } else if (fileName.Contains("pass4") ) {
+    fRecoPass=4;
+  } else if (fileName.Contains("pass5") ) {
+    fRecoPass=5;
   }
-  
+
+  fPIDResponse->SetCurrentFile(fileName.Data());
 }