00001 #define MONTE_CARLO
00002
00003 class StChain;
00004 class StMuEmcCollection;
00005
00006 class St_db_Maker;
00007 class StEEmcDb;
00008 class StMuDstMaker;
00009 class StEventMaker;
00010
00011 class StEEmcA2EMaker;
00012 class StEEmcClusterMaker;
00013
00014 StChain *mChain = 0;
00015 St_db_Maker *mStarDatabase = 0;
00016 StEEmcDb *mEEmcDatabase = 0;
00017 StMuDstMaker *mMuDstMaker = 0;
00018 StEventMaker *mStEventMaker = 0;
00019
00020 StEEmcA2EMaker *mEEanalysis=0;
00021 StEEmcClusterMaker *mEEclusters=0;
00022
00023 void runStEEmcPointTreeMaker( Int_t nevents = 500,
00024 Char_t *name = "mc_06TC02_eemc_2500_1_pt10.event.root",
00025 Char_t *ofile = "mc_06TC02_eemc_2500_1_pt10.mix.root",
00026 Char_t *ttree = "",
00027 Char_t *path = "/star/data04/sim/jwebb/MonteCarlo/TowerScan/",
00028 Int_t nfiles = 100,
00029 Bool_t useSlow=1
00030 )
00031 {
00032
00033
00034
00035
00036 TString pathname = path;
00037 pathname += name;
00038
00039
00040 gROOT -> LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00041 loadSharedLibraries();
00042
00043
00044 gROOT->LoadMacro("StRoot/StEEmcPool/StMaxStripPi0/macros/loadlibs.C");
00045 loadlibs();
00046
00047
00048 mChain = new StChain("eemcAnalysisChain");
00049
00050
00051 StIOMaker* ioMaker = new StIOMaker();
00052 ioMaker->SetFile( pathname );
00053 ioMaker->SetIOMode("r");
00054 ioMaker->SetBranch("*",0,"0");
00055 ioMaker->SetBranch("eventBranch",0,"r");
00056
00057
00058
00059 mStarDatabase = new St_db_Maker("StarDb", "MySQL:StarDb");
00060
00061
00062 #ifdef MONTE_CARLO // flags for M-C events
00063 TDatime *time = new TDatime();
00064 mStarDatabase -> SetDateTime( time -> GetDate(), time -> GetTime() );
00065 mStarDatabase->SetDateTime(20031120,0);
00066 mStarDatabase->SetFlavor("sim","eemcPMTcal");
00067 mStarDatabase->SetFlavor("sim","eemcPIXcal");
00068 mStarDatabase->SetFlavor("sim","eemcPMTped");
00069 mStarDatabase->SetFlavor("sim","eemcPMTstat");
00070 mStarDatabase->SetFlavor("sim","eemcPMTname");
00071 mStarDatabase->SetFlavor("sim","eemcADCconf");
00072 #endif
00073
00074
00075 new StEEmcDbMaker("eemcDb");
00076 std::cout << "mEEmcDatabase=" << mEEmcDatabase << std::endl;
00077 gMessMgr -> SwitchOff("D");
00078 gMessMgr -> SwitchOn("I");
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 mEEanalysis = new StEEmcA2EMaker("StEEmcA2EMaker");
00093 mEEanalysis -> source("StEventMaker",2);
00094 mEEanalysis -> database ( "eemcDb" );
00095
00096
00097 mEEclusters=new StEEmcClusterMaker("StEEmcClusterMaker");
00098 mEEclusters->analysis("StEEmcA2EMaker");
00099 mEEclusters->setMaxExtent(3);
00100 mEEclusters->setSeedFloor(2.5);
00101 mEEclusters->setFillStEvent();
00102
00103
00104 mEEpoints=new StEEmcPointTreeMaker("mEEpoints");
00105 mEEpoints->analysis("StEEmcA2EMaker");
00106 mEEpoints->clusters("StEEmcClusterMaker");
00107 mEEpoints->setFillStEvent();
00108 mEEpoints->setFilename(ofile);
00109
00110
00111
00112 mChain->ls(3);
00113 mChain->Init();
00114
00115
00116
00117 Int_t stat = 0;
00118 Int_t count = 0;
00119
00120 while ( stat == 0 ) {
00121
00122
00123 if ( count++ >= nevents ) break;
00124
00125
00126 mChain -> Clear();
00127
00128
00129 stat = mChain -> Make();
00130 if ( stat ) break;
00131
00132
00133 if ( !(count%1) ) {
00134 std::cout << "Event = " << count << " ";
00135 std::cout << "N hit = " << mEEanalysis -> numberOfHitTowers(0) << " ";
00136 std::cout << "N cl = " << mEEclusters->numberOfClusters(5,0) << " "
00137 << mEEclusters->numberOfClusters(5,1) << " "
00138 << mEEclusters->numberOfClusters(5,2) << " "
00139 << mEEclusters->numberOfClusters(5,3) << " "
00140 << mEEclusters->numberOfSmdClusters(5,0) << " "
00141 << mEEclusters->numberOfSmdClusters(5,1) << " ";
00142 StEvent* mEvent = (StEvent*)mChain->GetInputDS("StEvent");
00143 assert(mEvent);
00144 StEmcCollection* emc =(StEmcCollection*)mEvent->emcCollection();
00145 assert(emc);
00146 StEmcDetector *tow=emc->detector(13);
00147 StEmcDetector *pqr=emc->detector(14);
00148 StEmcDetector *smdu=emc->detector(15);
00149 StEmcDetector *smdv=emc->detector(16);
00150 std::cout << "N stcl = " << " "
00151 << tow->cluster()->numberOfClusters() << " "
00152 << pqr->cluster()->numberOfClusters() << " "
00153 << smdu->cluster()->numberOfClusters() << " "
00154 << smdv->cluster()->numberOfClusters() << " ";
00155 std::cout << std::endl;
00156
00157
00158
00159 }
00160
00161
00162
00163
00164
00165
00166 }
00167
00168
00169 mChain -> Finish();
00170
00171 return;
00172
00173
00174 }