00001 void write_trigger_definitions(int runNumber = 10180030)
00002 {
00003
00004 gROOT->Macro("loadMuDst.C");
00005 gROOT->Macro("LoadLogger.C");
00006
00007 gSystem->Load("StTpcDb");
00008 gSystem->Load("StDetectorDbMaker");
00009 gSystem->Load("StDbUtilities");
00010 gSystem->Load("StMcEvent");
00011 gSystem->Load("StMcEventMaker");
00012 gSystem->Load("StDaqLib");
00013 gSystem->Load("StEmcRawMaker");
00014 gSystem->Load("StEmcADCtoEMaker");
00015 gSystem->Load("StEpcMaker");
00016 gSystem->Load("StEmcSimulatorMaker");
00017 gSystem->Load("StDbBroker");
00018 gSystem->Load("St_db_Maker");
00019 gSystem->Load("StEEmcUtil");
00020 gSystem->Load("StEEmcDbMaker");
00021 gSystem->Load("StTriggerUtilities");
00022
00023
00024 const char* database = "mysql://dbbak.starp.bnl.gov:3408/Conditions_rts?timeout=60";
00025 const char* user = "";
00026 const char* pass = "";
00027 TMySQLServer* mysql = TMySQLServer::Connect(database,user,pass);
00028
00029 if (!mysql) {
00030 cerr << "Connection to " << database << " failed" << endl;
00031 return;
00032 }
00033
00034 TString query;
00035 TMySQLResult* result;
00036 TObjArray a;
00037
00038 query = Form("select idx_trigger,name,offlineBit from `Conditions_rts`.`triggers` where idx_rn = %d",runNumber);
00039
00040 result = (TMySQLResult*)mysql->Query(query);
00041 if (result) {
00042 TMySQLRow* row;
00043 while (row = (TMySQLRow*)result->Next()) {
00044 int triggerIndex = atoi(row->GetField(0));
00045 StTriggerDefinition* def = new StTriggerDefinition;
00046 def->triggerIndex = triggerIndex;
00047 def->name = row->GetField(1);
00048 def->triggerId = atoi(row->GetField(2));
00049 a.AddAtAndExpand(def,triggerIndex);
00050 delete row;
00051 }
00052 result->Close();
00053 }
00054
00055 query = Form("select idx_idx,onbits,offbits,onbits1,onbits2,onbits3,offbits1,offbits2,offbits3 from `Conditions_rts`.`pwc` where idx_rn = %d",runNumber);
00056
00057 result = (TMySQLResult*)mysql->Query(query);
00058 if (result) {
00059 TMySQLRow* row;
00060 while (row = (TMySQLRow*)result->Next()) {
00061 int triggerIndex = atoi(row->GetField(0));
00062 StTriggerDefinition* def = (StTriggerDefinition*)a.At(triggerIndex);
00063 if (def) {
00064 def->onbits = atoi(row->GetField(1));
00065 def->offbits = atoi(row->GetField(2));
00066 def->onbits1 = atoi(row->GetField(3));
00067 def->onbits2 = atoi(row->GetField(4));
00068 def->onbits3 = atoi(row->GetField(5));
00069 def->offbits1 = atoi(row->GetField(6));
00070 def->offbits2 = atoi(row->GetField(7));
00071 def->offbits3 = atoi(row->GetField(8));
00072 }
00073 delete row;
00074 }
00075 result->Close();
00076 }
00077
00078 mysql->Close();
00079
00080 a.Compress();
00081
00082 for (int triggerIndex = 0; triggerIndex < a.GetEntriesFast(); ++triggerIndex) {
00083 StTriggerDefinition* def = (StTriggerDefinition*)a.At(triggerIndex);
00084 if (def) def->print();
00085 }
00086
00087 TBufferFile buf(TBuffer::kWrite);
00088 buf << &a;
00089 a.Delete();
00090
00091 cout << "Serialized array of " << buf.BufferSize() << " : " << buf.Buffer() << endl;
00092
00093 ofstream out("test.out");
00094 assert(out);
00095 out.write(buf.Buffer(),buf.BufferSize());
00096 out.close();
00097 }