00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 void WriteStiEvents(Int_t nevents=1,
00021 const Char_t *Mainfile = "/star/data22/ITTF/EvalData/MCFiles/auau200/rcf0183_12_300evts.geant.root",
00022 const Char_t *outfile= "test.event.root",
00023 bool simulated = true)
00024 {
00025
00026 gSystem->Load("St_base");
00027 gSystem->Load("StChain");
00028 gSystem->Load("StUtilities");
00029 gSystem->Load("St_Tables");
00030 gSystem->Load("StarClassLibrary");
00031
00032 gSystem->Load("StIOMaker");
00033 gSystem->Load("StEvent");
00034 gSystem->Load("StEmcUtil");
00035 gSystem->Load("StMcEvent");
00036 gSystem->Load("StMcEventMaker");
00037 gSystem->Load("StAssociationMaker");
00038
00039 gSystem->Load("St_db_Maker");
00040 gSystem->Load("StDbLib");
00041 gSystem->Load("StDbBroker");
00042 gSystem->Load("StDbUtilities");
00043 gSystem->Load("StTpcDb");
00044 gSystem->Load("StDetectorDbMaker");
00045 gSystem->Load("StTreeMaker");
00046 gSystem->Load("StSvtClassLibrary");
00047 gSystem->Load("StSvtDbMaker");
00048
00049 gSystem->Load("Sti");
00050 gSystem->Load("libGui");
00051 gSystem->Load("StiGui");
00052
00053 gSystem->Load("StiMaker");
00054
00055 chain = new StChain("StChain");
00056 StIOMaker *IOMk = new StIOMaker("IO","r",Mainfile);
00057 IOMk->SetBranch("*",0,"0");
00058
00059
00060 IOMk->SetBranch("eventBranch",0,"r");
00061 IOMk->SetBranch("geantBranch",0,"r");
00062
00063 dbaseMk = new St_db_Maker("db","MySQL:StarDb","$STAR/StarDb");
00064 if (simulated) dbaseMk-> SetDateTime(20010801,000000);
00065 tpcDbMk = new StTpcDbMaker("tpcDb");
00066 svtDbMk = new StSvtDbMaker("svtDb");
00067 detDbMk = new StDetectorDbMaker("detDb");
00068
00069
00070 bool doFit = false;
00071 bool optimized = false;
00072
00073 StiMaker* anaMk = StiMaker::instance();
00074 StiRootIOBroker* stiIO = anaMk->getIOBroker();
00075 stiIO->setTPHFMinPadrow(1);
00076 stiIO->setTPHFMaxPadrow(45);
00077 stiIO->setETSFLowerBound(5);
00078 stiIO->setETSFMaxHits(6);
00079
00080 stiIO->setDoTrackFit(doFit);
00081
00082
00083 stiIO->setKTFMcsCalculated(false);
00084 stiIO->setKTFElossCalculated(false);
00085 stiIO->setKTFMaxChi2ForSelection(50);
00086 stiIO->setKTFBField(.5);
00087 stiIO->setKTFMassHypothesis(.1395);
00088 stiIO->setKTFMinContiguousHitCount(2);
00089 stiIO->setKTFMaxNullCount(40);
00090 stiIO->setKTFMaxContiguousNullCount(25);
00091 stiIO->setKTFMinSearchRadius(.5);
00092 stiIO->setKTFMaxSearchRadius(4.);
00093 stiIO->setKTFSearchWindowScale(5.);
00094
00095
00096 stiIO->setLTSFZWindow(5.);
00097 stiIO->setLTSFYWindow(2.);
00098 stiIO->setLTSFSeedLength(2);
00099
00100 stiIO->setLTSFDoHelixFit(true);
00101 stiIO->setLTSFExtrapYWindow(1.);
00102 stiIO->setLTSFExtrapZWindow(2.);
00103 stiIO->setLTSFExtrapMaxSkipped(2);
00104 stiIO->setLTSFExtrapMinLength(4);
00105 stiIO->setLTSFExtrapMaxLength(5);
00106 stiIO->setLTSFUseVertex(true);
00107
00108 stiIO->setLTMDeltaR(1.);
00109
00110
00111 for (unsigned int sector=1; sector<=12; ++sector) {
00112 stiIO->addLTSFSector(sector);
00113 }
00114
00115
00116 for (unsigned int padrow=6; padrow<=45; padrow+=1) {
00117 stiIO->addLTSFPadrow(padrow);
00118 }
00119
00120
00121 enum SeedFinderType {kUndefined=0, kComposite=1, kEvaluable=2};
00122
00123 stiIO->setSeedFinderType(kComposite);
00124
00125
00126 enum FilterType {kPtFilter=0, kEtaFilter=1, kChi2Filter=2, kNptsFilter=3, kNFitPtsFilter=4,
00127 kNGapsFilter=5, kFitPointRatioFilter=6, kPrimaryDcaFilter=7};
00128
00129 stiIO->addFilterType(kPtFilter);
00130 stiIO->setFilterPtMin(.1);
00131 stiIO->setFilterPtMax(50.);
00132
00133 stiIO->addFilterType(kEtaFilter);
00134 stiIO->setFilterEtaMin(-2.);
00135 stiIO->setFilterEtaMax(2.);
00136
00137 stiIO->addFilterType(kChi2Filter);
00138 stiIO->setFilterChi2Max(10.);
00139
00140 stiIO->addFilterType(kNptsFilter);
00141 stiIO->setFilterNptsMin(8);
00142
00143 stiIO->addFilterType(kNFitPtsFilter);
00144 stiIO->setFilterNFitPtsMin(5);
00145
00146 stiIO->addFilterType(kNGapsFilter);
00147 stiIO->setFilterNGapsMax(20);
00148
00149 stiIO->addFilterType(kPrimaryDcaFilter);
00150 stiIO->setFilterPrimaryDcaMax(100.);
00151
00152 if (!simulated) stiIO->setSimulated(false);
00153
00154 if (simulated){
00155 StMcEventMaker* mcEventReader = mcEventReader = new StMcEventMaker();
00156 mcEventReader->doUseFtpc = kFALSE;
00157 mcEventReader->doUseRich = kFALSE;
00158 mcEventReader->doUseBemc = kFALSE;
00159 mcEventReader->doUseBsmd = kFALSE;
00160 }
00161 cout << "!!!! doEvents: will write out .event.root file !!" << endl << endl;
00162 StTreeMaker *outMk = new StTreeMaker("EvOut","","bfcTree");
00163 outMk->SetIOMode("w");
00164 outMk->SetBranch("eventBranch",outfile,"w");
00165 outMk->IntoBranch("eventBranch","StEvent");
00166
00167 if (simulated) StAssociationMaker* assocMakerIt = new StAssociationMaker();
00168 if (simulated) assocMakerIt->useInTracker();
00169
00170
00171 chain->PrintInfo();
00172
00173 Int_t iInit = chain->Init();
00174 if (iInit) chain->Fatal(iInit,"on init");
00175 chain->InitRun(0);
00176
00177
00178
00179
00180 int istat=0,i=1;
00181 EventLoop: if (i <= nevents && istat!=2) {
00182
00183 cout << endl << "============================ Event " << i
00184 << " start ============================" << endl;
00185
00186 chain->Clear();
00187 istat = chain->Make(i);
00188
00189 if (istat==2)
00190 {cout << "Last event processed. Status = " << istat << endl;}
00191 if (istat==3)
00192 {cout << "Error event processed. Status = " << istat << endl;}
00193
00194
00195
00196 i++;
00197 goto EventLoop;
00198 }
00199 i--;
00200 cout << endl << "============================ Event " << i
00201 << " finish ============================" << endl;
00202
00203 return;
00204 }