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$ */
//
// Realisation of AliGenReader to be used with AliGenExtFile
// It reads Hijing events from a ntuple like event structure.
// The event format is defined in Init()
// NextEvent() is used to loop over events and NextParticle() to loop over particles.  
// Author: andreas.morsch@cern.ch
//
#include <TFile.h>
#include <TParticle.h>
#include <TDatabasePDG.h>
#include <TTree.h>

#include "AliGenReaderEcalHijing.h"

ClassImp(AliGenReaderEcalHijing)

AliGenReaderEcalHijing::AliGenReaderEcalHijing():
    fNcurrent(0),
    fNparticle(0),
    fTreeNtuple(0),
    fNjatt(0),
    fNahij(0),
    fNphij(0)
{
  // Default constructor
  for (Int_t i = 0; i < 10000; i++) {
    fKhij[i]  = 0;     
    fPxhij[i] = 0.;    
    fPyhij[i] = 0.;    
    fPzhij[i] = 0.;
    fEhij[i]  = 0.;     
  }
}

AliGenReaderEcalHijing::AliGenReaderEcalHijing(const AliGenReaderEcalHijing &reader):
    AliGenReader(reader),
    fNcurrent(0),
    fNparticle(0),
    fTreeNtuple(0),
    fNjatt(0),
    fNahij(0),
    fNphij(0)
{
    // Copy constructor
  for (Int_t i = 0; i < 10000; i++) {
    fKhij[i]  = 0;     
    fPxhij[i] = 0.;    
    fPyhij[i] = 0.;    
    fPzhij[i] = 0.;
    fEhij[i]  = 0.;     
  }
    reader.Copy(*this);
}

void AliGenReaderEcalHijing::Init() 
{
//
// reset the existing file environment and open a new root file if
// the pointer to the Fluka tree is null
    
    TFile *pFile=0;
    if (!pFile) {
	pFile = new TFile(fFileName);
	pFile->cd();
	printf("\n I have opened %s file \n", fFileName);
    }
// get the tree address in the Fluka boundary source file
    fTreeNtuple = (TTree*)gDirectory->Get("h2");
    TTree *h2=fTreeNtuple;
    h2->SetMakeClass(1);
//Set branch addresses
    h2->SetBranchAddress("njatt", &fNjatt);
    h2->SetBranchAddress("nahij", &fNahij);
    h2->SetBranchAddress("nphij", &fNphij);
    h2->SetBranchAddress("khij",   fKhij) ;
    h2->SetBranchAddress("pxhij",  fPxhij);
    h2->SetBranchAddress("pyhij",  fPyhij);
    h2->SetBranchAddress("pzhij",  fPzhij);
    h2->SetBranchAddress("ehij",   fEhij) ;
}

Int_t AliGenReaderEcalHijing::NextEvent() 
{
// Read the next event  
    Int_t nTracks=0, nread=0;
    
    TFile* pFile = fTreeNtuple->GetCurrentFile();
    pFile->cd();

    Int_t nentries = (Int_t) fTreeNtuple->GetEntries();
    if (fNcurrent < nentries) {
	Int_t nb = (Int_t)fTreeNtuple->GetEvent(fNcurrent);
	nread += nb;
	fNcurrent++;
	printf("\n Next event contains %d tracks! \n", fNphij);
	nTracks    = fNphij;
	fNparticle = 0;
	return nTracks;
    }
    return 0;
}

TParticle* AliGenReaderEcalHijing::NextParticle() 
{
// Read the next particle

    Float_t p[4];
    Int_t ipart = fKhij[fNparticle];
    p[0] = fPxhij[fNparticle];
    p[1] = fPyhij[fNparticle];      
    p[2] = fPzhij[fNparticle];
    p[3] = fEhij[fNparticle];
    
    Double_t amass = TDatabasePDG::Instance()->GetParticle(ipart)->Mass();

    if(p[3] <= amass) {
	Warning("Generate","Particle %d  E = %f mass = %f \n",
		ipart, p[3], amass);
    } 
    TParticle* particle = 
	new TParticle(ipart, 0, -1, -1, -1, -1, p[0], p[1], p[2], p[3], 
		      0., 0., 0., 0.);
    fNparticle++;
    return particle;
}



AliGenReaderEcalHijing& AliGenReaderEcalHijing::operator=(const  AliGenReaderEcalHijing& rhs)
{
// Assignment operator
    rhs.Copy(*this);
    return (*this);
}

void AliGenReaderEcalHijing::Copy(TObject&) const
{
    //
    // Copy 
    //
    Fatal("Copy","Not implemented!\n");
}






 AliGenReaderEcalHijing.cxx:1
 AliGenReaderEcalHijing.cxx:2
 AliGenReaderEcalHijing.cxx:3
 AliGenReaderEcalHijing.cxx:4
 AliGenReaderEcalHijing.cxx:5
 AliGenReaderEcalHijing.cxx:6
 AliGenReaderEcalHijing.cxx:7
 AliGenReaderEcalHijing.cxx:8
 AliGenReaderEcalHijing.cxx:9
 AliGenReaderEcalHijing.cxx:10
 AliGenReaderEcalHijing.cxx:11
 AliGenReaderEcalHijing.cxx:12
 AliGenReaderEcalHijing.cxx:13
 AliGenReaderEcalHijing.cxx:14
 AliGenReaderEcalHijing.cxx:15
 AliGenReaderEcalHijing.cxx:16
 AliGenReaderEcalHijing.cxx:17
 AliGenReaderEcalHijing.cxx:18
 AliGenReaderEcalHijing.cxx:19
 AliGenReaderEcalHijing.cxx:20
 AliGenReaderEcalHijing.cxx:21
 AliGenReaderEcalHijing.cxx:22
 AliGenReaderEcalHijing.cxx:23
 AliGenReaderEcalHijing.cxx:24
 AliGenReaderEcalHijing.cxx:25
 AliGenReaderEcalHijing.cxx:26
 AliGenReaderEcalHijing.cxx:27
 AliGenReaderEcalHijing.cxx:28
 AliGenReaderEcalHijing.cxx:29
 AliGenReaderEcalHijing.cxx:30
 AliGenReaderEcalHijing.cxx:31
 AliGenReaderEcalHijing.cxx:32
 AliGenReaderEcalHijing.cxx:33
 AliGenReaderEcalHijing.cxx:34
 AliGenReaderEcalHijing.cxx:35
 AliGenReaderEcalHijing.cxx:36
 AliGenReaderEcalHijing.cxx:37
 AliGenReaderEcalHijing.cxx:38
 AliGenReaderEcalHijing.cxx:39
 AliGenReaderEcalHijing.cxx:40
 AliGenReaderEcalHijing.cxx:41
 AliGenReaderEcalHijing.cxx:42
 AliGenReaderEcalHijing.cxx:43
 AliGenReaderEcalHijing.cxx:44
 AliGenReaderEcalHijing.cxx:45
 AliGenReaderEcalHijing.cxx:46
 AliGenReaderEcalHijing.cxx:47
 AliGenReaderEcalHijing.cxx:48
 AliGenReaderEcalHijing.cxx:49
 AliGenReaderEcalHijing.cxx:50
 AliGenReaderEcalHijing.cxx:51
 AliGenReaderEcalHijing.cxx:52
 AliGenReaderEcalHijing.cxx:53
 AliGenReaderEcalHijing.cxx:54
 AliGenReaderEcalHijing.cxx:55
 AliGenReaderEcalHijing.cxx:56
 AliGenReaderEcalHijing.cxx:57
 AliGenReaderEcalHijing.cxx:58
 AliGenReaderEcalHijing.cxx:59
 AliGenReaderEcalHijing.cxx:60
 AliGenReaderEcalHijing.cxx:61
 AliGenReaderEcalHijing.cxx:62
 AliGenReaderEcalHijing.cxx:63
 AliGenReaderEcalHijing.cxx:64
 AliGenReaderEcalHijing.cxx:65
 AliGenReaderEcalHijing.cxx:66
 AliGenReaderEcalHijing.cxx:67
 AliGenReaderEcalHijing.cxx:68
 AliGenReaderEcalHijing.cxx:69
 AliGenReaderEcalHijing.cxx:70
 AliGenReaderEcalHijing.cxx:71
 AliGenReaderEcalHijing.cxx:72
 AliGenReaderEcalHijing.cxx:73
 AliGenReaderEcalHijing.cxx:74
 AliGenReaderEcalHijing.cxx:75
 AliGenReaderEcalHijing.cxx:76
 AliGenReaderEcalHijing.cxx:77
 AliGenReaderEcalHijing.cxx:78
 AliGenReaderEcalHijing.cxx:79
 AliGenReaderEcalHijing.cxx:80
 AliGenReaderEcalHijing.cxx:81
 AliGenReaderEcalHijing.cxx:82
 AliGenReaderEcalHijing.cxx:83
 AliGenReaderEcalHijing.cxx:84
 AliGenReaderEcalHijing.cxx:85
 AliGenReaderEcalHijing.cxx:86
 AliGenReaderEcalHijing.cxx:87
 AliGenReaderEcalHijing.cxx:88
 AliGenReaderEcalHijing.cxx:89
 AliGenReaderEcalHijing.cxx:90
 AliGenReaderEcalHijing.cxx:91
 AliGenReaderEcalHijing.cxx:92
 AliGenReaderEcalHijing.cxx:93
 AliGenReaderEcalHijing.cxx:94
 AliGenReaderEcalHijing.cxx:95
 AliGenReaderEcalHijing.cxx:96
 AliGenReaderEcalHijing.cxx:97
 AliGenReaderEcalHijing.cxx:98
 AliGenReaderEcalHijing.cxx:99
 AliGenReaderEcalHijing.cxx:100
 AliGenReaderEcalHijing.cxx:101
 AliGenReaderEcalHijing.cxx:102
 AliGenReaderEcalHijing.cxx:103
 AliGenReaderEcalHijing.cxx:104
 AliGenReaderEcalHijing.cxx:105
 AliGenReaderEcalHijing.cxx:106
 AliGenReaderEcalHijing.cxx:107
 AliGenReaderEcalHijing.cxx:108
 AliGenReaderEcalHijing.cxx:109
 AliGenReaderEcalHijing.cxx:110
 AliGenReaderEcalHijing.cxx:111
 AliGenReaderEcalHijing.cxx:112
 AliGenReaderEcalHijing.cxx:113
 AliGenReaderEcalHijing.cxx:114
 AliGenReaderEcalHijing.cxx:115
 AliGenReaderEcalHijing.cxx:116
 AliGenReaderEcalHijing.cxx:117
 AliGenReaderEcalHijing.cxx:118
 AliGenReaderEcalHijing.cxx:119
 AliGenReaderEcalHijing.cxx:120
 AliGenReaderEcalHijing.cxx:121
 AliGenReaderEcalHijing.cxx:122
 AliGenReaderEcalHijing.cxx:123
 AliGenReaderEcalHijing.cxx:124
 AliGenReaderEcalHijing.cxx:125
 AliGenReaderEcalHijing.cxx:126
 AliGenReaderEcalHijing.cxx:127
 AliGenReaderEcalHijing.cxx:128
 AliGenReaderEcalHijing.cxx:129
 AliGenReaderEcalHijing.cxx:130
 AliGenReaderEcalHijing.cxx:131
 AliGenReaderEcalHijing.cxx:132
 AliGenReaderEcalHijing.cxx:133
 AliGenReaderEcalHijing.cxx:134
 AliGenReaderEcalHijing.cxx:135
 AliGenReaderEcalHijing.cxx:136
 AliGenReaderEcalHijing.cxx:137
 AliGenReaderEcalHijing.cxx:138
 AliGenReaderEcalHijing.cxx:139
 AliGenReaderEcalHijing.cxx:140
 AliGenReaderEcalHijing.cxx:141
 AliGenReaderEcalHijing.cxx:142
 AliGenReaderEcalHijing.cxx:143
 AliGenReaderEcalHijing.cxx:144
 AliGenReaderEcalHijing.cxx:145
 AliGenReaderEcalHijing.cxx:146
 AliGenReaderEcalHijing.cxx:147
 AliGenReaderEcalHijing.cxx:148
 AliGenReaderEcalHijing.cxx:149
 AliGenReaderEcalHijing.cxx:150
 AliGenReaderEcalHijing.cxx:151
 AliGenReaderEcalHijing.cxx:152
 AliGenReaderEcalHijing.cxx:153
 AliGenReaderEcalHijing.cxx:154
 AliGenReaderEcalHijing.cxx:155
 AliGenReaderEcalHijing.cxx:156
 AliGenReaderEcalHijing.cxx:157
 AliGenReaderEcalHijing.cxx:158
 AliGenReaderEcalHijing.cxx:159
 AliGenReaderEcalHijing.cxx:160
 AliGenReaderEcalHijing.cxx:161
 AliGenReaderEcalHijing.cxx:162
 AliGenReaderEcalHijing.cxx:163
 AliGenReaderEcalHijing.cxx:164