00001 #include "StMaker.h"
00002
00003
00004 #include <StMuDSTMaker/COMMON/StMuDstMaker.h>
00005 #include <StMuDSTMaker/COMMON/StMuDst.h>
00006 #include <StMuDSTMaker/COMMON/StMuEvent.h>
00007
00008 #include <StTriggerUtilities/StTriggerSimuMaker.h>
00009 #include <StTriggerUtilities/StTriggerSimuResult.h>
00010 #include <StTriggerUtilities/Bemc/StBemcTriggerSimu.h>
00011
00012 #include <TChain.h>
00013 #include <TDirectory.h>
00014
00015 #include <libgen.h>
00016
00017 #include <string>
00018 #include <cstring>
00019
00020 using namespace std;
00021
00022 class StjSimuBBCMaker : public StMaker {
00023
00024 public:
00025
00026 StjSimuBBCMaker(const Char_t *name, TDirectory* file, StMuDstMaker* uDstMaker, int trgID)
00027 : StMaker(name), _file(file), _uDstMaker(uDstMaker), _trgID(trgID)
00028 { }
00029
00030 virtual ~StjSimuBBCMaker() { }
00031
00032 const char* GetCVS() const
00033 {static const char cvs[]="Tag $Name: $ $Id: StjSimuBBCMaker.C,v 1.2 2008/11/11 23:56:59 tai Exp $ built "__DATE__" "__TIME__; return cvs;}
00034
00035 private:
00036
00037 TDirectory* _file;
00038 TTree* _tree;
00039
00040 int _trgID;
00041
00042 StMuDstMaker* _uDstMaker;
00043
00044 Int_t _runNumber;
00045 Int_t _eventId;
00046 Int_t _bbc;
00047 Double_t _vertexZ;
00048
00049 public:
00050
00051 Int_t Init()
00052 {
00053 _file->cd();
00054 _tree = new TTree("simuBBC", "simuBBC");
00055 _tree->Branch("runNumber" , &_runNumber , "runNumber/I" );
00056 _tree->Branch("eventId" , &_eventId , "eventId/I" );
00057 _tree->Branch("bbc" , &_bbc , "bbc/I" );
00058 _tree->Branch("vertexZ" , &_vertexZ , "vertexZ/D" );
00059 return kStOk;
00060 }
00061
00062 Int_t Make()
00063 {
00064 _runNumber = _uDstMaker->muDst()->event()->runId();
00065 _eventId = _uDstMaker->muDst()->event()->eventId();
00066 _vertexZ = _uDstMaker->muDst()->event()->primaryVertexPosition().z();
00067
00068 StTriggerSimuMaker* trigSimu = dynamic_cast<StTriggerSimuMaker*>(GetMaker("StarTrigSimu"));
00069 StTriggerSimuResult trigResult = trigSimu->detailedResult(_trgID);
00070
00071 _bbc = trigResult.bbcDecision();
00072
00073 _tree->Fill();
00074 return kStOk;
00075 }
00076
00077 Int_t Finish()
00078 {
00079 _tree->BuildIndex("runNumber", "eventId");
00080 return kStOk;
00081 }
00082 ClassDef(StjSimuBBCMaker, 0)
00083 };