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);
113 TObjArray *tali2 = (TObjArray *)tos->GetString().Tokenize(" ");
114 TObjString *av = (TObjString *)tali2->At(1);
115 fAlirootVersion=av->GetString().Data();
116 TObjString *ts = (TObjString*)tali->At(1);
117 fAlirootSvnVersion = ts->GetString().Atoi();
121 else if (stObj->GetString().Contains("root") && (i==1) ) { // root version
122 TObjArray *tali = (TObjArray *)stObj->GetString().Tokenize(":");
123 TObjString *tos = (TObjString *)tali->At(0);
124 TObjArray *tali2 = (TObjArray *)tos->GetString().Tokenize(" ");
125 TObjString *av = (TObjString *)tali2->At(1);
126 fRootVersion=av->GetString().Data();
127 TObjString *ts = (TObjString*)tali->At(1);
128 fRootSvnVersion = ts->GetString().Atoi();
132 else if (stObj->GetString().Contains("OutputDir")) {
133 if (stObj->GetString().Contains("pass1") ) {
135 } else if (stObj->GetString().Contains("pass2") ) {
137 } else if (stObj->GetString().Contains("pass3") ) {
139 } else if (stObj->GetString().Contains("pass4") ) {
141 } else if (stObj->GetString().Contains("pass5") ) {
144 if (stObj->GetString().Contains("/alice/sim") ) fMcFlag = kTRUE;
146 TObjArray *tit = (TObjArray *)stObj->GetString().Tokenize("=");
147 TObjString *tos = (TObjString*)tit->At(1);
148 tit=(TObjArray *)tos->GetString().Tokenize("/");
149 tos=(TObjString*)tit->At(3);
151 if (tos->GetString().Contains("_")) {
152 tit=(TObjArray *)tos->GetString().Tokenize("_");
153 tos=(TObjString*)tit->At(0);
155 if (tos) fPeriod=tos->GetString().Data();
160 // else if (stObj->GetString().Contains("LPMProductionType=MC") ) {
163 else if (stObj->GetString().Contains("LPMAnchorProduction") ) {
164 TObjArray *tit = (TObjArray *)stObj->GetString().Tokenize("=");
165 TObjString *tos = (TObjString *)tit->At(1);
166 fPeriod=tos->GetString().Data();
169 else if (stObj->GetString().Contains("LPMProductionTag")) {
170 // for the moment we don't parse the tag, given unsafe standards...
172 TObjArray *tit = (TObjArray *)stObj->GetString().Tokenize(" ");
173 if (tit->GetLast()>1) {
174 TObjString *tos = (TObjString *)tit->At(2);
175 if (tos) fPeriod=tos->GetString().Data();
183 //-------------------------------------------------------------------------------------------------
184 void AliProdInfo::List() const {
186 if (fAlirootSvnVersion > 0) {
187 AliInfo("ALICE Production Info found in UserInfo: ");
188 AliInfo(Form(" ALIROOT Version: %s [SVN #: %d]",fAlirootVersion.Data(),fAlirootSvnVersion));
189 AliInfo(Form(" ROOT Version: %s [SVN #: %d]",fRootVersion.Data(),fRootSvnVersion));
190 if (!fMcFlag) AliInfo(Form(" Reconstruction Pass: %d",fRecoPass));
191 AliInfo(Form(" LHC Period: %s",fPeriod.Data()));
192 AliInfo(Form(" MC Flag: %d",fMcFlag));
194 AliInfo("ALICE Production Info not available in UserInfo");