00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #define MONTE_CARLO
00012 #define NEW
00013
00014 class StChain;
00015 class St_db_Maker;
00016 class StEEmcDb;
00017 class StMuDstMaker;
00018 class StMcOutputMaker;
00019 class StEEmcA2EMaker;
00020 class StEEmcIUClusterMaker;
00021 class StEEmcIUPointMaker;
00022
00023 class StEEmcIUMixMaker;
00024
00025 class StSpinDbMaker;
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 StMcOutputMaker *mySputMk = 0;
00035 StEEmcIUClusterMaker *mEEclusters = 0;
00036 StEEmcIUPointMaker *mEEpoints = 0;
00037
00038
00039 StEEmcIUMixMaker *mEEmixer = 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 runEEmcMcPi0( Int_t nevents = 1000,
00049 Char_t *name = "dipi0_10000evts.MuDst.root",
00050
00051 Char_t *ofile= "test.root",
00052 Char_t *path = "/star/u/hew/pi0finder/ezGames/backyard/multiphoton/",
00053
00054 Int_t nfiles = 100)
00055
00056 {
00057
00058 TString pathname = path;
00059 pathname += name;
00060 TString fileG=name;
00061 fileG.ReplaceAll("MuDst","geant");
00062
00063 fileG=path+fileG;
00064
00065
00066
00067
00068 LoadLibs();
00069 gSystem->Load("StMcEvent");
00070 gSystem->Load("StMcEventMaker");
00071
00072
00073
00074
00075
00076
00077 mChain = new StChain("eemcAnalysisChain");
00078
00079 StIOMaker* ioMaker = new StIOMaker();
00080
00081 printf("%s\n",fileG.Data());
00082 ioMaker->SetFile(fileG);
00083
00084 ioMaker->SetIOMode("r");
00085 ioMaker->SetBranch("*",0,"1");
00086 ioMaker->SetBranch("geantBranch",0,"r");
00087 ioMaker->SetBranch("minimcBranch",0,"r");
00088
00089
00090
00091
00092
00093 mMuDstMaker = new StMuDstMaker(0,0,path,name,"MuDst",nfiles);
00094 mMuDstMaker->SetStatus("*",0);
00095 mMuDstMaker->SetStatus("MuEvent",1);
00096 mMuDstMaker->SetStatus("EmcAll",1);
00097
00098 StMcEventMaker *mcEventMaker = new StMcEventMaker();
00099 mcEventMaker->doPrintEventInfo = false;
00100 mcEventMaker->doPrintMemoryInfo = false;
00101
00102
00103
00104
00105 mStarDatabase = new St_db_Maker("StarDb", "MySQL:StarDb");
00106
00107
00108 #ifdef MONTE_CARLO
00109
00110
00111
00112
00113 mStarDatabase->SetFlavor("sim","eemcPMTcal");
00114 mStarDatabase->SetFlavor("sim","eemcPIXcal");
00115 mStarDatabase->SetFlavor("sim","eemcPMTped");
00116 mStarDatabase->SetFlavor("sim","eemcPMTstat");
00117 mStarDatabase->SetFlavor("sim","eemcPMTname");
00118 mStarDatabase->SetFlavor("sim","eemcADCconf");
00119 mStarDatabase->SetDateTime(20050101,0);
00120
00121 #endif
00122
00123
00124
00125
00126 new StEEmcDbMaker("eemcDb");
00127 gMessMgr -> SwitchOff("D");
00128 gMessMgr -> SwitchOn("I");
00129
00130 mSpinDb = new StSpinDbMaker("mSpinDb");
00131
00132 #ifdef MONTE_CARLO
00133
00134
00135
00136 StEEmcSlowMaker *slowSim = new StEEmcSlowMaker("slowSim");
00137 slowSim->setDropBad(0);
00138 slowSim->setAddPed(0);
00139 slowSim->setSmearPed(0);
00140 slowSim->setOverwrite(1);
00141 slowSim->setNpePerMipSmd(1.0);
00142
00143 #endif
00144
00145
00146
00147
00148
00149 mEEanalysis=new StEEmcA2EMaker("AandE");
00150 mEEanalysis->database("eemcDb");
00151 mEEanalysis->source("MuDst",1);
00152 mEEanalysis->threshold(3.0,0);
00153 mEEanalysis->threshold(3.0,1);
00154 mEEanalysis->threshold(3.0,2);
00155 mEEanalysis->threshold(3.0,3);
00156
00157
00158 mEEanalysis->scale(1.3);
00159
00160
00161
00162
00163
00164 StEEmcQAMaker *eemcQA=new StEEmcQAMaker("eeqa");
00165 eemcQA->analysis("AandE");
00166 eemcQA->mudst("MuDst");
00167
00168 eemcQA->nVertexMin=0;
00169 eemcQA->nVertexMax=999;
00170
00171
00172
00173
00174
00175
00176 mEEclusters=new StEEmcIUClusterMaker("mEEclusters");
00177 mEEclusters->analysis("AandE");
00178 mEEclusters->seedEnergy(0.8,0);
00179 mEEclusters->seedEnergy(1.5/1000.,4);
00180 mEEclusters->seedEnergy(1.5/1000.,5);
00181 mEEclusters->setSeedFloor(1.0);
00182 mEEclusters->setMaxExtent(3);
00183
00184
00185
00186
00187
00188
00189
00190 mEEpoints=new StEEmcIUPointMaker("mEEpoints");
00191
00192 mEEpoints->analysis("AandE");
00193 mEEpoints->clusters("mEEclusters");
00194 mEEpoints->setEnergyMode(0);
00195 mEEpoints->setLimit(10);
00196
00197
00198
00199 HList=new TObjArray;
00200 StMcOutputMaker *mySputMk=new StMcOutputMaker("mcRead");
00201 mySputMk->SetHList(HList);
00202
00203
00204
00205
00206
00207 mEEmixer = new StEEmcIUMixMaker("mEEmixer");
00208 mEEmixer -> mudst("MuDst");
00209 mEEmixer -> analysis("AandE");
00210 mEEmixer -> points("mEEpoints");
00211 for ( Int_t i=0;i<12;i++ )
00212 mEEmixer->sector(i);
00213
00214
00215 mEEmixer->fixedVertex(0.,0.,0.);
00216
00217
00218
00219 mEEpi0analysis=new StEEmcIUPi0Analysis("pi0analy");
00220
00221
00222 mEEpi0analysis->mudst("MuDst");
00223 mEEpi0analysis->points("mEEpoints");
00224 mEEpi0analysis->mixer("mEEmixer");
00225 mEEpi0analysis->analysis("AandE");
00226 mEEpi0analysis->spin("mSpinDb");
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239 mChain->ls(3);
00240 mChain->Init();
00241
00242
00243
00244
00245
00246
00247
00248 Int_t stat = 0;
00249 Int_t count = 0;
00250 int TTnumsmdu=0,TTnumsmdv=0,Tnumsmdu=0,Tnumsmdv=0,Tnumpoints=0,Tnumpairs=0,Tnumfp=0,n2clusteru=0,n2clusterv=0,n2point=0,j=0;
00251
00252 while ( stat == 0 ) {
00253
00254
00255
00256
00257
00258 if ( count++ >= nevents && nevents>0 ) break;
00259
00260
00261
00262
00263 mChain -> Clear();
00264
00265
00266
00267
00268
00269 stat = mChain -> Make();
00270
00271
00272
00273
00274 if ( (count%prescale)==0 )
00275 {
00276 std::cout << "------------------------------------------------";
00277 std::cout << "event=" << count << std::endl;
00278 }
00279
00280
00281
00282 Int_t nhits[]={0,0,0,0,0,0};
00283 float umeandiff=0,vmeandiff;
00284 for ( int i = 0; i < 4; i++ ) {
00285
00286
00287 nhits[i]+=mEEanalysis->numberOfHitTowers(i);
00288 }
00289
00290
00291
00292
00293 Int_t nu=0,nv=0;
00294 for ( Int_t sec=0;sec<12;sec++ )
00295 {
00296 nu+=mEEanalysis->numberOfHitStrips(sec,0);
00297 nv+=mEEanalysis->numberOfHitStrips(sec,1);
00298 }
00299 nhits[4]=nu;
00300 nhits[5]=nv;
00301
00302
00303
00304
00305
00306 Int_t ncl[8]={0,0,0,0,0,0,0,0};
00307 for ( Int_t i=0;i<12;i++ )
00308 {
00309 ncl[0]+=mEEclusters->numberOfClusters(i,0);
00310 ncl[1]+=mEEclusters->numberOfClusters(i,1);
00311 ncl[2]+=mEEclusters->numberOfClusters(i,2);
00312 ncl[3]+=mEEclusters->numberOfClusters(i,3);
00313 ncl[4]+=mEEclusters->numberOfSmdClusters(i,0);
00314 ncl[5]+=mEEclusters->numberOfSmdClusters(i,1);
00315 ncl[6]+=mEEclusters->TnumberOfSmdClusters(i,0);
00316 ncl[7]+=mEEclusters->TnumberOfSmdClusters(i,1);
00317
00318 }
00319
00320
00321
00322
00323 if(ncl[4]==2) n2clusteru+=1;
00324 if(ncl[5]==2) n2clusterv+=1;
00325 if(mEEpoints->numberOfPoints()==2) n2point+=1;
00326
00327
00328 Tnumsmdu+=ncl[4];
00329 Tnumsmdv+=ncl[5];
00330 TTnumsmdu+=ncl[6];
00331 TTnumsmdv+=ncl[7];
00332 Tnumpoints+=mEEpoints->numberOfPoints();
00333 Tnumpairs+=mEEmixer -> numberOfCandidates();
00334
00335 }
00336 std::cout << "total number of cluster in smdu=" << Tnumsmdu << std::endl;
00337 std::cout << "total number of cluster in smdv=" << Tnumsmdv << std::endl;
00338 std::cout << "temp total number of cluster in smdu=" << TTnumsmdu << std::endl;
00339 std::cout << "temp total number of cluster in smdv=" << TTnumsmdv << std::endl;
00340 std::cout << "total number of points =" << Tnumpoints << std::endl;
00341 std::cout << "number of 2cluster/event in Vplane" << n2clusterv << std::endl;
00342 std::cout << "total number of pairs =" << Tnumpairs << std::endl;
00343 std::cout << "number of 2cluster/event in Uplane" << n2clusteru << std::endl;
00344 std::cout << "number of 2point /event " << n2point << std::endl;
00345
00346
00347
00348
00349
00350
00351
00352
00353 mEEmcDatabase = (StEEmcDb*)mChain->GetDataSet("StEEmcDb");
00354 if (mEEmcDatabase) mEEmcDatabase->exportAscii("dbdump.dat");
00355
00356
00357
00358
00359 mChain -> Finish();
00360
00361
00362
00363
00364
00365 TFile *file=new TFile(ofile,"RECREATE");
00366
00367 mEEclusters -> GetHistList() -> Write();
00368 mEEpoints -> GetHistList() -> Write();
00369 mEEanalysis->GetHistList()->Write();
00370 mEEpi0analysis->GetHistList()->Write();
00371 mySputMk->GetHistList()->Write();
00372 mEEmixer->GetHistList()->Write();
00373
00374 file->Close();
00375
00376
00377
00378 delete file;
00379
00380
00381 return;
00382
00383 }
00384
00385 void LoadLibs()
00386 {
00387
00388 gROOT -> LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00389 loadSharedLibraries();
00390
00391 gSystem->Load("StDbLib");
00392 gSystem->Load("StDbBroker");
00393 gSystem->Load("St_db_Maker");
00394 gSystem->Load("StEEmcUtil");
00395 gSystem->Load("StEEmcDbMaker");
00396 gSystem->Load("StEEmcSimulatorMaker");
00397 gSystem->Load("StEEmcA2EMaker");
00398 #ifdef NEW
00399 gSystem->Load("StEEmcIUPi0");
00400 #else
00401 gSystem->Load("StMaxStripPi0");
00402 #endif
00403 gSystem->Load("StSpinDbMaker");
00404
00405 }