00001
00002
00003
00004
00005
00006
00007 class StChain;
00008 class StMuTrack;
00009 class StMuDstMaker;
00010 class StEventInfo;
00011
00012 class EEmcTower;
00013 class EEmcTTMatch;
00014 class EEmcTTMMaker;
00015
00016 StChain *chain=0;
00017 EEmcTTMMaker *ttm =0;
00018 StMuDstMaker *muDstMaker= 0;
00019
00020 void
00021 ttmexample
00022 (
00023 char* inpDir = "",
00024 char* inpFile = "ttm.lis",
00025 char* outFile = "ttm.ndst.root",
00026 Int_t nFiles = 150,
00027 Int_t nEvents = -1
00028 )
00029
00030
00031
00032
00033
00034 {
00035
00036 gROOT->LoadMacro("$STAR/StRoot/StMuDSTMaker/COMMON/macros/loadSharedLibraries.C");
00037 loadSharedLibraries();
00038
00039 gSystem->Load("libmysqlclient");
00040 gSystem->Load("StDbLib");
00041 gSystem->Load("StDbBroker");
00042 gSystem->Load("St_db_Maker");
00043
00044 gSystem->Load("StEEmcUtil");
00045 gSystem->Load("StEEmcDbMaker");
00046 gSystem->Load("StEEmcPoolTTM");
00047
00048
00049 chain = new StChain("StChain");
00050
00051
00052 muDstMaker = new StMuDstMaker(0,0,inpDir,inpFile,"",nFiles);
00053 StMuDbReader *db = StMuDbReader::instance();
00054 St_db_Maker *dbMk = new St_db_Maker("StarDb", "MySQL:StarDb");
00055 StEEmcDbMaker *eemcDbMaker = new StEEmcDbMaker("eemcDb");
00056
00057
00058 eemcDbMaker->setSectors(1,12);
00059 eemcDbMaker->setPreferedFlavor("onlped","eemcPMTped");
00060
00061
00062 ttm = new EEmcTTMMaker ("TTM",muDstMaker,eemcDbMaker);
00063 ttm->SetFileName(outFile);
00064
00065 ttm->SetMaxCTBSum(1000);
00066 ttm->SetMinTrackLength(20.0);
00067 ttm->SetMinTrackHits(5);
00068 ttm->SetMinTrackPt(0.5);
00069 ttm->SetMinTrackEta(0.7);
00070 ttm->SetMaxTrackEta(2.2);
00071 ttm->SetDeltaEtaCut(0.7);
00072 ttm->SetDeltaPhiCut(0.7);
00073
00074
00075
00076
00077
00078
00079 ttm->Summary(cout);
00080
00081 StMuDebug::setLevel(0);
00082 chain->Init();
00083 chain->ls(3);
00084
00085
00086 int stat=0;
00087 int event=0;
00088 while(++event<nEvents) {
00089 stat=chain->Make();
00090
00091
00092 if( stat==2 || stat==4) break;
00093 if( stat!=0 ) continue;
00094
00095
00096 if(ttm->GetMatchList()->IsEmpty()) continue;
00097
00098
00099 TIter nextMatch(ttm->GetMatchList());
00100 EEmcTTMatch *tmatch;
00101 EEmcTower *tower;
00102 StMuTrack *track;
00103
00104 StEventInfo &evInfo = muDstMaker->muDst()->event()->eventInfo();
00105 cerr << "<Event";
00106 cerr << "Run=\"" << evInfo.runId() << "\"\t";
00107 cerr << "Event=\""<< evInfo.id() << "\">\n";
00108
00109 while ((tmatch = (EEmcTTMatch*) nextMatch())) {
00110 tmatch->Out(cerr);
00111 tower = tmatch->Tower();
00112
00113 const char *tLabel = tower->TowerLabel();
00114 int sector = tower->Sec();
00115 int subsec = tower->SubSec();
00116 int etabin = tower->Eta();
00117 float adc = tower->ADC();
00118 float de = tower->dE();
00119
00120 int seclab = tower->SecLabel();
00121 int sublab = tower->SubSecLabel();
00122 int etalab = tower->EtaLabel();
00123
00124 TIter nextTrack(tmatch->Tracks());
00125 while((track=(StMuTrack *)nextTrack())) {
00126
00127 TVector3 r;
00128
00129 EEmcTTMatch::ExtrapolateToZ(track,290.0,r);
00130 double pt = track->pt();
00131 double x = r.x();
00132 }
00133 }
00134 cerr << "</Event>" << endl;
00135 }
00136 ttm->Summary(cerr);
00137 }
00138
00139