CoordXYZ SourceOfNoise::GetUDerivative(CoordXYZ &x0, double t){ CoordXYZ x(3); for (int i = 0; i < 3; ++i) x[i] = x0[i] - position_of_source[i]; x = ModifyPositionByFlow(x); CoordXYZ null(3); for (int i = 0; i < 3; ++i) null[i] = 0; double norma_x = GetVectorNorma1(x); if (!norma_x) return null; if(!intime(t-norma_x)) return null; CoordXYZ u_der(3); for (int i = 0; i < 3; ++i) u_der[i] = x[i] / kva(norma_x) * ( omega*cos(omega*(t-norma_x)) + 1./norma_x * sin(omega*(t-norma_x)) ); // for (int i = 0; i < 3; ++i) u_der[i] = 0.; return u_der; }
bool uksat::DpllSolver::querystep() { bool keepgoing = true; if (isstarted() && intime()) { ncalls++; //printdecisions(std::cerr); propagate(); if (issatisfied()) { keepgoing = false; } else if (isconflicting()) { //std::cerr << "!!!CONFLICTING!!!" << std::endl; if (!backtrack()) { keepgoing = false; //std::cerr << "!!!NO BACKTRACK!!!" << std::endl; } } else { int nextvar = decide(); if (!nextvar) { //std::cerr << "!!!NO DECIDE!!!" << std::endl; finish(watchinglits ? -1 : 0); keepgoing = false; } } } else { keepgoing = false; } return keepgoing; }
double SourceOfNoise::GetRho(CoordXYZ &x0, double t){ CoordXYZ x(3); for (int i = 0; i < 3; ++i) x[i] = x0[i] - position_of_source[i]; x = ModifyPositionByFlow(x); double norma_x = GetVectorNorma1(x); if (!norma_x) { cout << " ERROR: GetRho : small norma_x=" << norma_x << endl; exit(0); // return numeric_limits<double>::max(); } if(!intime(t-norma_x)) return 0; return 1./norma_x * sin(omega*(t-norma_x)); }
void uksat::DpllSolver::finish(int truth, bool restart) { if (!truth) { result = 0; if (restart) clockend = 0; else clockend = std::clock(); } else { clockend = std::clock(); result = truth; if (truth < 0) { nconflicts++; } } if (!intime()) { timeout = true; } }
int uksat::DpllSolver::propagate() { //return 0; int sat = 0; if (watchinglits) { if (ncalls == 1) { sat = deducewatches(); } else if (nsatclauses && nsatclauses == formula.getnclauses()) { sat = 1; } else if (isconflicting()) { pushes.clear(); sat = -1; } else if (!intime()) { finish(0); } else { //std::cerr << "INSERTVARS" << std::endl; // std::set<int> pushset(pushes); // pushes.clear(); // for (std::set<int>::iterator it = pushset.begin(); it != pushset.end(); it++) { // //std::cerr << "INSERT var = " << *it << std::endl; // push(*it); //// //pushset.erase(it); // } } } else { //std::cerr << "CALLING DEDUCESIMPLE" << std::endl; sat = deducesimple(); } if (sat) { //std::cerr << "FINISH sat = " << sat << std::endl; finish(sat); } return sat; }
void uksat::DpllSolver::push(int var, bool decision) { //std::cerr << "PUSH var = " << var << ", decision = " << decision << std::endl; if (var) { //std::cerr << "PUSH var = " << var << ", decision = " << decision << ", currtime = " << currtime() << ", currvar = " << currvar() << std::endl; if (decision) { decisions.push_back(var); } else { propagations.push_back(std::pair<int, int>(var, currtime())); } partial.assign(var); //std::cerr << "PREVIEW "; printdecisions(std::cerr); //printdecisions(std::cerr); if (watchinglits) { if (intime()) { trigger(var); } else { //std::cerr << "!!!TIMEOUT!!!" << std::endl; } } } }
int write_trigger_thresholds(int runNumber = 13078009) { // Load all required libraries gROOT->Macro("loadMuDst.C"); gROOT->Macro("LoadLogger.C"); gSystem->Load("St_base.so"); gSystem->Load("libStDb_Tables.so"); gSystem->Load("StDbLib.so"); gSystem->Load("StEmcRawMaker"); gSystem->Load("StEmcADCtoEMaker"); gSystem->Load("StEEmcUtil"); gSystem->Load("StEEmcDbMaker"); gSystem->Load("StTriggerUtilities"); //******// gSystem->Setenv("DB_ACCESS_MODE","write"); //******// // Initialize db manager ///* StDbManager* mgr = StDbManager::Instance(); StDbConfigNode* node = mgr->initConfig("Calibrations_trg"); StDbTable* dbtable = node->addDbTable("triggerThreshold"); // beginTime timestamp in MySQL format: "YYYY-MM-DD HH:mm:ss" ifstream intime(Form("beginTimes/%d.beginTimes.txt", runNumber)); if(!intime){ cout<<"can't open beginTime file"<<endl; return 0; } char date[10]; char time[8]; intime >> date >> time; TString storeTime(Form("%s %s", date, time)); //******// //time stamp 2012-07-30 00:00:0X for test purposes //TString storeTime("2012-07-30 00:00:02"); //******// mgr->setStoreTime(storeTime.Data()); // */ // Create your c-struct triggerThreshold_st table; // Fill structure with data // sample setup for a single channel, please add more channels! strcpy(table.comments, Form("run%d triggerThreshold uploaded by zchang", runNumber)); cout<<"comments set to "<<table.comments<<endl; TObjArray objarr = readOnline(runNumber); TBufferFile buf(TBuffer::kWrite); buf << &objarr; objarr.Delete(); cout<<"Buffer size: "<<buf.BufferSize()<<endl; memset(table.trigthr, 0, buf.BufferSize()); memcpy(table.trigthr, buf.Buffer(), buf.BufferSize()); table.size = buf.BufferSize(); //******// // Store data to the StDbTable dbtable->SetTable((char*)&table, 1); // uncomment next line to set "sim" flavor. "ofl" flavor is set by default, no need to set it. // dbtable->setFlavor("sim"); // Store table to database cout<<"Storing Db table: "<< mgr->storeDbTable(dbtable) << endl; //******// ofstream out(Form("buffer/%d.trigthr.buffer.out", runNumber)); assert(out); out.write(buf.Buffer(),buf.BufferSize()); out.close(); return 1; }