Exemple #1
0
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;
}
Exemple #2
0
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;
}
Exemple #3
0
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));
}
Exemple #4
0
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;
    }
}
Exemple #5
0
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;
}
Exemple #6
0
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;
            }
        }
    }
}
Exemple #7
0
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;
}