00001
00002
00003
00004
00005
00006
00007
00008 #include "SchedulerExample.h"
00009
00010 #include "Stiostream.h"
00011
00012 #include "TH1.h"
00013 #include "TH2.h"
00014 #include "TH3.h"
00015 #include "TChain.h"
00016 #include "TSystem.h"
00017 #include "TFile.h"
00018
00019 #include "StMuDSTMaker/COMMON/StMuDebug.h"
00020 #include "StMuDSTMaker/COMMON/StMuDst.h"
00021 #include "StMuDSTMaker/COMMON/StMuTrack.h"
00022 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00023 #include "StMuDSTMaker/COMMON/StMuDbReader.h"
00024 #include "StMuDSTMaker/COMMON/StMuTimer.h"
00025 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
00026
00027 #include "StarClassLibrary/SystemOfUnits.h"
00028 #include "StarClassLibrary/StHelixD.hh"
00029 #include "StarClassLibrary/StPhysicalHelixD.hh"
00030 #include "StarClassLibrary/StThreeVectorF.hh"
00031 #include "StarClassLibrary/StThreeVectorD.hh"
00032
00033
00034 #define __ZPOS__ 25.
00035
00036 ClassImp(SchedulerExample)
00037
00038 SchedulerExample::SchedulerExample(const char* outputFile) {
00039 mOutputFile = string(outputFile);
00040 mPt = new TH1D("mPt","pt-distribution",100,0.,2.);
00041 mEta = new TH1D("mEta","eta-distribution",100,-2.,2.);
00042 mRefMultPos = new TH1D("mRefMultPos", "ref mult pos", 400,0.,400.);
00043 mRefMultNeg = new TH1D("mRefMultNeg", "ref mult neg", 400,0.,400.);
00044 mRefMult = new TH1D("mRefMult", "ref mult", 400,0.,400.);
00045 mVertex = new TH3D("mVertex", "vertex", 100,-5.,+5., 100,-5.,+5., 100,-50.,+50.);
00046 }
00047
00048
00049 SchedulerExample::~SchedulerExample(){
00050 delete mPt;
00051 delete mEta;
00052 delete mRefMultPos;
00053 delete mRefMultNeg;
00054 delete mRefMult;
00055 delete mVertex;
00056 }
00057
00058
00059 Int_t SchedulerExample::Init() {
00060 mMuDstMaker = (StMuDstMaker*)GetMaker("MuDstMaker");
00061 if (!mMuDstMaker) return 1;
00062 return 0;
00063 }
00064
00065
00066 Int_t SchedulerExample::Finish() {
00067 cout << " SchedulerExample::Finish() " << endl;
00068 TFile f(mOutputFile.c_str(),"recreate");
00069 mPt->Write();
00070 mEta->Write();
00071 mRefMultPos->Write();
00072 mRefMultNeg->Write();
00073 mRefMult->Write();
00074 mVertex->Write();
00075 f.Close();
00076 cout << " SchedulerExample::Finish() file written" << endl;
00077 return 0;
00078 }
00079
00080 Int_t SchedulerExample::Make() {
00081 mMuDst = mMuDstMaker->muDst();
00082 if (!mMuDst) return 1;
00083
00084
00085
00086 StMuEvent* ev = mMuDst->event();
00087
00088 StThreeVectorF pos = ev->primaryVertexPosition();
00089 mVertex->Fill( pos.x(),pos.y(),pos.z() );
00090
00091 if ( fabs(pos.z())<__ZPOS__ ) {
00092 mRefMultPos->Fill( ev->refMultPos() );
00093 mRefMultNeg->Fill( ev->refMultNeg() );
00094 mRefMult->Fill( ev->refMult() );
00095
00096 int numberOfPrimaries= mMuDst->primaryTracks()->GetEntries();
00097 StMuTrack* t;
00098 for (int l=0; l<numberOfPrimaries; l++) {
00099 t = mMuDst->primaryTracks(l);
00100 mPt->Fill( t->pt() );
00101 mEta->Fill( t->eta() );
00102 }
00103 }
00104
00105
00106 return 0;
00107 }
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125