1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
17 //-----------------------------------------------------------------
18 // Base class for parsing alirootVersion //
19 // TNamed object stored in ESD/AOD data //
20 // and setup easy getters for end user //
23 // Origin: Pietro Antonioli, INFN-BO Pietro.Antonioli@cern.ch //
25 //-----------------------------------------------------------------
28 #include "AliProdInfo.h"
30 ClassImp(AliProdInfo);
32 AliProdInfo::AliProdInfo():
35 fAlirootSvnVersion(0),
42 // default constructor
44 AliLog::SetClassDebugLevel("AliProdInfo",10);
47 AliProdInfo::AliProdInfo(const TString& name,const TString& title):
51 fAlirootSvnVersion(0),
58 // default constructor
60 AliLog::SetClassDebugLevel("AliProdInfo",10);
63 AliProdInfo::AliProdInfo(TList *userInfoList):
66 fAlirootSvnVersion(0),
73 // default constructor & init
75 AliLog::SetClassDebugLevel("AliProdInfo",10);
79 //-------------------------------------------------------------------------------------------------
80 AliProdInfo::~AliProdInfo() {
84 //-------------------------------------------------------------------------------------------------
85 void AliProdInfo::Init(TList *userInfoList) {
93 TNamed *prodInfo = (TNamed *)userInfoList->FindObject("alirootVersion");
95 AliError("No alirootVersion named object found in user info");
98 ParseProdInfo(prodInfo);
101 //-------------------------------------------------------------------------------------------------
102 void AliProdInfo::ParseProdInfo(TNamed *prodInfoData) {
104 TString str(prodInfoData->GetTitle());
105 TObjArray *tokens = str.Tokenize(";");
107 for (Int_t i=0;i<=tokens->GetLast();i++) {
108 TObjString *stObj = (TObjString *)tokens->At(i);
110 if (stObj->GetString().Contains("aliroot") && (i==0) ) { // aliroot version
111 TObjArray *tali = (TObjArray *)stObj->GetString().Tokenize(":");
112 TObjString *tos = (TObjString *)tali->At(0);
115 TObjArray *tali2 = (TObjArray *)tos->GetString().Tokenize(" ");
116 TObjString *av = (TObjString *)tali2->At(1);
117 if (av) fAlirootVersion=av->GetString().Data();
118 else AliWarning("Cannot extract AliROOT version string. Might be git related.");
122 TObjString *ts = (TObjString*)tali->At(1);
124 if (ts->GetString().IsDigit()){
125 fAlirootSvnVersion = ts->GetString().Atoi();
127 AliWarning("Version number not numeric, might be on git. Using last svn rev number (65263) instead.");
128 fAlirootSvnVersion=65263;
133 else if (stObj->GetString().Contains("root") && (i==1) ) { // root version
134 TObjArray *tali = (TObjArray *)stObj->GetString().Tokenize(":");
135 TObjString *tos = (TObjString *)tali->At(0);
136 TObjArray *tali2 = (TObjArray *)tos->GetString().Tokenize(" ");
137 TObjString *av = (TObjString *)tali2->At(1);
138 fRootVersion=av->GetString().Data();
139 TObjString *ts = (TObjString*)tali->At(1);
140 fRootSvnVersion = ts->GetString().Atoi();
144 else if (stObj->GetString().Contains("OutputDir")) {
145 if (stObj->GetString().Contains("pass1") ) {
147 } else if (stObj->GetString().Contains("pass2") ) {
149 } else if (stObj->GetString().Contains("pass3") ) {
151 } else if (stObj->GetString().Contains("pass4") ) {
153 } else if (stObj->GetString().Contains("pass5") ) {
156 if (stObj->GetString().Contains("/alice/sim") ) fMcFlag = kTRUE;
158 TObjArray *tit = (TObjArray *)stObj->GetString().Tokenize("=");
159 TObjString *tos = (TObjString*)tit->At(1);
160 tit=(TObjArray *)tos->GetString().Tokenize("/");
161 tos=(TObjString*)tit->At(3);
163 if (tos->GetString().Contains("_")) {
164 tit=(TObjArray *)tos->GetString().Tokenize("_");
165 tos=(TObjString*)tit->At(0);
167 if (tos) fPeriod=tos->GetString().Data();
172 // else if (stObj->GetString().Contains("LPMProductionType=MC") ) {
175 else if (stObj->GetString().Contains("LPMAnchorProduction") ) {
176 TObjArray *tit = (TObjArray *)stObj->GetString().Tokenize("=");
177 TObjString *tos = (TObjString *)tit->At(1);
178 fPeriod=tos->GetString().Data();
181 else if (stObj->GetString().Contains("LPMProductionTag")) {
182 // for the moment we don't parse the tag, given unsafe standards...
184 TObjArray *tit = (TObjArray *)stObj->GetString().Tokenize(" ");
185 if (tit->GetLast()>1) {
186 TObjString *tos = (TObjString *)tit->At(2);
187 if (tos) fPeriod=tos->GetString().Data();
195 //-------------------------------------------------------------------------------------------------
196 void AliProdInfo::List() const {
198 if (fAlirootSvnVersion > 0) {
199 AliInfo("ALICE Production Info found in UserInfo: ");
200 AliInfo(Form(" ALIROOT Version: %s [SVN #: %d]",fAlirootVersion.Data(),fAlirootSvnVersion));
201 AliInfo(Form(" ROOT Version: %s [SVN #: %d]",fRootVersion.Data(),fRootSvnVersion));
202 if (!fMcFlag) AliInfo(Form(" Reconstruction Pass: %d",fRecoPass));
203 AliInfo(Form(" LHC Period: %s",fPeriod.Data()));
204 AliInfo(Form(" MC Flag: %d",fMcFlag));
206 AliInfo("ALICE Production Info not available in UserInfo");