00001
00002 class StChain;
00003 StChain *chain=0;
00004
00005
00006 class StHbtVertexAnalysis;
00007 StHbtVertexAnalysis* kaonAnal;
00008
00009
00010
00011 Int_t usePath = 0;
00012 Int_t nFile = 0;
00013 TString thePath;
00014 TString theFileName;
00015 TString originalPath;
00016
00017
00018
00019 const char *venusFile ="set*geant.root";
00020 const char *venusPath ="/disk00001/star/auau200/venus412/default/b0_3/year_1b/hadronic_on/tfs_4/";
00021 const char *dstFile ="/disk00001/star/auau200/two_photon/starlight/twogam/year_1b/hadronic_on/tfs/ric0022_01_14552evts.dst.root";
00022 const char *xdfFile ="/afs/rhic.bnl.gov/star/data/samples/psc0054_07_40evts_dst.xdf";
00023 const char *mdcFile ="/disk00001/star/auau200/venus412/default/b0_3/year_1b/hadronic_on/tss/psc0081_07_40evts.root";
00024 const char *geantFile ="/disk00000/star/auau200/hijing135/jetq_off/b0_3/year_1b/hadronic_on/tfsr/set0041_01_53evts.geant.root";
00025 const char *fileList[] = {dstFile,xdfFile,mdcFile,0};
00026
00027 void wait(int n=1) {
00028 for ( int i=0; i<n*1e6; i++) { }
00029 }
00030
00031
00032
00033 void StHbtKaonTTree(const Int_t nevents=9999,
00034 const Char_t *path="/star/data02/scratch/laue/dataSomeEyesOnly/",
00035 const Char_t *fileName="",
00036 const Char_t *extention=".hbtTTreeMuDst",
00037 const Char_t *filter=".",
00038 const int maxFiles=10) {
00039
00040 gStyle->SetTextFont(41);
00041 gStyle->SetStatH(.3);
00042 gStyle->SetStatW(.3);
00043
00044
00045 gSystem->Load("St_base");
00046 gSystem->Load("StChain");
00047 gSystem->Load("St_Tables");
00048 gSystem->Load("StMagF");
00049 gSystem->Load("StUtilities");
00050 gSystem->Load("StTreeMaker");
00051 gSystem->Load("StIOMaker");
00052 gSystem->Load("StarClassLibrary");
00053 gSystem->Load("StTpcDb");
00054 gSystem->Load("StDbUtilities");
00055 gSystem->Load("StEvent");
00056 gSystem->Load("StEventMaker");
00057 gSystem->Load("StEventUtilities");
00058 gSystem->Load("StEmcUtil");
00059 gSystem->Load("St_emc_Maker");
00060 gSystem->Load("StMcEvent");
00061 gSystem->Load("StMcEventMaker");
00062 gSystem->Load("StAssociationMaker");
00063 gSystem->Load("StMcAnalysisMaker");
00064
00065
00066
00067 gSystem->Load("StStrangeMuDstMaker");
00068 gSystem->Load("StHbtMaker");
00069
00070
00071
00072 chain = new StChain("StChain");
00073 chain->SetDebug(1);
00074
00075
00076
00077
00078
00079
00080 StHbtMaker* hbtMaker = new StHbtMaker("HBT","title");
00081 StHbtManager* TheManager = hbtMaker->HbtManager();
00082
00083 StHbtTTreeReader* Reader = new StHbtTTreeReader(0,0,path,fileName,extention,filter,maxFiles);
00084 TheManager->SetEventReader(Reader);
00085
00086
00087
00088 franksTrackCut* aTrackCut = new franksTrackCut;
00089 aTrackCut->SetPidProbKaon(0.8,10);
00090 aTrackCut->SetNHits(23,50);
00091 aTrackCut->SetP(0.1,1.);
00092 aTrackCut->SetPt(0.1,1.);
00093 aTrackCut->SetEta(-1.1,+1.1);
00094 aTrackCut->SetRapidity(-10.,10.);
00095 aTrackCut->SetDCA(0.0,3.);
00096 aTrackCut->SetCharge(+1);
00097 aTrackCut->SetMass(0.494);
00098
00099 trackCutMonitor_P_vs_Dedx* aDedxMoniPos = new trackCutMonitor_P_vs_Dedx(+1,"P_vs_Dedx+","Momentum (GeV/c) vs Energy loss (a.u.)",100,0.,2.,100,0.,1e-5);
00100 trackCutMonitor_P_vs_Dedx* aDedxMoniNeg = new trackCutMonitor_P_vs_Dedx(-1,"P_vs_Dedx-","Momentum (GeV/c) vs Energy loss (a.u.)",100,0.,2.,100,0.,1e-5);
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113 kaonAnal = new StHbtVertexAnalysis(20,-50.,50.);
00114
00115
00116 rotationEventCut* kaonEvcut = new rotationEventCut();
00117 kaonEvcut->SetEventRefMult(124,1000);
00118 kaonEvcut->SetVertZPos(-50.0,+50.0);
00119 kaonEvcut->RotationOff();
00120 kaonEvcut->SetSmear(0);
00121 kaonEvcut->RotationOff();
00122 eventCutMonitor_Mult* multMoniPass = new eventCutMonitor_Mult("mult","multiplicity",100,0.,5000);
00123 eventCutMonitor_Mult* multMoniFail = new eventCutMonitor_Mult("mult","multiplicity",100,0.,5000);
00124 kaonEvcut->AddCutMonitor(multMoniPass, multMoniFail);
00125 kaonAnal->SetEventCut(kaonEvcut);
00126
00127 franksTrackCut* kaonTrackCut = new franksTrackCut(*aTrackCut);
00128
00129 trackCutMonitor_P_vs_Dedx* dedxMoniNegPass = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00130 trackCutMonitor_P_vs_Dedx* dedxMoniNegFail = new trackCutMonitor_P_vs_Dedx( *aDedxMoniNeg);
00131 kaonTrackCut->AddCutMonitor( dedxMoniNegPass, dedxMoniNegFail);
00132 kaonAnal->SetFirstParticleCut(kaonTrackCut);
00133
00134 kaonAnal->SetSecondParticleCut(kaonTrackCut);
00135
00136 franksPairCut* kaonPairCut = new franksPairCut;
00137 kaonPairCut->SetQuality(-1,+0.65);
00138 kaonPairCut->SetEntranceSeparation(2.,1000.);
00139 kaonAnal->SetPairCut(kaonPairCut);
00140
00141 kaonAnal->SetNumEventsToMix(5);
00142
00143
00144
00145
00146 QinvCorrFctnPidProbWeight* Qinv = new QinvCorrFctnPidProbWeight("Qinv5MeV","Qinv5MeV",40,0.,+0.2);
00147 kaonAnal->AddCorrFctn(Qinv);
00148 TheManager->AddAnalysis(kaonAnal);
00149
00150 cout << " kaonAnal - setup done " << endl;
00151
00152
00153 chain->Init();
00154 chain->PrintInfo();
00155
00156
00157 for (Int_t iev=0;iev<nevents; iev++) {
00158 cout << "StHbtExample -- Working on eventNumber " << iev << endl;
00159 chain->Clear();
00160
00161 int iret = chain->Make(iev);
00162
00163 if (iret) {
00164
00165 break;
00166 }
00167 }
00168 chain->Finish();
00169
00170 TFile file("KaonPidProbWeight.root","RECREATE");
00171 StHbtHistoCollector* collector = StHbtHistoCollector::Instance();
00172 collector->Write();
00173 file.Close();
00174 }
00175
00176
00177
00178
00179