00001 #include <vector>
00002 using namespace std;
00003 class StChain;
00004 StChain *chain;
00005 int total=0;
00006
00007 void RunLuminosityMaker(int nevents=10,
00008 const char* file = "test.list",
00009
00010 const char* dir = "./",
00011 const char *filter = "")
00012 {
00013 cout <<"MuDst chain file:\t"<<file<<endl;
00014
00015 gROOT->Macro("LoadLogger.C");
00016 gROOT->Macro("loadMuDst.C");
00017 gSystem->Load("StDaqLib");
00018 gSystem->Load("StDbBroker");
00019 gSystem->Load("StDetectorDbMaker");
00020 gSystem->Load("St_db_Maker");
00021 gSystem->Load("StTriggerFilterMaker");
00022 gSystem->Load("StEmcRawMaker");
00023 gSystem->Load("StEmcADCtoEMaker");
00024 gSystem->Load("StTriggerUtilities");
00025 gSystem->Load("StLuminosityMaker");
00026
00027
00028 double pi = atan(1.0)*4.0;
00029 cout << " loading done " << endl;
00030
00031 chain= new StChain("StChain");
00032 chain->SetDebug(1);
00033
00034
00035
00036
00037 StMuDebug::setLevel(1);
00038 StMuDstMaker* muDstMaker = new StMuDstMaker(0,0,dir,file,filter,1000000,"MuDst");
00039
00040
00041 St_db_Maker *dbMk = new St_db_Maker("StarDb", "MySQL:StarDb");
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 StEmcADCtoEMaker *adc = new StEmcADCtoEMaker();
00055
00056 StTriggerSimuMaker* trigsim = new StTriggerSimuMaker();
00057 trigsim->useBbc();
00058 trigsim->useBemc();
00059 trigsim->bemc->setConfig(StBemcTriggerSimu::kOffline);
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 StLuminosityMaker* lum = new StLuminosityMaker();
00073 lum->setVertexCutcm(60);
00074
00075
00076
00077
00078
00079
00080
00081 lum->setCrossSectionNB(26.1e6);
00082
00083
00084
00085
00086 lum->addTrigger(117001);
00087 lum->addTrigger(137221);
00088 lum->addTrigger(137222);
00089 lum->addTrigger(137822);
00090 lum->addTrigger(117300);
00091 lum->addTrigger(137571);
00092 lum->addTrigger(137575);
00093 lum->addTrigger(137585);
00094 lum->addTrigger(137586);
00095 lum->addTrigger(137611);
00096 lum->addTrigger(137501);
00097 lum->addTrigger(137622);
00098
00099
00100 chain->Init();
00101
00102 chain->PrintInfo();
00103
00104 for (Int_t iev=0;iev<nevents; iev++) {
00105
00106
00107
00108
00109
00110 chain->Clear();
00111 int iret = chain->Make(iev);
00112 total++;
00113
00114 if (iret && iret!=kStSkip) {
00115 cout << "Bad return code!" <<iret<< endl;
00116 break;
00117 }
00118
00119
00120 }
00121 chain->Finish();
00122 cout << "****************************************** " << endl;
00123 cout << "total number of events " << total << endl;
00124 cout << "****************************************** " << endl;
00125
00126
00127 TClonesArray* holder = lum->getHolder();
00128 StLuminosityHolder* dumlum;
00129
00130 for(int i = 0; i < holder->GetEntries(); i++){
00131 char name[100];
00132 dumlum = (StLuminosityHolder*)holder->At(i);
00133 int run1 = dumlum->getRunNumber();
00134 sprintf(name,"lum%i.data",run1);
00135 ofstream lumout(name);
00136 vector<unsigned int> triggers = dumlum->getTriggers();
00137 vector<unsigned int> NTotal = dumlum->getNTotal();
00138 vector<unsigned int> NCuts = dumlum->getNCuts();
00139 vector<unsigned int> NVert = dumlum->getNVertex();
00140 vector<unsigned int> NTrig = dumlum->getNSoftTrig();
00141 vector<float> LumTotal = dumlum->getLumTotal();
00142 vector<float> LumCuts = dumlum->getLumCuts();
00143 vector<float> LumVert = dumlum->getLumVertex();
00144 vector<float> LumTrig = dumlum->getLumSoftTrig();
00145 vector<float> Prescales = dumlum->getPrescales();
00146 for(unsigned int j = 0; j < dumlum->getTriggers().size(); j++){
00147 lumout<<run1<<"\t"<<triggers[j]<<"\t"<<Prescales[j]<<"\t"<<NTotal[j]<<"\t"<<NCuts[j]<<"\t"<<NVert[j]<<"\t"<<NTrig[j]<<"\t"<<LumTotal[j]<<"\t"<<LumCuts[j]<<"\t"<<LumVert[j]<<"\t"<<LumTrig[j]<<endl;
00148 }
00149 lumout.close();
00150 }
00151
00152 }