LCOV - code coverage report
Current view: top level - EVGEN - AliGenReaderEcalHijing.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 76 1.3 %
Date: 2016-06-14 17:26:59 Functions: 1 10 10.0 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : /* $Id$ */
      17             : //
      18             : // Realisation of AliGenReader to be used with AliGenExtFile
      19             : // It reads Hijing events from a ntuple like event structure.
      20             : // The event format is defined in Init()
      21             : // NextEvent() is used to loop over events and NextParticle() to loop over particles.  
      22             : // Author: andreas.morsch@cern.ch
      23             : //
      24             : #include <TFile.h>
      25             : #include <TParticle.h>
      26             : #include <TDatabasePDG.h>
      27             : #include <TTree.h>
      28             : 
      29             : #include "AliGenReaderEcalHijing.h"
      30             : 
      31           6 : ClassImp(AliGenReaderEcalHijing)
      32             : 
      33           0 : AliGenReaderEcalHijing::AliGenReaderEcalHijing():
      34           0 :     fNcurrent(0),
      35           0 :     fNparticle(0),
      36           0 :     fTreeNtuple(0),
      37           0 :     fNjatt(0),
      38           0 :     fNahij(0),
      39           0 :     fNphij(0)
      40           0 : {
      41             :   // Default constructor
      42           0 :   for (Int_t i = 0; i < 10000; i++) {
      43           0 :     fKhij[i]  = 0;     
      44           0 :     fPxhij[i] = 0.;    
      45           0 :     fPyhij[i] = 0.;    
      46           0 :     fPzhij[i] = 0.;
      47           0 :     fEhij[i]  = 0.;     
      48             :   }
      49           0 : }
      50             : 
      51             : AliGenReaderEcalHijing::AliGenReaderEcalHijing(const AliGenReaderEcalHijing &reader):
      52           0 :     AliGenReader(reader),
      53           0 :     fNcurrent(0),
      54           0 :     fNparticle(0),
      55           0 :     fTreeNtuple(0),
      56           0 :     fNjatt(0),
      57           0 :     fNahij(0),
      58           0 :     fNphij(0)
      59           0 : {
      60             :     // Copy constructor
      61           0 :   for (Int_t i = 0; i < 10000; i++) {
      62           0 :     fKhij[i]  = 0;     
      63           0 :     fPxhij[i] = 0.;    
      64           0 :     fPyhij[i] = 0.;    
      65           0 :     fPzhij[i] = 0.;
      66           0 :     fEhij[i]  = 0.;     
      67             :   }
      68           0 :     reader.Copy(*this);
      69           0 : }
      70             : 
      71             : void AliGenReaderEcalHijing::Init() 
      72             : {
      73             : //
      74             : // reset the existing file environment and open a new root file if
      75             : // the pointer to the Fluka tree is null
      76             :     
      77             :     TFile *pFile=0;
      78           0 :     if (!pFile) {
      79           0 :         pFile = new TFile(fFileName);
      80           0 :         pFile->cd();
      81           0 :         printf("\n I have opened %s file \n", fFileName);
      82           0 :     }
      83             : // get the tree address in the Fluka boundary source file
      84           0 :     fTreeNtuple = (TTree*)gDirectory->Get("h2");
      85             :     TTree *h2=fTreeNtuple;
      86           0 :     h2->SetMakeClass(1);
      87             : //Set branch addresses
      88           0 :     h2->SetBranchAddress("njatt", &fNjatt);
      89           0 :     h2->SetBranchAddress("nahij", &fNahij);
      90           0 :     h2->SetBranchAddress("nphij", &fNphij);
      91           0 :     h2->SetBranchAddress("khij",   fKhij) ;
      92           0 :     h2->SetBranchAddress("pxhij",  fPxhij);
      93           0 :     h2->SetBranchAddress("pyhij",  fPyhij);
      94           0 :     h2->SetBranchAddress("pzhij",  fPzhij);
      95           0 :     h2->SetBranchAddress("ehij",   fEhij) ;
      96           0 : }
      97             : 
      98             : Int_t AliGenReaderEcalHijing::NextEvent() 
      99             : {
     100             : // Read the next event  
     101             :     Int_t nTracks=0, nread=0;
     102             :     
     103           0 :     TFile* pFile = fTreeNtuple->GetCurrentFile();
     104           0 :     pFile->cd();
     105             : 
     106           0 :     Int_t nentries = (Int_t) fTreeNtuple->GetEntries();
     107           0 :     if (fNcurrent < nentries) {
     108           0 :         Int_t nb = (Int_t)fTreeNtuple->GetEvent(fNcurrent);
     109             :         nread += nb;
     110           0 :         fNcurrent++;
     111           0 :         printf("\n Next event contains %d tracks! \n", fNphij);
     112           0 :         nTracks    = fNphij;
     113           0 :         fNparticle = 0;
     114             :         return nTracks;
     115             :     }
     116           0 :     return 0;
     117           0 : }
     118             : 
     119             : TParticle* AliGenReaderEcalHijing::NextParticle() 
     120             : {
     121             : // Read the next particle
     122             : 
     123             :     Float_t p[4];
     124           0 :     Int_t ipart = fKhij[fNparticle];
     125           0 :     p[0] = fPxhij[fNparticle];
     126           0 :     p[1] = fPyhij[fNparticle];      
     127           0 :     p[2] = fPzhij[fNparticle];
     128           0 :     p[3] = fEhij[fNparticle];
     129             :     
     130           0 :     Double_t amass = TDatabasePDG::Instance()->GetParticle(ipart)->Mass();
     131             : 
     132           0 :     if(p[3] <= amass) {
     133           0 :         Warning("Generate","Particle %d  E = %f mass = %f \n",
     134             :                 ipart, p[3], amass);
     135           0 :     } 
     136             :     TParticle* particle = 
     137           0 :         new TParticle(ipart, 0, -1, -1, -1, -1, p[0], p[1], p[2], p[3], 
     138             :                       0., 0., 0., 0.);
     139           0 :     fNparticle++;
     140           0 :     return particle;
     141           0 : }
     142             : 
     143             : 
     144             : 
     145             : AliGenReaderEcalHijing& AliGenReaderEcalHijing::operator=(const  AliGenReaderEcalHijing& rhs)
     146             : {
     147             : // Assignment operator
     148           0 :     rhs.Copy(*this);
     149           0 :     return (*this);
     150             : }
     151             : 
     152             : void AliGenReaderEcalHijing::Copy(TObject&) const
     153             : {
     154             :     //
     155             :     // Copy 
     156             :     //
     157           0 :     Fatal("Copy","Not implemented!\n");
     158           0 : }
     159             : 
     160             : 
     161             : 
     162             : 
     163             : 
     164             : 

Generated by: LCOV version 1.11