#include <AliLog.h>
#include "AliProdInfo.h"
ClassImp(AliProdInfo);
AliProdInfo::AliProdInfo():
fPeriod(""),
fAlirootVersion(""),
fAlirootSvnVersion(0),
fRootVersion(""),
fRootSvnVersion(0),
fMcFlag(kFALSE),
fRecoPass(-1)
{
AliLog::SetClassDebugLevel("AliProdInfo",10);
}
AliProdInfo::AliProdInfo(const TString& name,const TString& title):
TNamed(name,title),
fPeriod(""),
fAlirootVersion(""),
fAlirootSvnVersion(0),
fRootVersion(""),
fRootSvnVersion(0),
fMcFlag(kFALSE),
fRecoPass(-1)
{
AliLog::SetClassDebugLevel("AliProdInfo",10);
}
AliProdInfo::AliProdInfo(TList *userInfoList):
fPeriod(""),
fAlirootVersion(""),
fAlirootSvnVersion(0),
fRootVersion(""),
fRootSvnVersion(0),
fMcFlag(kFALSE),
fRecoPass(-1)
{
AliLog::SetClassDebugLevel("AliProdInfo",10);
Init(userInfoList);
}
AliProdInfo::~AliProdInfo() {
}
void AliProdInfo::Init(TList *userInfoList) {
fPeriod="";
fAlirootVersion="";
fAlirootSvnVersion=0;
fRootVersion="";
fRootSvnVersion=0;
fMcFlag=kFALSE;
fRecoPass=-1;
TNamed *prodInfo = (TNamed *)userInfoList->FindObject("alirootVersion");
if (!prodInfo) {
AliError("No alirootVersion named object found in user info");
return;
}
ParseProdInfo(prodInfo);
}
void AliProdInfo::ParseProdInfo(TNamed *prodInfoData) {
TString str(prodInfoData->GetTitle());
TObjArray *tokens = str.Tokenize(";");
for (Int_t i=0;i<=tokens->GetLast();i++) {
TObjString *stObj = (TObjString *)tokens->At(i);
if (stObj->GetString().Contains("aliroot") && (i==0) ) {
TObjArray *tali = (TObjArray *)stObj->GetString().Tokenize(":");
TObjString *tos = (TObjString *)tali->At(0);
fAlirootVersion="";
if (tos) {
TObjArray *tali2 = (TObjArray *)tos->GetString().Tokenize(" ");
TObjString *av = (TObjString *)tali2->At(1);
if (av) fAlirootVersion=av->GetString().Data();
else AliWarning("Cannot extract AliROOT version string. Might be git related.");
delete tali2;
}
TObjString *ts = (TObjString*)tali->At(1);
if (ts){
if (ts->GetString().IsDigit()){
fAlirootSvnVersion = ts->GetString().Atoi();
} else {
AliWarning("Version number not numeric, might be on git. Using last svn rev number (65263) instead.");
fAlirootSvnVersion=65263;
}
}
delete tali;
}
else if (stObj->GetString().Contains("root") && (i==1) ) {
TObjArray *tali = (TObjArray *)stObj->GetString().Tokenize(":");
TObjString *tos = (TObjString *)tali->At(0);
TObjArray *tali2 = (TObjArray *)tos->GetString().Tokenize(" ");
TObjString *av = (TObjString *)tali2->At(1);
fRootVersion=av->GetString().Data();
TObjString *ts = (TObjString*)tali->At(1);
fRootSvnVersion = ts->GetString().Atoi();
delete tali;
delete tali2;
}
else if (stObj->GetString().Contains("OutputDir")) {
if (stObj->GetString().Contains("pass1") ) {
fRecoPass=1;
} else if (stObj->GetString().Contains("pass2") ) {
fRecoPass=2;
} else if (stObj->GetString().Contains("pass3") ) {
fRecoPass=3;
} else if (stObj->GetString().Contains("pass4") ) {
fRecoPass=4;
} else if (stObj->GetString().Contains("pass5") ) {
fRecoPass=5;
}
if (stObj->GetString().Contains("/alice/sim") ) fMcFlag = kTRUE;
else {
TObjArray *tit = (TObjArray *)stObj->GetString().Tokenize("=");
TObjString *tos = (TObjString*)tit->At(1);
tit=(TObjArray *)tos->GetString().Tokenize("/");
tos=(TObjString*)tit->At(3);
if (tos) {
if (tos->GetString().Contains("_")) {
tit=(TObjArray *)tos->GetString().Tokenize("_");
tos=(TObjString*)tit->At(0);
}
if (tos) fPeriod=tos->GetString().Data();
}
delete tit;
}
}
else if (stObj->GetString().Contains("LPMAnchorProduction") ) {
TObjArray *tit = (TObjArray *)stObj->GetString().Tokenize("=");
TObjString *tos = (TObjString *)tit->At(1);
fPeriod=tos->GetString().Data();
delete tit;
}
else if (stObj->GetString().Contains("LPMProductionTag")) {
}
}
delete tokens;
}
void AliProdInfo::List() const {
if (fAlirootSvnVersion > 0) {
AliInfo("ALICE Production Info found in UserInfo: ");
AliInfo(Form(" ALIROOT Version: %s [SVN #: %d]",fAlirootVersion.Data(),fAlirootSvnVersion));
AliInfo(Form(" ROOT Version: %s [SVN #: %d]",fRootVersion.Data(),fRootSvnVersion));
if (!fMcFlag) AliInfo(Form(" Reconstruction Pass: %d",fRecoPass));
AliInfo(Form(" LHC Period: %s",fPeriod.Data()));
AliInfo(Form(" MC Flag: %d",fMcFlag));
} else {
AliInfo("ALICE Production Info not available in UserInfo");
}
}