00001 #include "StHiBaseAnalysis.h"
00002
00003
00004
00005 StHiBaseAnalysis::StHiBaseAnalysis(const char* inDir, const char* outRootName)
00006 : mInputDir(inDir),mOutRootName(outRootName),
00007 mNEvent(0), mNFile(0),
00008 mDebug(0), mNEventAccepted(0),
00009 mNHiPtTrack(0)
00010
00011 {
00012 mHiMicroChain = 0;
00013 mHiMicroEvent = 0;
00014 mOutRootFile = 0;
00015 mBenchmark=0;
00016 }
00017
00018
00019
00020 StHiBaseAnalysis::~StHiBaseAnalysis()
00021 {
00022 mHiMicroChain = 0;
00023 mHiMicroEvent = 0;
00024 mOutRootFile = 0;
00025 delete mBenchmark; mBenchmark=0;
00026 }
00027
00028
00029
00030
00031
00032
00033
00034 Int_t
00035 StHiBaseAnalysis::Init()
00036 {
00037 mBenchmark = new TBenchmark();
00038 mBenchmark->Start("timer");
00039
00040 Int_t stat=0;
00041
00042 cout << "n event : " << mNEvent << endl;
00043
00044 Cut::ShowCuts();
00045
00046 cout << "init more" << endl;
00047 stat += initMore();
00048
00049 cout << "debug : " << mDebug << endl << endl;
00050
00051 initChain();
00052
00053
00054
00055 cout << "\nOutput file = " << mOutRootName << endl;
00056 mOutRootFile = new TFile(mOutRootName.Data(),"RECREATE");
00057 if(!mOutRootFile) {
00058 cout << "Cannot open output root file " << mOutRootName << endl;
00059 stat++;
00060 }
00061
00062
00063
00064 initHistograms();
00065
00066 return stat;
00067 }
00068
00069
00070
00071 Int_t StHiBaseAnalysis::initMore()
00072 {
00073 return 0;
00074
00075 }
00076
00077
00078
00079 void
00080 StHiBaseAnalysis::initChain()
00081 {
00082 cout << "StHiBaseAnalysis::initChain()" << endl;
00083
00084
00085
00086
00087
00088 mHiMicroChain = new TChain("StHiMicroTree");
00089 mHiMicroEvent = new StHiMicroEvent;
00090
00091
00092
00093
00094 mHiMicroChain->SetBranchAddress("StHiMicroEvent",&mHiMicroEvent);
00095
00096 IO io(mInputDir.Data(),"hipico.root");
00097 io.setNFile(mNFile);
00098 io.chain(mHiMicroChain);
00099
00100 }
00101
00102
00103 void
00104 StHiBaseAnalysis::Run()
00105 {
00106 if(mDebug)
00107 cout << "StHiBaseAnalysis::Run()" << endl;
00108
00109
00110
00111
00112 Int_t nEvent = (Int_t) mHiMicroChain->GetEntries();
00113
00114 if(mNEvent && mNEvent<nEvent) nEvent = mNEvent;
00115
00116 mNEvent = nEvent;
00117
00118 cout << "Total # of events " << nEvent << endl;
00119
00120
00121
00122 if(nEvent>10000) mDebug = 0;
00123
00124 Int_t display = 1000;
00125
00126
00127 for(Int_t iEvent=0; iEvent<nEvent; iEvent++){
00128
00129
00130
00131
00132 mHiMicroChain->GetEvent(iEvent);
00133
00134 if(mHiMicroEvent){
00135 if(iEvent%display==0){
00136 cout << "--------------------- event " << iEvent
00137 << "--------------------- " << endl;
00138 cout << "\tprimary vertex z : " << mHiMicroEvent->VertexZ() << endl;
00139 cout << "\tflow centrality : " << mHiMicroEvent->Centrality() << endl;
00140 cout << "\tL0TriggerWord : " << mHiMicroEvent->L0TriggerWord() << endl;
00141 if(mHiMicroEvent->L3UnbiasedTrigger())
00142 cout << "\tL3UnbiasedTrigger Event " << endl;
00143 if (mHiMicroEvent->L3RichTrigger())
00144 cout << "\tL3RichTrigger Event " << endl;
00145
00146 }
00147
00148
00149 fillEventHistograms();
00150
00151
00152
00153 if(acceptEvent(mHiMicroEvent)){
00154
00155 mNEventAccepted++;
00156
00157 if(iEvent%display==0) cout << "\tAccepted event" << endl;
00158
00159
00160 trackLoop();
00161 }
00162 else{
00163 if(iEvent%display==0) cout << "\tNot Accepted " << endl;
00164 }
00165 }
00166 else{
00167 cout << "##Cannot process event." << endl;
00168 }
00169 mHiMicroEvent->Clear();
00170 }
00171 }
00172
00173
00174
00175 void
00176 StHiBaseAnalysis::trackLoop()
00177 {
00178 if(mDebug)
00179 cout << "StHiBaseAnalysis::trackLoop()" << endl;
00180
00181 Int_t nTrack = mHiMicroEvent->NTrack();
00182 StHiMicroTrack* track;
00183
00184 for(Int_t i=0; i<nTrack; i++){
00185 track =(StHiMicroTrack*) mHiMicroEvent->tracks()->At(i);
00186
00187 }
00188
00189 if(mDebug)
00190 cout << "\ttracks : " << nTrack << endl;
00191
00192 }
00193
00194
00195 void
00196 StHiBaseAnalysis::fillEventHistograms()
00197 {
00198
00199 }
00200
00201
00202
00203 void
00204 StHiBaseAnalysis::initHistograms()
00205 {
00206
00207 }
00208
00209
00210
00211 Bool_t
00212 StHiBaseAnalysis::trackOk(StHiMicroTrack* track)
00213 {
00214 if(!track) {
00215 cout << "No track pointer?" << endl;
00216 return kFALSE;
00217 }
00218 return kTRUE;
00219 }
00220
00221
00222
00223 void
00224 StHiBaseAnalysis::Finish()
00225 {
00226 cout << "###StHiBaseAnalysis::Finish" << endl;
00227
00228 cout << "\tall : " << mNEvent << endl;
00229 cout << "\taccepted: " << mNEventAccepted << endl;
00230
00231 finishHistograms();
00232
00233 cout << "\tWriting " << mOutRootName << endl;
00234 mOutRootFile->Write();
00235 mOutRootFile->Close();
00236 cout << "\tDone" << endl;
00237
00238 mBenchmark->Show("timer");
00239
00240 }
00241
00242
00243 void
00244 StHiBaseAnalysis::finishHistograms()
00245 {
00246 }
00247
00248
00249
00250 Bool_t
00251 StHiBaseAnalysis::acceptEvent(StHiMicroEvent* event)
00252 {
00253 return CutRc::Accept(event);
00254
00255 }
00256
00257
00258
00259 ClassImp(StHiBaseAnalysis)