ROOT logo
using namespace std;
#include "hkinegeantreader.h"
#include "hgeantkine.h"
#include "hgeantheader.h"
#include "hdebug.h"
#include "hades.h"
#include "hevent.h"
#include "hrecevent.h"
#include "hpartialevent.h"
#include "hlinearcategory.h"
#include "hlocation.h"
#include "TDirectory.h"
#include <iostream> 
#include <iomanip>

//*-- Author : R. Holzmann
//*-- Modified: 13/12/99 by R. Holzmann

//_HADES_CLASS_DESCRIPTION 
/////////////////////////////////////////////////
//  HKineGeantReader for HGeant Root KINE branch
//  Works only for splitlevel = 2 .
//
/////////////////////////////////////////////////

ClassImp(HKineGeantReader)

HKineGeantReader::HKineGeantReader(void) {
  fEventId = 0;
}

HKineGeantReader::~HKineGeantReader(void) {
}


Bool_t HKineGeantReader::init(void) {
//  Set up categories and HGeant input tree
//  (this still needs splitlevel=2 on input file)
//
  fEventId = 0;
  fGeantKineCat = (HLinearCategory*)(gHades->getCurrentEvent()
                          ->getCategory(catGeantKine));
  if (!fGeantKineCat) {
     if (!fInputFile) {
        t = NULL;
        return kFALSE;   // no category, no input file !
     }
     if (fInputFile->cd("dirSimul")) { // change dir, read category definition
        fGeantKineCat=(HLinearCategory*)gDirectory->Get("HGeantKine");
        fInputFile->cd("..");        // go back up one level
     } else {
        fGeantKineCat = new HLinearCategory("HGeantKine",10000);
     }
     gHades->getCurrentEvent()->
               addCategory(catGeantKine,fGeantKineCat,"Simul");

     printf("\n%s linear category created for HGeant input\n",
              fGeantKineCat->getClassName());
  }
  if (!fInputFile) {
     t = NULL;
     return kTRUE;   // no input file !
  } 

  if ((t=(TTree*)fInputFile->Get("T")) == NULL) return kFALSE;

  t->SetBranchAddress("HGeantKine",&fGeantKineCat); // connect to KINE category
  t->SetBranchStatus("HGeantKine",kTRUE);

  Int_t splitLevel = 2;
  Char_t sl = *(strchr(t->GetTitle(),'.')+1);
  switch (sl) {
     case '0' : splitLevel = 0; break;
     case '1' : splitLevel = 1; break;
     case '2' : splitLevel = 2; break;
     default  : ;
  }
  fGeantKineCat->activateBranch(t,splitLevel);

  HRecEvent* fEvent = (HRecEvent*)(gHades->getCurrentEvent());
  HGeantHeader* fSimulHeader = (HGeantHeader*)(fEvent->getPartialEvent(catSimul)
                                                     ->getSubHeader());
  if(!fSimulHeader) {
     fEvent->getPartialEvent(catSimul)->setSubHeader(new HGeantHeader());
     fSimulHeader = (HGeantHeader*)(fEvent->getPartialEvent(catSimul)->getSubHeader());
  }
  t->SetBranchAddress("Simul.Header",&fSimulHeader); // connect Simul header explicitly
  t->SetBranchStatus("Simul.Header",1);

  t->SetBranchAddress("Event",&fEvent);   // connect event explicitly to get at header
  t->SetBranchStatus("Event",1);
  
  if (gHades->getOutputFile() != NULL) gHades->getOutputFile()->cd(); // !!!
  return kTRUE;
}


Bool_t HKineGeantReader::execute(void) {
//  Read one entry from tree
//
  if(t) {   // input tree does exist
     if(t->GetEntry(fEventId)==0) return kFALSE;  // read 1 entry from tree
  }

  fEventId++;

  return kTRUE;  // return type is Bool_t
}




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