00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #define STEVENT 1
00011 #define MCEVENT 0
00012 #define ASSOCIATION 0
00013 #define STEVENTREADER 1
00014 #define MCEVENTREADER 0
00015 #define ASSOCIATIONREADER 0
00016
00017 #define DSTWRITER 0
00018 #define DSTREADER 0
00019
00020 #define ANALYSIS
00021
00022 #if DSTREADER
00023 #define STEVENT 0
00024 #define MCEVENT 0
00025 #define ASSOCIATION 0
00026 #define STEVENTREADER 0
00027 #define MCEVENTREADER 0
00028 #define ASSOCIATIONREADER 0
00029 #define DSTWRITER 0
00030 #endif
00031
00032
00033 class StChain;
00034 StChain *chain=0;
00035
00036
00037 class QinvCorrFctn;
00038 QinvCorrFctn* QinvCF;
00039
00040 class QvecCorrFctn;
00041 QvecCorrFctn* QvecCF;
00042
00043 class MinvCorrFctn;
00044 MinvCorrFctn* MinvCF;
00045 MinvCorrFctn* MinvCF2;
00046 MinvCorrFctn* MinvCFrho;
00047
00048 class MinvCorrFctnM_vs_Pt;
00049 MinvCorrFctnM_vs_Pt* MinvCFM_vs_Pt;
00050
00051 class MinvCorrFctnY_vs_Pt;
00052 MinvCorrFctnY_vs_Pt* MinvCFY_vs_Pt;
00053
00054 class MinvCorrFctnM_vs_P;
00055 MinvCorrFctnM_vs_P* MinvCFM_vs_P;
00056
00057 class p1_vs_p2CorrFctn;
00058 p1_vs_p2CorrFctn* p1_vs_p2_CF;
00059
00060 class YCorrFctn;
00061 YCorrFctn* YdiffCF;
00062
00063 class pDiffCorrFctn;
00064 pDiffCorrFctn* pDiffCF;
00065
00066 class p_vs_angleCorrFctn;
00067 p_vs_angleCorrFctn* p_vs_angleCF;
00068
00069 class phiMeas_vs_phiCalcCorrFctn;
00070 phiMeas_vs_phiCalcCorrFctn* phiMeas_vs_phiCalcCF;
00071
00072
00073 class StHbtAnalysis;
00074 StHbtAnalysis* phiAnal;
00075 StHbtAnalysis* phiAnal2;
00076 StHbtAnalysis* phiAnal3;
00077 StHbtAnalysis* deltaAnal;
00078 StHbtAnalysis* rhoAnal;
00079
00080
00081
00082 Int_t usePath = 0;
00083 Int_t nFile = 0;
00084 TString thePath;
00085 TString theFileName;
00086 TString originalPath;
00087
00088
00089
00090 TBrowser *b=0;
00091 const char *venusFile ="*geant.root";
00092 const char *venusPath ="/disk00001/star/auau200/venus412/default/b0_3/year_1b/hadronic_on/tfs_4/";
00093 const char *dstFile ="/disk00001/star/auau200/two_photon/starlight/twogam/year_1b/hadronic_on/tfs/ric0022_01_14552evts.dst.root";
00094 const char *xdfFile ="/afs/rhic.bnl.gov/star/data/samples/psc0054_07_40evts_dst.xdf";
00095 const char *mdcFile ="/disk00001/star/auau200/venus412/default/b0_3/year_1b/hadronic_on/tss/psc0081_07_40evts.root";
00096 const char *geantFile ="/disk00000/star/auau200/hijing135/jetq_off/b0_3/year_1b/hadronic_on/tfsr/set0041_01_53evts.geant.root";
00097 const char *fileList[] = {dstFile,xdfFile,mdcFile,0};
00098
00099 void wait(int n=1) {
00100 for ( int i=0; i<n*1e6; i++) { }
00101 }
00102 void mess(const char* c="alive") {
00103 for ( int i=0; i<10; i++) { cout << c << endl; }
00104 }
00105
00106
00107 void StHbtExampleQQ(const Int_t nevents, const Char_t **fileList);
00108
00109
00110
00111
00112 void rho(const Int_t nevents=9999,
00113 const Char_t *path=venusPath,
00114 const Char_t *file=venusFile)
00115 {
00116 const char *fileListQQ[]={0,0};
00117 if (path[0]=='-') {
00118 fileListQQ[0]=file;
00119 } else {
00120 fileListQQ[0] = gSystem->ConcatFileName(path,file);
00121 }
00122 StHbtExampleQQ(nevents,fileListQQ);
00123 }
00124
00125
00126 void StHbtExampleQQ(const Int_t nevents, const Char_t **fileList)
00127 {
00128
00129
00130 gSystem->Load("St_base");
00131 gSystem->Load("StChain");
00132 gSystem->Load("St_Tables");
00133 gSystem->Load("StMagF");
00134 gSystem->Load("StUtilities");
00135
00136 gSystem->Load("StIOMaker");
00137 gSystem->Load("StarClassLibrary");
00138 gSystem->Load("StEvent");
00139
00140 gSystem->Load("StEventMaker");
00141 gSystem->Load("StMcEvent");
00142 gSystem->Load("StMcEventMaker");
00143 gSystem->Load("StAssociationMaker");
00144 gSystem->Load("StMcAnalysisMaker");
00145
00146 gSystem->Load("StHbtMaker");
00147
00148 cout << " loading done " << endl;
00149
00150 chain = new StChain("StChain");
00151 chain->SetDebug();
00152
00153
00154 StFile *setFiles= new StFile();
00155 for (int ifil=0; fileList[ifil]; ifil++)
00156 setFiles->AddFile(fileList[ifil]);
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166 #if STEVENT
00167 StIOMaker* ioMaker = new StIOMaker("IO","r",setFiles,"bfcTree");
00168 ioMaker->SetDebug();
00169
00170 ioMaker->SetIOMode("r");
00171 ioMaker->SetDebug();
00172 ioMaker->SetBranch("*",0,"0");
00173 ioMaker->SetBranch("dstBranch",0,"r");
00174 #endif
00175 #if MCEVENT
00176 StIOMaker* ioMaker = new StIOMaker("IO","r",setFiles,"bfcTree");
00177 ioMaker->SetDebug();
00178
00179 ioMaker->SetIOMode("r");
00180 ioMaker->SetDebug();
00181 ioMaker->SetBranch("*",0,"0");
00182 ioMaker->SetBranch("geantBranch",0,"r");
00183 #endif
00184 #if ASSOCIATION
00185 StIOMaker* ioMaker = new StIOMaker("IO","r",setFiles,"bfcTree");
00186 ioMaker->SetDebug();
00187
00188 ioMaker->SetIOMode("r");
00189 ioMaker->SetDebug();
00190 ioMaker->SetBranch("*",0,"0");
00191 cout << " files open" << endl;
00192 ioMaker->SetBranch("geantBranch",0,"r");
00193 cout << " files open" << endl;
00194 ioMaker->SetBranch("dstBranch",0,"r");
00195 cout << " files open" << endl;
00196 #endif
00197
00198
00199
00200
00201 #if STEVENT
00202 StEventMaker* eventMaker = new StEventMaker("events","title");
00203 cout << "Just instantiated StEventMaker... lets go StHbtMaker!" << endl;
00204 #endif
00205 #if MCEVENT
00206 StMcEventMaker* mcEventMaker = new StMcEventMaker;
00207 cout << "StMcEventMaker instantiated"<<endl;
00208 #endif
00209 #if ASSOCIATION
00210 StEventMaker* eventMaker = new StEventMaker("events","title");
00211 cout << "Just instantiated StEventMaker... lets go StHbtMaker!" << endl;
00212 StMcEventMaker* mcEventMaker = new StMcEventMaker;
00213 cout << "StMcEventMaker instantiated"<<endl;
00214 StAssociationMaker* associationMaker = new StAssociationMaker;
00215 cout << "StAssociationMaker instantiated"<<endl;
00216 #endif
00217
00218
00219
00220
00221
00222 StHbtMaker* hbtMaker = new StHbtMaker("HBT","title");
00223 cout << "StHbtMaker instantiated"<<endl;
00224
00225 cout << "StHbtMaker::Init - setting up Reader and Analyses..." << endl;
00226
00227 StHbtManager* TheManager = hbtMaker->HbtManager();
00228
00229
00230
00231
00232
00233
00234 #if STEVENTREADER
00235
00236
00237
00238 StStandardHbtEventReader* Reader = new StStandardHbtEventReader;
00239 Reader->SetTheEventMaker(eventMaker);
00240 TheManager->SetEventReader(Reader);
00241 cout << "READER SET UP.... " << endl;
00242 #endif
00243 #if MCEVENTREADER
00244
00245
00246
00247 StHbtMcEventReader* Reader = new StHbtMcEventReader;
00248 Reader->SetTheMcEventMaker(mcEventMaker);
00249 TheManager->SetEventReader(Reader);
00250 cout << "READER SET UP.... " << endl;
00251 #endif
00252 #if ASSOCIATIONREADER
00253
00254
00255
00256
00257 StHbtAssociationReader* Reader = new StHbtAssociationReader();
00258 Reader->SetTheEventMaker(eventMaker);
00259 Reader->SetTheMcEventMaker(mcEventMaker);
00260 Reader->SetTheAssociationMaker(associationMaker);
00261 Reader->SetTheMcEventMaker(mcEventMaker);
00262 TheManager->SetEventReader(Reader);
00263
00264 StMcParameterDB* parameterDB = StMcParameterDB::instance();
00265 parameterDB->setXCut(0.1);
00266 parameterDB->setZCut(0.2);
00267 parameterDB->setReqCommonHits(10);
00268 cout << "READER SET UP.... " << endl;
00269 #endif
00270
00271 #if DSTWRITER
00272
00273 mikesEventCut* frontLoadedEventCut = new mikesEventCut;
00274 frontLoadedEventCut->SetEventMult(0,100000);
00275 frontLoadedEventCut->SetVertZPos(-35.0,35.0);
00276 Reader->SetEventCut(frontLoadedEventCut);
00277 franksTrackCut* frontLoadedParticleCut = new franksTrackCut;
00278 frontLoadedParticleCut->SetNSigmaPion(-1000.0,1000.0);
00279 frontLoadedParticleCut->SetNSigmaKaon(-3.,3.);
00280 frontLoadedParticleCut->SetNSigmaProton(-1000.0,1000.0);
00281 frontLoadedParticleCut->SetNHits(5,1000);
00282 frontLoadedParticleCut->SetP(0.0,1.0);
00283 frontLoadedParticleCut->SetPt(0.0,1.0);
00284 frontLoadedParticleCut->SetRapidity(-1.5,1.5);
00285 frontLoadedParticleCut->SetDCA(0.0,2.);
00286 frontLoadedParticleCut->SetCharge(0);
00287 frontLoadedParticleCut->SetMass(0.494);
00288 Reader->SetParticleCut(frontLoadedParticleCut);
00289
00290 StHbtAsciiReader* Writer = new StHbtAsciiReader;
00291 Writer->SetFileName("/scr22/laue/test.asc");
00292 TheManager->SetEventWriter(Writer);
00293 cout << "WRITER SET UP.... " << endl;
00294 #endif
00295
00296 #if DSTREADER
00297
00298 StHbtAsciiReader* Reader = new StHbtAsciiReader;
00299 Reader->SetFileName(*fileList);
00300 TheManager->SetEventReader(Reader);
00301
00302 cout << "READER SET UP.... " << endl;
00303 #endif
00304
00305
00306
00307
00308 franksTrackCut* aParticleCut = new franksTrackCut;
00309 aParticleCut->SetNSigmaPion(3.0,1000.0);
00310 aParticleCut->SetNSigmaKaon(-3.,3.);
00311 aParticleCut->SetNSigmaProton(-1000.,-1.0);
00312 aParticleCut->SetNHits(10,50);
00313 aParticleCut->SetP(0.0,1.0);
00314 aParticleCut->SetPt(0.1,2.0);
00315 aParticleCut->SetRapidity(-1.5,1.5);
00316 aParticleCut->SetDCA(0.0,2.);
00317 aParticleCut->SetCharge(+1);
00318 aParticleCut->SetMass(0.494);
00319
00320 trackCutMonitor_P_vs_Dedx* aDedxMoniPos = new trackCutMonitor_P_vs_Dedx(+1,"P_vs_Dedx +","Momentum (GeV/c) vs Energy loss (a.u.)",
00321 100,0.,1.2,100,0.,1e-5);
00322 trackCutMonitor_P_vs_Dedx* aDedxMoniNeg = new trackCutMonitor_P_vs_Dedx(-1,"P_vs_Dedx -","Momentum (GeV/c) vs Energy loss (a.u.)",
00323 100,0.,1.2,100,0.,1e-5);
00324
00325
00326
00327
00328
00329
00330
00331
00332 phiAnal = new StHbtAnalysis;
00333
00334 mikesEventCut* phiEvcut = new mikesEventCut;
00335 phiEvcut->SetEventMult(0,100000);
00336 phiEvcut->SetVertZPos(-35.0,35.0);
00337 eventCutMonitor_Mult* multMoniPass = new eventCutMonitor_Mult();
00338 eventCutMonitor_Mult* multMoniFail = new eventCutMonitor_Mult();
00339 phiEvcut->AddCutMonitor(multMoniPass, multMoniFail);
00340 phiAnal->SetEventCut(phiEvcut);
00341
00342 franksTrackCut* kaonTrkcut = new franksTrackCut( *aParticleCut );
00343
00344 trackCutMonitor_P_vs_Dedx* dedxMoniPosPass = new trackCutMonitor_P_vs_Dedx( *aDedxMoniPos);
00345 trackCutMonitor_P_vs_Dedx* dedxMoniPosFail = new trackCutMonitor_P_vs_Dedx( *aDedxMoniPos);
00346 mess("alive I");
00347 kaonTrkcut->AddCutMonitor( dedxMoniPosPass, dedxMoniPosFail);
00348 mess("alive II");
00349
00350 trackCutMonitor_P* pMoni1 = new trackCutMonitor_P;
00351 trackCutMonitor_P* pMoni2 = new trackCutMonitor_P("P","momentum (Gev/c)",20, 0., 4.);
00352 mess("alive III");
00353 kaonTrkcut->AddCutMonitor( pMoni1, pMoni2);
00354 mess("alive IV");
00355
00356 trackCutMonitor_Pt* ptMoni1 = new trackCutMonitor_Pt;
00357 trackCutMonitor_Pt* ptMoni2 = new trackCutMonitor_Pt;
00358 kaonTrkcut->AddCutMonitor( ptMoni1, ptMoni2);
00359
00360 trackCutMonitor_Y_vs_Pt* yptMoni1 = new trackCutMonitor_Y_vs_Pt;
00361 trackCutMonitor_Y_vs_Pt* yptMoni2 = new trackCutMonitor_Y_vs_Pt;
00362 kaonTrkcut->AddCutMonitor( yptMoni1, yptMoni2);
00363
00364 trackCutMonitor_DCA* DCAMoni1 = new trackCutMonitor_DCA("DCA","DCA (cm)",100,0.,10.);
00365 trackCutMonitor_DCA* DCAMoni2 = new trackCutMonitor_DCA("DCA","DCA (cm)",100,0.,10.);
00366 kaonTrkcut->AddCutMonitor( DCAMoni1, DCAMoni2 );
00367 phiAnal->SetFirstParticleCut(kaonTrkcut);
00368
00369
00370 franksTrackCut* antikaonTrkcut = new franksTrackCut( *((franksTrackCut*)phiAnal->FirstParticleCut()) );
00371 antikaonTrkcut->SetCharge(-1);
00372 phiAnal->SetSecondParticleCut(antikaonTrkcut);
00373
00374 trackCutMonitor_P_vs_Dedx* dedxMoniNegPass = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00375 trackCutMonitor_P_vs_Dedx* dedxMoniNegFail = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00376 antikaonTrkcut->AddCutMonitor( dedxMoniNegPass, dedxMoniNegFail);
00377
00378 franksPairCut* phiPairCut = new franksPairCut;
00379 phiPairCut->SetPDiff(0.,1000.);
00380
00381 phiAnal->SetPairCut(phiPairCut);
00382
00383 phiAnal->SetNumEventsToMix(5);
00384 mess("alive III");
00385
00386
00387
00388
00389 MinvCorrFctn* MinvCF = new MinvCorrFctn("Minv",100,0.98,1.18);
00390 MinvCF->SetEventCut(phiEvcut);
00391 phiAnal->AddCorrFctn(MinvCF);
00392
00393 MinvCFY_vs_Pt = new MinvCorrFctnY_vs_Pt("MinvCF dn/d(Y_vs_Pt)",20, -2., 2., 20, 0., 2. );
00394 phiAnal->AddCorrFctn(MinvCFY_vs_Pt);
00395
00396 MinvCFM_vs_Pt = new MinvCorrFctnM_vs_Pt("MinvCM dn/d(M_vs_Pt)",50, 1.0, 1.04, 20, 0., 1. );
00397 phiAnal->AddCorrFctn(MinvCFM_vs_Pt);
00398
00399
00400 MinvCFM_vs_P = new MinvCorrFctnM_vs_P("Mass (GeV/c^2) vs Momentum (GeV/c)",50,0.98,1.08,20,0.,2.);
00401 phiAnal->AddCorrFctn(MinvCFM_vs_P);
00402
00403 p1_vs_p2CF = new p1_vs_p2CorrFctn("K+ momentum (GeV/c^) vs K- momentum (GeV/c)",20,0.,2., 20,0.,2.);
00404 phiAnal->AddCorrFctn(p1_vs_p2CF);
00405
00406 YCF = new YCorrFctn("Rapidity",20,-2.,2.);
00407 phiAnal->AddCorrFctn(YCF);
00408
00409 pDiffCF = new pDiffCorrFctn(" p1-p2 (GeV/c)",100,0.,.1);
00410 phiAnal->AddCorrFctn(pDiffCF);
00411
00412 p_vs_angleCF = new p_vs_angleCorrFctn("K+/- momentum (GeV/c^) vs opening angle",20,0.,2., 20,0.,2.*3.1415927);
00413 phiAnal->AddCorrFctn(p_vs_angleCF);
00414
00415 phiMeas_vs_phiCalcCF = new phiMeas_vs_phiCalcCorrFctn(" phiMeas vs phiCalc",20,-1.,1.,20,-1.,1.);
00416 phiAnal->AddCorrFctn(phiMeas_vs_phiCalcCF);
00417
00418
00419
00420 TheManager->AddAnalysis(phiAnal);
00421
00422
00423
00424
00425
00426 phiAnal2 = new StHbtAnalysis;
00427
00428 mikesEventCut* phiEvcut2 = new mikesEventCut;
00429 phiEvcut2->SetEventMult(0,10000);
00430 phiEvcut2->SetVertZPos(-35.0,35.0);
00431 phiAnal2->SetEventCut(phiEvcut2);
00432
00433
00434 franksTrackCut* kaonTrkcut2 = new franksTrackCut( *aParticleCut );
00435 kaonTrkcut2->SetNSigmaKaon(-2.,2.);
00436 trackCutMonitor_P_vs_Dedx* dedxMoniPosPass2 = new trackCutMonitor_P_vs_Dedx( *aDedxMoniPos);
00437 trackCutMonitor_P_vs_Dedx* dedxMoniPosFail2 = new trackCutMonitor_P_vs_Dedx( *aDedxMoniPos);
00438 kaonTrkcut2->AddCutMonitor( dedxMoniPosPass2, dedxMoniPosFail2);
00439 phiAnal2->SetFirstParticleCut(kaonTrkcut2);
00440
00441 franksTrackCut* antikaonTrkcut2 = new franksTrackCut( *((franksTrackCut*)phiAnal2->FirstParticleCut()) );
00442 antikaonTrkcut2->SetCharge(-1);
00443 trackCutMonitor_P_vs_Dedx* dedxMoniNegPass2 = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00444 trackCutMonitor_P_vs_Dedx* dedxMoniNegFail2 = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00445 antikaonTrkcut2->AddCutMonitor( dedxMoniNegPass2, dedxMoniNegFail2);
00446 phiAnal2->SetSecondParticleCut(antikaonTrkcut2);
00447
00448 phiAnal2->SetPairCut(phiPairCut);
00449
00450 phiAnal2->SetNumEventsToMix(10);
00451
00452 MinvCorrFctn* MinvCF2 = new MinvCorrFctn(*MinvCF);
00453 MinvCF2->SetEventCut(phiEvcut);
00454 phiAnal2->AddCorrFctn(MinvCF2);
00455
00456
00457
00458
00459
00460
00461
00462 phiAnal3 = new StHbtAnalysis;
00463
00464 mikesEventCut* phiEvcut3 = new mikesEventCut;
00465 phiEvcut3->SetEventMult(0,10000);
00466 phiEvcut3->SetVertZPos(-35.0,35.0);
00467 phiAnal3->SetEventCut(phiEvcut3);
00468
00469
00470 franksTrackCut* kaonTrkcut3 = new franksTrackCut( *aParticleCut );
00471 kaonTrkcut3->SetNSigmaKaon(-1.,1.);
00472 trackCutMonitor_P_vs_Dedx* dedxMoniPosPass3 = new trackCutMonitor_P_vs_Dedx( *aDedxMoniPos);
00473 trackCutMonitor_P_vs_Dedx* dedxMoniPosFail3 = new trackCutMonitor_P_vs_Dedx( *aDedxMoniPos);
00474 kaonTrkcut3->AddCutMonitor( dedxMoniPosPass3, dedxMoniPosFail3);
00475 phiAnal3->SetFirstParticleCut(kaonTrkcut3);
00476
00477 franksTrackCut* antikaonTrkcut3 = new franksTrackCut( *((franksTrackCut*)phiAnal3->FirstParticleCut()) );
00478 antikaonTrkcut3->SetCharge(-1);
00479 trackCutMonitor_P_vs_Dedx* dedxMoniNegPass3 = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00480 trackCutMonitor_P_vs_Dedx* dedxMoniNegFail3 = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00481 antikaonTrkcut3->AddCutMonitor( dedxMoniNegPass3, dedxMoniNegFail3);
00482 phiAnal3->SetSecondParticleCut(antikaonTrkcut3);
00483
00484 phiAnal3->SetPairCut(phiPairCut);
00485
00486 phiAnal3->SetNumEventsToMix(10);
00487
00488 MinvCorrFctn* MinvCF3 = new MinvCorrFctn(*MinvCF);
00489 MinvCF3->SetEventCut(phiEvcut);
00490 phiAnal3->AddCorrFctn(MinvCF3);
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501 rhoAnal = new StHbtAnalysis;
00502
00503 mikesEventCut* rhoEvcut = new mikesEventCut;
00504 rhoEvcut->SetEventMult(0,100000);
00505 rhoEvcut->SetVertZPos(-35.0,35.0);
00506 rhoAnal->SetEventCut(rhoEvcut);
00507
00508 franksTrackCut* piPosTrkcut = new franksTrackCut;
00509 piPosTrkcut->SetNSigmaPion(-2.0,+2.0);
00510 piPosTrkcut->SetNSigmaKaon(-1000.,+1000.);
00511 piPosTrkcut->SetNSigmaProton(-1000.,+1000.0);
00512 piPosTrkcut->SetNHits(10,50);
00513 piPosTrkcut->SetP(0.1,0.5);
00514 piPosTrkcut->SetPt(0.1,2.0);
00515 piPosTrkcut->SetRapidity(-1.5,1.5);
00516 piPosTrkcut->SetDCA(0.0,2.);
00517 piPosTrkcut->SetCharge(+1);
00518 piPosTrkcut->SetMass(0.139);
00519 rhoAnal->SetFirstParticleCut(piPosTrkcut);
00520
00521 franksTrackCut* piNegTrkCut = new franksTrackCut( *((franksTrackCut*)rhoAnal->FirstParticleCut()) );
00522 piNegTrkCut->SetCharge(-1);
00523 rhoAnal->SetSecondParticleCut(piNegTrkCut);
00524
00525 franksPairCut* rhoPairCut = new franksPairCut;
00526 rhoPairCut->SetPDiff(0.,1000.);
00527
00528 rhoAnal->SetPairCut(rhoPairCut);
00529
00530 rhoAnal->SetNumEventsToMix(3);
00531
00532
00533
00534
00535 MinvCFrho = new MinvCorrFctn("Minv",100,0.5,0.8);
00536 MinvCFrho->SetEventCut(rhoEvcut);
00537 rhoAnal->AddCorrFctn(MinvCFrho);
00538
00539
00540
00541 TheManager->AddAnalysis(rhoAnal);
00542
00543
00544
00545 chain->Init();
00546 chain->PrintInfo();
00547
00548 for (Int_t iev=0;iev<nevents; iev++) {
00549 cout << "StHbtExample -- Working on eventNumber " << iev << endl;
00550 chain->Clear();
00551 int iret = chain->Make(iev);
00552 if (iret) {
00553 cout << "Bad return code!" << endl;
00554 break;
00555 }
00556
00557
00558
00559 }
00560 chain->Finish();
00561 }
00562
00563
00564