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
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
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("; ");
}
}
delete arr;
- }
+ }
}
//______________________________________________________________________________
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()){
fPIDResponse->SetCurrentFile(fileName.Data());
}
+ 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
- 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 (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(" ******** 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: please insert pass number inside the path of your local file ******");
+ 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");
}
}