00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #if !defined(ST_SPIN_TREE_READER)
00011 #define ST_SPIN_TREE_READER
00012
00013 #include <set>
00014
00015 #include "TChain.h"
00016 #include "TEventList.h"
00017
00018 #include "StSpinPool/StJetSkimEvent/StJetSkimEvent.h"
00019 #include "StSpinPool/StJets/StJet.h"
00020 #include "StSpinPool/StChargedPionAnalysisMaker/StChargedPionTrack.h"
00021 #include "TPi0Event.h"
00022 #include "StPrimaryElectron.h"
00023 #include "StGlobalElectron.h"
00024
00025
00026 class StSpinTreeReader {
00027 public:
00028 StSpinTreeReader(const char *treeName = "spinTree");
00029 virtual ~StSpinTreeReader();
00030 StSpinTreeReader(const StSpinTreeReader &other);
00031 StSpinTreeReader& operator=(const StSpinTreeReader &rhs);
00032
00033 void selectDataset(const char *path);
00034 void selectFile(const char *path);
00035 void selectFile(std::string & path);
00036
00037 long GetEntries();
00038 void GetEntry(long i);
00039
00040
00041 bool connectJets;
00042 bool connectNeutralJets;
00043 bool connectChargedPions;
00044 bool connectBemcPions;
00045 bool connectBemcElectrons;
00046 bool connectEemcPions;
00047
00048
00049 void selectRunlist(const char *path);
00050 void selectRun(int runnumber);
00051 void removeRun(int runnumber);
00052
00053 void selectTrigger(int trigger);
00054 bool requireDidFire;
00055 bool requireShouldFire;
00056
00057 const TEventList* eventList() const {return mEventList;}
00058 void setEventList(TEventList *elist) {mEventList = elist;}
00059
00060
00061 const TChain* chain() const {return mChain;}
00062
00063 const StJetSkimEvent* event() const {return mEvent;}
00064
00065 int nJets() {return mConeJets->GetEntries();}
00066 const TClonesArray* jets() const {return mConeJets;}
00067 const StJet* jet(int i) const {return (StJet*)mConeJets->At(i);}
00068
00069 int nNeutralJets() {return mConeJetsEMC->GetEntries();}
00070 const TClonesArray* neutralJets() const {return mConeJetsEMC;}
00071 const StJet* neutralJet(int i) const {return (StJet*)mConeJetsEMC->At(i);}
00072
00073 int nChargedPions() {return mChargedPions->GetEntries();}
00074 const TClonesArray* chargedPions() const {return mChargedPions;}
00075 const StChargedPionTrack* chargedPion(int i) const {return (StChargedPionTrack*)mChargedPions->At(i);}
00076
00077 int nBemcPions() {return mBemcPions->GetEntries();}
00078 const TClonesArray* bemcPions() const {return mBemcPions;}
00079 const TPi0Candidate* bemcPion(int i) const {return (TPi0Candidate*)mBemcPions->At(i);}
00080
00081 int nBemcElectrons() {return mBemcElectrons->GetEntries();}
00082 const TClonesArray* bemcElectrons() const {return mBemcElectrons;}
00083 const StPrimaryElectron* bemcElectron(int i) const {return (StPrimaryElectron*)mBemcElectrons->At(i);}
00084
00085 int nBemcGlobalElectrons() {return mBemcGlobalElectrons->GetEntries();}
00086 const TClonesArray* bemcGlobalElectrons() const {return mBemcGlobalElectrons;}
00087 const StGlobalElectron* bemcGlobalElectron(int i) const {return (StGlobalElectron*)mBemcGlobalElectrons->At(i);}
00088
00089
00090
00091
00092
00093 private:
00094 StJetSkimEvent *mEvent;
00095 TClonesArray *mConeJets;
00096 TClonesArray *mConeJetsEMC;
00097 TClonesArray *mChargedPions;
00098 TClonesArray *mBemcPions;
00099 TClonesArray *mBemcElectrons;
00100 TClonesArray *mBemcGlobalElectrons;
00101 TClonesArray *mEemcPions;
00102
00103 std::map<int,std::string> mFileList;
00104 std::set<int> mRunList;
00105 std::set<int> mTriggerList;
00106
00107 TChain *mChain;
00108 TEventList *mEventList;
00109
00110
00111 TChain *mChainConeJets;
00112 TChain *mChainConeJetsEMC;
00113 TChain *mChainChargedPions;
00114 TChain *mChainBemcPions;
00115 TChain *mChainBemcElectrons;
00116 TChain *mChainEemcPions;
00117
00118 std::string mCurrentFileName;
00119
00120 void connect();
00121 bool mIsConnected;
00122
00123 ClassDef(StSpinTreeReader,1)
00124 };
00125
00126 #endif