//____________________________________________________________________
//
// A++ event tree info object
//
// The event tree info is usually stored as static data member in the
// AtlEventHeader class (in the AOD2A++ converter as well as in the
// A++ analysis selector).
//
//
// ATHENA version
// ==============
//
// The version number(s) of the ATHENA version used for the A++ event
// tree creation can be retrieved with the member functions
// AthenaVersionMajor(), AthenaVersionMinor(),
// AthenaVersionRevision(). The verion numbers are taken from the
// environment variables $AtlasVersion, $AtlasPatchVersion and $AtlasPatch
//
// Examples:
//     AtlEvtTreeInfo *info = AtlEventHeader::GetEvtTreeInfo();
//     cout << "ATHENA VERSION = "
//	<< info->AthenaVersionMajor() << "."
// 	<< info->AthenaVersionMinor() << "."
//	<< info->AthenaVersionRevision() << endl;
//
//     if ( inf->AthenaVersionMajor() >= 15 ) {
//         // ATHENA release 15 and later ...
//     }
//
//     if ( inf->AthenaVersionMajor()    == 14 &&
//          inf->AthenaVersionMinor()    == 5  &&
//          inf->AthenaVersionRevision() == 0 ) {
//          // ATHENA release 14.5.0 section ...
//     }
//
//
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlEvtTreeInfo.cxx,v 1.5 2011/01/19 22:15:40 kind Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlEvtTreeInfo
#include <AtlEvtTreeInfo.h>
#endif
#include <TSystem.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TString.h>

#ifndef __CINT__
ClassImp(AtlEvtTreeInfo);
#endif

//____________________________________________________________________

AtlEvtTreeInfo::AtlEvtTreeInfo() {
    //
    // Default constructor
    //
    for ( Int_t i = 0; i < 5; i++ ) fAthenaVersion[i] = 0;
}

//____________________________________________________________________

AtlEvtTreeInfo::AtlEvtTreeInfo(const char* name, const char* title) :
    TNamed(name, title) {
    //
    // Normal constructor
    //
    ReadAthenaVersion();
    fBeamEnergy = 0.;
}

//____________________________________________________________________

AtlEvtTreeInfo::~AtlEvtTreeInfo() {
    //
    // Default destructor
    //
}

//____________________________________________________________________

void AtlEvtTreeInfo::ReadAthenaVersion() {
    //
    // Read the currently used ATHENA version from the environment
    // variables $AthenaVersion, $AthenaPatchVersion and $AthenaPatch
    //
    TString AtlasVersion(gSystem->Getenv("AtlasPatchVersion"));
    if ( AtlasVersion.Length() == 0 )
	AtlasVersion.Append(gSystem->Getenv("AtlasVersion"));
    if ( AtlasVersion.Length() == 0 ) {
	Error("ReadAthenaVersion",
	      "Environment variable AtlasVersion not set. Abort!");
	gSystem->Abort(0);
    }
    TObjArray *arr = AtlasVersion.Tokenize(".");
    for ( Int_t i = 0; i < arr->GetEntries(); i++ ) {
	fAthenaVersion[i] = ((TObjString*)arr->At(i))->GetString().Atoi();
    }
    arr->Delete(); delete arr;
    fAthenaPhysicsAnalysisName.Remove(0);
    fAthenaPhysicsAnalysisName.Append(gSystem->Getenv("AtlasPatch"));
}

 AtlEvtTreeInfo.cxx:1
 AtlEvtTreeInfo.cxx:2
 AtlEvtTreeInfo.cxx:3
 AtlEvtTreeInfo.cxx:4
 AtlEvtTreeInfo.cxx:5
 AtlEvtTreeInfo.cxx:6
 AtlEvtTreeInfo.cxx:7
 AtlEvtTreeInfo.cxx:8
 AtlEvtTreeInfo.cxx:9
 AtlEvtTreeInfo.cxx:10
 AtlEvtTreeInfo.cxx:11
 AtlEvtTreeInfo.cxx:12
 AtlEvtTreeInfo.cxx:13
 AtlEvtTreeInfo.cxx:14
 AtlEvtTreeInfo.cxx:15
 AtlEvtTreeInfo.cxx:16
 AtlEvtTreeInfo.cxx:17
 AtlEvtTreeInfo.cxx:18
 AtlEvtTreeInfo.cxx:19
 AtlEvtTreeInfo.cxx:20
 AtlEvtTreeInfo.cxx:21
 AtlEvtTreeInfo.cxx:22
 AtlEvtTreeInfo.cxx:23
 AtlEvtTreeInfo.cxx:24
 AtlEvtTreeInfo.cxx:25
 AtlEvtTreeInfo.cxx:26
 AtlEvtTreeInfo.cxx:27
 AtlEvtTreeInfo.cxx:28
 AtlEvtTreeInfo.cxx:29
 AtlEvtTreeInfo.cxx:30
 AtlEvtTreeInfo.cxx:31
 AtlEvtTreeInfo.cxx:32
 AtlEvtTreeInfo.cxx:33
 AtlEvtTreeInfo.cxx:34
 AtlEvtTreeInfo.cxx:35
 AtlEvtTreeInfo.cxx:36
 AtlEvtTreeInfo.cxx:37
 AtlEvtTreeInfo.cxx:38
 AtlEvtTreeInfo.cxx:39
 AtlEvtTreeInfo.cxx:40
 AtlEvtTreeInfo.cxx:41
 AtlEvtTreeInfo.cxx:42
 AtlEvtTreeInfo.cxx:43
 AtlEvtTreeInfo.cxx:44
 AtlEvtTreeInfo.cxx:45
 AtlEvtTreeInfo.cxx:46
 AtlEvtTreeInfo.cxx:47
 AtlEvtTreeInfo.cxx:48
 AtlEvtTreeInfo.cxx:49
 AtlEvtTreeInfo.cxx:50
 AtlEvtTreeInfo.cxx:51
 AtlEvtTreeInfo.cxx:52
 AtlEvtTreeInfo.cxx:53
 AtlEvtTreeInfo.cxx:54
 AtlEvtTreeInfo.cxx:55
 AtlEvtTreeInfo.cxx:56
 AtlEvtTreeInfo.cxx:57
 AtlEvtTreeInfo.cxx:58
 AtlEvtTreeInfo.cxx:59
 AtlEvtTreeInfo.cxx:60
 AtlEvtTreeInfo.cxx:61
 AtlEvtTreeInfo.cxx:62
 AtlEvtTreeInfo.cxx:63
 AtlEvtTreeInfo.cxx:64
 AtlEvtTreeInfo.cxx:65
 AtlEvtTreeInfo.cxx:66
 AtlEvtTreeInfo.cxx:67
 AtlEvtTreeInfo.cxx:68
 AtlEvtTreeInfo.cxx:69
 AtlEvtTreeInfo.cxx:70
 AtlEvtTreeInfo.cxx:71
 AtlEvtTreeInfo.cxx:72
 AtlEvtTreeInfo.cxx:73
 AtlEvtTreeInfo.cxx:74
 AtlEvtTreeInfo.cxx:75
 AtlEvtTreeInfo.cxx:76
 AtlEvtTreeInfo.cxx:77
 AtlEvtTreeInfo.cxx:78
 AtlEvtTreeInfo.cxx:79
 AtlEvtTreeInfo.cxx:80
 AtlEvtTreeInfo.cxx:81
 AtlEvtTreeInfo.cxx:82
 AtlEvtTreeInfo.cxx:83
 AtlEvtTreeInfo.cxx:84
 AtlEvtTreeInfo.cxx:85
 AtlEvtTreeInfo.cxx:86
 AtlEvtTreeInfo.cxx:87
 AtlEvtTreeInfo.cxx:88
 AtlEvtTreeInfo.cxx:89
 AtlEvtTreeInfo.cxx:90
 AtlEvtTreeInfo.cxx:91
 AtlEvtTreeInfo.cxx:92
 AtlEvtTreeInfo.cxx:93
 AtlEvtTreeInfo.cxx:94
 AtlEvtTreeInfo.cxx:95
 AtlEvtTreeInfo.cxx:96
 AtlEvtTreeInfo.cxx:97
 AtlEvtTreeInfo.cxx:98
 AtlEvtTreeInfo.cxx:99
 AtlEvtTreeInfo.cxx:100
 AtlEvtTreeInfo.cxx:101
 AtlEvtTreeInfo.cxx:102
 AtlEvtTreeInfo.cxx:103
 AtlEvtTreeInfo.cxx:104