00001
00002
00003
00004
00005
00006
00007
00008
00009 void RunChargedPion(const char *muPath,
00010 const char *outName,
00011 const char *jetPath = NULL,
00012 bool simu = true,
00013 int year = 2005,
00014 int nevents = 99999)
00015 {
00016 gROOT->Macro("LoadLogger.C");
00017 gROOT->Macro("$STAR/StRoot/StSpinPool/StChargedPionAnalysisMaker/macros/LoadLibs.C");
00018
00019 double pi = atan(1.0)*4.0;
00020
00021 StChain chain;
00022
00023 if(simu) {
00024 StIOMaker ioMk;
00025 TString muString(muPath);
00026 TString geantString(muString.ReplaceAll("MuDst", "geant"));
00027 ioMk.SetFile(geantString.Data());
00028 ioMk.SetIOMode("r");
00029 ioMk.SetBranch("*", 0, "0");
00030 ioMk.SetBranch("geantBranch", 0, "r");
00031
00032 StMcEventMaker mcEventMk;
00033 }
00034
00035 StMuDstMaker muMk(0, 0, "", muPath, "", 1e6);
00036
00037 if(!simu) {
00038 StTriggerFilterMaker filterMk;
00039 filterMk.addTrigger(96011);
00040 filterMk.addTrigger(96201);
00041 filterMk.addTrigger(96211);
00042 filterMk.addTrigger(96221);
00043 filterMk.addTrigger(96233);
00044
00045 filterMk.addTrigger(5);
00046 filterMk.addTrigger(8);
00047 filterMk.addTrigger(117001);
00048 filterMk.addTrigger(117300);
00049 filterMk.addTrigger(117402);
00050 filterMk.addTrigger(137213);
00051 filterMk.addTrigger(137221);
00052 filterMk.addTrigger(137222);
00053 filterMk.addTrigger(137271);
00054 filterMk.addTrigger(137272);
00055 filterMk.addTrigger(137273);
00056 filterMk.addTrigger(137501);
00057 filterMk.addTrigger(137551);
00058 filterMk.addTrigger(137571);
00059 filterMk.addTrigger(137575);
00060 filterMk.addTrigger(137580);
00061 filterMk.addTrigger(137581);
00062 filterMk.addTrigger(137585);
00063 filterMk.addTrigger(137586);
00064 filterMk.addTrigger(137611);
00065 filterMk.addTrigger(137622);
00066 filterMk.addTrigger(137641);
00067 filterMk.addTrigger(137652);
00068 }
00069
00070 St_db_Maker dbMk("StarDb", "MySQL:StarDb", "$STAR/StarDb");
00071 if(simu) {
00072 switch(year) {
00073 case 2005:
00074 dbMk.SetDateTime(20050506,214129);
00075 break;
00076
00077 case 2006:
00078 dbMk.SetDateTime(20060522, 055000);
00079
00080
00081 break;
00082 }
00083 }
00084
00085 if(!simu) {
00086 StSpinDbMaker spDbMk("spinDb");
00087 }
00088
00089 StEEmcDbMaker eemcDbMk("eemcDb");
00090
00091 if(simu) {
00092 StEmcSimulatorMaker emcSimMk;
00093 emcSimMk.setCalibSpread(kBarrelEmcTowerId, 0.15);
00094 }
00095 else
00096 StEmcADCtoEMaker adcMk;
00097
00098
00099 if(year == 2005) {
00100 StEmcTriggerMaker emcTrgMk("bemctrigger");
00101 }
00102 else {
00103 StTriggerSimuMaker trgSimuMk;
00104 trgSimuMk.setMC(simu);
00105 trgSimuMk.useBbc();
00106 trgSimuMk.useBemc();
00107 trgSimuMk.bemc->setConfig(StBemcTriggerSimu::kOffline);
00108
00109 if(year == 2006) {
00110 StL2_2006EmulatorMaker simL2Mk;
00111 simL2Mk.setSetupPath("/afs/rhic.bnl.gov/star/users/kocolosk/public/StarTrigSimuSetup/");
00112 simL2Mk.setOutPath("./outL2");
00113 trgSimuMk.useL2(&simL2Mk);
00114 }
00115 }
00116
00117
00118 if(simu) StMCAsymMaker asymMk("MCAsym");
00119
00120 if(simu) StPythiaFourPMaker pythia4pMk("StPythiaFourPMaker", &asymMk, &mcEventMk);
00121
00122 bool doTowerSwapFix = true;
00123 StBET4pMaker bet4pMk("BET4pMaker", &muMk, doTowerSwapFix);
00124 switch(year) {
00125 case 2005:
00126 bet4pMk.setUse2005Cuts(true);
00127 break;
00128
00129 case 2006:
00130 bet4pMk.setUseEndcap(true);
00131 bet4pMk.setUse2006Cuts(true);
00132 break;
00133 }
00134
00135 StJetMaker emcJetMk("emcJetMaker", &muMk, "blah.jet.root");
00136
00137 StppAnaPars anapars;
00138 switch(year) {
00139 case 2005:
00140 anapars.setFlagMin(0);
00141 anapars.setNhits(20);
00142 anapars.setAbsEtaMax(1.6);
00143 if(simu) anapars.setJetPtMin(3.0);
00144 else anapars.setJetPtMin(5.0);
00145 break;
00146
00147 case 2006:
00148 anapars.setFlagMin(0);
00149 anapars.setNhits(12);
00150 anapars.setAbsEtaMax(2.0);
00151 if(simu) anapars.setJetPtMin(3.5);
00152 else anapars.setJetPtMin(5.0);
00153 break;
00154 }
00155 anapars.setCutPtMin(0.2);
00156 anapars.setJetEtaMax(100.0);
00157 anapars.setJetEtaMin(0);
00158 anapars.setJetNmin(0);
00159
00160 StppAnaPars pypars;
00161 switch(year) {
00162 case 2005:
00163 case 2006:
00164 pypars.setFlagMin(0);
00165 pypars.setNhits(0);
00166 pypars.setCutPtMin(0.0001);
00167 pypars.setAbsEtaMax(5.0);
00168 pypars.setJetPtMin(3.0);
00169 pypars.setJetEtaMax(5.0);
00170 pypars.setJetEtaMin(0);
00171 pypars.setJetNmin(0);
00172 break;
00173 }
00174
00175 StConePars cpars;
00176 switch(year) {
00177 case 2005:
00178 cpars.setGridSpacing(56, -1.6, 1.6, 120, -pi, pi);
00179 cpars.setConeRadius(0.4);
00180 break;
00181
00182 case 2006:
00183 cpars.setGridSpacing(105, -3.0, 3.0, 120, -pi, pi);
00184 cpars.setConeRadius(0.7);
00185 break;
00186 }
00187 cpars.setSeedEtMin(0.5);
00188 cpars.setAssocEtMin(0.1);
00189 cpars.setSplitFraction(0.5);
00190 cpars.setPerformMinimization(true);
00191 cpars.setAddMidpoints(true);
00192 cpars.setRequireStableMidpoints(true);
00193 cpars.setDoSplitMerge(true);
00194 cpars.setDebug(false);
00195
00196 switch(year) {
00197 case 2005:
00198 emcJetMk.addAnalyzer(&anapars, &cpars, &bet4pMk, "ConeJets");
00199 break;
00200
00201 case 2006:
00202 anapars.setNhits(5);
00203 emcJetMk.addAnalyzer(&anapars, &cpars, &bet4pMk, "ConeJets5");
00204
00205 anapars.setNhits(12);
00206 emcJetMk.addAnalyzer(&anapars, &cpars, &bet4pMk, "ConeJets12");
00207
00208 anapars.setNhits(10000000);
00209 emcJetMk.addAnalyzer(&anapars, &cpars, &bet4pMk, "ConeJetsEMC");
00210 break;
00211 }
00212
00213 if(simu) {
00214 StConePars pycpars(cpars);
00215 if(year == 2005) pycpars.setGridSpacing(200, -5.0, 5.0, 120, -pi, pi);
00216 emcJetMk.addAnalyzer(&pypars, &pycpars, &pythia4pMk, "PythiaConeJets");
00217 }
00218
00219 StChargedPionMaker cpMk("chargedPionMaker", outName);
00220 if(simu) {
00221 switch(year) {
00222 case 2005:
00223 cpMk.addTrigger(96011);
00224 cpMk.addTrigger(96201);
00225 cpMk.addTrigger(96211);
00226 cpMk.addTrigger(96221);
00227 cpMk.addTrigger(96233);
00228 break;
00229
00230 case 2006:
00231 cpMk.addTrigger(5);
00232 cpMk.addTrigger(8);
00233 cpMk.addTrigger(117001);
00234 cpMk.addTrigger(117300);
00235 cpMk.addTrigger(117402);
00236 cpMk.addTrigger(137213);
00237 cpMk.addTrigger(137221);
00238 cpMk.addTrigger(137222);
00239 cpMk.addTrigger(137271);
00240 cpMk.addTrigger(137272);
00241 cpMk.addTrigger(137273);
00242 cpMk.addTrigger(137501);
00243 cpMk.addTrigger(137551);
00244 cpMk.addTrigger(137571);
00245 cpMk.addTrigger(137575);
00246 cpMk.addTrigger(137580);
00247 cpMk.addTrigger(137581);
00248 cpMk.addTrigger(137585);
00249 cpMk.addTrigger(137586);
00250 cpMk.addTrigger(137611);
00251 cpMk.addTrigger(137622);
00252 cpMk.addTrigger(137641);
00253 cpMk.addTrigger(137652);
00254 break;
00255 }
00256 }
00257
00258 TStopwatch total;
00259 TStopwatch timer;
00260 TMemStat memory;
00261
00262 chain.Init();
00263
00264 int i=0;
00265 while(i<nevents && chain.Make()==kStOk) {
00266 if(i % 500 == 0) {
00267 cout << "done with event " << i
00268 << "\tcpu: " << timer.CpuTime()
00269 << "\treal: " << timer.RealTime()
00270 << "\tratio: " << timer.CpuTime()/timer.RealTime() << endl;
00271 timer.Start();
00272 memory.PrintMem(NULL);
00273 }
00274 ++i;
00275 chain.Clear();
00276 }
00277
00278 chain.Finish();
00279 cout << "my macro processed " << i << " events"
00280 << "\tcpu: " << total.CpuTime()
00281 << "\treal: " << total.RealTime()
00282 << "\tratio: " << total.CpuTime()/total.RealTime() << endl;
00283 }
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293