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.                  *
 **************************************************************************/

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Generator for vertices taken from a file                                  //
//                                                                           //
// The file name of the galice file is passed as argument to the             //
// constructor. If a second argument is given, this determines the number    //
// of events for which the same vertex is used.                              //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////


#include <TArrayF.h>
#include <TFile.h>
#include <TTree.h>

#include "AliVertexGenFile.h"
#include "AliLog.h"
#include "AliGenEventHeader.h"
#include "AliHeader.h"


ClassImp(AliVertexGenFile)


//_____________________________________________________________________________
AliVertexGenFile::AliVertexGenFile() :
  fFile(NULL),
  fTree(NULL),
  fHeader(NULL),
  fEventsPerEntry(0),
  fEvent(0)
{
// default constructor: initialize data members

}

//_____________________________________________________________________________
AliVertexGenFile::AliVertexGenFile(const char* fileName, 
				   Int_t eventsPerEntry) :
  fFile(NULL),
  fTree(NULL),
  fHeader(NULL),
  fEventsPerEntry(eventsPerEntry),
  fEvent(0)
{
// main constructor:
// fileName is the name of the galice file containing the vertices
// eventsPerEntry is the number of events for which the same vertex is used

  TDirectory* dir = gDirectory;

  fFile = TFile::Open(fileName);
  if (!fFile || !fFile->IsOpen()) {
    AliError(Form("could not open file %s", fileName));
    delete fFile;
    fFile = NULL;
    return;
  }
  fTree = (TTree*) fFile->Get("TE");
  if (!fTree) {
    AliError(Form("no header tree found in file %s", fileName));
    dir->cd();
    return;
  }
  fHeader = new AliHeader;
  fTree->SetBranchAddress("Header", &fHeader);

  dir->cd();
}

//_____________________________________________________________________________
AliVertexGenFile::~AliVertexGenFile()
{
// clean up

  if (fFile) fFile->Close();
  delete fFile;
  delete fHeader;
}


//_____________________________________________________________________________
TVector3 AliVertexGenFile::GetVertex()
{
// get the vertex from the event header tree

  Int_t entry = fEvent++ / fEventsPerEntry;
  if (!fTree) {
    AliError("no header tree");
    return TVector3(0,0,0);
  }

  if (fTree->GetEntry(entry) <= 0) {
    AliError(Form("error loading entry %d", entry));
    return TVector3(0,0,0);
  }

  if (!fHeader->GenEventHeader()) {
    AliError("no generator event header");
    return TVector3(0,0,0);
  }

  TArrayF vertex(3);
  fHeader->GenEventHeader()->PrimaryVertex(vertex);
  return TVector3(vertex[0], vertex[1], vertex[2]);
}


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