]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisTaskPIDResponse.cxx
AliAnalysisTaskPhiEffMc added to CFDPhi lib
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskPIDResponse.cxx
index 52b6d17212ddedfbd0a903eb7c392372fd09fafe..a9a436ff6980df5941bc235f343dbddc2a4668d9 100644 (file)
@@ -40,12 +40,15 @@ fCachePID(kTRUE),
 fOADBPath(),
 fSpecialDetResponse(),
 fPIDResponse(0x0),
-fRun(0),
-fOldRun(0),
+fRun(-1),
+fOldRun(-1),
 fRecoPass(0),
 fIsTunedOnData(kFALSE),
+fTunedOnDataMask(0),
 fRecoPassTuned(0),
-fUseTPCEtaCorrection(kFALSE)//TODO: In future, default kTRUE  
+fUseTPCEtaCorrection(kTRUE),
+fUseTPCMultiplicityCorrection(kTRUE),
+fUserDataRecoPass(-1)
 {
   //
   // Dummy constructor
@@ -60,12 +63,15 @@ fCachePID(kTRUE),
 fOADBPath(),
 fSpecialDetResponse(),
 fPIDResponse(0x0),
-fRun(0),
-fOldRun(0),
+fRun(-1),
+fOldRun(-1),
 fRecoPass(0),
 fIsTunedOnData(kFALSE),
+fTunedOnDataMask(0),
 fRecoPassTuned(0),
-fUseTPCEtaCorrection(kFALSE)//TODO: In future, default kTRUE
+fUseTPCEtaCorrection(kTRUE),
+fUseTPCMultiplicityCorrection(kTRUE),  
+fUserDataRecoPass(-1)
 {
   //
   // Default constructor
@@ -105,6 +111,7 @@ void AliAnalysisTaskPIDResponse::UserCreateOutputObjects()
   if (!fOADBPath.IsNull()) fPIDResponse->SetOADBPath(fOADBPath.Data());
 
   if(fIsTunedOnData) fPIDResponse->SetTunedOnData(kTRUE,fRecoPassTuned);
+  if(fTunedOnDataMask != 0) fPIDResponse->SetTunedOnDataMask(fTunedOnDataMask);
 
   if (!fSpecialDetResponse.IsNull()){
     TObjArray *arr=fSpecialDetResponse.Tokenize("; ");
@@ -117,7 +124,7 @@ void AliAnalysisTaskPIDResponse::UserCreateOutputObjects()
       }
     }
     delete arr;
-  }
+  }  
 }
 
 //______________________________________________________________________________
@@ -132,9 +139,11 @@ void AliAnalysisTaskPIDResponse::UserExec(Option_t */*option*/)
   if (fRun!=fOldRun){
     SetRecoInfo();
     fOldRun=fRun;
+    
+    fPIDResponse->SetUseTPCEtaCorrection(fUseTPCEtaCorrection);
+    fPIDResponse->SetUseTPCMultiplicityCorrection(fUseTPCMultiplicityCorrection);
   }
 
-  fPIDResponse->SetUseTPCEtaCorrection(fUseTPCEtaCorrection);
   fPIDResponse->InitialiseEvent(event,fRecoPass);
   AliESDpid *pidresp = dynamic_cast<AliESDpid*>(fPIDResponse);
   if(pidresp && AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()){
@@ -175,26 +184,39 @@ void AliAnalysisTaskPIDResponse::SetRecoInfo()
     fPIDResponse->SetCurrentFile(fileName.Data());
   }
 
-  if ( (prodInfo.IsMC() == kFALSE) || (fIsMC == kFALSE) ) {      // reco pass is needed only for data
-    fRecoPass = prodInfo.GetRecoPass();
-    if (fRecoPass < 0) {   // as last resort we find pass from file name (UGLY, but not stored in ESDs/AODs before LHC12d )
-      TString fileName(file->GetName());
-      if (fileName.Contains("pass1") ) {
-       fRecoPass=1;
-      } else if (fileName.Contains("pass2") ) {
-       fRecoPass=2;
-      } else if (fileName.Contains("pass3") ) {
-       fRecoPass=3;
-      } else if (fileName.Contains("pass4") ) {
-       fRecoPass=4;
-      } else if (fileName.Contains("pass5") ) {
-       fRecoPass=5;
-      }
+  fPIDResponse->SetCurrentAliRootRev(prodInfo.GetAlirootSvnVersion());
+  
+  if (prodInfo.IsMC() == kTRUE) fIsMC=kTRUE;         // protection if user didn't use macro switch
+  if ( (prodInfo.IsMC() == kFALSE) && (fIsMC == kFALSE) ) {      // reco pass is needed only for data
+
+    if (fUserDataRecoPass > -1) {
+      AliInfo(Form("Data reconstruction pass is user specified. Setting pass #: %d",fUserDataRecoPass));
+      fRecoPass = fUserDataRecoPass;
+    } else {
+      fRecoPass = prodInfo.GetRecoPass();
+      if (fRecoPass < 0) {   // as last resort we find pass from file name (UGLY, but not stored in ESDs/AODs before LHC12d )
+       TString fileName(file->GetName());
+       if (fileName.Contains("pass1") ) {
+         fRecoPass=1;
+       } else if (fileName.Contains("pass2") ) {
+         fRecoPass=2;
+       } else if (fileName.Contains("pass3") ) {
+         fRecoPass=3;
+       } else if (fileName.Contains("pass4") ) {
+         fRecoPass=4;
+       } else if (fileName.Contains("pass5") ) {
+         fRecoPass=5;
+       }
     } 
+    }
     if (fRecoPass <= 0) {
       AliError(" ******** Failed to find reconstruction pass number *********");
-      AliError(" ******** Insert pass number inside the path of your local file ******");
       AliError(" ******** PID information loaded for 'pass 0': parameters unreliable ******");
+      AliError("      --> If these are MC data: please set kTRUE first argument of AddTaskPIDResponse");
+      AliError("      --> If these are real data: ");
+      AliError("          (a) please insert pass number inside the path of your local file  OR");
+      AliError("          (b) specify reconstruction pass number when adding PIDResponse task");
+      AliFatal(" no pass number specified for this data file, abort. Asserting AliFatal");
     }
   }