00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #define NEW
00013
00014 class StChain;
00015 class St_db_Maker;
00016 class StEEmcDb;
00017 class StMuDstMaker;
00018 class StEEmcA2EMaker;
00019 class StEEmcClusterMaker;
00020 class StEEmcPointMaker;
00021 class StEEmcPointFitMaker;
00022 class StEEmcMixMaker;
00023 class StEEmcMixQAMaker;
00024 class StSpinDbMaker;
00025
00026
00027
00028
00029 StChain *mChain = 0;
00030 St_db_Maker *mStarDatabase = 0;
00031 StEEmcDb *mEEmcDatabase = 0;
00032 StMuDstMaker *mMuDstMaker = 0;
00033 StEEmcA2EMaker *mEEanalysis = 0;
00034 StEEmcClusterMaker *mEEclusters = 0;
00035 StEEmcPointMaker *mEEpoints = 0;
00036
00037
00038 StEEmcMixMaker *mEEmixer = 0;
00039 StEEmcMixQAMaker *mEEmixqa = 0;
00040
00041 StSpinDbMaker *mSpinDb = 0;
00042
00043 Int_t count = 0;
00044 Int_t stat = 0;
00045
00046 Int_t prescale = 100;
00047
00048 void runEEmcPi0Analysis( Int_t nevents = -1,
00049 Char_t *name = "test.lis",
00050 Char_t *ofile= "test.root",
00051 Char_t *path = "./",
00052 Int_t nfiles = 100
00053 )
00054 {
00055
00056 TString pathname = path;
00057 pathname += name;
00058
00059
00060
00061
00062 LoadLibs();
00063
00064
00065
00066
00067
00068 mChain = new StChain("eemcAnalysisChain");
00069
00070
00071
00072
00073
00074 mMuDstMaker = new StMuDstMaker(0,0,path,name,"MuDst",nfiles);
00075 mMuDstMaker->SetStatus("*",0);
00076 mMuDstMaker->SetStatus("MuEvent",1);
00077 mMuDstMaker->SetStatus("EmcAll",1);
00078
00079
00080
00081
00082
00083 mStarDatabase = new St_db_Maker("StarDb", "MySQL:StarDb");
00084
00085
00086 #ifdef MONTE_CARLO
00087
00088
00089
00090 mStarDatabase->SetFlavor("sim","eemcPMTcal");
00091 mStarDatabase->SetFlavor("sim","eemcPIXcal");
00092 mStarDatabase->SetFlavor("sim","eemcPMTped");
00093 mStarDatabase->SetFlavor("sim","eemcPMTstat");
00094 mStarDatabase->SetFlavor("sim","eemcPMTname");
00095 mStarDatabase->SetFlavor("sim","eemcADCconf");
00096 mStarDatabase->SetDateTime(20050101,0);
00097 #endif
00098
00099
00100
00101
00102 new StEEmcDbMaker("eemcDb");
00103
00104 gMessMgr -> SwitchOff("D");
00105 gMessMgr -> SwitchOn("I");
00106
00107
00108
00109
00110
00111 mSpinDb = new StSpinDbMaker("mSpinDb");
00112
00113
00114 #ifdef MONTE_CARLO
00115
00116
00117
00118 StEEmcSlowMaker *slowSim = new StEEmcSlowMaker("slowSim");
00119 slowSim->setDropBad(0);
00120 slowSim->setAddPed(0);
00121 slowSim->setSmearPed(0);
00122 slowSim->setOverwrite(1);
00123 #endif
00124
00125
00126
00127
00128
00129 mEEanalysis=new StEEmcA2EMaker("AandE");
00130 mEEanalysis->database("eemcDb");
00131 mEEanalysis->source("MuDst",1);
00132 mEEanalysis->threshold(3.0,0);
00133 mEEanalysis->threshold(3.0,1);
00134 mEEanalysis->threshold(3.0,2);
00135 mEEanalysis->threshold(3.0,3);
00136 mEEanalysis->threshold(3.0,4);
00137 mEEanalysis->threshold(3.0,5);
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 StEEmcQAMaker *eemcQA=new StEEmcQAMaker("eeqa");
00149 eemcQA->analysis("AandE");
00150 eemcQA->mudst("MuDst");
00151 eemcQA->nVertexMin=0;
00152 eemcQA->nVertexMax=999;
00153 eemcQA->trigger(96261);
00154 eemcQA->softTrigger(3.36);
00155
00156
00157
00158
00159
00160
00161 mEEclusters=new StEEmcClusterMaker("mEEclusters");
00162 mEEclusters->analysis("AandE");
00163 mEEclusters->seedEnergy(0.8,0);
00164 mEEclusters->seedEnergy(5./1000.,4);
00165 mEEclusters->seedEnergy(5./1000.,5);
00166 mEEclusters->setSeedFloor(2.0);
00167 mEEclusters->setMaxExtent(5);
00168 mEEclusters->suppress(0);
00169
00170
00171
00172
00173
00174
00175
00176 mEEpoints=new StEEmcPointMaker("mEEpoints");
00177 mEEpoints->analysis("AandE");
00178 mEEpoints->clusters("mEEclusters");
00179 mEEpoints->setEnergyMode(0);
00180
00181
00182
00183
00184 mEEmixer = new StEEmcMixMaker("mEEmixer");
00185 mEEmixer -> mudst("MuDst");
00186 mEEmixer -> analysis("AandE");
00187 mEEmixer -> points("mEEpoints");
00188 for ( Int_t i=0;i<12;i++ )
00189 mEEmixer->sector(i);
00190 mEEmixer->trigger(96261);
00191
00192 mEEpi0analysis=new StEEmcPi0Analysis("pi0analy");
00193 mEEpi0analysis->trigger(96261);
00194 mEEpi0analysis->minbias(96011);
00195 mEEpi0analysis->mudst("MuDst");
00196 mEEpi0analysis->points("mEEpoints");
00197 mEEpi0analysis->mixer("mEEmixer");
00198 mEEpi0analysis->analysis("AandE");
00199 mEEpi0analysis->spin("mSpinDb");
00200
00201 mEEmixer2 = new StEEmcMixMaker("mEEmixer2");
00202 mEEmixer2 -> mudst("MuDst");
00203 mEEmixer2 -> analysis("AandE");
00204 mEEmixer2 -> points("mEEpoints");
00205 for ( Int_t i=0;i<12;i++ )
00206 mEEmixer2->sector(i);
00207 mEEmixer2->trigger(96251);
00208
00209 mEEpi0analysis2=new StEEmcPi0Analysis("pi0analy2");
00210 mEEpi0analysis2->trigger(96251);
00211 mEEpi0analysis2->minbias(96011);
00212 mEEpi0analysis2->mudst("MuDst");
00213 mEEpi0analysis2->points("mEEpoints");
00214 mEEpi0analysis2->mixer("mEEmixer");
00215 mEEpi0analysis2->analysis("AandE");
00216 mEEpi0analysis2->spin("mSpinDb");
00217
00218
00219 mEEmixer3 = new StEEmcMixMaker("mEEmixer3");
00220 mEEmixer3 -> mudst("MuDst");
00221 mEEmixer3 -> analysis("AandE");
00222 mEEmixer3 -> points("mEEpoints");
00223 for ( Int_t i=0;i<12;i++ )
00224 mEEmixer3->sector(i);
00225 mEEmixer3->trigger(96282);
00226
00227 mEEpi0analysis3=new StEEmcPi0Analysis("pi0analy3");
00228 mEEpi0analysis3->trigger(96282);
00229 mEEpi0analysis3->minbias(96011);
00230 mEEpi0analysis3->mudst("MuDst");
00231 mEEpi0analysis3->points("mEEpoints");
00232 mEEpi0analysis3->mixer("mEEmixer");
00233 mEEpi0analysis3->analysis("AandE");
00234 mEEpi0analysis3->spin("mSpinDb");
00235 mEEpi0analysis3->cuts()->setTowerCut(0.0);
00236
00237 mEEmixer4 = new StEEmcMixMaker("mEEmixer4");
00238 mEEmixer4 -> mudst("MuDst");
00239 mEEmixer4 -> analysis("AandE");
00240 mEEmixer4 -> points("mEEpoints");
00241 for ( Int_t i=0;i<12;i++ )
00242 mEEmixer4->sector(i);
00243 mEEmixer4->trigger(96272);
00244
00245 mEEpi0analysis4=new StEEmcPi0Analysis("pi0analy4");
00246 mEEpi0analysis4->trigger(96272);
00247 mEEpi0analysis4->minbias(96011);
00248 mEEpi0analysis4->mudst("MuDst");
00249 mEEpi0analysis4->points("mEEpoints");
00250 mEEpi0analysis4->mixer("mEEmixer");
00251 mEEpi0analysis4->analysis("AandE");
00252 mEEpi0analysis4->spin("mSpinDb");
00253 mEEpi0analysis4->cuts()->setTowerCut(0.0);
00254
00255 mChain->ls(3);
00256 mChain->Init();
00257
00258
00259
00260
00261
00262
00263
00264
00265 Int_t stat = 0;
00266 Int_t count = 0;
00267 while ( stat == 0 ) {
00268
00269
00270
00271
00272
00273 if ( count++ >= nevents ) if ( nevents > 0 ) break;
00274
00275
00276
00277
00278 mChain -> Clear();
00279
00280
00281
00282
00283
00284 stat = mChain -> Make();
00285
00286
00287
00288
00289 if ( (count%prescale) ) continue;
00290
00291 std::cout << "------------------------------------------------";
00292 std::cout << "event=" << count << std::endl;
00293
00294
00295
00296
00297 Int_t nhits[]={0,0,0,0,0,0};
00298 for ( int i = 0; i < 4; i++ ) {
00299
00300
00301 nhits[i]+=mEEanalysis->numberOfHitTowers(i);
00302 }
00303
00304
00305
00306
00307 Int_t nu=0,nv=0;
00308 for ( Int_t sec=0;sec<12;sec++ )
00309 {
00310 nu+=mEEanalysis->numberOfHitStrips(sec,0);
00311 nv+=mEEanalysis->numberOfHitStrips(sec,1);
00312 }
00313 nhits[4]=nu;
00314 nhits[5]=nv;
00315
00316
00317
00318
00319
00320 Int_t ncl[6]={0,0,0,0,0,0};
00321 for ( Int_t i=0;i<12;i++ )
00322 {
00323 ncl[0]+=mEEclusters->numberOfClusters(i,0);
00324 ncl[1]+=mEEclusters->numberOfClusters(i,1);
00325 ncl[2]+=mEEclusters->numberOfClusters(i,2);
00326 ncl[3]+=mEEclusters->numberOfClusters(i,3);
00327 ncl[4]+=mEEclusters->numberOfSmdClusters(i,0);
00328 ncl[5]+=mEEclusters->numberOfSmdClusters(i,1);
00329 }
00330
00331 const Char_t *lay[]={"tower:","pre1: ", "pre2: ", "post: ", "smdu: ", "smdv: "};
00332 for ( Int_t i=0;i<6;i++ )
00333 {
00334 std::cout << lay[i] << " " << nhits[i] << " " << ncl[i] << std::endl;
00335 }
00336
00337
00338 std::cout << "number of pairs: " << mEEmixer -> numberOfCandidates() << std::endl;
00339
00340
00341
00342 }
00343
00344
00345
00346
00347
00348
00349
00350
00351 mEEmcDatabase = (StEEmcDb*)mChain->GetDataSet("StEEmcDb");
00352 if (mEEmcDatabase) mEEmcDatabase->exportAscii("dbdump.dat");
00353
00354
00355
00356
00357 mChain -> Finish();
00358
00359
00360
00361
00362
00363 TFile *file=new TFile(ofile,"RECREATE");
00364 file->mkdir("QA");
00365 file->cd("QA");
00366 eemcQA -> GetHistList() -> Write();
00367 file->mkdir("eht2");
00368 file->cd("eht2");
00369 mEEpi0analysis->GetHistList()->Write();
00370 file->cd();
00371 file->mkdir("eht1");
00372 file->cd("eht1");
00373 mEEpi0analysis2->GetHistList()->Write();
00374 file->cd();
00375 file->mkdir("ejp2");
00376 file->cd("ejp2");
00377 mEEpi0analysis3->GetHistList()->Write();
00378 file->cd();
00379 file->mkdir("ejp1");
00380 file->cd("ejp1");
00381 mEEpi0analysis4->GetHistList()->Write();
00382 file->Close();
00383
00384
00385 delete file;
00386
00387
00388 return;
00389
00390 }
00391
00392 void LoadLibs()
00393 {
00394
00395 gROOT -> LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00396 loadSharedLibraries();
00397
00398 gSystem->Load("StDbLib");
00399 gSystem->Load("StDbBroker");
00400 gSystem->Load("St_db_Maker");
00401 gSystem->Load("StEEmcUtil");
00402 gSystem->Load("StEEmcDbMaker");
00403 gSystem->Load("StEEmcSimulatorMaker");
00404
00405 #ifdef NEW
00406 gSystem->Load("StEEmcA2EMaker");
00407 gSystem->Load("StEEmcClusterMaker");
00408 gSystem->Load("StEEmcPointMaker");
00409 gSystem->Load("StEEmcPi0Mixer");
00410 #else
00411 gSystem->Load("StMaxStripPi0");
00412 #endif
00413
00414 gSystem->Load("StSpinDbMaker");
00415 }
00416