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 Pythia Jet 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 "AliGenReaderEcalJets.h"

ClassImp(AliGenReaderEcalJets)


AliGenReaderEcalJets::AliGenReaderEcalJets():
    fNcurrent(0),
    fNparticle(0),
    fNev(0),
    fNpart(0),
    fNjet(0),     
    fNsjet(0),
    fNpjet(0),
    fTreeNtuple(0) 
{
// Default constructor
    for (Int_t i = 0; i < 200; i++) {
	if (i < 2) {
	    fX[i]     = 0.;    
	    fXtyp[i]  = 0; 
	} else if (i < 10) {
	    fJet[i]   = 0.;  
	    fJeta[i]  = 0.; 
	    fJphi[i]  = 0.; 
	    fJset[i]  = 0.; 
	    fJseta[i] = 0.;
	    fJsphi[i] = 0.;
	    fJpet[i]  = 0.; 
	    fJpeta[i] = 0.;
	    fJpphi[i] = 0.;
	} else {
	    fXpt[i]  = 0.;
	    fXeta[i] = 0.;
	    fXphi[i] = 0.;
	    fXid[i]  = 0; 
	}
    }
}

 AliGenReaderEcalJets::AliGenReaderEcalJets(const AliGenReaderEcalJets &reader)
     :AliGenReader(reader),
      fNcurrent(0),
      fNparticle(0),
      fNev(0),
      fNpart(0),
      fNjet(0),     
      fNsjet(0),
      fNpjet(0),
      fTreeNtuple(0) 
{
    for (Int_t i = 0; i < 200; i++) {
	if (i < 2) {
	    fX[i]     = 0.;    
	    fXtyp[i]  = 0; 
	} else if (i < 10) {
	    fJet[i]   = 0.;  
	    fJeta[i]  = 0.; 
	    fJphi[i]  = 0.; 
	    fJset[i]  = 0.; 
	    fJseta[i] = 0.;
	    fJsphi[i] = 0.;
	    fJpet[i]  = 0.; 
	    fJpeta[i] = 0.;
	    fJpphi[i] = 0.;
	} else {
	    fXpt[i]  = 0.;
	    fXeta[i] = 0.;
	    fXphi[i] = 0.;
	    fXid[i]  = 0; 
	}
    }

    // Copy Constructor
    reader.Copy(*this);
}

void AliGenReaderEcalJets::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("h1");
    TTree *h1=fTreeNtuple;
    h1->SetMakeClass(1);
//Set branch addresses
    h1->SetBranchAddress("nev",   &fNev);
    h1->SetBranchAddress("x",      fX);
    h1->SetBranchAddress("xtyp",   fXtyp);
    h1->SetBranchAddress("npart", &fNpart);
    h1->SetBranchAddress("xpt",    fXpt);
    h1->SetBranchAddress("xeta",   fXeta);
    h1->SetBranchAddress("xphi",   fXphi);
    h1->SetBranchAddress("xid",    fXid);
    h1->SetBranchAddress("njet",  &fNjet);
    h1->SetBranchAddress("jet",    fJet);
    h1->SetBranchAddress("jeta",   fJeta);
    h1->SetBranchAddress("jphi",   fJphi);
    h1->SetBranchAddress("nsjet", &fNsjet);
    h1->SetBranchAddress("jset",   fJset);
    h1->SetBranchAddress("jseta",  fJseta);
    h1->SetBranchAddress("jsphi",  fJsphi);
    h1->SetBranchAddress("npjet", &fNpjet);
    h1->SetBranchAddress("jpet",   fJpet);
    h1->SetBranchAddress("jpeta",  fJpeta);
    h1->SetBranchAddress("jpphi",  fJpphi);
}

Int_t AliGenReaderEcalJets::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", fNpjet);
	nTracks    = fNpjet;
	fNparticle = 0;
	return nTracks;
    }
    return 0;
}

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

    Float_t p[4];
    Int_t    ipart  = fXid[fNparticle];
    Float_t  pt     = fXpt[fNparticle];
    Float_t  eta    = fXeta[fNparticle];
    Float_t  phi    = fXphi[fNparticle];
    Float_t  theta  = 2.*TMath::ATan(TMath::Exp(-eta));
    Double_t amass  = TDatabasePDG::Instance()->GetParticle(ipart)->Mass();

    p[0] = pt*TMath::Sin(phi);
    p[1] = pt*TMath::Cos(phi);      
    p[2] = pt/TMath::Cos(theta);
    p[3] = TMath::Sqrt(pt*pt+p[2]*p[2]+amass*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;
}



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

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







 AliGenReaderEcalJets.cxx:1
 AliGenReaderEcalJets.cxx:2
 AliGenReaderEcalJets.cxx:3
 AliGenReaderEcalJets.cxx:4
 AliGenReaderEcalJets.cxx:5
 AliGenReaderEcalJets.cxx:6
 AliGenReaderEcalJets.cxx:7
 AliGenReaderEcalJets.cxx:8
 AliGenReaderEcalJets.cxx:9
 AliGenReaderEcalJets.cxx:10
 AliGenReaderEcalJets.cxx:11
 AliGenReaderEcalJets.cxx:12
 AliGenReaderEcalJets.cxx:13
 AliGenReaderEcalJets.cxx:14
 AliGenReaderEcalJets.cxx:15
 AliGenReaderEcalJets.cxx:16
 AliGenReaderEcalJets.cxx:17
 AliGenReaderEcalJets.cxx:18
 AliGenReaderEcalJets.cxx:19
 AliGenReaderEcalJets.cxx:20
 AliGenReaderEcalJets.cxx:21
 AliGenReaderEcalJets.cxx:22
 AliGenReaderEcalJets.cxx:23
 AliGenReaderEcalJets.cxx:24
 AliGenReaderEcalJets.cxx:25
 AliGenReaderEcalJets.cxx:26
 AliGenReaderEcalJets.cxx:27
 AliGenReaderEcalJets.cxx:28
 AliGenReaderEcalJets.cxx:29
 AliGenReaderEcalJets.cxx:30
 AliGenReaderEcalJets.cxx:31
 AliGenReaderEcalJets.cxx:32
 AliGenReaderEcalJets.cxx:33
 AliGenReaderEcalJets.cxx:34
 AliGenReaderEcalJets.cxx:35
 AliGenReaderEcalJets.cxx:36
 AliGenReaderEcalJets.cxx:37
 AliGenReaderEcalJets.cxx:38
 AliGenReaderEcalJets.cxx:39
 AliGenReaderEcalJets.cxx:40
 AliGenReaderEcalJets.cxx:41
 AliGenReaderEcalJets.cxx:42
 AliGenReaderEcalJets.cxx:43
 AliGenReaderEcalJets.cxx:44
 AliGenReaderEcalJets.cxx:45
 AliGenReaderEcalJets.cxx:46
 AliGenReaderEcalJets.cxx:47
 AliGenReaderEcalJets.cxx:48
 AliGenReaderEcalJets.cxx:49
 AliGenReaderEcalJets.cxx:50
 AliGenReaderEcalJets.cxx:51
 AliGenReaderEcalJets.cxx:52
 AliGenReaderEcalJets.cxx:53
 AliGenReaderEcalJets.cxx:54
 AliGenReaderEcalJets.cxx:55
 AliGenReaderEcalJets.cxx:56
 AliGenReaderEcalJets.cxx:57
 AliGenReaderEcalJets.cxx:58
 AliGenReaderEcalJets.cxx:59
 AliGenReaderEcalJets.cxx:60
 AliGenReaderEcalJets.cxx:61
 AliGenReaderEcalJets.cxx:62
 AliGenReaderEcalJets.cxx:63
 AliGenReaderEcalJets.cxx:64
 AliGenReaderEcalJets.cxx:65
 AliGenReaderEcalJets.cxx:66
 AliGenReaderEcalJets.cxx:67
 AliGenReaderEcalJets.cxx:68
 AliGenReaderEcalJets.cxx:69
 AliGenReaderEcalJets.cxx:70
 AliGenReaderEcalJets.cxx:71
 AliGenReaderEcalJets.cxx:72
 AliGenReaderEcalJets.cxx:73
 AliGenReaderEcalJets.cxx:74
 AliGenReaderEcalJets.cxx:75
 AliGenReaderEcalJets.cxx:76
 AliGenReaderEcalJets.cxx:77
 AliGenReaderEcalJets.cxx:78
 AliGenReaderEcalJets.cxx:79
 AliGenReaderEcalJets.cxx:80
 AliGenReaderEcalJets.cxx:81
 AliGenReaderEcalJets.cxx:82
 AliGenReaderEcalJets.cxx:83
 AliGenReaderEcalJets.cxx:84
 AliGenReaderEcalJets.cxx:85
 AliGenReaderEcalJets.cxx:86
 AliGenReaderEcalJets.cxx:87
 AliGenReaderEcalJets.cxx:88
 AliGenReaderEcalJets.cxx:89
 AliGenReaderEcalJets.cxx:90
 AliGenReaderEcalJets.cxx:91
 AliGenReaderEcalJets.cxx:92
 AliGenReaderEcalJets.cxx:93
 AliGenReaderEcalJets.cxx:94
 AliGenReaderEcalJets.cxx:95
 AliGenReaderEcalJets.cxx:96
 AliGenReaderEcalJets.cxx:97
 AliGenReaderEcalJets.cxx:98
 AliGenReaderEcalJets.cxx:99
 AliGenReaderEcalJets.cxx:100
 AliGenReaderEcalJets.cxx:101
 AliGenReaderEcalJets.cxx:102
 AliGenReaderEcalJets.cxx:103
 AliGenReaderEcalJets.cxx:104
 AliGenReaderEcalJets.cxx:105
 AliGenReaderEcalJets.cxx:106
 AliGenReaderEcalJets.cxx:107
 AliGenReaderEcalJets.cxx:108
 AliGenReaderEcalJets.cxx:109
 AliGenReaderEcalJets.cxx:110
 AliGenReaderEcalJets.cxx:111
 AliGenReaderEcalJets.cxx:112
 AliGenReaderEcalJets.cxx:113
 AliGenReaderEcalJets.cxx:114
 AliGenReaderEcalJets.cxx:115
 AliGenReaderEcalJets.cxx:116
 AliGenReaderEcalJets.cxx:117
 AliGenReaderEcalJets.cxx:118
 AliGenReaderEcalJets.cxx:119
 AliGenReaderEcalJets.cxx:120
 AliGenReaderEcalJets.cxx:121
 AliGenReaderEcalJets.cxx:122
 AliGenReaderEcalJets.cxx:123
 AliGenReaderEcalJets.cxx:124
 AliGenReaderEcalJets.cxx:125
 AliGenReaderEcalJets.cxx:126
 AliGenReaderEcalJets.cxx:127
 AliGenReaderEcalJets.cxx:128
 AliGenReaderEcalJets.cxx:129
 AliGenReaderEcalJets.cxx:130
 AliGenReaderEcalJets.cxx:131
 AliGenReaderEcalJets.cxx:132
 AliGenReaderEcalJets.cxx:133
 AliGenReaderEcalJets.cxx:134
 AliGenReaderEcalJets.cxx:135
 AliGenReaderEcalJets.cxx:136
 AliGenReaderEcalJets.cxx:137
 AliGenReaderEcalJets.cxx:138
 AliGenReaderEcalJets.cxx:139
 AliGenReaderEcalJets.cxx:140
 AliGenReaderEcalJets.cxx:141
 AliGenReaderEcalJets.cxx:142
 AliGenReaderEcalJets.cxx:143
 AliGenReaderEcalJets.cxx:144
 AliGenReaderEcalJets.cxx:145
 AliGenReaderEcalJets.cxx:146
 AliGenReaderEcalJets.cxx:147
 AliGenReaderEcalJets.cxx:148
 AliGenReaderEcalJets.cxx:149
 AliGenReaderEcalJets.cxx:150
 AliGenReaderEcalJets.cxx:151
 AliGenReaderEcalJets.cxx:152
 AliGenReaderEcalJets.cxx:153
 AliGenReaderEcalJets.cxx:154
 AliGenReaderEcalJets.cxx:155
 AliGenReaderEcalJets.cxx:156
 AliGenReaderEcalJets.cxx:157
 AliGenReaderEcalJets.cxx:158
 AliGenReaderEcalJets.cxx:159
 AliGenReaderEcalJets.cxx:160
 AliGenReaderEcalJets.cxx:161
 AliGenReaderEcalJets.cxx:162
 AliGenReaderEcalJets.cxx:163
 AliGenReaderEcalJets.cxx:164
 AliGenReaderEcalJets.cxx:165
 AliGenReaderEcalJets.cxx:166
 AliGenReaderEcalJets.cxx:167
 AliGenReaderEcalJets.cxx:168
 AliGenReaderEcalJets.cxx:169
 AliGenReaderEcalJets.cxx:170
 AliGenReaderEcalJets.cxx:171
 AliGenReaderEcalJets.cxx:172
 AliGenReaderEcalJets.cxx:173
 AliGenReaderEcalJets.cxx:174
 AliGenReaderEcalJets.cxx:175
 AliGenReaderEcalJets.cxx:176
 AliGenReaderEcalJets.cxx:177
 AliGenReaderEcalJets.cxx:178
 AliGenReaderEcalJets.cxx:179
 AliGenReaderEcalJets.cxx:180
 AliGenReaderEcalJets.cxx:181
 AliGenReaderEcalJets.cxx:182
 AliGenReaderEcalJets.cxx:183
 AliGenReaderEcalJets.cxx:184
 AliGenReaderEcalJets.cxx:185
 AliGenReaderEcalJets.cxx:186
 AliGenReaderEcalJets.cxx:187
 AliGenReaderEcalJets.cxx:188
 AliGenReaderEcalJets.cxx:189
 AliGenReaderEcalJets.cxx:190
 AliGenReaderEcalJets.cxx:191
 AliGenReaderEcalJets.cxx:192
 AliGenReaderEcalJets.cxx:193
 AliGenReaderEcalJets.cxx:194
 AliGenReaderEcalJets.cxx:195
 AliGenReaderEcalJets.cxx:196
 AliGenReaderEcalJets.cxx:197
 AliGenReaderEcalJets.cxx:198
 AliGenReaderEcalJets.cxx:199
 AliGenReaderEcalJets.cxx:200
 AliGenReaderEcalJets.cxx:201
 AliGenReaderEcalJets.cxx:202
 AliGenReaderEcalJets.cxx:203
 AliGenReaderEcalJets.cxx:204
 AliGenReaderEcalJets.cxx:205
 AliGenReaderEcalJets.cxx:206
 AliGenReaderEcalJets.cxx:207
 AliGenReaderEcalJets.cxx:208
 AliGenReaderEcalJets.cxx:209
 AliGenReaderEcalJets.cxx:210
 AliGenReaderEcalJets.cxx:211
 AliGenReaderEcalJets.cxx:212