00001
00002
00003
00004 #ifndef STJEDEFAULTJETTREEWRITER_H
00005 #define STJEDEFAULTJETTREEWRITER_H
00006
00007 #include "StjeTreeWriter.h"
00008
00009 class StMuDstMaker;
00010 class StJets;
00011 class StProtoJet;
00012 class StFourPMaker;
00013
00014 class TTree;
00015 class TFile;
00016
00017 #include <string>
00018 #include <vector>
00019 #include <list>
00020
00021 class StjeDefaultJetTreeWriter : public StjeTreeWriter {
00022
00023 public:
00024 StjeDefaultJetTreeWriter(StMuDstMaker& uDstMaker, std::string outFileName);
00025 virtual ~StjeDefaultJetTreeWriter();
00026
00027 void Init();
00028 void Finish();
00029
00030 void addJetFinder(StFourPMaker* fourPMaker, const std::vector<const AbstractFourVec*>* particleList, std::list<StProtoJet>* protoJetList, const char* name, StJets* stjets = 0);
00031
00032 TTree* jetTree() const { return _jetTree; }
00033
00034 StJets *getLastStJets() { return _analyzerCtlList[_analyzerCtlList.size() - 1]._jets; }
00035
00036 private:
00037
00038 void fillJetTreeHeader(int iAnalyzer);
00039 void fillJetTree(int iAnalyzer, int iVertex);
00040 void fillJetTreeForOneJetFindingAlgorithm(StJets& stjets, std::list<StProtoJet>* protoJetList, StFourPMaker* fourPMaker);
00041 void fillJet(StJets& stjets, StProtoJet& pj);
00042
00043 struct AnalyzerCtl {
00044 std::string _branchName;
00045 StFourPMaker* _fourPMaker;
00046 std::list<StProtoJet>* _protoJetList;
00047 StJets *_jets;
00048 };
00049
00050 StMuDstMaker& _uDstMaker;
00051 std::string _OutFileName;
00052 TTree *_jetTree;
00053 TFile *_outFile;
00054
00055 std::vector<AnalyzerCtl> _analyzerCtlList;
00056 };
00057
00058 #endif // STJEDEFAULTJETTREEWRITER_H
00059
00060