ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


//-----------------------------------------------------------------
//        Base class for parsing alirootVersion                  //
//        TNamed object stored in ESD/AOD data                   //
//        and setup easy getters for end user                    //
//                                                               //
//                                                               //
//   Origin: Pietro Antonioli, INFN-BO Pietro.Antonioli@cern.ch  //
//                                                               //
//-----------------------------------------------------------------

#include <AliLog.h>
#include "AliProdInfo.h"

ClassImp(AliProdInfo);

AliProdInfo::AliProdInfo():
  fPeriod(""),
  fAlirootVersion(""),
  fAlirootSvnVersion(0),
  fRootVersion(""),
  fRootSvnVersion(0),
  fMcFlag(kFALSE),
  fRecoPass(-1)
{	
  //
  // default constructor
  //	
  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)
{	
  //
  // default constructor
  //	
  AliLog::SetClassDebugLevel("AliProdInfo",10);
}

AliProdInfo::AliProdInfo(TList *userInfoList):
  fPeriod(""),
  fAlirootVersion(""),
  fAlirootSvnVersion(0),
  fRootVersion(""),
  fRootSvnVersion(0),
  fMcFlag(kFALSE),
  fRecoPass(-1)
{	
  //
  // default constructor & init
  //	
  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) ) {  // aliroot version
      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) ) {  // root version
      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("LPMProductionType=MC") ) {
    //      fMcFlag = kTRUE;
    //    }
    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")) {
      // for the moment we don't parse the tag, given unsafe standards...
      /*
      TObjArray *tit = (TObjArray *)stObj->GetString().Tokenize(" ");
      if (tit->GetLast()>1) {
	TObjString *tos = (TObjString *)tit->At(2);
	if (tos) fPeriod=tos->GetString().Data();
      }
      */
    }
  }
  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");
  }
}
 AliProdInfo.cxx:1
 AliProdInfo.cxx:2
 AliProdInfo.cxx:3
 AliProdInfo.cxx:4
 AliProdInfo.cxx:5
 AliProdInfo.cxx:6
 AliProdInfo.cxx:7
 AliProdInfo.cxx:8
 AliProdInfo.cxx:9
 AliProdInfo.cxx:10
 AliProdInfo.cxx:11
 AliProdInfo.cxx:12
 AliProdInfo.cxx:13
 AliProdInfo.cxx:14
 AliProdInfo.cxx:15
 AliProdInfo.cxx:16
 AliProdInfo.cxx:17
 AliProdInfo.cxx:18
 AliProdInfo.cxx:19
 AliProdInfo.cxx:20
 AliProdInfo.cxx:21
 AliProdInfo.cxx:22
 AliProdInfo.cxx:23
 AliProdInfo.cxx:24
 AliProdInfo.cxx:25
 AliProdInfo.cxx:26
 AliProdInfo.cxx:27
 AliProdInfo.cxx:28
 AliProdInfo.cxx:29
 AliProdInfo.cxx:30
 AliProdInfo.cxx:31
 AliProdInfo.cxx:32
 AliProdInfo.cxx:33
 AliProdInfo.cxx:34
 AliProdInfo.cxx:35
 AliProdInfo.cxx:36
 AliProdInfo.cxx:37
 AliProdInfo.cxx:38
 AliProdInfo.cxx:39
 AliProdInfo.cxx:40
 AliProdInfo.cxx:41
 AliProdInfo.cxx:42
 AliProdInfo.cxx:43
 AliProdInfo.cxx:44
 AliProdInfo.cxx:45
 AliProdInfo.cxx:46
 AliProdInfo.cxx:47
 AliProdInfo.cxx:48
 AliProdInfo.cxx:49
 AliProdInfo.cxx:50
 AliProdInfo.cxx:51
 AliProdInfo.cxx:52
 AliProdInfo.cxx:53
 AliProdInfo.cxx:54
 AliProdInfo.cxx:55
 AliProdInfo.cxx:56
 AliProdInfo.cxx:57
 AliProdInfo.cxx:58
 AliProdInfo.cxx:59
 AliProdInfo.cxx:60
 AliProdInfo.cxx:61
 AliProdInfo.cxx:62
 AliProdInfo.cxx:63
 AliProdInfo.cxx:64
 AliProdInfo.cxx:65
 AliProdInfo.cxx:66
 AliProdInfo.cxx:67
 AliProdInfo.cxx:68
 AliProdInfo.cxx:69
 AliProdInfo.cxx:70
 AliProdInfo.cxx:71
 AliProdInfo.cxx:72
 AliProdInfo.cxx:73
 AliProdInfo.cxx:74
 AliProdInfo.cxx:75
 AliProdInfo.cxx:76
 AliProdInfo.cxx:77
 AliProdInfo.cxx:78
 AliProdInfo.cxx:79
 AliProdInfo.cxx:80
 AliProdInfo.cxx:81
 AliProdInfo.cxx:82
 AliProdInfo.cxx:83
 AliProdInfo.cxx:84
 AliProdInfo.cxx:85
 AliProdInfo.cxx:86
 AliProdInfo.cxx:87
 AliProdInfo.cxx:88
 AliProdInfo.cxx:89
 AliProdInfo.cxx:90
 AliProdInfo.cxx:91
 AliProdInfo.cxx:92
 AliProdInfo.cxx:93
 AliProdInfo.cxx:94
 AliProdInfo.cxx:95
 AliProdInfo.cxx:96
 AliProdInfo.cxx:97
 AliProdInfo.cxx:98
 AliProdInfo.cxx:99
 AliProdInfo.cxx:100
 AliProdInfo.cxx:101
 AliProdInfo.cxx:102
 AliProdInfo.cxx:103
 AliProdInfo.cxx:104
 AliProdInfo.cxx:105
 AliProdInfo.cxx:106
 AliProdInfo.cxx:107
 AliProdInfo.cxx:108
 AliProdInfo.cxx:109
 AliProdInfo.cxx:110
 AliProdInfo.cxx:111
 AliProdInfo.cxx:112
 AliProdInfo.cxx:113
 AliProdInfo.cxx:114
 AliProdInfo.cxx:115
 AliProdInfo.cxx:116
 AliProdInfo.cxx:117
 AliProdInfo.cxx:118
 AliProdInfo.cxx:119
 AliProdInfo.cxx:120
 AliProdInfo.cxx:121
 AliProdInfo.cxx:122
 AliProdInfo.cxx:123
 AliProdInfo.cxx:124
 AliProdInfo.cxx:125
 AliProdInfo.cxx:126
 AliProdInfo.cxx:127
 AliProdInfo.cxx:128
 AliProdInfo.cxx:129
 AliProdInfo.cxx:130
 AliProdInfo.cxx:131
 AliProdInfo.cxx:132
 AliProdInfo.cxx:133
 AliProdInfo.cxx:134
 AliProdInfo.cxx:135
 AliProdInfo.cxx:136
 AliProdInfo.cxx:137
 AliProdInfo.cxx:138
 AliProdInfo.cxx:139
 AliProdInfo.cxx:140
 AliProdInfo.cxx:141
 AliProdInfo.cxx:142
 AliProdInfo.cxx:143
 AliProdInfo.cxx:144
 AliProdInfo.cxx:145
 AliProdInfo.cxx:146
 AliProdInfo.cxx:147
 AliProdInfo.cxx:148
 AliProdInfo.cxx:149
 AliProdInfo.cxx:150
 AliProdInfo.cxx:151
 AliProdInfo.cxx:152
 AliProdInfo.cxx:153
 AliProdInfo.cxx:154
 AliProdInfo.cxx:155
 AliProdInfo.cxx:156
 AliProdInfo.cxx:157
 AliProdInfo.cxx:158
 AliProdInfo.cxx:159
 AliProdInfo.cxx:160
 AliProdInfo.cxx:161
 AliProdInfo.cxx:162
 AliProdInfo.cxx:163
 AliProdInfo.cxx:164
 AliProdInfo.cxx:165
 AliProdInfo.cxx:166
 AliProdInfo.cxx:167
 AliProdInfo.cxx:168
 AliProdInfo.cxx:169
 AliProdInfo.cxx:170
 AliProdInfo.cxx:171
 AliProdInfo.cxx:172
 AliProdInfo.cxx:173
 AliProdInfo.cxx:174
 AliProdInfo.cxx:175
 AliProdInfo.cxx:176
 AliProdInfo.cxx:177
 AliProdInfo.cxx:178
 AliProdInfo.cxx:179
 AliProdInfo.cxx:180
 AliProdInfo.cxx:181
 AliProdInfo.cxx:182
 AliProdInfo.cxx:183
 AliProdInfo.cxx:184
 AliProdInfo.cxx:185
 AliProdInfo.cxx:186
 AliProdInfo.cxx:187
 AliProdInfo.cxx:188
 AliProdInfo.cxx:189
 AliProdInfo.cxx:190
 AliProdInfo.cxx:191
 AliProdInfo.cxx:192
 AliProdInfo.cxx:193
 AliProdInfo.cxx:194
 AliProdInfo.cxx:195
 AliProdInfo.cxx:196
 AliProdInfo.cxx:197
 AliProdInfo.cxx:198
 AliProdInfo.cxx:199
 AliProdInfo.cxx:200
 AliProdInfo.cxx:201
 AliProdInfo.cxx:202
 AliProdInfo.cxx:203
 AliProdInfo.cxx:204
 AliProdInfo.cxx:205
 AliProdInfo.cxx:206
 AliProdInfo.cxx:207
 AliProdInfo.cxx:208