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