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