00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #define STEVENT 0
00021 #define MCEVENT 0
00022 #define ASSOCIATION 0
00023 #define STEVENTREADER 0
00024 #define MCEVENTREADER 0
00025 #define ASSOCIATIONREADER 0
00026 #define XDFREADER 0
00027 #define GSTARTXTREADER 0
00028
00029 #define ASCIIWRITER 0
00030 #define ASCIIREADER 0
00031
00032 #define BINARYWRITER 0
00033 #define BINARYREADER 1
00034
00035 #if ASCIIREADER
00036 #define STEVENT 0
00037 #define MCEVENT 0
00038 #define ASSOCIATION 0
00039 #define STEVENTREADER 0
00040 #define MCEVENTREADER 0
00041 #define ASSOCIATIONREADER 0
00042 #endif
00043
00044 #if BINARYREADER
00045 #define STEVENT 0
00046 #define MCEVENT 0
00047 #define ASSOCIATION 0
00048 #define STEVENTREADER 0
00049 #define MCEVENTREADER 0
00050 #define ASSOCIATIONREADER 0
00051 #endif
00052
00053 #define ANALYSIS
00054
00055
00056 class StChain;
00057 StChain *chain=0;
00058
00059
00060 class QinvCorrFctn;
00061 QinvCorrFctn* QinvCF;
00062
00063 class QvecCorrFctn;
00064 QvecCorrFctn* QvecCF;
00065
00066 class MinvCorrFctn;
00067 MinvCorrFctn* MinvCF;
00068 MinvCorrFctn* MinvCF2;
00069 MinvCorrFctn* MinvCFrho;
00070
00071 class MinvCorrFctnM_vs_Pt;
00072 MinvCorrFctnM_vs_Pt* MinvCFM_vs_Pt;
00073
00074 class MinvCorrFctnY_vs_Pt;
00075 MinvCorrFctnY_vs_Pt* MinvCFY_vs_Pt;
00076
00077 class MinvCorrFctnM_vs_P;
00078 MinvCorrFctnM_vs_P* MinvCFM_vs_P;
00079
00080 class p1_vs_p2CorrFctn;
00081 p1_vs_p2CorrFctn* p1_vs_p2_CF;
00082
00083 class YCorrFctn;
00084 YCorrFctn* YdiffCF;
00085
00086 class pDiffCorrFctn;
00087 pDiffCorrFctn* pDiffCF;
00088
00089 class p_vs_angleCorrFctn;
00090 p_vs_angleCorrFctn* p_vs_angleCF;
00091
00092 class phiMeas_vs_phiCalcCorrFctn;
00093 phiMeas_vs_phiCalcCorrFctn* phiMeas_vs_phiCalcCF;
00094
00095
00096 class StHbtAnalysis;
00097 StHbtAnalysis* phiAnal;
00098 StHbtAnalysis* phiAnal2;
00099 StHbtAnalysis* phiAnal3;
00100 StHbtAnalysis* phiAnalCopy;
00101 StHbtAnalysis* deltaAnal;
00102 StHbtAnalysis* rhoAnal;
00103 StHbtAnalysis* lambdaAnal;
00104
00105
00106
00107 Int_t usePath = 0;
00108 Int_t nFile = 0;
00109 TString thePath;
00110 TString theFileName;
00111 TString originalPath;
00112
00113
00114
00115 TBrowser *b=0;
00116 const char *venusFile ="set*geant.root";
00117 const char *venusPath ="/disk00001/star/auau200/venus412/default/b0_3/year_1b/hadronic_on/tfs_4/";
00118 const char *dstFile ="/disk00001/star/auau200/two_photon/starlight/twogam/year_1b/hadronic_on/tfs/ric0022_01_14552evts.dst.root";
00119 const char *xdfFile ="/afs/rhic.bnl.gov/star/data/samples/psc0054_07_40evts_dst.xdf";
00120 const char *mdcFile ="/disk00001/star/auau200/venus412/default/b0_3/year_1b/hadronic_on/tss/psc0081_07_40evts.root";
00121 const char *geantFile ="/disk00000/star/auau200/hijing135/jetq_off/b0_3/year_1b/hadronic_on/tfsr/set0041_01_53evts.geant.root";
00122 const char *fileList[] = {dstFile,xdfFile,mdcFile,0};
00123
00124 void wait(int n=1) {
00125 for ( int i=0; i<n*1e6; i++) { }
00126 }
00127 void mess(const char* c="alive") {
00128 for ( int i=0; i<10; i++) { cout << c << endl; }
00129 }
00130
00131
00132 void StHbtExampleQQ(const Int_t nevents, const Char_t **fileList, const char*);
00133
00134
00135
00136
00137 void StHbtExampleII(const Int_t nevents=9999,
00138 const Char_t *path=venusPath,
00139 const Char_t *file=venusFile,
00140 const char* histoFile="test.histo.root")
00141 {
00142 const char *fileListQQ[]={0,0};
00143 if (path[0]=='-') {
00144 fileListQQ[0]=file;
00145 } else {
00146 fileListQQ[0] = gSystem->ConcatFileName(path,file);
00147 }
00148 StHbtExampleQQ(nevents,fileListQQ,histoFile);
00149 }
00150
00151
00152 void StHbtExampleQQ(const Int_t nevents, const Char_t **fileList, const char* histoFile)
00153 {
00154
00155
00156 gSystem->Load("St_base");
00157 gSystem->Load("StChain");
00158 gSystem->Load("St_Tables");
00159 gSystem->Load("StMagF");
00160 gSystem->Load("StUtilities");
00161 gSystem->Load("StTreeMaker");
00162 gSystem->Load("StIOMaker");
00163 gSystem->Load("StarClassLibrary");
00164 #if XDFREADER
00165 gSystem->Load("xdf2root");
00166 gSystem->Load("St_xdfin_Maker");
00167 #endif
00168 gSystem->Load("StEvent");
00169 gSystem->Load("StEventMaker");
00170 gSystem->Load("StMcEvent");
00171 gSystem->Load("StMcEventMaker");
00172 gSystem->Load("StAssociationMaker");
00173 gSystem->Load("StMcAnalysisMaker");
00174
00175 gSystem->Load("StHbtMaker");
00176 gSystem->Load("global_Tables");
00177
00178 cout << " loading done " << endl;
00179
00180 chain = new StChain("StChain");
00181 chain->SetDebug();
00182
00183
00184 StFile *setFiles= new StFile();
00185 for (int ifil=0; fileList[ifil]; ifil++)
00186 setFiles->AddFile(fileList[ifil]);
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196 #if STEVENT
00197 StIOMaker* ioMaker = new StIOMaker("IO","r",setFiles,"bfcTree");
00198 ioMaker->SetDebug();
00199
00200 ioMaker->SetIOMode("r");
00201 ioMaker->SetDebug();
00202 ioMaker->SetBranch("*",0,"0");
00203 ioMaker->SetBranch("dstBranch",0,"r");
00204 #endif
00205 #if MCEVENT
00206 StIOMaker* ioMaker = new StIOMaker("IO","r",setFiles,"bfcTree");
00207 ioMaker->SetDebug();
00208
00209 ioMaker->SetIOMode("r");
00210 ioMaker->SetDebug();
00211 ioMaker->SetBranch("*",0,"0");
00212 ioMaker->SetBranch("geantBranch",0,"r");
00213 #endif
00214 #if ASSOCIATION
00215 StIOMaker* ioMaker = new StIOMaker("IO","r",setFiles,"bfcTree");
00216 ioMaker->SetDebug();
00217
00218 ioMaker->SetIOMode("r");
00219 ioMaker->SetDebug();
00220 ioMaker->SetBranch("*",0,"0");
00221 cout << " files open" << endl;
00222 ioMaker->SetBranch("geantBranch",0,"r");
00223 cout << " files open" << endl;
00224 ioMaker->SetBranch("dstBranch",0,"r");
00225 cout << " files open" << endl;
00226 #endif
00227 #if XDFREADER
00228 StIOMaker* ioMaker = new StIOMaker("IO","r",setFiles,"bfcTree");
00229 ioMaker->SetDebug();
00230 ioMaker->SetBranch("*",0,"r");
00231 #endif
00232
00233
00234
00235
00236 #if STEVENT
00237 StEventMaker* eventMaker = new StEventMaker("events","title");
00238 eventMaker->doLoadTpcHits=0;
00239 eventMaker->doLoadFtpcHits=0;
00240 eventMaker->doLoadSvtHits=0;
00241 cout << "Just instantiated StEventMaker... lets go StHbtMaker!" << endl;
00242 #endif
00243 #if MCEVENT
00244 StMcEventMaker* mcEventMaker = new StMcEventMaker;
00245 cout << "StMcEventMaker instantiated"<<endl;
00246 #endif
00247 #if ASSOCIATION
00248 StEventMaker* eventMaker = new StEventMaker("events","title");
00249 cout << "Just instantiated StEventMaker... lets go StHbtMaker!" << endl;
00250 StMcEventMaker* mcEventMaker = new StMcEventMaker;
00251 cout << "StMcEventMaker instantiated"<<endl;
00252 StAssociationMaker* associationMaker = new StAssociationMaker;
00253 cout << "StAssociationMaker instantiated"<<endl;
00254 #endif
00255
00256
00257
00258
00259
00260 StHbtMaker* hbtMaker = new StHbtMaker("HBT","title");
00261 cout << "StHbtMaker instantiated"<<endl;
00262
00263
00264
00265 cout << "StHbtMaker::Init - setting up Reader and Analyses..." << endl;
00266
00267 StHbtManager* TheManager = hbtMaker->HbtManager();
00268
00269
00270
00271
00272
00273 #if STEVENTREADER
00274
00275
00276
00277 StStandardHbtEventReader* Reader = new StStandardHbtEventReader;
00278 Reader->SetTheEventMaker(eventMaker);
00279 TheManager->SetEventReader(Reader);
00280 cout << "READER SET UP.... " << endl;
00281 #endif
00282 #if MCEVENTREADER
00283
00284
00285
00286 StHbtMcEventReader* Reader = new StHbtMcEventReader;
00287 Reader->SetTheMcEventMaker(mcEventMaker);
00288 TheManager->SetEventReader(Reader);
00289 cout << "READER SET UP.... " << endl;
00290 #endif
00291 #if ASSOCIATIONREADER
00292
00293
00294
00295
00296 StHbtAssociationReader* Reader = new StHbtAssociationReader();
00297 Reader->SetTheEventMaker(eventMaker);
00298 Reader->SetTheMcEventMaker(mcEventMaker);
00299 Reader->SetTheAssociationMaker(associationMaker);
00300 Reader->SetTheMcEventMaker(mcEventMaker);
00301 TheManager->SetEventReader(Reader);
00302
00303 StMcParameterDB* parameterDB = StMcParameterDB::instance();
00304 parameterDB->setXCut(0.1);
00305 parameterDB->setZCut(0.2);
00306 parameterDB->setReqCommonHits(10);
00307 cout << "READER SET UP.... " << endl;
00308 #endif
00309
00310 #if ASCIIWRITER
00311 StHbtAsciiReader* asciiWriter = new StHbtAsciiReader;
00312 asciiWriter->SetFileName("test1.asc");
00313 TheManager->AddEventWriter(asciiWriter);
00314
00315 mikesEventCut* asciiFrontLoadedEventCut = new mikesEventCut;
00316 asciiFrontLoadedEventCut->SetEventMult(0,100000);
00317 asciiFrontLoadedEventCut->SetVertZPos(-35.0,35.0);
00318 asciiWriter->SetEventCut(asciiFrontLoadedEventCut);
00319 franksTrackCut* asciiFrontLoadedTrackCut = new franksTrackCut;
00320 asciiFrontLoadedTrackCut->SetNSigmaPion(-1000.0,1000.0);
00321 asciiFrontLoadedTrackCut->SetNSigmaKaon(-3.,3.);
00322 asciiFrontLoadedTrackCut->SetNSigmaProton(-1000.0,1000.0);
00323 asciiFrontLoadedTrackCut->SetNHits(5,1000);
00324 asciiFrontLoadedTrackCut->SetP(0.0,5.0);
00325 asciiFrontLoadedTrackCut->SetPt(0.0,5.0);
00326 asciiFrontLoadedTrackCut->SetRapidity(-1.5,1.5);
00327 asciiFrontLoadedTrackCut->SetDCA(0.0,2.);
00328 asciiFrontLoadedTrackCut->SetCharge(0);
00329 asciiFrontLoadedTrackCut->SetMass(0.494);
00330
00331
00332 cout << "WRITER SET UP.... " << endl;
00333 #endif
00334 #if ASCIIREADER
00335
00336 StHbtAsciiReader* Reader = new StHbtAsciiReader;
00337 Reader->SetFileName(*fileList);
00338
00339 TheManager->SetEventReader(Reader);
00340 cout << "READER SET UP.... " << endl;
00341 #endif
00342 #if BINARYWRITER
00343
00344 StHbtBinaryReader* binaryWriter = new StHbtBinaryReader(ioMaker);
00345
00346 binaryWriter->SetFileName("test1.bin");
00347 TheManager->AddEventWriter(binaryWriter);
00348
00349 mikesEventCut* binaryFrontLoadedEventCut = new mikesEventCut;
00350 binaryFrontLoadedEventCut->SetEventMult(0,100000);
00351 binaryFrontLoadedEventCut->SetVertZPos(-35.0,35.0);
00352 binaryWriter->SetEventCut(binaryFrontLoadedEventCut);
00353 franksTrackCut* binaryFrontLoadedTrackCut = new franksTrackCut;
00354 binaryFrontLoadedTrackCut->SetNSigmaPion(-1000.0,1000.0);
00355 binaryFrontLoadedTrackCut->SetNSigmaKaon(-3.,3.);
00356 binaryFrontLoadedTrackCut->SetNSigmaProton(-1000.0,1000.0);
00357 binaryFrontLoadedTrackCut->SetNHits(5,1000);
00358 binaryFrontLoadedTrackCut->SetP(0.0,5.0);
00359 binaryFrontLoadedTrackCut->SetPt(0.0,5.0);
00360 binaryFrontLoadedTrackCut->SetRapidity(-1.5,1.5);
00361 binaryFrontLoadedTrackCut->SetDCA(0.0,2.);
00362 binaryFrontLoadedTrackCut->SetCharge(0);
00363 binaryFrontLoadedTrackCut->SetMass(0.494);
00364 binaryWriter->SetTrackCut(binaryFrontLoadedTrackCut);
00365 cout << "WRITER SET UP.... " << endl;
00366 #endif
00367 #if BINARYREADER
00368
00369 StHbtBinaryReader* Reader = new StHbtBinaryReader(0,*fileList,0);
00370
00371
00372 TheManager->SetEventReader(Reader);
00373 cout << "READER SET UP.... " << endl;
00374 #endif
00375 #if XDFREADER
00376
00377 StHbtXDFReader* Reader = new StHbtXDFReader("evgen","evgen/particle");
00378 Reader->AddAcceptedParticle(-321);
00379 Reader->AddAcceptedParticle(+321);
00380 Reader->AddAcceptedMother(333);
00381
00382
00383
00384
00385
00386 TheManager->SetEventReader(Reader);
00387 cout << "READER SET UP.... " << endl;
00388 #endif
00389 #if GSTARTXTREADER
00390 StHbtGstarTxtReader* Reader = new StHbtGstarTxtReader;
00391
00392 Reader->SetFileName("/star/rcf/data06/evgen/auau200/hbt/default/midcentral/year_2000/hadronic_on/gen/evgen.41.evt");
00393 TheManager->SetEventReader(Reader);
00394 #endif
00395
00396
00397
00398
00399 franksTrackCut* aTrackCut = new franksTrackCut;
00400 aTrackCut->SetNSigmaPion(3.0,1000.0);
00401 aTrackCut->SetNSigmaKaon(-3.,3.);
00402 aTrackCut->SetNSigmaProton(-1000.,-1.0);
00403 aTrackCut->SetNHits(5,50);
00404 aTrackCut->SetP(0.2,0.8);
00405 aTrackCut->SetPt(0.0,5.0);
00406 aTrackCut->SetRapidity(-1.5,1.5);
00407 aTrackCut->SetDCA(0.0,2.);
00408 aTrackCut->SetCharge(+1);
00409 aTrackCut->SetMass(0.494);
00410
00411 trackCutMonitor_P_vs_Dedx* aDedxMoniPos = new trackCutMonitor_P_vs_Dedx(+1,"P_vs_Dedx +","Momentum (GeV/c) vs Energy loss (a.u.)",100,0.,1.2,100,0.,1e-5);
00412 trackCutMonitor_P_vs_Dedx* aDedxMoniNeg = new trackCutMonitor_P_vs_Dedx(-1,"P_vs_Dedx -","Momentum (GeV/c) vs Energy loss (a.u.)",100,0.,1.2,100,0.,1e-5);
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422 phiAnal = new StHbtAnalysis;
00423
00424 mikesEventCut* phiEvcut = new mikesEventCut;
00425 phiEvcut->SetEventMult(0,100000);
00426 phiEvcut->SetVertZPos(-35.0,35.0);
00427 eventCutMonitor_Mult* multMoniPass = new eventCutMonitor_Mult();
00428 eventCutMonitor_Mult* multMoniFail = new eventCutMonitor_Mult();
00429 phiEvcut->AddCutMonitor(multMoniPass, multMoniFail);
00430 phiAnal->SetEventCut(phiEvcut);
00431
00432 franksTrackCut* kaonTrkcut = new franksTrackCut( *aTrackCut );
00433
00434 trackCutMonitor_P_vs_Dedx* dedxMoniPosPass = new trackCutMonitor_P_vs_Dedx( *aDedxMoniPos);
00435 trackCutMonitor_P_vs_Dedx* dedxMoniPosFail = new trackCutMonitor_P_vs_Dedx( *aDedxMoniPos);
00436 kaonTrkcut->AddCutMonitor( dedxMoniPosPass, dedxMoniPosFail);
00437
00438 trackCutMonitor_P* pMoni1 = new trackCutMonitor_P;
00439 trackCutMonitor_P* pMoni2 = new trackCutMonitor_P("P","momentum (GeV/c)",20, 0., 4.);
00440 kaonTrkcut->AddCutMonitor( pMoni1, pMoni2);
00441
00442 trackCutMonitor_Pt* ptMoni1 = new trackCutMonitor_Pt;
00443 trackCutMonitor_Pt* ptMoni2 = new trackCutMonitor_Pt;
00444 kaonTrkcut->AddCutMonitor( ptMoni1, ptMoni2);
00445
00446 trackCutMonitor_Y_vs_Pt* yptMoni1 = new trackCutMonitor_Y_vs_Pt;
00447 trackCutMonitor_Y_vs_Pt* yptMoni2 = new trackCutMonitor_Y_vs_Pt;
00448 kaonTrkcut->AddCutMonitor( yptMoni1, yptMoni2);
00449
00450 trackCutMonitor_DCA* DCAMoni1 = new trackCutMonitor_DCA("DCA","DCA (cm)",100,0.,10.);
00451 trackCutMonitor_DCA* DCAMoni2 = new trackCutMonitor_DCA("DCA","DCA (cm)",100,0.,10.);
00452 kaonTrkcut->AddCutMonitor( DCAMoni1, DCAMoni2 );
00453 phiAnal->SetFirstParticleCut(kaonTrkcut);
00454
00455
00456 franksTrackCut* antikaonTrkcut = new franksTrackCut( *((franksTrackCut*)phiAnal->FirstParticleCut()) );
00457 antikaonTrkcut->SetCharge(-1);
00458 phiAnal->SetSecondParticleCut(antikaonTrkcut);
00459
00460 trackCutMonitor_P_vs_Dedx* dedxMoniNegPass = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00461 trackCutMonitor_P_vs_Dedx* dedxMoniNegFail = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00462 antikaonTrkcut->AddCutMonitor( dedxMoniNegPass, dedxMoniNegFail);
00463
00464
00465 mikesPairCut* phiPairCut = new mikesPairCut;
00466
00467 phiAnal->SetPairCut(phiPairCut);
00468
00469 phiAnal->SetNumEventsToMix(3);
00470
00471
00472
00473
00474 MinvCorrFctn* MinvCF = new MinvCorrFctn("Minv",100,0.95,1.25);
00475 phiAnal->AddCorrFctn(MinvCF);
00476
00477 MinvCorrFctnArmenteros* MinvCFArm = new MinvCorrFctnArmenteros("ArmenterosPodolanski",200,-1.,1.,300,0.,.3);
00478 phiAnal->AddCorrFctn(MinvCFArm);
00479
00480 MinvCFY_vs_Pt = new MinvCorrFctnY_vs_Pt("MinvCF dn/d(Y_vs_Pt)",31, -1.5, 1.5, 20, 0., 2. );
00481 phiAnal->AddCorrFctn(MinvCFY_vs_Pt);
00482
00483 MinvCFM_vs_Pt = new MinvCorrFctnM_vs_Pt("MinvCM dn/d(M_vs_Pt)",100,0.98, 1.18, 40, 0., 2. );
00484 phiAnal->AddCorrFctn(MinvCFM_vs_Pt);
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508 TheManager->AddAnalysis(phiAnal);
00509
00510
00511
00512
00513
00514
00515 StHbtAnalysis* eeAnal = new StHbtLikeSignAnalysis;
00516
00517 mikesEventCut* eeEvcut = new mikesEventCut;
00518 eeEvcut->SetEventMult(0,100000);
00519 eeEvcut->SetVertZPos(-35.0,35.0);
00520 eeAnal->SetEventCut(eeEvcut);
00521
00522 franksTrackCut* electronTrkCut = new franksTrackCut( *aTrackCut );
00523 electronTrkCut->SetNSigmaElectron(-1e2,+1e2);
00524 electronTrkCut->SetNSigmaPion(-1e5,+1e5);
00525 electronTrkCut->SetNSigmaKaon(-1e5,+1e5);
00526 electronTrkCut->SetNSigmaProton(-1e5,+1e5);
00527 #ifdef MCEVENT
00528 electronTrkCut->SetNSigmaElectron(-3,+3);
00529 electronTrkCut->SetNSigmaPion(-1e5,+1e5);
00530 electronTrkCut->SetNSigmaKaon(-1e5,+1e5);
00531 electronTrkCut->SetNSigmaProton(-1e5,+1e5);
00532 #endif
00533 electronTrkCut->SetNHits(5,100);
00534 electronTrkCut->SetP(0.,2.0);
00535 electronTrkCut->SetPt(0.0,2.0);
00536 electronTrkCut->SetRapidity(-1.5,1.5);
00537 electronTrkCut->SetDCA(2.0,50);
00538 electronTrkCut->SetCharge(+1);
00539 electronTrkCut->SetMass(0.000511);
00540
00541 trackCutMonitor_P_vs_Dedx* dedxMoniPosPass = new trackCutMonitor_P_vs_Dedx(+1,"P_vs_Dedx +","Momentum (GeV/c) vs Energy loss (a.u.)",100,0.,5.0,100,0.,1e-5);
00542 trackCutMonitor_P_vs_Dedx* dedxMoniPosFail = new trackCutMonitor_P_vs_Dedx(-1,"P_vs_Dedx -","Momentum (GeV/c) vs Energy loss (a.u.)",100,0.,5.0,100,0.,1e-5);
00543 electronTrkCut->AddCutMonitor( dedxMoniPosPass, dedxMoniPosFail);
00544
00545 trackCutMonitor_P* pMoni1 = new trackCutMonitor_P;
00546 trackCutMonitor_P* pMoni2 = new trackCutMonitor_P("P","momentum (GeV/c)",20, 0., 4.);
00547 electronTrkCut->AddCutMonitor( pMoni1, pMoni2);
00548
00549 trackCutMonitor_Pt* ptMoni1 = new trackCutMonitor_Pt;
00550 trackCutMonitor_Pt* ptMoni2 = new trackCutMonitor_Pt;
00551 electronTrkCut->AddCutMonitor( ptMoni1, ptMoni2);
00552
00553 trackCutMonitor_Y_vs_Pt* yptMoni1 = new trackCutMonitor_Y_vs_Pt;
00554 trackCutMonitor_Y_vs_Pt* yptMoni2 = new trackCutMonitor_Y_vs_Pt;
00555 electronTrkCut->AddCutMonitor( yptMoni1, yptMoni2);
00556
00557 trackCutMonitor_DCA* DCAMoni1 = new trackCutMonitor_DCA("DCA","DCA (cm)",100,0.,10.);
00558 trackCutMonitor_DCA* DCAMoni2 = new trackCutMonitor_DCA("DCA","DCA (cm)",100,0.,10.);
00559 electronTrkCut->AddCutMonitor( DCAMoni1, DCAMoni2 );
00560 eeAnal->SetFirstParticleCut(electronTrkCut);
00561
00562
00563 franksTrackCut* antiElectronTrkCut = new franksTrackCut( *((franksTrackCut*)eeAnal->FirstParticleCut()) );
00564 antiElectronTrkCut->SetCharge(-1);
00565 eeAnal->SetSecondParticleCut(antiElectronTrkCut);
00566
00567 trackCutMonitor_P_vs_Dedx* dedxMoniNegPass = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00568 trackCutMonitor_P_vs_Dedx* dedxMoniNegFail = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00569 antiElectronTrkCut->AddCutMonitor( dedxMoniNegPass, dedxMoniNegFail);
00570
00571
00572 mikesPairCut* eePairCut = new mikesPairCut;
00573
00574 eeAnal->SetPairCut(eePairCut);
00575
00576 eeAnal->SetNumEventsToMix(2);
00577
00578
00579
00580
00581 MinvLikeSignCorrFctn* MinvLikeSignCFconv = new MinvLikeSignCorrFctn("MinvLikeSign",500,0.,.25);
00582 eeAnal->AddCorrFctn(MinvLikeSignCFconv);
00583 MinvLikeSignCorrFctn* MinvLikeSignCF = new MinvLikeSignCorrFctn("MinvLikeSign",100,0.95,1.15);
00584 eeAnal->AddCorrFctn(MinvLikeSignCF);
00585
00586
00587
00588 TheManager->AddAnalysis(eeAnal);
00589
00590
00591
00592
00593
00594 lambdaAnal = new StHbtAnalysis( *phiAnal );
00595 ((franksTrackCut*)lambdaAnal->FirstParticleCut())->SetNSigmaPion(-1000.0,1000.0);
00596 ((franksTrackCut*)lambdaAnal->FirstParticleCut())->SetNSigmaKaon(-1000.0,1000.0);
00597 ((franksTrackCut*)lambdaAnal->FirstParticleCut())->SetNSigmaProton(-3.0,3.0);
00598 ((franksTrackCut*)lambdaAnal->FirstParticleCut())->SetP(0.,2.);
00599 ((franksTrackCut*)lambdaAnal->FirstParticleCut())->SetPt(0.,2.);
00600 ((franksTrackCut*)lambdaAnal->FirstParticleCut())->SetCharge(-1);
00601 ((franksTrackCut*)lambdaAnal->FirstParticleCut())->SetMass(0.938);
00602 ((franksTrackCut*)lambdaAnal->FirstParticleCut())->SetDCA(8.0,16.);
00603 ((franksTrackCut*)lambdaAnal->SecondParticleCut())->SetNSigmaPion(-3.0,3.0);
00604 ((franksTrackCut*)lambdaAnal->SecondParticleCut())->SetNSigmaKaon(-1000.0,1000.0);
00605 ((franksTrackCut*)lambdaAnal->SecondParticleCut())->SetNSigmaProton(-1000.0,1000.0);
00606 ((franksTrackCut*)lambdaAnal->SecondParticleCut())->SetP(0.,2.);
00607 ((franksTrackCut*)lambdaAnal->SecondParticleCut())->SetPt(0.,2.);
00608 ((franksTrackCut*)lambdaAnal->SecondParticleCut())->SetCharge(-1);
00609 ((franksTrackCut*)lambdaAnal->SecondParticleCut())->SetMass(0.139);
00610 ((franksTrackCut*)lambdaAnal->SecondParticleCut())->SetDCA(8.0,16.);
00611
00612
00613
00614
00615
00616 StHbtAnalysis* lambdaAnal2 = new StHbtAnalysis( *lambdaAnal );
00617 delete ((franksPairCut*)lambdaAnal2->PairCut());
00618 franksPairCut* lambdaAnal2PairCut = new franksPairCut;
00619 lambdaAnal2->SetPairCut(lambdaAnal2PairCut);
00620
00621
00622
00623
00624
00625
00626
00627 rhoAnal = new StHbtAnalysis;
00628
00629 mikesEventCut* rhoEvcut = new mikesEventCut;
00630 rhoEvcut->SetEventMult(0,100000);
00631 rhoEvcut->SetVertZPos(-35.0,35.0);
00632 rhoAnal->SetEventCut(rhoEvcut);
00633
00634 franksTrackCut* piPosTrkcut = new franksTrackCut;
00635 piPosTrkcut->SetNSigmaPion(-2.0,+2.0);
00636 piPosTrkcut->SetNSigmaKaon(-1000.,+1000.);
00637 piPosTrkcut->SetNSigmaProton(-1000.,+1000.0);
00638 piPosTrkcut->SetNHits(10,50);
00639 piPosTrkcut->SetP(0.1,0.5);
00640 piPosTrkcut->SetPt(0.1,2.0);
00641 piPosTrkcut->SetRapidity(-1.5,1.5);
00642 piPosTrkcut->SetDCA(0.0,2.);
00643 piPosTrkcut->SetCharge(+1);
00644 piPosTrkcut->SetMass(0.139);
00645 rhoAnal->SetFirstParticleCut(piPosTrkcut);
00646
00647 franksTrackCut* piNegTrkCut = new franksTrackCut( *((franksTrackCut*)rhoAnal->FirstParticleCut()) );
00648 piNegTrkCut->SetCharge(-1);
00649 rhoAnal->SetSecondParticleCut(piNegTrkCut);
00650
00651 mikesPairCut* rhoPairCut = new mikesPairCut;
00652
00653
00654
00655 rhoAnal->SetPairCut(rhoPairCut);
00656
00657 rhoAnal->SetNumEventsToMix(10);
00658
00659
00660
00661
00662 MinvCorrFctn* MinvCFrho = new MinvCorrFctn("Minv",100,0.4,.9);
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674 deltaAnal = new StHbtAnalysis;
00675
00676 mikesEventCut* deltaEvcut = new mikesEventCut;
00677 deltaEvcut->SetEventMult(0,100000);
00678 deltaEvcut->SetVertZPos(-35.0,35.0);
00679 deltaAnal->SetEventCut(deltaEvcut);
00680
00681 franksTrackCut* pionTrkcut = new franksTrackCut;
00682 pionTrkcut->SetNSigmaPion(-2.0,+2.0);
00683 pionTrkcut->SetNSigmaKaon(-1000.,+1000.);
00684 pionTrkcut->SetNSigmaProton(-1000.,+1000.0);
00685 pionTrkcut->SetNHits(10,50);
00686 pionTrkcut->SetP(0.1,0.5);
00687 pionTrkcut->SetPt(0.1,2.0);
00688 pionTrkcut->SetRapidity(-1.5,1.5);
00689 pionTrkcut->SetDCA(0.0,2.);
00690 pionTrkcut->SetCharge(+1);
00691 pionTrkcut->SetMass(0.139);
00692 deltaAnal->SetFirstParticleCut(pionTrkcut);
00693
00694 franksTrackCut* protonTrkcut = new franksTrackCut( *((franksTrackCut*)deltaAnal->FirstParticleCut()) );
00695 protonTrkcut->SetNSigmaPion(-1000.0,+1000.0);
00696 protonTrkcut->SetNSigmaProton(-2.,+2.0);
00697 protonTrkcut->SetMass(0.938);
00698 deltaAnal->SetSecondParticleCut(protonTrkcut);
00699
00700 mikesPairCut* deltaPairCut = new mikesPairCut;
00701
00702
00703
00704 deltaAnal->SetPairCut(deltaPairCut);
00705
00706 deltaAnal->SetNumEventsToMix(10);
00707
00708
00709
00710
00711 MinvCorrFctn* MinvCFdelta = new MinvCorrFctn("Minv",100,1.0,1.4);
00712 deltaAnal->AddCorrFctn(MinvCFdelta);
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722 chain->Init();
00723 chain->PrintInfo();
00724
00725
00726 for (Int_t iev=0;iev<nevents; iev++) {
00727 cout << "StHbtExample -- Working on eventNumber " << iev << endl;
00728 chain->Clear();
00729 int iret = chain->Make(iev);
00730 if (iret) {
00731 cout << "Bad return code!" << endl;
00732 break;
00733 }
00734 }
00735 chain->Finish();
00736
00737 cout << " End of Analysis " << endl;
00738
00739 TFile histoOutput(histoFile,"recreate");
00740 MinvCF->Numerator()->Write();
00741 MinvCF->Denominator()->Write();
00742 MinvCF->Difference()->Write();
00743 MinvCFY_vs_Pt->Numerator()->Write();
00744 MinvCFY_vs_Pt->Denominator()->Write();
00745 MinvCFY_vs_Pt->Difference()->Write();
00746 MinvCFM_vs_Pt->Numerator()->Write();
00747 MinvCFM_vs_Pt->Denominator()->Write();
00748 MinvCFM_vs_Pt->Difference()->Write();
00749 MinvCFArm->Numerator()->Write();
00750 MinvCFArm->Denominator()->Write();
00751 MinvCFArm->Difference()->Write();
00752 ((eventCutMonitor_Mult*)phiAnal->EventCut()->PassMonitor(0))->Histo()->Write();
00753 histoOutput->Write();
00754 histoOutput->Close();
00755 }
00756
00757
00758