00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016
00017 class StBFChain;
00018 StBFChain *chain=0;
00019 class StMaker;
00020 class StEvent;
00021
00022 StBFChain *chain1, *chain2, *chain3;
00023
00024 void bfcMixer_pp2006( Int_t Nevents=10,
00025 Char_t *file1="star/data03/daq/2006/120/7120049/st_physics_adc_7120049_raw_1050001.daq",
00026
00027
00028 Char_t *file2="mcpi0_hipt_run140_gid7_1000evts.fzd",
00029 Int_t useEndcapSlowSim=1
00030
00031 ){
00032 TString path1="/";
00033
00034 TString path2="/star/u/wzhang/links/gc2002/EEmc/embedData/fzd/";
00035
00036
00037 if (gClassTable->GetID("StBFChain") < 0) Load();
00038
00039
00040 chain = new StBFChain("Embedding");
00041
00042 StMaker *saveMk = 0;
00043 chain->SetFlags("-ittf,NoDefault");
00044
00045 chain1 = new StBFChain("One");
00046
00047 saveMk = chain1->cd();
00048 chain1->SetFlags("in Physics NoDefault -ittf -trg");
00049 chain1->Set_IO_Files(path1+file1);
00050 chain1->Load();
00051 chain1->Instantiate();
00052
00053 saveMk->cd();
00054
00055
00056 chain2 = new StBFChain("Two");
00057 saveMk = chain2->cd();
00058 chain2->SetFlags("fzin gen_T geomT sim_T tpc trs -tcl -tpt -PreVtx -tpc_daq -ittf ");
00059 chain2->Set_IO_Files(path2+file2);
00060 chain2->Load();
00061 chain2->Instantiate();
00062 St_geant_Maker *geantMk = chain2->GetMaker("geant");
00063 if (geantMk) geantMk->SetMode(1);
00064
00065
00066
00067 saveMk->cd();
00068
00069
00070 gSystem->Load("StMixerMaker");
00071 StMixerMaker *mixer = new StMixerMaker("Mixer","daq","trs");
00072 chain1->SetInput("Input1","StDAQReader");
00073 chain2->SetInput("Input2","Event");
00074 mixer->writeFile("mixer.trs",Nevents);
00075
00076
00077
00078 chain3 = new StBFChain("Three");
00079 saveMk = chain3->cd();
00080
00081
00082 chain3->SetFlags("Simu NoDefault NoInput onlraw -onlcl ry2006,tpc_daq,tpcI,svt_daq,SvtD,Physics,Idst,l0,Tree,evout l3onl fcf emcDY2 fpd trgd ZDCvtx useCDV ITTF tofDat -SvtIT MuDST -trg VFPPVnoCTB beamline GeantOut CMuDst dEdxY2 -EventQA");
00083
00084
00085 TString tt1=file1;
00086 TString tt2=file2;
00087 tt1.ReplaceAll(".daq","");
00088 tt2.ReplaceAll(".fzd","");
00089 TString OutputFileName=tt1+"_"+tt2+".root";
00090 cout <<"BFC: Setting file output to: " <<OutputFileName.Data()<<endl;
00091
00092 chain3->Set_IO_Files(0,OutputFileName.Data());
00093 chain3->Load();
00094 chain3->Instantiate();
00095
00096
00097
00098
00099 StMcEventMaker* mcEventMaker = new StMcEventMaker();
00100 StEmcSimulatorMaker *bemcSim = new StEmcSimulatorMaker();
00101 StEmcMixerMaker *bemcMixer = new StEmcMixerMaker();
00102 chain3->AddAfter("emcRaw",bemcMixer);
00103 chain3->AddAfter("emcRaw",bemcSim);
00104 chain3->AddAfter("emcRaw",mcEventMaker);
00105 bemcMixer->SetDebug(0);
00106
00107
00108
00109 StEEmcFastMaker *eemcFastSim = new StEEmcFastMaker();
00110 StEEmcMixerMaker *eemcMixer = new StEEmcMixerMaker();
00111
00112
00113
00114
00115 chain3->AddAfter("emcRaw",eemcMixer);
00116 chain3->AddAfter("emcRaw",eemcFastSim);
00117
00118
00119 eemcFastSim->SetEmbeddingMode();
00120
00121
00122
00123 if(useEndcapSlowSim) {
00124 StEEmcSlowMaker *slowSim=new StEEmcSlowMaker();
00125 chain3->AddAfter("EEmcFastSim",slowSim);
00126 slowSim->setEmbeddingMode();
00127 }
00128
00129
00130
00131 St_geant_Maker *geantMk = (St_geant_Maker *) chain->GetMaker("geant");
00132 geantMk->SetActive(kTRUE);
00133 StMaker *tpcdaqMk = chain3->GetMaker("tpc_raw");
00134 if(!tpcdaqMk ) {
00135 cout <<" Error: no tpc daq maker. End. "<<endl;
00136 return;
00137 }
00138 tpcdaqMk->SetMode(1);
00139 tpcdaqMk->SetInput("Event","MixerEvent");
00140
00141 saveMk->cd(); {
00142 TDatime t;
00143 printf ("QAInfo:Run is started at Date/Time%i/%i\n",t.GetDate(),t.GetTime());
00144 }
00145 printf ("QAInfo:Run on %s in %s\n",
00146 gSystem->HostName(),
00147 gSystem->WorkingDirectory());
00148 printf ("QAInfo: with %s\n", chain->GetCVS());
00149
00150
00151
00152 if (Nevents >= 0) {
00153 Int_t iInit = chain->Init();
00154 chain->ls(5);
00155 }
00156
00157
00158
00159 treeMk = chain->GetMaker("tree");
00160 TBenchmark evnt;
00161 Int_t iMake = 0, i = 1, iBad = 0;
00162
00163
00164 StIOMaker *inpMk = (StIOMaker *)chain1->GetMaker("inputStream");
00165 Int_t ncols, eventnumber, mult, skip=0, oldskip = 0, skiptest=0;
00166
00167 cout <<"BFC - Entering Event Loop"<<endl;
00168 EventLoop: if (i <= Nevents && iMake != kStEOF && iMake != kStFatal) {
00169 evnt.Reset();
00170 evnt.Start("QAInfo:");
00171 chain->Clear();
00172
00173 iMake = chain->Make(i);
00174 if (treeMk && iMake == kStErr) {treeMk->Make(i); iBad++;}
00175 StEvtHddr *fEvtHddr = (StEvtHddr*)chain->GetDataSet("EvtHddr");
00176 StEvtHddr *fEvtHddrDaq = (StEvtHddr*)chain1->GetDataSet("EvtHddr");
00177 *fEvtHddr = *fEvtHddrDaq;
00178
00179 evnt.Stop("QAInfo:");
00180
00181 printf ("QAInfo: Done with Event [no. %d/run %d/evt. %d/Date.Time%d.%d/sta %d] Real Time = %10.2f seconds Cpu Time = %10.2f seconds \n", i,chain->GetRunNumber(),chain->GetEventNumber(),chain->GetDate(), chain->GetTime(),
00182 iMake,evnt.GetRealTime("QAInfo:"),evnt.GetCpuTime("QAInfo:"));
00183
00184 i++;
00185 goto EventLoop;
00186 }
00187
00188 fflush(stdout);
00189 printf ("QAInfo:Run completed ");
00190 gSystem->Exec("date");
00191
00192 }
00193
00194
00195
00196 void Load(){
00197 gSystem->Load("St_base");
00198 gSystem->Load("StChain");
00199 gSystem->Load("StUtilities");
00200 gSystem->Load("StBFChain");
00201 gSystem->Load("StAnalysisUtilities");
00202
00203
00204 gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00205 loadSharedLibraries();
00206 gSystem->Load("StEEmcUtil");
00207 gSystem->Load("StEEmcSimulatorMaker");
00208 gSystem->Load("StMcEvent");
00209 gSystem->Load("StMcEventMaker");
00210 gSystem->Load("StEmcSimulatorMaker");
00211 gSystem->Load("StEmcMixerMaker");
00212
00213
00214 gROOT->Macro("LoadLogger.C");
00215 if (chain) delete chain;
00216 }
00217