00001
00002
00003
00004
00005
00006 #define MONTE_CARLO
00007
00008 class StChain;
00009 class St_db_Maker;
00010 class StEEmcD;
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 #include <vector>
00038
00039 void runEEmcClusterMaker( Int_t nevents = -1,
00040
00041
00042 Char_t *name="test.MuDst.root",
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 mEEmcDatabase = new StEEmcDbMaker("eemcDb");
00097
00098
00099 gMessMgr -> SwitchOff("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 StEEmcSlowMaker *slowSim = new StEEmcSlowMaker("slowSim");
00116 slowSim->setDropBad(0);
00117 slowSim->setAddPed(0);
00118 slowSim->setSmearPed(0);
00119 slowSim->setOverwrite(1);
00120 #endif
00121
00122
00123
00124
00125
00126 mEEanalysis=new StEEmcA2EMaker("AandE");
00127 mEEanalysis->database("eemcDb");
00128 mEEanalysis->source("MuDst",1);
00129 mEEanalysis->threshold(3.0,0);
00130 mEEanalysis->threshold(3.0,1);
00131 mEEanalysis->threshold(3.0,2);
00132 mEEanalysis->threshold(3.0,3);
00133 mEEanalysis->threshold(3.0,4);
00134 mEEanalysis->threshold(3.0,5);
00135 #ifdef MONTE_CARLO
00136 mEEanalysis->scale(1.2);
00137 #endif
00138
00139
00140
00141
00142
00143 mEEclusters=new StMyClusterMaker("mEEclusters", mEEanalysis, mMuDstMaker );
00144
00145
00146
00147
00148 ((StMyClusterMaker*)mEEclusters)->setSmdSeedEnergy( 5.0/1000.0 );
00149
00150 ((StMyClusterMaker*)mEEclusters)->setSmdMinimumEnergy(0.5/1000.0 );
00151
00152 ((StMyClusterMaker*)mEEclusters)->setSmdMaximumSize(3);
00153
00154
00155 ((StMyClusterMaker*)mEEclusters)->setSmdTruncationRatio(1.20);
00156
00157 ((StMyClusterMaker*)mEEclusters)->setSmdMinimumStrips(3);
00158
00159
00160
00161
00162 ((StMyClusterMaker*)mEEclusters)->setSeedEnergy(0.8);
00163
00164 ((StMyClusterMaker*)mEEclusters)->setMinimumEnergy(0.5);
00165
00166
00167 mChain->ls(3);
00168 mChain->Init();
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181 Int_t stat = 0;
00182 Int_t count = 0;
00183 while ( stat == 0 ) {
00184
00185
00186 printf("event=%d\n",count);
00187
00188
00189
00190
00191 if ( count++ >= nevents ) if ( nevents > 0 ) break;
00192
00193
00194
00195
00196 mChain -> Clear();
00197
00198
00199
00200
00201
00202 stat = mChain -> Make();
00203
00204
00205
00206
00207
00208
00209 std::cout << "------------------------------------------------";
00210 std::cout << "event=" << count << std::endl;
00211
00212
00213
00214
00215 Int_t nhits[]={0,0,0,0,0,0};
00216 for ( int i = 0; i < 4; i++ ) {
00217
00218
00219 nhits[i]+=mEEanalysis->numberOfHitTowers(i);
00220 }
00221
00222
00223
00224
00225 Int_t nu=0,nv=0;
00226 for ( Int_t sec=0;sec<12;sec++ )
00227 {
00228 nu+=mEEanalysis->numberOfHitStrips(sec,0);
00229 nv+=mEEanalysis->numberOfHitStrips(sec,1);
00230 }
00231 nhits[4]=nu;
00232 nhits[5]=nv;
00233
00234
00235
00236
00237
00238 Int_t ncl[6]={0,0,0,0,0,0};
00239 ncl[0]+=mEEclusters->numberOfClusters(0);
00240 ncl[1]+=mEEclusters->numberOfClusters(1);
00241 ncl[2]+=mEEclusters->numberOfClusters(2);
00242 ncl[3]+=mEEclusters->numberOfClusters(3);
00243 ncl[4]+=mEEclusters->numberOfClusters(4);
00244 ncl[5]+=mEEclusters->numberOfClusters(5);
00245
00246 const Char_t *lay[]={"tower:","pre1: ", "pre2: ", "post: ", "smdu: ", "smdv: "};
00247 for ( Int_t i=0;i<6;i++ )
00248 {
00249
00250 printf("%s nhits=%2i nclusters=%2i\n",lay[i],nhits[i],ncl[i]);
00251 }
00252
00253
00254
00255
00256
00257
00258 StEEmcCluster gamma_candidate;
00259 for ( Int_t sector = 0; sector < 12; sector++ )
00260 {
00261
00262 Int_t nclusters = mEEclusters->numberOfClusters( sector, 0 );
00263 for ( Int_t ic=0;ic<nclusters;ic++ )
00264 {
00265 StEEmcCluster cluster = mEEclusters->cluster(sector,0,ic);
00266 Float_t pt = cluster.momentum().Perp();
00267 Float_t old = gamma_candidate.momentum().Perp();
00268 if ( pt > old )
00269 {
00270 gamma_candidate = cluster;
00271 }
00272 }
00273 }
00274
00275
00276 if ( gamma_candidate.key() >= 0 )
00277 gamma_candidate.print();
00278 else {
00279 std::cout << "no gamma candidate found" << std::endl;
00280 continue;
00281 }
00282
00283 Int_t nu = mEEclusters->numberOfMatchingSmdClusters( gamma_candidate, 0 );
00284 Int_t nv = mEEclusters->numberOfMatchingSmdClusters( gamma_candidate, 1 );
00285
00286 std::cout << "Number of matching u=" << nu << " v=" << nv << std::endl;
00287 for ( Int_t iu=0;iu<nu;iu++ )
00288 {
00289 StEEmcSmdCluster smdu=mEEclusters->matchingSmdCluster( gamma_candidate, 0, iu );
00290 smdu.printLine();
00291 }
00292 for ( Int_t iv=0;iv<nv;iv++ )
00293 {
00294 StEEmcSmdCluster smdv=mEEclusters->matchingSmdCluster( gamma_candidate, 1, iv );
00295 smdv.printLine();
00296 }
00297
00298
00299
00300
00301
00302 }
00303
00304
00305
00306
00307
00308
00309
00310
00311 mEEmcDatabase = (StEEmcDb*)mChain->GetDataSet("StEEmcDb");
00312 if (mEEmcDatabase) mEEmcDatabase->exportAscii("dbdump.dat");
00313
00314
00315
00316
00317 mChain -> Finish();
00318
00319 return;
00320
00321 }
00322
00323 void LoadLibs()
00324 {
00325
00326 gROOT -> LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00327 loadSharedLibraries();
00328
00329 gSystem->Load("StDbLib");
00330 gSystem->Load("StDbBroker");
00331 gSystem->Load("St_db_Maker");
00332 gSystem->Load("StEEmcUtil");
00333 gSystem->Load("StEEmcDbMaker");
00334 gSystem->Load("StEEmcSimulatorMaker");
00335
00336 gSystem->Load("StEEmcA2EMaker");
00337 gSystem->Load("StEEmcClusterMaker");
00338
00339
00340 }
00341