00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ST_JE_JET_EVENT_TREE_WRITER_H
00010 #define ST_JE_JET_EVENT_TREE_WRITER_H
00011
00012 #include "StjeTreeWriter.h"
00013
00014 class StJets;
00015 class StProtoJet;
00016 class StFourPMaker;
00017 class StJetEvent;
00018 class StJetVertex;
00019 class StJetCandidate;
00020 class StMuPrimaryVertex;
00021
00022 class TTree;
00023 class TFile;
00024
00025 #include <string>
00026 #include <vector>
00027 #include <list>
00028
00029 using namespace std;
00030
00031 class StjeJetEventTreeWriter : public StjeTreeWriter {
00032
00033 public:
00034
00035 StjeJetEventTreeWriter(const char* outFileName);
00036 virtual ~StjeJetEventTreeWriter() {}
00037
00038 void Init();
00039 void Finish();
00040
00041 void addJetFinder(StFourPMaker* fourPMaker, const vector<const AbstractFourVec*>* particleList, list<StProtoJet>* protoJetList, const char* name, StJets* = 0);
00042
00043 TTree* jetTree() const { return _jetTree; }
00044
00045 void fillJetTreeHeader(int iAnalyzer);
00046 void fillJetTree(int iAnalyzer, int iVertex);
00047
00048 private:
00049
00050 void fillJetTreeForOneVertex(StJetEvent* jetEvent, list<StProtoJet>* protoJetList, StFourPMaker* fourPMaker, int iVertex);
00051 StJetCandidate* fillJet(StJetEvent* jetEvent, StJetVertex* jetVertex, StProtoJet& protojet);
00052 void copyVertex(const StMuPrimaryVertex* muVertex, StJetVertex* jetVertex);
00053
00054 struct AnalyzerCtl {
00055 string _branchName;
00056 StFourPMaker* _fourPMaker;
00057 list<StProtoJet>* _protoJetList;
00058 StJetEvent* _jetEvent;
00059 };
00060
00061 vector<AnalyzerCtl> _analyzerCtlList;
00062
00063 TString _OutFileName;
00064 TTree* _jetTree;
00065 TFile* _outFile;
00066
00067 ClassDef(StjeJetEventTreeWriter, 1);
00068 };
00069
00070 #endif // ST_JE_JET_EVENT_TREE_WRITER_H