00001
00002
00003
00004
00005 #include <TFile.h>
00006 #include <TH1.h>
00007 #include <TH2.h>
00008 #include <StMessMgr.h>
00009
00010 #include "MuEzPanitkinMaker.h"
00011
00012 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00013 #include "StMuDSTMaker/COMMON/StMuDst.h"
00014 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
00015
00016 #include "StMuDSTMaker/EZTREE/EztEventHeader.h"
00017 #include "StMuDSTMaker/EZTREE/EztTrigBlob.h"
00018 #include "StMuDSTMaker/EZTREE/EztEmcRawData.h"
00019 #include "StMuDSTMaker/EZTREE/StTriggerDataMother.h"
00020
00021
00022 #include "StTriggerData2005.h"
00023
00024 #include "EEqaSorter.h"
00025 #include "StEEmcUtil/database/StEEmcDb.h"
00026
00027 #include "RawPixels.h"
00028 ClassImp(MuEzPanitkinMaker)
00029
00030
00031
00032 MuEzPanitkinMaker::MuEzPanitkinMaker(const Char_t *self, const Char_t *muDstMakerName) : StMaker(self){
00033 mMuDstMaker = (StMuDstMaker*)GetMaker(muDstMakerName);
00034 assert(mMuDstMaker);
00035
00036 trgAkio=0;
00037 nTrigEve=nInpEve=0;
00038 HList=0;
00039 qaSort=0;
00040 rawPixels=0;
00041 trigID=0;
00042 SetHistoPixels(false);
00043 SetSpy(false);
00044 }
00045
00046
00047
00048
00049 MuEzPanitkinMaker::~MuEzPanitkinMaker(){
00050 delete trgAkio;
00051 delete qaSort;
00052 delete rawPixels;
00053 }
00054
00055
00056
00057 void MuEzPanitkinMaker::saveHisto(TString fname){
00058 TString outName=fname+".hist.root";
00059 TFile f( outName,"recreate");
00060 assert(f.IsOpen());
00061 printf("%d histos are written to '%s' ...\n",HList->GetEntries(),outName.Data());
00062 HList->Write();
00063 f.Close();
00064
00065 }
00066
00067
00068
00069 Int_t MuEzPanitkinMaker::Init(){
00070
00071 assert(HList);
00072 StEEmcDb *eeDb = (StEEmcDb*)this->GetDataSet("StEEmcDb");
00073 assert(eeDb);
00074
00075 qaSort=new EEqaSorter(eeDb);
00076 qaSort->initHisto(HList, 1000, 1000);
00077 qaSort->initSpy(HList, 5, 1);
00078 qaSort->setPath("StRoot/StEEmcPool/muEztPanitkin/","/star/u/balewski/0x/defaultPanitkinOut/");
00079
00080 if(pixlesOn) {
00081 rawPixels=new RawPixels(HList,eeDb);
00082 rawPixels->setLimits(0,4095);
00083 rawPixels->doRawAdc();
00084
00085
00086
00087 }
00088 gMessMgr->Message("","I") <<GetName()<<"::Init() filter trigID="<<trigID<<endm;
00089 return StMaker::Init();
00090 }
00091
00092
00093
00094 Int_t MuEzPanitkinMaker::InitRun(int runNo){
00095
00096 if(pixlesOn) rawPixels->initHisto();
00097 qaSort->initRun();
00098
00099
00100 return kStOK;
00101 }
00102
00103
00104
00105 Int_t MuEzPanitkinMaker::Finish(){
00106 gMessMgr->Message("","I") <<GetName()<<"::Finish() inputEve="<<nInpEve<<" trigFilterEve="<<nTrigEve<<endm;
00107 return kStOK;
00108 }
00109
00110
00111
00112 void MuEzPanitkinMaker::Clear(const Option_t*){
00113 qaSort->clear();
00114 eHead=0;
00115 eETow=0;
00116 eESmd=0;
00117 eTrig=0;
00118
00119 }
00120
00121
00122
00123
00124 Int_t MuEzPanitkinMaker::Make(){
00125 nInpEve++;
00126 gMessMgr->Message("","D") <<GetName()<<"::Make() is called "<<endm;
00127
00128
00129 eHead= mMuDstMaker->muDst()->eztHeader();
00130 if(eHead==0) {
00131 gMessMgr->Message("","E") <<GetName()<<"::Make() no EztEventHeader, skip event "<<endm; return kStOK;
00132 }
00133
00134 if(nInpEve==1) eHead->print();
00135
00136 if(trigID ) {
00137 if (! mMuDstMaker->muDst()->event()->triggerIdCollection().nominal().isTrigger(trigID)) return kStOK;
00138 }
00139 nTrigEve++;
00140
00141
00142 eETow=mMuDstMaker->muDst()->eztETow();
00143 eESmd=mMuDstMaker->muDst()->eztESmd();
00144 eTrig=mMuDstMaker->muDst()->eztTrig();
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155 StMuEvent *muEve = mMuDstMaker -> muDst() -> event();
00156 assert(muEve);
00157 StEventInfo &info=muEve->eventInfo();
00158 int runId=info.runId();
00159
00160
00161
00162 void *blob=eTrig->trgd->GetArray();
00163 StTriggerData2005 trgAkio5x( (const TrgDataType2005 *)blob,runId);
00164 StTriggerData2005 *trgAkio5=&trgAkio5x;
00165 const unsigned char * dsm0inp= trgAkio5->getDsm0_EEMC();
00166 unsigned short int * dsm1inp= trgAkio5->getDsm1_EEMC();
00167 unsigned short int * dsm2inp= trgAkio5->getDsm2_EMC();
00168 unsigned short int * dsm3inp= trgAkio5->getDsm3();
00169
00170
00171
00172
00173 qaSort->sort(eETow,eESmd,eHead->getRunNumber(),
00174 trgAkio5->token(),trgAkio5->version(),
00175 dsm0inp, dsm1inp, dsm2inp, dsm3inp);
00176
00177
00178 if(pixlesOn) {
00179 rawPixels->sort(eETow);
00180 rawPixels->sort(eESmd);
00181 }
00182
00183 if(eeSpyOn) qaSort->spy(eETow, eESmd, eHead->getRunNumber(), eHead->getEventNumber());
00184
00185
00186 return kStOK;
00187 }
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213