00001
00016
00017
00018 #include "TFile.h"
00019 #include "StMessMgr.h"
00020 #include "TH1.h"
00021
00022 #include "StMuDSTMaker/COMMON/StMuTrack.h"
00023 #include "StMuDSTMaker/COMMON/StMuDst.h"
00024 #include "StMuDSTMaker/COMMON/StMuDebug.h"
00025 #include "StMuAnalysisMaker.h"
00026
00027
00028 void muEventInfo(StMuEvent&, const int&);
00029
00030 ClassImp(StMuAnalysisMaker)
00031
00032
00033 StMuAnalysisMaker::StMuAnalysisMaker(const Char_t *name) : StMaker(name)
00034 { mEventCounter = 0; mFile = 0; }
00035
00036 StMuAnalysisMaker::~StMuAnalysisMaker() { }
00037
00038
00039 Int_t StMuAnalysisMaker::Init()
00040 {
00041
00042 mFileName = "muAnalysis.root";
00043
00044 mGlobalPt = new TH1D("globalPt","globalPt",100,0.,3.);
00045 mPrimaryPt = new TH1D("primaryPt","primaryPt",100,0.,3.);
00046 mL3Pt = new TH1D("l3Pt","l3Pt",100,0.,3.);
00047 mRefMult = new TH1D("refMult","refMult",100,0.,100.);
00048
00049 return StMaker::Init();
00050 }
00051
00052
00053 void StMuAnalysisMaker::Clear(Option_t *opt)
00054 {
00055 StMaker::Clear();
00056 }
00057
00058
00059 Int_t StMuAnalysisMaker::Finish()
00060 {
00061
00062 cout << "StMuAnalysisMaker::Finish()\n";
00063 cout << "\tProcessed " << mEventCounter << " events." << endl;
00064
00065
00066 mFile = new TFile(mFileName.c_str(), "RECREATE");
00067 cout << "\tHistograms will be stored in file '"
00068 << mFileName.c_str() << "'" << endl;
00069
00070 mGlobalPt->Write();
00071 mPrimaryPt->Write();
00072 mL3Pt->Write();
00073 mRefMult->Write();
00074
00075
00076 if( mFile){
00077 mFile->Write();
00078 mFile->Close();
00079 }
00080
00081 return kStOK;
00082 }
00083
00084
00085 Int_t StMuAnalysisMaker::Make()
00086 {
00087 mEventCounter++;
00088
00089 DEBUGVALUE2(mEventCounter);
00090
00091 StMuDst* mu;
00092 mu = (StMuDst*) GetInputDS("MuDst");
00093 DEBUGVALUE2(mu);
00094
00095 if (!mu){
00096 gMessMgr->Warning() << "StMuAnalysisMaker::Make : No MuDst" << endm;
00097 return kStOK;
00098 }
00099
00100
00101 StMuEvent* muEvent;
00102 muEvent = (StMuEvent*) mu->event();
00103 if(muEvent) {
00104 int refMult = muEvent->refMult();
00105 mRefMult->Fill(refMult);
00106 }
00107
00108
00109 StMuTrack* muTrack;
00110 int nTracks;
00111 nTracks= mu->globalTracks()->GetEntries();
00112 printf("Global track # = %d\n",nTracks);
00113 for (int l=0; l<nTracks; l++) {
00114 muTrack = (StMuTrack*) mu->globalTracks(l);
00115 if(muTrack) if (accept(muTrack)) mGlobalPt->Fill(muTrack->pt());
00116 }
00117 nTracks= mu->primaryTracks()->GetEntries();
00118 printf("Primary track # = %d\n",nTracks);
00119 for (int l=0; l<nTracks; l++) {
00120 muTrack = (StMuTrack*) mu->primaryTracks(l);
00121 if(muTrack) if (accept(muTrack)) mPrimaryPt->Fill(muTrack->pt());
00122 }
00123 nTracks= mu->l3Tracks()->GetEntries();
00124 printf("L3 track # = %d\n",nTracks);
00125 for (int l=0; l<nTracks; l++) {
00126 muTrack = (StMuTrack*) mu->l3Tracks(l);
00127 if(muTrack) if (accept(muTrack)) mL3Pt->Fill(muTrack->pt());
00128 }
00129
00130
00131 if(muEvent) muEventInfo(*muEvent, mEventCounter);
00132
00133 return kStOK;
00134 }
00135
00136
00137 bool StMuAnalysisMaker::accept(StMuTrack* track)
00138 {
00139
00140 return track && track->flag() >= 0;
00141 }