00001
00002
00003 class StChain;
00004 class StMuEmcCollection;
00005
00006 class St_db_Maker;
00007 class StEEmcDb;
00008 class StMuDstMaker;
00009
00010 StChain *mChain = 0;
00011 St_db_Maker *mStarDatabase = 0;
00012 StEEmcDb *mEEmcDatabase = 0;
00013 StMuDstMaker *mMuDstMaker = 0;
00014
00015 class StEEmcA2EMaker;
00016 StEEmcA2EMaker *mEEmcA2E = 0;
00017
00018 class StEEmcClusterMaker;
00019 StEEmcClusterMaker *mEEclusters=0;
00020
00021
00022
00023 Bool_t useSlow=1;
00024
00025 void runEEmcPi0Maker( Int_t nevents = 5000,
00026 Char_t *name = "mcpi0_5000_06TC05_10.MuDst.root",
00027 Char_t *ofile= "mcpi0_5000_06TC05_10.pi0tree.root",
00028 Char_t *path = "/star/data04/sim/jwebb/MonteCarlo/single_gamma/",
00029 Int_t nfiles = 100
00030 )
00031 {
00032
00033
00034
00035 TString pathname = path;
00036 pathname += name;
00037
00038 gROOT->LoadMacro("StRoot/StEEmcPool/StMaxStripPi0/macros/loadlibs.C");
00039 loadlibs();
00040
00042 EEmcGeomSimple *g=new EEmcGeomSimple();
00043
00044
00045
00046 mChain = new StChain("eemcAnalysisChain");
00047
00048
00049 mMuDstMaker = new StMuDstMaker(0,0,path,name,"MuDst",nfiles);
00050 mMuDstMaker->SetStatus("*",0);
00051 mMuDstMaker->SetStatus("MuEvent",1);
00052 mMuDstMaker->SetStatus("EmcAll",1);
00053
00054
00055 mStarDatabase = new St_db_Maker("StarDb", "MySQL:StarDb");
00056
00057
00058 #ifdef MONTE_CARLO // flags for M-C events
00059 TDatime *time = new TDatime();
00060 mStarDatabase -> SetDateTime( time -> GetDate(), time -> GetTime() );
00061 mStarDatabase->SetDateTime(20031120,0);
00062 mStarDatabase->SetFlavor("sim","eemcPMTcal");
00063 mStarDatabase->SetFlavor("sim","eemcPIXcal");
00064 mStarDatabase->SetFlavor("sim","eemcPMTped");
00065 mStarDatabase->SetFlavor("sim","eemcPMTstat");
00066 mStarDatabase->SetFlavor("sim","eemcPMTname");
00067 mStarDatabase->SetFlavor("sim","eemcADCconf");
00068 #endif
00069
00070
00071 new StEEmcDbMaker("eemcDb");
00072 gMessMgr -> SwitchOff("D");
00073 gMessMgr -> SwitchOn("I");
00074
00075 #ifdef MONTE_CARLO
00076
00077 if ( useSlow ) {
00078 StEEmcSlowMaker *slowSim = new StEEmcSlowMaker("slowSim");
00079 slowSim->setDropBad(0);
00080 slowSim->setAddPed(0);
00081 slowSim->setSmearPed(0);
00082 slowSim->setOverwrite(1);
00083 }
00084 #endif
00085
00086
00087
00088 mEEmcA2E=new StEEmcA2EMaker("AandE");
00089 mEEmcA2E->database("eemcDb");
00090 mEEmcA2E->source("MuDst",1);
00091 mEEmcA2E->threshold(0,3.0);
00092 mEEmcA2E->threshold(1,3.0);
00093 mEEmcA2E->threshold(2,3.0);
00094 mEEmcA2E->threshold(3,3.0);
00095 #ifdef MONTE_CARLO
00096 mEEmcA2E->scale(1.2);
00097 #endif
00098
00099
00100 mEEclusters=new StEEmcClusterMaker("mEEclusters");
00101 mEEclusters->analysis("AandE");
00102 mEEclusters->seedEnergy(0.8,0);
00103 mEEclusters->seedEnergy(2.0/1000.,4);
00104 mEEclusters->seedEnergy(2.0/1000.,5);
00105 mEEclusters->setSeedFloor(3.0);
00106
00107
00108 mEEclusters->setMaxExtent(3);
00109
00110
00111
00112
00113 mEEpoints=new StEEmcPointMaker("mEEpoints");
00114 mEEpoints->analysis("AandE");
00115 mEEpoints->clusters("mEEclusters");
00116
00117
00118
00119
00120 mEEmixer=new StEEmcMixTreeMaker("mEEmixer");
00121 mEEmixer->setFilename( ofile );
00122 mEEmixer->mudst("MuDst");
00123 mEEmixer->analysis("AandE");
00124 mEEmixer->points("mEEpoints");
00125 mEEmixer->sector(4);
00126 mEEmixer->sector(5);
00127 mEEmixer->sector(6);
00128 mEEmixer->sector(7);
00129 mEEmixer->trigger(45203);
00130
00131
00132 mEEmixer2 = new StEEmcMixHistMaker("mEEmixer2");
00133 mEEmixer2->mudst("MuDst");
00134 mEEmixer2->analysis("AandE");
00135 mEEmixer2->points("mEEpoints");
00136 mEEmixer2->sector(4);
00137 mEEmixer2->sector(5);
00138 mEEmixer2->sector(6);
00139 mEEmixer2->sector(7);
00140 mEEmixer2->trigger(45203);
00141
00142
00143
00144
00145
00146
00147
00148 mChain->ls(3);
00149 mChain->Init();
00150
00151
00152 Int_t stat = 0;
00153 Int_t count = 0;
00154 while ( stat == 0 ) {
00155
00156
00157 if ( count++ >= nevents )
00158 if ( nevents > 0 ) break;
00159
00160
00161 mChain -> Clear();
00162
00163
00164
00165 stat = mChain -> Make();
00166
00167 if ( (count%100) ) continue;
00168
00169 std::cout << "------------------------------------------------";
00170 std::cout << "event=" << count << std::endl;
00171 for ( int i = 0; i < 4; i++ ) {
00172 std::cout << " layer=" << i << " nhits=" << mEEmcA2E->numberOfHitTowers(i) << std::endl;
00173 }
00174
00175
00176 }
00177
00178
00179 mChain -> Finish();
00180
00181
00182 TString oo=ofile;
00183 oo.ReplaceAll("pi0tree","pi0hist");
00184 TFile *f=new TFile(oo,"recreate");
00185 f->cd();
00186 mEEmixer2->GetHistList()->Write();
00187 f->Write();
00188 f->Close();
00189 delete f;
00190
00191
00192
00193 return;
00194
00195 }
00196
00197 void LoadLibs()
00198 {
00199 gSystem->Load("StDbLib");
00200 gSystem->Load("StDbBroker");
00201 gSystem->Load("St_db_Maker");
00202 gSystem->Load("StEEmcUtil");
00203 gSystem->Load("StEEmcDbMaker");
00204
00205 gSystem->Load("StEEmcBFC2005");
00206
00207 gSystem->Load("StEEmcSimulatorMaker");
00208
00209 }
00210
00211
00212
00213 void testNeighborhood()
00214 {
00215
00216 for ( Int_t i = 0; i < 720; i++ ) {
00217
00218 mEEmcA2E->tower(i).print();
00219
00220 Int_t num= mEEmcA2E->tower(i).numberOfNeighbors();
00221 std::cout << "+ number of neighbors=" << num << std::endl;
00222
00223 for ( Int_t j = 0; j < num; j++ ) {
00224
00225 std::cout << "+ ";
00226 Int_t nn =mEEmcA2E->tower(i).neighborIndex(j);
00227 mEEmcA2E->tower(nn).print();
00228
00229 }
00230
00231 }
00232
00233 }