00001
00002
00003
00004 void SkimPion(const char* fileList, const char* fileId="Skim.root") {
00005
00006 int flagMC=0;
00007 int useEemc=1;
00008 int useBemc=1;
00009 int useL2=1;
00010 int L2ConfigYear=2006;
00011 int bemcConfig=2;
00012 int playConfig=100;
00013 int emcEveDump=0;
00014 const char *dirIn="";
00015 int nFiles = 100000;
00016 char *eemcSetupPath="/afs/rhic.bnl.gov/star/users/kocolosk/public/StarTrigSimuSetup/";
00017
00018 TString outDir="./out2/";
00019
00020 gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00021
00022 loadSharedLibraries();
00023
00024 gSystem->Load("StDetectorDbMaker");
00025 gSystem->Load("StDbUtilities");
00026 gSystem->Load("StDbBroker");
00027 gSystem->Load("St_db_Maker");
00028 gSystem->Load("StEEmcUtil");
00029 gSystem->Load("StEEmcDbMaker");
00030 gSystem->Load("StarMagField");
00031 gSystem->Load("geometry");
00032 gSystem->Load("St_g2t");
00033 gSystem->Load("St_geant_Maker");
00034 gSystem->Load("StDaqLib");
00035 gSystem->Load("StEmcRawMaker");
00036 gSystem->Load("StEmcADCtoEMaker");
00037 gSystem->Load("StTriggerUtilities");
00038 gSystem->Load("StEpcMaker");
00039
00040 gSystem->Load("StSpinDbMaker");
00041
00042
00043
00044
00045
00046 gSystem->Load("StEsRelLum");
00047
00048
00049 gSystem->Load("StSkimPionMaker");
00050
00051 gROOT->Macro("LoadLogger.C");
00052 cout << "loading done " << endl;
00053
00054 StChain *chain = new StChain("StChain");
00055 StMuDstMaker *mudst_mk = new StMuDstMaker(0,0,"",fileList,"MuDst.root",999);
00056
00057
00058 StMuDbReader* db = StMuDbReader::instance();
00059
00060
00061 St_db_Maker *db1 = new St_db_Maker("StarDb","$STAR/StarDb","MySQL:StarDb");
00062
00063
00064 StDetectorDbMaker* detDbMk = new StDetectorDbMaker();
00065
00066
00067 StSpinDbMaker *spDb=new StSpinDbMaker("spinDb");
00068
00069
00070 if(useEemc || useL2) new StEEmcDbMaker("eemcDb");
00071
00072
00073 StEmcADCtoEMaker *adc_to_e=new StEmcADCtoEMaker();
00074 adc_to_e->setPrint(kFALSE);
00075
00076
00077
00078 TObjArray* HList = new TObjArray;
00079
00080
00081 StTriggerSimuMaker *simuTrig = new StTriggerSimuMaker("StarTrigSimu");
00082 simuTrig->setHList(HList);
00083 simuTrig->setMC(flagMC);
00084 simuTrig->useBbc();
00085
00086 if(useEemc)
00087 {
00088 simuTrig->useEemc(0);
00089 simuTrig->eemc->setSetupPath(eemcSetupPath);
00090 }
00091 if(useBemc)
00092 {
00093 simuTrig->useBemc();
00094 simuTrig->bemc->setConfig(bemcConfig);
00095 }
00096
00097
00098 if(1)
00099 {
00100
00101
00102
00103
00104
00105
00106
00107 StGenericL2Emulator* simL2Mk=0;
00108 if(L2ConfigYear==2006) simL2Mk= new StL2_2006EmulatorMaker;
00109 else if(L2ConfigYear==2008) simL2Mk= new StL2_2008EmulatorMaker;
00110 assert(simL2Mk);
00111 simL2Mk->setSetupPath(eemcSetupPath);
00112 simL2Mk->setOutPath(outDir.Data());
00113 if (flagMC) simL2Mk->setMC();
00114
00115 simuTrig->useL2(simL2Mk);
00116 }
00117
00118
00119
00120 StPreEclMaker *pre_ecl=new StPreEclMaker();
00121 pre_ecl->setPrint(kFALSE);
00122 StEpcMaker *epc=new StEpcMaker();
00123 epc->setPrint(kFALSE);
00124
00125
00126
00127
00128
00129
00130 StSkimPionMaker* analysis = new StSkimPionMaker("SkimPionMaker", 1, fileId);
00131
00132 chain->ls(3);
00133 chain->Init();
00134
00135
00136
00137 Int_t sizeMax = 4;
00138 Float_t energySeed = 0.4;
00139 Float_t energyAdd = 0.05;
00140 pre_ecl->SetClusterConditions("bemc", sizeMax, energySeed, energyAdd, 0.02, kFALSE);
00141
00142 pre_ecl->SetClusterConditions("bsmde", 5, 0.4,0.005, 0.1,kFALSE);
00143 pre_ecl->SetClusterConditions("bsmdp", 5, 0.4,0.005, 0.1,kFALSE);
00144 pre_ecl->SetClusterConditions("bprs", 1, 500., 500., 501., kFALSE);
00145
00146
00147 TStopwatch timer;
00148 TMemStat memory;
00149
00150 Int_t n_event=100000000;
00151 int total =0;
00152
00153 cout << "Chain initialized, starting up... " << endl;
00154
00155 for(Int_t iev=0;iev<n_event; iev++) {
00156
00157 cout << "****************************************** " << endl;
00158 cout << "\Processing Event " << iev << " of "<< n_event << endl;
00159 cout << "*************************1***************** " << endl;
00160
00161 chain->Clear();
00162
00163 if(iev % 500 == 0){
00164 cout<<"done with event "<<iev;
00165 cout<<"\tcpu: "<<timer.CpuTime()<<"\treal: "<<timer.RealTime()<<"\tratio: "<<timer.CpuTime()/timer.RealTime()<<endl;
00166 timer.Start();
00167 memory.PrintMem(NULL);
00168 }
00169
00170 int iret = chain->Make(iev);
00171 total++;
00172
00173 if(iret % 10 == kStEOF || iret % 10 == kStFatal)
00174 {
00175 cout << "Bad return code!" << endl;
00176 break;
00177 }
00178
00179 }
00180
00181 chain->Finish();
00182 cout << "****************************************** " << endl;
00183 cout << "total number of events " << total << endl;
00184 cout << "****************************************** " << endl;
00185
00186 }