00001 class StChain;
00002 class StMuDstMaker;
00003 class St_db_Maker;
00004 class StEmcADCtoEMaker;
00005 class TH1F;
00006
00007
00008
00009
00010 StChain *mChain = 0;
00011 StMuDstMaker *mMuDstMaker = 0;
00012 St_db_Maker *mDb = 0;
00013 StEmcADCtoEMaker *bemcAdc2E = 0;
00014
00015 Int_t count = 0;
00016 Int_t stat = 0;
00017
00018 Int_t prescale = 1;
00019
00020 void makeHistFromMuDst( Int_t nevents = -1,
00021
00022
00023
00024 Char_t *name="10097097.lis",
00025 Char_t *ofile="temp.hist.root",
00026 Char_t *path = "",
00027 Int_t nfiles = 100
00028 )
00029 {
00030 int mRunNo=10103044;
00031
00032
00033 int triggerChoice=230531;
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 gROOT->Macro("loadMuDst.C");
00046 gSystem->Load("StDaqLib");
00047 gSystem->Load("StDetectorDbMaker");
00048 gSystem->Load("St_db_Maker");
00049 gSystem->Load("StDbUtilities");
00050 gSystem->Load("StEmcRawMaker");
00051 gSystem->Load("StEmcADCtoEMaker");
00052 gSystem->Load("StDbBroker");
00053
00054
00055 gMessMgr -> SwitchOff("D");
00056 gMessMgr -> SwitchOff("I");
00057 TString pathname = path;
00058 pathname += name;
00059 mChain = new StChain("chain");
00060
00061
00062
00063 mMuDstMaker = new StMuDstMaker(0,0,path,name,"MuDst",nfiles);
00064 mDb = new St_db_Maker("StarDb", "MySQL:StarDb", "$STAR/StarDb");
00065 bemcAdc2E = new StEmcADCtoEMaker();
00066
00067 #if 0
00068 mMuDstMaker->SetStatus("*",0);
00069 mMuDstMaker->SetStatus("MuEvent",1);
00070 mMuDstMaker->SetStatus("EmcAll",1);
00071 mMuDstMaker->SetStatus("PrimaryTracks",1);
00072 #endif
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 mChain->ls(3);
00085 mChain->Init();
00086
00087 int seconds=1500;
00088 int bins=1500;
00089 TH1F *hTime=new TH1F("time","timing plot;t (s);hz",bins,0,seconds);
00090 TH2F *hModuleTime=new TH2F("moduleTime","module hits per second;t(s);module #",bins,0,seconds,120,0,120);
00091 TH2F *hPatchTime=new TH2F("patchTime","patch hits per second;t(s);module #",bins,0,seconds,300,0,300);
00092 TH1F *hNoHotTowers=new TH1F("noHotTowers","rate plot for good towers;t(s);hz",bins,0,seconds);
00093 TH2F *hPatch=new TH2F("patchADC","HT ADC spectrum per patch;ADC;Patch ID",80,-10,70,300,0,300);
00094 TH3F *hPatchXing=new TH3F("patchX","hits by time, patch, and bXing",bins,0,seconds,300,0,300,120,0,120);
00095 TH2F *hXingTime=new TH2F("timeX","hits by time and bXing",bins,0,seconds,120,0,120);
00096 TH2F *hZTime=new TH2F("zX","hits by time and BBC vertex z",bins,0,seconds,20,-100,100);
00097
00098
00099
00100 Int_t stat = 0;
00101 Int_t count = 0;
00102 Int_t baseTime=0;
00103 Int_t BHT3_trigger_id=230531;
00104 while ( stat == 0 ) {
00105
00106 if (count%1000==0)
00107 {
00108 std::cout << "------------------------------------------------";
00109 std::cout << "event=" << count << std::endl;
00110 }
00111
00112 if ( count++ >= nevents ) if ( nevents > 0 ) break;
00113
00114 mChain -> Clear();
00115 stat = mChain -> Make();
00116 StMuDst *mudst=mMuDstMaker->muDst();
00117
00118 if (count == 1 ) baseTime=mudst->event()->eventInfo().time();
00119
00120 if ( mMuDstMaker->muDst()->event()->triggerIdCollection().nominal()->isTrigger(triggerChoice)){
00121 int eventTime=mudst->event()->eventInfo().time()-baseTime;
00122 hTime->Fill(eventTime,bins*1.0/(1.0*seconds));
00123 hZTime->Fill(eventTime,mudst->event()->bbcTriggerDetector().zVertex());
00124
00125
00126
00127
00128 if (triggerChoice==230531){
00129 for (int m=0;m<300;m++)
00130 {
00131 hPatch->Fill(mudst->event()->emcTriggerDetector().highTower(m),m);
00132 if (mudst->event()->emcTriggerDetector().highTower(m)>30)
00133 {
00134
00135 hPatchXing->Fill(eventTime,m,mudst->event()->l0Trigger().bunchCrossingId7bit(mRunNo));
00136 hPatchTime->Fill(eventTime,m);
00137 }
00138 }
00139 }
00140 else {
00141 hPatchXing->Fill(eventTime,1,mudst->event()->l0Trigger().bunchCrossingId7bit(mRunNo));
00142 }
00143
00144
00145
00146 }
00147 }
00148 printf("Total events: %d\n",count);
00149
00150
00151
00152 mChain -> Finish();
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165 TFile *out=new TFile(ofile,"recreate");
00166 out->cd();
00167 hTime->Write();
00168 hPatchTime->Write();
00169 hPatch->Write();
00170 hPatchXing->Write();
00171 hZTime->Write();
00172
00173
00174 return;
00175
00176 }
00177