00001 #ifndef __StGammaTreeReader_h__
00002 #define __StGammaTreeReader_h__
00003
00004 #include "StMaker.h"
00005 #include "StGammaEvent.h"
00006
00007 #include "TChain.h"
00008 #include "TString.h"
00009 #include <map>
00010
00011 class StGammaTreeReader : public StMaker
00012 {
00013
00014 public:
00015
00016 StGammaTreeReader(const Char_t *name="mGammaTree", const Char_t *bname="gammas");
00017 ~StGammaTreeReader(){ };
00018
00020 void chainFile( const Char_t *name, const Char_t *matches=".root" );
00021
00022 StGammaEvent *event(){ return mEvent; }
00023
00024 Int_t Init();
00025 Int_t Make();
00026 void Clear(Option_t *opts="");
00027
00029 Long64_t getNumberOfEvents(){ return mChain->GetEntries(); }
00030
00032 Int_t getEvent(Long64_t entry);
00035 Int_t getEvent(Int_t runNumber, Int_t eventNumber );
00036
00038 TChain *chain(){ return mChain; }
00039
00041 void Test();
00042
00043 virtual const char *GetCVS() const {
00044 static const char cvs[]="Tag $Name: $ $Id: StGammaTreeReader.h,v 1.2 2008/03/07 18:02:25 jwebb Exp $ built "__DATE__" "__TIME__ ;
00045 return cvs;
00046 }
00047
00048
00049 private:
00050 protected:
00051
00052 Int_t index;
00053 Int_t mNumberOfFiles;
00054 Bool_t mIndexed;
00055 void buildIndex();
00056 std::map<Long64_t,Long64_t> mIndex;
00057
00058 Long64_t key( Int_t run, Int_t event );
00059
00060 TChain *mChain;
00061 StGammaEvent *mEvent;
00062 TString mBranchName;
00064 void treeDetails();
00065 Bool_t mFirst;
00066
00067 ClassDef(StGammaTreeReader,1);
00068
00069
00070 };
00071
00072 #endif