00001
00002 #define MONTE_CARLO
00003
00004 class StChain;
00005 class St_db_Maker;
00006 class StEEmcDb;
00007 class StMuDstMaker;
00008 class StEEmcA2EMaker;
00009 class StEEmcGenericClusterMaker;
00010 class StEEmcGenericPointMaker;
00011 class StEEmcPointFitMaker;
00012 class StEEmcMixMaker;
00013 class StEEmcMixQAMaker;
00014 class StSpinDbMaker;
00015 class StEEmcPi0Maker;
00016
00017
00018
00019
00020 StChain *mChain = 0;
00021 St_db_Maker *mStarDatabase = 0;
00022 StEEmcDb *mEEmcDatabase = 0;
00023 StMuDstMaker *mMuDstMaker = 0;
00024 StEEmcA2EMaker *mEEanalysis = 0;
00025 StEEmcGenericClusterMaker *mEEclusters = 0;
00026 StEEmcGenericPointMaker *mEEpoints = 0;
00027
00028
00029
00030
00031
00032
00033
00034 Int_t count = 0;
00035 Int_t stat = 0;
00036
00037 Int_t prescale = 1;
00038
00039 void runEEmcPi0Maker( Int_t nevents = -1,
00040
00041
00042 Char_t *name="mc.list",
00043 Char_t *ofile="mc.root",
00044 Char_t *path = "",
00045 Int_t trigID=96261,
00046 Int_t nfiles = 100
00047 )
00048 {
00049
00050
00051 TString pathname = path;
00052 pathname += name;
00053
00054
00055
00056
00057 LoadLibs();
00058
00059
00060
00061
00062 mChain = new StChain("eemcAnalysisChain");
00063
00064
00065
00066
00067 mMuDstMaker = new StMuDstMaker(0,0,path,name,"MuDst",nfiles);
00068 mMuDstMaker->SetStatus("*",0);
00069 mMuDstMaker->SetStatus("MuEvent",1);
00070 mMuDstMaker->SetStatus("EmcAll",1);
00071
00072
00073
00074
00075 mStarDatabase = new St_db_Maker("StarDb", "MySQL:StarDb");
00076
00077
00078
00079 #ifdef MONTE_CARLO
00080
00081
00082
00083 mStarDatabase->SetFlavor("sim","eemcPMTcal");
00084 mStarDatabase->SetFlavor("sim","eemcPIXcal");
00085 mStarDatabase->SetFlavor("sim","eemcPMTped");
00086 mStarDatabase->SetFlavor("sim","eemcPMTstat");
00087 mStarDatabase->SetFlavor("sim","eemcPMTname");
00088 mStarDatabase->SetFlavor("sim","eemcADCconf");
00089 mStarDatabase->SetDateTime(20050101,0);
00090 #endif
00091
00092
00093
00094
00095
00096 new StEEmcDbMaker("eemcDb");
00097
00098
00099 gMessMgr -> SwitchOn("D");
00100 gMessMgr -> SwitchOn("I");
00101
00102
00103
00104
00105
00106
00107 mSpinDb = new StSpinDbMaker("mSpinDb");
00108
00109
00110
00111 #ifdef MONTE_CARLO
00112
00113
00114
00115
00116 StEEmcSlowMaker *slowSim = new StEEmcSlowMaker("slowSim");
00117 slowSim->setDropBad(0);
00118 slowSim->setAddPed(0);
00119 slowSim->setSmearPed(0);
00120 slowSim->setOverwrite(1);
00121 #endif
00122
00123
00124
00125
00126
00127 mEEanalysis=new StEEmcA2EMaker("AandE");
00128 mEEanalysis->database("eemcDb");
00129 mEEanalysis->source("MuDst",1);
00130 mEEanalysis->threshold(3.0,0);
00131 mEEanalysis->threshold(3.0,1);
00132 mEEanalysis->threshold(3.0,2);
00133 mEEanalysis->threshold(3.0,3);
00134 mEEanalysis->threshold(3.0,4);
00135 mEEanalysis->threshold(3.0,5);
00136 #ifdef MONTE_CARLO
00137 mEEanalysis->scale(1.2);
00138 #endif
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 mEEclusters=new StMyClusterMaker("mEEclusters", mEEanalysis, mMuDstMaker );
00149 ((StMyClusterMaker*)mEEclusters)->setSmdSeedEnergy( 5.0/1000.0 );
00150 ((StMyClusterMaker*)mEEclusters)->setSmdMinimumEnergy(0.5/1000.0 );
00151 ((StMyClusterMaker*)mEEclusters)->setSmdMaximumSize(3);
00152 ((StMyClusterMaker*)mEEclusters)->setSmdTruncationRatio(1.10);
00153 ((StMyClusterMaker*)mEEclusters)->setSmdMinimumStrips(3);
00154
00155 ((StMyClusterMaker*)mEEclusters)->setSeedEnergy(0.8);
00156 ((StMyClusterMaker*)mEEclusters)->setMinimumEnergy(0.5);
00157
00158
00159 mEEpoints=new StMyPointMaker("mEEpoints",mEEanalysis,mEEclusters);
00160 ((StMyPointMaker*)mEEpoints)->setSplit();
00161
00162 StEEmcPi0Maker *mEEpi0s = new StEEmcPi0Maker("mEEpi0s",mEEanalysis,mEEclusters,mEEpoints);
00163
00164 mChain->ls(3);
00165 mChain->Init();
00166
00167
00168
00169
00170
00171
00172
00173
00174 std::cout << "entering event loop" << std::endl;
00175 printf("root really sux\n");
00176
00177
00178
00179 Int_t stat = 0;
00180 Int_t count = 0;
00181 while ( stat == 0 ) {
00182
00183
00184 printf("event=%d\n",count);
00185
00186
00187
00188
00189 if ( count++ >= nevents ) if ( nevents > 0 ) break;
00190
00191
00192
00193
00194 mChain -> Clear();
00195
00196
00197
00198
00199
00200 stat = mChain -> Make();
00201
00202
00203
00204
00205
00206
00207 std::cout << "------------------------------------------------";
00208 std::cout << "event=" << count << std::endl;
00209
00210
00211
00212
00213 Int_t nhits[]={0,0,0,0,0,0};
00214 for ( int i = 0; i < 4; i++ ) {
00215
00216
00217 nhits[i]+=mEEanalysis->numberOfHitTowers(i);
00218 }
00219
00220
00221
00222
00223 Int_t nu=0,nv=0;
00224 for ( Int_t sec=0;sec<12;sec++ )
00225 {
00226 nu+=mEEanalysis->numberOfHitStrips(sec,0);
00227 nv+=mEEanalysis->numberOfHitStrips(sec,1);
00228 }
00229 nhits[4]=nu;
00230 nhits[5]=nv;
00231
00232
00233
00234
00235
00236 Int_t ncl[6]={0,0,0,0,0,0};
00237 ncl[0]+=mEEclusters->numberOfClusters(0);
00238 ncl[1]+=mEEclusters->numberOfClusters(1);
00239 ncl[2]+=mEEclusters->numberOfClusters(2);
00240 ncl[3]+=mEEclusters->numberOfClusters(3);
00241 ncl[4]+=mEEclusters->numberOfClusters(4);
00242 ncl[5]+=mEEclusters->numberOfClusters(5);
00243
00244 const Char_t *lay[]={"tower:","pre1: ", "pre2: ", "post: ", "smdu: ", "smdv: "};
00245 for ( Int_t i=0;i<6;i++ )
00246 {
00247 std::cout << lay[i] << " " << nhits[i] << " " << ncl[i] << std::endl;
00248 }
00249
00250 std::cout << "number of points: " << mEEpoints -> numberOfPoints() << std::endl;
00251
00252
00253
00254
00255 }
00256
00257
00258
00259
00260
00261
00262
00263
00264 mEEmcDatabase = (StEEmcDb*)mChain->GetDataSet("StEEmcDb");
00265 if (mEEmcDatabase) mEEmcDatabase->exportAscii("dbdump.dat");
00266
00267
00268
00269
00270 mChain -> Finish();
00271
00272
00273
00274
00275
00276
00277 TFile *file=new TFile(ofile,"RECREATE");
00278 mEEpi0s->GetHistList()->Write();
00279 file->Close();
00280 delete file;
00281
00282
00283 return;
00284
00285 }
00286
00287 void LoadLibs()
00288 {
00289
00290 gROOT -> LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00291 loadSharedLibraries();
00292
00293 gSystem->Load("StDbLib");
00294 gSystem->Load("StDbBroker");
00295 gSystem->Load("St_db_Maker");
00296 gSystem->Load("StEEmcUtil");
00297 gSystem->Load("StEEmcDbMaker");
00298 gSystem->Load("StEEmcSimulatorMaker");
00299
00300 gSystem->Load("StEEmcA2EMaker");
00301 gSystem->Load("StEEmcClusterMaker");
00302 gSystem->Load("StEEmcPointMaker");
00303 gSystem->Load("StEEmcPi0Mixer");
00304
00305 gSystem->Load("StSpinDbMaker");
00306 }
00307