void loadConfig (boost::property_tree::ptree &config, const std::string &file_name, const std::string &modulesConfigPath) { boost::filesystem::path configFilePath (file_name); GST_INFO ("Reading configuration from: %s", file_name.c_str () ); try { loadFile (config, configFilePath); } catch (ParseException &e) { GST_ERROR ("Error reading configuration: %s", e.what() ); std::cerr << "Error reading configuration: " << e.what() << std::endl; exit (1); } catch (boost::property_tree::ptree_error &e) { GST_ERROR ("Error reading configuration: %s", e.what() ); std::cerr << "Error reading configuration: " << e.what() << std::endl; exit (1); } loadModulesConfig (config, configFilePath, modulesConfigPath); GST_INFO ("Configuration loaded successfully"); std::ostringstream oss; boost::property_tree::write_json (oss, config, true); std::string infoConfig = oss.str(); GST_INFO ("Loaded config in effect:\n%s", infoConfig.c_str() ); }
void MainWindow::setConfig(QStringList newConfig) { QFile configFilePath("train.conf"); if (!configFilePath.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::warning(this, QString::fromLocal8Bit("失败"), QString::fromLocal8Bit("导出配置文件失败")); return; } QTextStream out(&configFilePath); for(int i = 0; i < newConfig.size(); ++i) { out << newConfig.at(i) << endl; } configFilePath.close(); this->configInfo.clear(); this->configInfo = newConfig; if(this->configInfo.at(6) == "true")//set auto flag first trainRoutes.setAutoExport(true); else trainRoutes.setAutoExport(false); if(this->configInfo.at(7) == "true") trainRoutes.setAutoImport(true); else trainRoutes.setAutoImport(false); trainRoutes.setTrainExportPath(this->configInfo.at(2)); trainRoutes.setTicketExportPath(this->configInfo.at(3)); trainRoutes.setTrainImportPath(this->configInfo.at(4)); trainRoutes.setTicketImportPath(this->configInfo.at(5)); QMessageBox::information(this, QString::fromLocal8Bit("完成"), QString::fromLocal8Bit("设置成功")); }
// Generates a config file with the given attributes void createConfigFile(std::string MCGPU, std::string fileName, std::string primaryAtomIndexString, ConfigFileData settings) { std::ofstream configFile; std::string configFilePath (std::string(MCGPU + settings.working_path + "/" + fileName)); configFile.open(configFilePath.c_str()); std::stringstream cfg; cfg << "" << "# Size of periodic box (x, y, z in angstroms)" << std::endl << "x=" << settings.sizeX << std::endl << "y=" << settings.sizeY << std::endl << "z=" << settings.sizeZ << std::endl << "# Temperature in Kelvin\n" << "temp=" << settings.tempKelvin << std::endl << "# Max translation\n" << "max-translation=" << settings.maxTranslation << std::endl << "# Number of steps\n" << "steps=" << settings.numSteps << std::endl << "# Number of molecules\n" << "molecules=" << settings.numMolecules << std::endl << "# Path to opla.par file\n" << "opla.par=" << MCGPU << settings.oplsaa_par_path << std::endl << "# Path to z matrix file\n" << "z-matrix=" << MCGPU << settings.z_matrix_file << std::endl << "# Path to state input\n" << "state-input=" << MCGPU << settings.working_path << std::endl << "# Path to state output directory\n" << "state-output=" << MCGPU << settings.working_path << std::endl << "# Path to pdb output directory\n" << "pdb-output=" << MCGPU << settings.working_path << std::endl << "# Cutoff distance in angstroms\n" << "cutoff=" << settings.cutoffDistance << std::endl << "# Max rotation\n" << "max-rotation=" << settings.maxRotation << std::endl << "# Random Seed Input\n" << "random-seed=" << settings.randomSeed << std::endl << "# Primary Atom Index\n" << "primary-atom=" << primaryAtomIndexString; configFile << cfg.str(); configFile.close(); }
/// /// \brief main entry point for desktop viewer /// \param argc standard argc /// \param argv standard argv /// \return standard main return (0=success) /// /// @todo refactor some of the common code in desktopMain and serverMain into a commonMain /// /// @warning keep this in sync with serverMain until refactored to commonMain /// int main(int argc, char ** argv) { // // initialize Qt // MyQApp qapp( argc, argv); #ifdef QT_DEBUG MyQApp::setApplicationName( "carta-desktop-debug"); #else MyQApp::setApplicationName( "carta-desktop-release"); #endif qDebug() << "Starting" << qapp.applicationName() << qapp.applicationVersion(); // alias globals auto & globals = * Globals::instance(); // parse command line arguments & environment variables // ==================================================== auto cmdLineInfo = CmdLine::parse( MyQApp::arguments()); globals.setCmdLineInfo( & cmdLineInfo); // load the config file // ==================== QString configFilePath = cmdLineInfo.configFilePath(); auto mainConfig = MainConfig::parse( configFilePath); globals.setMainConfig( & mainConfig); qDebug() << "plugin directories:\n - " + mainConfig.pluginDirectories().join( "\n - "); // initialize platform // =================== // platform gets command line & main config file via globals auto platform = new DesktopPlatform(); globals.setPlatform( platform); // prepare connector // ================= // connector is created via platform, but we put it into globals explicitely here IConnector * connector = platform-> connector(); if( ! connector) { qFatal( "Could not initialize connector!"); } globals.setConnector( connector); // initialize plugin manager // ========================= globals.setPluginManager( std::make_shared<PluginManager>() ); auto pm = globals.pluginManager(); // tell plugin manager where to find plugins pm-> setPluginSearchPaths( globals.mainConfig()->pluginDirectories() ); // find and load plugins pm-> loadPlugins(); qDebug() << "Loading plugins..."; auto infoList = pm-> getInfoList(); qDebug() << "List of plugins: [" << infoList.size() << "]"; for ( const auto & entry : infoList ) { qDebug() << " path:" << entry.json.name; } // create the viewer // ================= Viewer viewer; Hacks::HackViewer::UniquePtr hackViewer = nullptr; if( globals.mainConfig()-> hacksEnabled()) { hackViewer.reset( new Hacks::HackViewer); } if ( globals.mainConfig()->isDeveloperLayout()){ viewer.setDeveloperView(); } // prepare closure to execute when connector is initialized IConnector::InitializeCallback initCB = [&](bool valid) -> void { if( ! valid) { qFatal( "Could not initialize connector"); } viewer.start(); if( hackViewer) { hackViewer-> start(); } }; // initialize connector connector-> initialize( initCB); // qt now has control return qapp.exec(); }
//Test indole with 4000 molecules and multiple solvent primary indexes of [1,2],1 on CPU TEST (Indole4000Test, SingleMultipleIndexes2) { string directory = get_current_dir_name(); std::string mc ("MCGPU"); std::size_t found = directory.find(mc); if(found != std::string::npos) { directory = directory.substr(0,found+6); } std::string MCGPU = directory; //create test config file //hardcode since file path will change on each user ofstream configFile; std::string configFilePath (std::string (MCGPU + "/test/unittests/MultipleSolvents/indole4000Tests/indole4000SingleMultipleIndexes2.config")); configFile.open(configFilePath.c_str()); std::stringstream cfg; cfg << "" << "#size of periodic box (x, y, z in angstroms)\n" << "87.17\n" << "87.17\n" << "87.17\n" << "#temperature in Kelvin\n" << "298.15\n" << "#max translation\n" << ".12\n" << "#number of steps\n" << "100000\n" << "#number of molecules\n" << "4000\n" << "#path to opls.par file\n" << MCGPU << "resources/bossFiles/oplsaa.par\n" << "#path to z matrix file\n" << MCGPU << "test/unittests/MultipleSolvents/indole4000Tests/indole.z\n" << "#path to state input\n" << MCGPU << "test/unittests/MultipleSolvents/indole4000Tests\n" << "#path to state output\n" << MCGPU << "test/unittests/MultipleSolvents/indole4000Tests\n" << "#pdb output path\n" << MCGPU << "test/unittests/MultipleSolvents/indole4000Tests\n" << "#cutoff distance in angrstoms\n" << "11.0\n" << "#max rotation\n" << "6.0\n" << "#Random Seed Input\n" << "12345\n" << "#Primary Atom Index\n" << "[1,2],1"; configFile << cfg.str(); configFile.close(); //Since this case results in an error it does not print to a '.results' file. //So the commandline error output is pipelined to a text file //The textfile is used to compare the expected and actual output std::stringstream ss; ss << MCGPU << "/bin/metrosim " << " " << MCGPU << "/test/unittests/MultipleSolvents/indole4000Tests/indole4000SingleMultipleIndexes2.config -s -i 10000 >" << " " << MCGPU << "/bin/indole4000SingleMultipleIndexes2.txt 2>&1"; //launch MCGPU in serial system(ss.str().c_str()); std::string errorResult; std::ifstream infile(std::string(MCGPU + "bin/indole4000SingleMultipleIndexes2.txt").c_str()); for(std::string line; getline(infile, line);) { std::string str2 ("Error"); found = line.find(str2); if (found != std::string::npos) { errorResult = line.substr(7,13); break; } } EXPECT_STREQ("loadBoxData()", errorResult.c_str()); }
//Test indole with 4000 molecules and a primary index of [1,2] on CPU TEST (Indole4000Test, TwoPrimaryIndex) { string directory = get_current_dir_name(); std::string mc ("MCGPU"); std::size_t found = directory.find(mc); if(found != std::string::npos) { directory = directory.substr(0,found+6); } std::string MCGPU = directory; //create test config file //hardcode since file path will change on each user ofstream configFile; std::string configFilePath (std::string (MCGPU + "/test/unittests/MultipleSolvents/indole4000Tests/indole4000-2MPI.config")); configFile.open(configFilePath.c_str()); std::stringstream cfg; cfg << "" << "#size of periodic box (x, y, z in angstroms)\n" << "87.17\n" << "87.17\n" << "87.17\n" << "#temperature in Kelvin\n" << "298.15\n" << "#max translation\n" << ".06\n" << "#number of steps\n" << "100000\n" << "#number of molecules\n" << "4000\n" << "#path to opls.par file\n" << MCGPU << "resources/bossFiles/oplsaa.par\n" << "#path to z matrix file\n" << MCGPU << "test/unittests/MultipleSolvents/indole4000Tests/indole.z\n" << "#path to state input\n" << MCGPU << "test/unittests/MultipleSolvents/indole4000Tests\n" << "#path to state output\n" << MCGPU << "test/unittests/MultipleSolvents/indole4000Tests\n" << "#pdb output path\n" << MCGPU << "test/unittests/MultipleSolvents/indole4000Tests\n" << "#cutoff distance in angstroms\n" << "12.0\n" << "#max rotation\n" << "6.0\n" << "#Random Seed Input\n" << "12345\n" << "#Primary Atom Index\n" << "[1,2]"; configFile << cfg.str(); configFile.close(); std::stringstream ss; ss << MCGPU << "/bin/metrosim " << " " << MCGPU << "/test/unittests/MultipleSolvents/indole4000Tests/indole4000-2MPI.config -s --threads 12 --name indole4000-2MPI -i 10000"; //launch MCGPU in serial system(ss.str().c_str()); double expected = 557412; double energyResult = -1; std::ifstream infile(std::string(MCGPU + "bin/indole4000-2MPI.results").c_str()); for(std::string line; getline(infile, line);) { std::string str2 ("Final-Energy"); std::string result; found = line.find(str2); if (found != std::string::npos) { result = line.substr(15); energyResult = strtod(result.c_str(), NULL); break; } } EXPECT_NEAR(expected, energyResult, 100); }
int main( int argc, char * argv[] ) { #ifndef _MSC_VER qInstallMsgHandler( dummyMessageHandler ); #endif QgsApplication qgsapp( argc, argv, getenv( "DISPLAY" ) ); //Default prefix path may be altered by environment variable char* prefixPath = getenv( "QGIS_PREFIX_PATH" ); if ( prefixPath ) { QgsApplication::setPrefixPath( prefixPath, TRUE ); } #if !defined(Q_OS_WIN) else { // init QGIS's paths - true means that all path will be inited from prefix QgsApplication::setPrefixPath( CMAKE_INSTALL_PREFIX, TRUE ); } #endif QDomImplementation::setInvalidDataPolicy( QDomImplementation::DropInvalidChars ); // Instantiate the plugin directory so that providers are loaded QgsProviderRegistry::instance( QgsApplication::pluginPath() ); QgsDebugMsg( "Prefix PATH: " + QgsApplication::prefixPath() ); QgsDebugMsg( "Plugin PATH: " + QgsApplication::pluginPath() ); QgsDebugMsg( "PkgData PATH: " + QgsApplication::pkgDataPath() ); QgsDebugMsg( "User DB PATH: " + QgsApplication::qgisUserDbFilePath() ); QgsDebugMsg( qgsapp.applicationDirPath() + "/qgis_wms_server.log" ); //create config cache and search for config files in the current directory. //These configurations are used if no mapfile parameter is present in the request QString defaultConfigFilePath; QFileInfo projectFileInfo = defaultProjectFile(); //try to find a .qgs file in the server directory if ( projectFileInfo.exists() ) { defaultConfigFilePath = projectFileInfo.absoluteFilePath(); } else { QFileInfo adminSLDFileInfo = defaultAdminSLD(); if ( adminSLDFileInfo.exists() ) { defaultConfigFilePath = adminSLDFileInfo.absoluteFilePath(); } } //create cache for capabilities XML QgsCapabilitiesCache capabilitiesCache; //creating QgsMapRenderer is expensive (access to srs.db), so we do it here before the fcgi loop QgsMapRenderer* theMapRenderer = new QgsMapRenderer(); theMapRenderer->setLabelingEngine( new QgsPalLabeling() ); while ( fcgi_accept() >= 0 ) { printRequestInfos(); //print request infos if in debug mode //use QgsGetRequestHandler in case of HTTP GET and QgsSOAPRequestHandler in case of HTTP POST QgsRequestHandler* theRequestHandler = 0; char* requestMethod = getenv( "REQUEST_METHOD" ); if ( requestMethod != NULL ) { if ( strcmp( requestMethod, "POST" ) == 0 ) { //QgsDebugMsg( "Creating QgsSOAPRequestHandler" ); //theRequestHandler = new QgsSOAPRequestHandler(); theRequestHandler = new QgsPostRequestHandler(); } else { QgsDebugMsg( "Creating QgsGetRequestHandler" ); theRequestHandler = new QgsGetRequestHandler(); } } else { QgsDebugMsg( "Creating QgsGetRequestHandler" ); theRequestHandler = new QgsGetRequestHandler(); } QMap<QString, QString> parameterMap; try { parameterMap = theRequestHandler->parseInput(); } catch ( QgsMapServiceException& e ) { QgsDebugMsg( "An exception was thrown during input parsing" ); theRequestHandler->sendServiceException( e ); continue; } QMap<QString, QString>::const_iterator paramIt; //set admin config file to wms server object QString configFilePath( defaultConfigFilePath ); paramIt = parameterMap.find( "MAP" ); if ( paramIt == parameterMap.constEnd() ) { QgsDebugMsg( QString( "Using default configuration file path: %1" ).arg( defaultConfigFilePath ) ); } else { configFilePath = paramIt.value(); } QgsConfigParser* adminConfigParser = QgsConfigCache::instance()->searchConfiguration( configFilePath ); if ( !adminConfigParser ) { QgsDebugMsg( "parse error on config file " + configFilePath ); theRequestHandler->sendServiceException( QgsMapServiceException( "", "Configuration file problem : perhaps you left off the .qgs extension?" ) ); continue; } //sld parser might need information about request parameters adminConfigParser->setParameterMap( parameterMap ); //request to WMS? QString serviceString; paramIt = parameterMap.find( "SERVICE" ); if ( paramIt == parameterMap.constEnd() ) { #ifndef QGISDEBUG serviceString = parameterMap.value( "SERVICE", "WMS" ); #else QgsDebugMsg( "unable to find 'SERVICE' parameter, exiting..." ); theRequestHandler->sendServiceException( QgsMapServiceException( "ServiceNotSpecified", "Service not specified. The SERVICE parameter is mandatory" ) ); delete theRequestHandler; continue; #endif } else { serviceString = paramIt.value(); } QgsWMSServer* theServer = 0; if ( serviceString == "WFS" ) { delete theServer; QgsWFSServer* theServer = 0; try { theServer = new QgsWFSServer( parameterMap ); } catch ( QgsMapServiceException e ) //admin.sld may be invalid { theRequestHandler->sendServiceException( e ); continue; } theServer->setAdminConfigParser( adminConfigParser ); //request type QString request = parameterMap.value( "REQUEST" ); if ( request.isEmpty() ) { //do some error handling QgsDebugMsg( "unable to find 'REQUEST' parameter, exiting..." ); theRequestHandler->sendServiceException( QgsMapServiceException( "OperationNotSupported", "Please check the value of the REQUEST parameter" ) ); delete theRequestHandler; delete theServer; continue; } if ( request.toLower() == QString( "GetCapabilities" ).toLower() ) { QDomDocument capabilitiesDocument; try { capabilitiesDocument = theServer->getCapabilities(); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QgsDebugMsg( "sending GetCapabilities response" ); theRequestHandler->sendGetCapabilitiesResponse( capabilitiesDocument ); delete theRequestHandler; delete theServer; continue; } else if ( request.toLower() == QString( "DescribeFeatureType" ).toLower() ) { QDomDocument describeDocument; try { describeDocument = theServer->describeFeatureType(); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QgsDebugMsg( "sending GetCapabilities response" ); theRequestHandler->sendGetCapabilitiesResponse( describeDocument ); delete theRequestHandler; delete theServer; continue; } else if ( request.toLower() == QString( "GetFeature" ).toLower() ) { //output format for GetFeature QString outputFormat = parameterMap.value( "OUTPUTFORMAT" ); try { if ( theServer->getFeature( *theRequestHandler, outputFormat ) != 0 ) { delete theRequestHandler; delete theServer; continue; } else { delete theRequestHandler; delete theServer; continue; } } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } } else if ( request.toLower() == QString( "Transaction" ).toLower() ) { QDomDocument transactionDocument; try { transactionDocument = theServer->transaction( parameterMap.value( "REQUEST_BODY" ) ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QgsDebugMsg( "sending Transaction response" ); theRequestHandler->sendGetCapabilitiesResponse( transactionDocument ); delete theRequestHandler; delete theServer; continue; } return 0; } try { theServer = new QgsWMSServer( parameterMap, theMapRenderer ); } catch ( QgsMapServiceException e ) //admin.sld may be invalid { theRequestHandler->sendServiceException( e ); continue; } theServer->setAdminConfigParser( adminConfigParser ); //request type QString request = parameterMap.value( "REQUEST" ); if ( request.isEmpty() ) { //do some error handling QgsDebugMsg( "unable to find 'REQUEST' parameter, exiting..." ); theRequestHandler->sendServiceException( QgsMapServiceException( "OperationNotSupported", "Please check the value of the REQUEST parameter" ) ); delete theRequestHandler; delete theServer; continue; } QString version = parameterMap.value( "VERSION", "1.3.0" ); bool getProjectSettings = ( request.toLower() == QString( "GetProjectSettings" ).toLower() ); if ( getProjectSettings ) { version = "1.3.0"; //getProjectSettings extends WMS 1.3.0 capabilities } if ( request.toLower() == QString( "GetCapabilities" ).toLower() || getProjectSettings ) { const QDomDocument* capabilitiesDocument = capabilitiesCache.searchCapabilitiesDocument( configFilePath, getProjectSettings ? "projectSettings" : version ); if ( !capabilitiesDocument ) //capabilities xml not in cache. Create a new one { QgsDebugMsg( "Capabilities document not found in cache" ); QDomDocument doc; try { doc = theServer->getCapabilities( version, getProjectSettings ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } capabilitiesCache.insertCapabilitiesDocument( configFilePath, getProjectSettings ? "projectSettings" : version, &doc ); capabilitiesDocument = capabilitiesCache.searchCapabilitiesDocument( configFilePath, getProjectSettings ? "projectSettings" : version ); } else { QgsDebugMsg( "Found capabilities document in cache" ); } if ( capabilitiesDocument ) { theRequestHandler->sendGetCapabilitiesResponse( *capabilitiesDocument ); } delete theRequestHandler; delete theServer; continue; } else if ( request.toLower() == QString( "GetMap" ).toLower() ) { QImage* result = 0; try { result = theServer->getMap(); } catch ( QgsMapServiceException& ex ) { QgsDebugMsg( "Caught exception during GetMap request" ); theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } if ( result ) { QgsDebugMsg( "Sending GetMap response" ); theRequestHandler->sendGetMapResponse( serviceString, result ); QgsDebugMsg( "Response sent" ); } else { //do some error handling QgsDebugMsg( "result image is 0" ); } delete result; delete theRequestHandler; delete theServer; continue; } else if ( request.toLower() == QString( "GetFeatureInfo" ).toLower() ) { QDomDocument featureInfoDoc; try { if ( theServer->getFeatureInfo( featureInfoDoc, version ) != 0 ) { delete theRequestHandler; delete theServer; continue; } } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QString infoFormat = parameterMap.value( "INFO_FORMAT" ); theRequestHandler->sendGetFeatureInfoResponse( featureInfoDoc, infoFormat ); delete theRequestHandler; delete theServer; continue; } else if ( request.toLower() == QString( "GetStyles" ).toLower() || request.toLower() == QString( "GetStyle" ).toLower() ) // GetStyle for compatibility with earlier QGIS versions { try { QDomDocument doc = theServer->getStyle(); theRequestHandler->sendGetStyleResponse( doc ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); } delete theRequestHandler; delete theServer; continue; } else if ( request.toLower() == QString( "GetLegendGraphic" ).toLower() || request.toLower() == QString( "GetLegendGraphics" ).toLower() ) // GetLegendGraphics for compatibility with earlier QGIS versions { QImage* result = 0; try { result = theServer->getLegendGraphics(); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); } if ( result ) { QgsDebugMsg( "Sending GetLegendGraphic response" ); //sending is the same for GetMap and GetLegendGraphic theRequestHandler->sendGetMapResponse( serviceString, result ); } else { //do some error handling QgsDebugMsg( "result image is 0" ); } delete result; delete theRequestHandler; delete theServer; continue; } else if ( request.toLower() == QString( "GetPrint" ).toLower() ) { QByteArray* printOutput = 0; try { printOutput = theServer->getPrint( theRequestHandler->format() ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); } if ( printOutput ) { theRequestHandler->sendGetPrintResponse( printOutput ); } delete printOutput; delete theRequestHandler; delete theServer; continue; } else//unknown request { QgsMapServiceException e( "OperationNotSupported", "Operation " + request + " not supported" ); theRequestHandler->sendServiceException( e ); delete theRequestHandler; delete theServer; } } delete theMapRenderer; QgsDebugMsg( "************* all done ***************" ); return 0; }
AliAnalysisTask *AddTask_sscheid_RandomRejection(Bool_t getFromAlien=kFALSE, Bool_t configsPreloaded=kFALSE, TString cFileName = "Config_sscheid_lowmass.C", Char_t* outputFileName="LMEE.root", ULong64_t triggerMask = AliVEvent::kINT7 ) { //get the current analysis manager AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) { Error("AddTask_sscheid_RandomRejection", "No analysis manager found."); return 0; } //Base Directory for GRID / LEGO Train TString configBasePath= "$ALICE_PHYSICS/PWGDQ/dielectron/macrosLMEE/"; if(getFromAlien && (!configsPreloaded) &&(!gSystem->Exec(Form("alien_cp alien:///alice/cern.ch/user/h/hscheid/PWGDQ/dielectron/macrosLMEE/%s .",cFileName.Data()))) ){ configBasePath=Form("%s/",gSystem->pwd()); } TString configFilePath(configBasePath+cFileName); std::cout << "Configpath: " << configFilePath << std::endl; //Do we have an MC handler? Bool_t hasMC = (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler() != 0x0); //if (!gROOT->GetListOfGlobalFunctions()->FindObject(cFileName.Data())) if (!configsPreloaded) gROOT->LoadMacro(configFilePath.Data()); //create task and add it to the manager (MB) AliAnalysisTaskRandomRejection *task=new AliAnalysisTaskRandomRejection("RandomRejection"); if (!hasMC) task->UsePhysicsSelection(); task->SetTriggerMask(triggerMask); // taskMB->SetRejectPileup(); task->SetRandomizeDaughters(randomizeDau); //default kFALSE //Add event filter task->SetEventFilter( GetEventCuts() ); //task->SetPtFunc(PtFunc); // not working //printf(" task->GetPtFuncName(): %s\n",task->GetPtFuncName()); task->SetPtExpr(RndmPtExpr); task->SetPtRange(RndmPtMin, RndmPtMax); task->SetEtaMax(RndmEtaMax); task->SetNTestpartPerEle(nTestpartPerEle); //add dielectron analysis with different cuts to the task for (Int_t i=0; i<nDie; ++i){ //nDie defined in config file //MB AliDielectron *diel_low = Config_sscheid_lowmass(i, kTRUE); //kTRUE -> "isRandomRejTask" if(!diel_low)continue; task->AddDielectron(diel_low); printf("successfully added AliDielectron: %s\n",diel_low->GetName()); }//loop mgr->AddTask(task); //create output container AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("sscheid_RandomRejection_tree", TTree::Class(), AliAnalysisManager::kExchangeContainer, outputFileName); AliAnalysisDataContainer *cOutputHist1 = mgr->CreateContainer("sscheid_RandomRejection_out", TList::Class(), AliAnalysisManager::kOutputContainer, outputFileName); AliAnalysisDataContainer *cOutputHist2 = mgr->CreateContainer("sscheid_RandomRejection_CF", TList::Class(), AliAnalysisManager::kOutputContainer, outputFileName); AliAnalysisDataContainer *cOutputHist3 = mgr->CreateContainer("sscheid_RandomRejection_EventStat", TH1D::Class(), AliAnalysisManager::kOutputContainer, outputFileName); mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer()); mgr->ConnectOutput(task, 0, coutput1 ); mgr->ConnectOutput(task, 1, cOutputHist1); mgr->ConnectOutput(task, 2, cOutputHist2); mgr->ConnectOutput(task, 3, cOutputHist3); return task; }
AliAnalysisTask *AddTask_Remi_LMEEPbPb2011AOD_Cent(Char_t* outputFileName="LMEEoutput.root", Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE, Bool_t rejOnly=kTRUE) { Bool_t bESDANA=kFALSE; //Autodetect via InputHandler //get the current analysis manager AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) { Error("AddTask_Remi_LMEEPbPb2011", "No analysis manager found."); return 0; } // create task and add it to the manager // gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE"); TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/"); TString trainRoot=gSystem->Getenv("TRAIN_ROOT"); // if (trainRoot.IsNull()) configBasePath= "/home/tanizaki/nfs/LMee_Deflection/ver1/"; if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/"; if (getFromAlien && (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigRemiLMEEPbPb2011AOD.C .")) && (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibRemi.C .")) ) { configBasePath=Form("%s/",gSystem->pwd()); } TString configFile("ConfigRemiLMEEPbPb2011AOD.C"); TString configLMEECutLib("LMEECutLibRemi.C"); TString configFilePath(configBasePath+configFile); TString configLMEECutLibPath(configBasePath+configLMEECutLib); //AOD Usage currently tested with separate task, to be merged if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){ ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration"); } else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){ ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code"); bESDANA=kTRUE; } //Do we have an MC handler? Bool_t hasMC=setMC; if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0) hasMC=kTRUE; if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data())) gROOT->LoadMacro(configLMEECutLibPath.Data()); if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data())) gROOT->LoadMacro(configFilePath.Data()); LMEECutLibRemi* cutlib = new LMEECutLibRemi(); AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData"); if (!hasMC) task->UsePhysicsSelection(); task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral); // task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral); // task->SetRejectPileup(); task->SelectCollisionCandidates(AliVEvent::kAny); task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibRemi::kPbPb2011pidITSTPCTOF)); // //load dielectron configuration file //add dielectron analysis with different cuts to the task AliDielectron *lowmass1=ConfigRemiLMEEPbPb2011AOD(1,hasMC,bESDANA); task->AddDielectron(lowmass1); printf("add: %s\n",lowmass1->GetName()); AliDielectron *lowmass5=ConfigRemiLMEEPbPb2011AOD(5,hasMC,bESDANA); task->AddDielectron(lowmass5); printf("add: %s\n",lowmass5->GetName()); AliDielectron *lowmass9=ConfigRemiLMEEPbPb2011AOD(9,hasMC,bESDANA); task->AddDielectron(lowmass9); printf("add: %s\n",lowmass9->GetName()); AliDielectron *lowmass13=ConfigRemiLMEEPbPb2011AOD(13,hasMC,bESDANA); task->AddDielectron(lowmass13); printf("add: %s\n",lowmass13->GetName()); AliDielectron *lowmass17=ConfigRemiLMEEPbPb2011AOD(17,hasMC,bESDANA); task->AddDielectron(lowmass17); printf("add: %s\n",lowmass17->GetName()); AliDielectron *lowmass21=ConfigRemiLMEEPbPb2011AOD(21,hasMC,bESDANA); task->AddDielectron(lowmass21); printf("add: %s\n",lowmass21->GetName()); AliDielectron *lowmass25=ConfigRemiLMEEPbPb2011AOD(25,hasMC,bESDANA); task->AddDielectron(lowmass25); printf("add: %s\n",lowmass25->GetName()); mgr->AddTask(task); //create output container AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("Remi_LMEEPbPb2011Cent_tree", TTree::Class(), AliAnalysisManager::kExchangeContainer, outputFileName); AliAnalysisDataContainer *cOutputHist1 = mgr->CreateContainer("Remi_LMEEPbPb2011Cent_out", TList::Class(), AliAnalysisManager::kOutputContainer, outputFileName); AliAnalysisDataContainer *cOutputHist2 = mgr->CreateContainer("Remi_LMEEPbPb2011Cent_CF", TList::Class(), AliAnalysisManager::kOutputContainer, outputFileName); AliAnalysisDataContainer *cOutputHist3 = mgr->CreateContainer("Remi_EventStatPbPb2011Cent", TH1D::Class(), AliAnalysisManager::kOutputContainer, outputFileName); mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer()); mgr->ConnectOutput(task, 0, coutput1 ); mgr->ConnectOutput(task, 1, cOutputHist1); mgr->ConnectOutput(task, 2, cOutputHist2); mgr->ConnectOutput(task, 3, cOutputHist3); return task; }
int main( int argc, char * argv[] ) { #ifndef _MSC_VER qInstallMsgHandler( dummyMessageHandler ); #endif QgsApplication qgsapp( argc, argv, getenv( "DISPLAY" ) ); //Default prefix path may be altered by environment variable QgsApplication::init(); #if defined(MAPSERVER_SKIP_ECW) QgsDebugMsg( "Skipping GDAL ECW drivers in server." ); QgsApplication::skipGdalDriver( "ECW" ); QgsApplication::skipGdalDriver( "JP2ECW" ); #endif QSettings settings; QgsNetworkAccessManager *nam = QgsNetworkAccessManager::instance(); QNetworkDiskCache *cache = new QNetworkDiskCache( 0 ); QString cacheDirectory = settings.value( "cache/directory", QgsApplication::qgisSettingsDirPath() + "cache" ).toString(); qint64 cacheSize = settings.value( "cache/size", 50 * 1024 * 1024 ).toULongLong(); QgsDebugMsg( QString( "setCacheDirectory: %1" ).arg( cacheDirectory ) ); QgsDebugMsg( QString( "setMaximumCacheSize: %1" ).arg( cacheSize ) ); cache->setCacheDirectory( cacheDirectory ); cache->setMaximumCacheSize( cacheSize ); QgsDebugMsg( QString( "cacheDirectory: %1" ).arg( cache->cacheDirectory() ) ); QgsDebugMsg( QString( "maximumCacheSize: %1" ).arg( cache->maximumCacheSize() ) ); nam->setCache( cache ); QDomImplementation::setInvalidDataPolicy( QDomImplementation::DropInvalidChars ); // Instantiate the plugin directory so that providers are loaded QgsProviderRegistry::instance( QgsApplication::pluginPath() ); QgsDebugMsg( "Prefix PATH: " + QgsApplication::prefixPath() ); QgsDebugMsg( "Plugin PATH: " + QgsApplication::pluginPath() ); QgsDebugMsg( "PkgData PATH: " + QgsApplication::pkgDataPath() ); QgsDebugMsg( "User DB PATH: " + QgsApplication::qgisUserDbFilePath() ); QgsDebugMsg( qgsapp.applicationDirPath() + "/qgis_wms_server.log" ); QgsApplication::createDB(); //init qgis.db (e.g. necessary for user crs) //create config cache and search for config files in the current directory. //These configurations are used if no mapfile parameter is present in the request QString defaultConfigFilePath; QFileInfo projectFileInfo = defaultProjectFile(); //try to find a .qgs file in the server directory if ( projectFileInfo.exists() ) { defaultConfigFilePath = projectFileInfo.absoluteFilePath(); QgsDebugMsg( "Using default project file: " + defaultConfigFilePath ); } else { QFileInfo adminSLDFileInfo = defaultAdminSLD(); if ( adminSLDFileInfo.exists() ) { defaultConfigFilePath = adminSLDFileInfo.absoluteFilePath(); } } //create cache for capabilities XML QgsCapabilitiesCache capabilitiesCache; //creating QgsMapRenderer is expensive (access to srs.db), so we do it here before the fcgi loop QgsMapRenderer* theMapRenderer = new QgsMapRenderer(); theMapRenderer->setLabelingEngine( new QgsPalLabeling() ); #ifdef QGSMSDEBUG QgsFontUtils::loadStandardTestFonts( QStringList() << "Roman" << "Bold" ); #endif while ( fcgi_accept() >= 0 ) { printRequestInfos(); //print request infos if in debug mode //use QgsGetRequestHandler in case of HTTP GET and QgsSOAPRequestHandler in case of HTTP POST QgsRequestHandler* theRequestHandler = 0; char* requestMethod = getenv( "REQUEST_METHOD" ); if ( requestMethod != NULL ) { if ( strcmp( requestMethod, "POST" ) == 0 ) { //QgsDebugMsg( "Creating QgsSOAPRequestHandler" ); //theRequestHandler = new QgsSOAPRequestHandler(); theRequestHandler = new QgsPostRequestHandler(); } else { QgsDebugMsg( "Creating QgsGetRequestHandler" ); theRequestHandler = new QgsGetRequestHandler(); } } else { QgsDebugMsg( "Creating QgsGetRequestHandler" ); theRequestHandler = new QgsGetRequestHandler(); } QMap<QString, QString> parameterMap; try { parameterMap = theRequestHandler->parseInput(); } catch ( QgsMapServiceException& e ) { QgsDebugMsg( "An exception was thrown during input parsing" ); theRequestHandler->sendServiceException( e ); continue; } QMap<QString, QString>::const_iterator paramIt; //set admin config file to wms server object QString configFilePath( defaultConfigFilePath ); QString projectFile = getenv( "QGIS_PROJECT_FILE" ); if ( !projectFile.isEmpty() ) { configFilePath = projectFile; } else { paramIt = parameterMap.find( "MAP" ); if ( paramIt == parameterMap.constEnd() ) { QgsDebugMsg( QString( "Using default configuration file path: %1" ).arg( defaultConfigFilePath ) ); } else { configFilePath = paramIt.value(); } } QgsConfigParser* adminConfigParser = QgsConfigCache::instance()->searchConfiguration( configFilePath ); if ( !adminConfigParser ) { QgsDebugMsg( "parse error on config file " + configFilePath ); theRequestHandler->sendServiceException( QgsMapServiceException( "", "Configuration file problem : perhaps you left off the .qgs extension?" ) ); continue; } //sld parser might need information about request parameters adminConfigParser->setParameterMap( parameterMap ); //request to WMS? QString serviceString; paramIt = parameterMap.find( "SERVICE" ); if ( paramIt == parameterMap.constEnd() ) { #ifndef QGISDEBUG serviceString = parameterMap.value( "SERVICE", "WMS" ); #else QgsDebugMsg( "unable to find 'SERVICE' parameter, exiting..." ); theRequestHandler->sendServiceException( QgsMapServiceException( "ServiceNotSpecified", "Service not specified. The SERVICE parameter is mandatory" ) ); delete theRequestHandler; continue; #endif } else { serviceString = paramIt.value(); } QgsWMSServer* theServer = 0; if ( serviceString == "WCS" ) { delete theServer; QgsWCSServer* theServer = 0; try { theServer = new QgsWCSServer( parameterMap ); } catch ( const QgsMapServiceException &e ) //admin.sld may be invalid { theRequestHandler->sendServiceException( e ); continue; } theServer->setAdminConfigParser( adminConfigParser ); //request type QString request = parameterMap.value( "REQUEST" ); if ( request.isEmpty() ) { //do some error handling QgsDebugMsg( "unable to find 'REQUEST' parameter, exiting..." ); theRequestHandler->sendServiceException( QgsMapServiceException( "OperationNotSupported", "Please check the value of the REQUEST parameter" ) ); delete theRequestHandler; delete theServer; continue; } if ( request.compare( "GetCapabilities", Qt::CaseInsensitive ) == 0 ) { QDomDocument capabilitiesDocument; try { capabilitiesDocument = theServer->getCapabilities(); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QgsDebugMsg( "sending GetCapabilities response" ); theRequestHandler->sendGetCapabilitiesResponse( capabilitiesDocument ); delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "DescribeCoverage", Qt::CaseInsensitive ) == 0 ) { QDomDocument describeDocument; try { describeDocument = theServer->describeCoverage(); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QgsDebugMsg( "sending GetCapabilities response" ); theRequestHandler->sendGetCapabilitiesResponse( describeDocument ); delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "GetCoverage", Qt::CaseInsensitive ) == 0 ) { QByteArray* coverageOutput; try { coverageOutput = theServer->getCoverage(); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } if ( coverageOutput ) { theRequestHandler->sendGetCoverageResponse( coverageOutput ); } delete theRequestHandler; delete theServer; continue; } } else if ( serviceString == "WFS" ) { delete theServer; QgsWFSServer* theServer = 0; try { theServer = new QgsWFSServer( parameterMap ); } catch ( const QgsMapServiceException &e ) //admin.sld may be invalid { theRequestHandler->sendServiceException( e ); continue; } theServer->setAdminConfigParser( adminConfigParser ); //request type QString request = parameterMap.value( "REQUEST" ); if ( request.isEmpty() ) { //do some error handling QgsDebugMsg( "unable to find 'REQUEST' parameter, exiting..." ); theRequestHandler->sendServiceException( QgsMapServiceException( "OperationNotSupported", "Please check the value of the REQUEST parameter" ) ); delete theRequestHandler; delete theServer; continue; } if ( request.compare( "GetCapabilities", Qt::CaseInsensitive ) == 0 ) { QDomDocument capabilitiesDocument; try { capabilitiesDocument = theServer->getCapabilities(); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QgsDebugMsg( "sending GetCapabilities response" ); theRequestHandler->sendGetCapabilitiesResponse( capabilitiesDocument ); delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "DescribeFeatureType", Qt::CaseInsensitive ) == 0 ) { QDomDocument describeDocument; try { describeDocument = theServer->describeFeatureType(); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QgsDebugMsg( "sending GetCapabilities response" ); theRequestHandler->sendGetCapabilitiesResponse( describeDocument ); delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "GetFeature", Qt::CaseInsensitive ) == 0 ) { //output format for GetFeature QString outputFormat = parameterMap.value( "OUTPUTFORMAT" ); try { theServer->getFeature( *theRequestHandler, outputFormat ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); } delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "Transaction", Qt::CaseInsensitive ) == 0 ) { QDomDocument transactionDocument; try { transactionDocument = theServer->transaction( parameterMap.value( "REQUEST_BODY" ) ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QgsDebugMsg( "sending Transaction response" ); theRequestHandler->sendGetCapabilitiesResponse( transactionDocument ); delete theRequestHandler; delete theServer; continue; } return 0; } try { theServer = new QgsWMSServer( parameterMap, theMapRenderer ); } catch ( const QgsMapServiceException &e ) //admin.sld may be invalid { theRequestHandler->sendServiceException( e ); continue; } adminConfigParser->loadLabelSettings( theMapRenderer->labelingEngine() ); theServer->setAdminConfigParser( adminConfigParser ); //request type QString request = parameterMap.value( "REQUEST" ); if ( request.isEmpty() ) { //do some error handling QgsDebugMsg( "unable to find 'REQUEST' parameter, exiting..." ); theRequestHandler->sendServiceException( QgsMapServiceException( "OperationNotSupported", "Please check the value of the REQUEST parameter" ) ); delete theRequestHandler; delete theServer; continue; } QString version = parameterMap.value( "VERSION", "1.3.0" ); bool getProjectSettings = ( request.compare( "GetProjectSettings", Qt::CaseInsensitive ) == 0 ); if ( getProjectSettings ) { version = "1.3.0"; //getProjectSettings extends WMS 1.3.0 capabilities } if ( request.compare( "GetCapabilities", Qt::CaseInsensitive ) == 0 || getProjectSettings ) { const QDomDocument* capabilitiesDocument = capabilitiesCache.searchCapabilitiesDocument( configFilePath, getProjectSettings ? "projectSettings" : version ); if ( !capabilitiesDocument ) //capabilities xml not in cache. Create a new one { QgsDebugMsg( "Capabilities document not found in cache" ); QDomDocument doc; try { doc = theServer->getCapabilities( version, getProjectSettings ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } capabilitiesCache.insertCapabilitiesDocument( configFilePath, getProjectSettings ? "projectSettings" : version, &doc ); capabilitiesDocument = capabilitiesCache.searchCapabilitiesDocument( configFilePath, getProjectSettings ? "projectSettings" : version ); } else { QgsDebugMsg( "Found capabilities document in cache" ); } if ( capabilitiesDocument ) { theRequestHandler->sendGetCapabilitiesResponse( *capabilitiesDocument ); } delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "GetMap", Qt::CaseInsensitive ) == 0 ) { QImage* result = 0; try { result = theServer->getMap(); } catch ( QgsMapServiceException& ex ) { QgsDebugMsg( "Caught exception during GetMap request" ); theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } if ( result ) { QgsDebugMsg( "Sending GetMap response" ); theRequestHandler->sendGetMapResponse( serviceString, result ); QgsDebugMsg( "Response sent" ); } else { //do some error handling QgsDebugMsg( "result image is 0" ); } delete result; delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "GetFeatureInfo", Qt::CaseInsensitive ) == 0 ) { QDomDocument featureInfoDoc; try { if ( theServer->getFeatureInfo( featureInfoDoc, version ) != 0 ) { delete theRequestHandler; delete theServer; continue; } } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); delete theRequestHandler; delete theServer; continue; } QString infoFormat = parameterMap.value( "INFO_FORMAT" ); theRequestHandler->sendGetFeatureInfoResponse( featureInfoDoc, infoFormat ); delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "GetContext", Qt::CaseInsensitive ) == 0 ) { try { QDomDocument doc = theServer->getContext(); theRequestHandler->sendGetStyleResponse( doc ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); } delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "GetStyle", Qt::CaseInsensitive ) == 0 ) // GetStyle for compatibility with earlier QGIS versions { try { QDomDocument doc = theServer->getStyle(); theRequestHandler->sendGetStyleResponse( doc ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); } delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "GetStyles", Qt::CaseInsensitive ) == 0 ) { // GetStyles is only defined for WMS1.1.1/SLD1.0 if ( version != "1.1.1" ) { theRequestHandler->sendServiceException( QgsMapServiceException( "OperationNotSupported", "GetStyles method is only available in WMS version 1.1.1" ) ); } else { try { QDomDocument doc = theServer->getStyles(); theRequestHandler->sendGetStyleResponse( doc ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); } } delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "GetLegendGraphic", Qt::CaseInsensitive ) == 0 || request.compare( "GetLegendGraphics", Qt::CaseInsensitive ) == 0 ) // GetLegendGraphics for compatibility with earlier QGIS versions { QImage* result = 0; try { result = theServer->getLegendGraphics(); } catch ( QgsMapServiceException& ex ) { QgsDebugMsg( "Caught exception during GetLegendGraphic request" ); theRequestHandler->sendServiceException( ex ); } if ( result ) { QgsDebugMsg( "Sending GetLegendGraphic response" ); //sending is the same for GetMap and GetLegendGraphic theRequestHandler->sendGetMapResponse( serviceString, result ); QgsDebugMsg( "Response sent" ); } else { //do some error handling QgsDebugMsg( "result image is 0" ); } delete result; delete theRequestHandler; delete theServer; continue; } else if ( request.compare( "GetPrint", Qt::CaseInsensitive ) == 0 ) { QByteArray* printOutput = 0; try { printOutput = theServer->getPrint( theRequestHandler->format() ); } catch ( QgsMapServiceException& ex ) { theRequestHandler->sendServiceException( ex ); } if ( printOutput ) { theRequestHandler->sendGetPrintResponse( printOutput ); } delete printOutput; delete theRequestHandler; delete theServer; continue; } else//unknown request { QgsMapServiceException e( "OperationNotSupported", "Operation " + request + " not supported" ); theRequestHandler->sendServiceException( e ); delete theRequestHandler; delete theServer; } } delete theMapRenderer; QgsDebugMsg( "************* all done ***************" ); return 0; }
LoadSaveManager::LoadSaveManager() : m_configFilePath{configFilePath()} { }
// Descr: evident // Implementation details: See gtest/samples for GTest syntax and usage TEST(MethanolTest, FrontToEndIntegrationTest) { string directory = get_current_dir_name(); std::string mc ("MCGPU"); std::size_t found = directory.find(mc); if (found != std::string::npos) { directory = directory.substr(0,found+6); } std::string MCGPU = directory; // Create the test config file, // because it requires full hardcoded filepath names that will change on each user's computer ofstream configFile; std::string configFilePath (std::string( MCGPU + "/test/unittests/Integration/MethanolTest/MethanolTest.config")); configFile.open( configFilePath.c_str() ); std::stringstream cfg; cfg << "" << "#size of periodic box (x, y, z in angstroms)\n" << "26.15\n" << "26.15\n" << "26.15\n" << "#temperature in Kelvin\n" << "298.15\n" << "#max translation\n" << ".12\n" << "#number of steps\n" << "100000\n" << "#number of molecues\n" << "256\n" << "#path to opls.par file\n" << MCGPU << "resources/bossFiles/oplsaa.par\n" << "#path to z matrix file\n" << MCGPU << "/test/unittests/Integration/MethanolTest/meoh.z\n" << "#path to state input\n" << "\n" << "#path to state output\n" << MCGPU << "/test/unittests/Integration/MethanolTest\n" << "#pdb output path\n" << "methanoltest.pdb\n" << "#cutoff distance in angstroms\n" << "11.0\n" << "#max rotation\n" << "12.0\n" << "#Random Seed Input\n" << "12345\n" << "#Primary Atom Index\n" << "1"; configFile << cfg.str(); configFile.close(); std::stringstream ss; ss << MCGPU << "/bin/metrosim " << " " // don't forget a space between the path and the arguments << MCGPU << "/test/unittests/Integration/MethanolTest/MethanolTest.config -s --name methanolCPU -k"; // Launch MCGPU application in serial, expect output files in /MCGPU/ directory system(ss.str().c_str()); double expected = -1900; double energyResult = -1; std::ifstream infile( std::string(MCGPU + "/bin/methanolCPU.results").c_str() ); for( std::string line; getline( infile, line ); ) { std::string str2 ("Final-Energy"); std::string result; found = line.find(str2); if (found != std::string::npos) { result = line.substr(15); energyResult = strtod(result.c_str(), NULL); break; } } // Clean up remove(configFilePath.c_str()); remove( std::string(MCGPU + "/bin/methanolCPU.pdb").c_str() ); remove( std::string(MCGPU + "/bin/methanolCPU.results").c_str() ); remove( std::string(MCGPU + "/bin/methanolCPU_100000.state").c_str() ); EXPECT_NEAR(expected, energyResult, 100 ); }
Project* Project::create(const QString& path, const QString& name, QObject* parent) { Project* project = new Project(parent); project->_name = name.toStdString(); project->_path = path.toStdString(); project->_scenePath = std::string(RESOURCE_DIR) + std::string("/") + std::string(SCENE_NEW) + std::string(SCENE_EXT); // Create a resource directory QDir projectDir(path); if (!projectDir.mkdir("res")) { SAFE_DELETE(project); return nullptr; } // Create a project file if (!_serializerActivated) { Serializer::getActivator()->registerClass("gameplay::Project", &Project::createInstance); _serializerActivated = true; } QString projectFilePath(path + QString("/") + QString(QLatin1String(PROJECT_FILE))); QByteArray projectFilePathByteArray = projectFilePath.toLatin1(); const char* projectFilePathStr = projectFilePathByteArray.data(); Serializer* projectWriter = SerializerJson::createWriter(projectFilePathStr); projectWriter->writeObject(nullptr, project); projectWriter->close(); SAFE_DELETE(projectWriter); // Create a config file QString configFilePath(path + QString("/") + QString(QLatin1String(CONFIG_FILE))); QByteArray configFilePathByteArray = configFilePath.toLatin1(); const char* configFilePathStr = configFilePathByteArray.data(); Serializer* configWriter = SerializerJson::createWriter(configFilePathStr); Game::Config config; configWriter->writeObject(nullptr, &config); configWriter->close(); SAFE_DELETE(configWriter); // Create an empty scene. std::string id = SCENE_NEW; Scene* scene = Scene::create(id.c_str()); // Add a perspective camera float aspectRatio = (float)config.width / (float)config.height; Camera* camera = Camera::createPerspective(45.0f, aspectRatio, 1.0f, 10.0f); Node* cameraNode = scene->addNode(NODE_NEW); cameraNode->setCamera(camera); scene->setActiveCamera(camera); SAFE_RELEASE(camera); // Add a directional light Light* light = Light::createDirectional(Vector3::one()); Node* lightNode = Node::create(NODE_NEW); lightNode->setLight(light); lightNode->setTranslation(0.0f, 0.0f, 10.0f); SAFE_RELEASE(light); scene->addNode(lightNode); QString sceneFilePath(path + QDir::separator() + QString(QLatin1String(RESOURCE_DIR)) + QDir::separator() + QString(QLatin1String(SCENE_NEW)) + QString(QLatin1String(SCENE_EXT))); QByteArray sceneFilePathByteArray = sceneFilePath.toLatin1(); const char* sceneFilePathStr = sceneFilePathByteArray.data(); Serializer* sceneWriter = SerializerJson::createWriter(sceneFilePathStr); sceneWriter->writeObject(nullptr, scene); sceneWriter->close(); SAFE_DELETE(sceneWriter) SAFE_RELEASE(scene); return project; }
AliAnalysisTask *AddTask_cbaumann_LMEEPbPb2011Centold(Bool_t runRejection=kFALSE, Bool_t setMC=kFALSE,Bool_t enableCF=kFALSE){ //get the current analysis manager AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) { Error("AddTask_cbaumann_LMEEPbPb2011", "No analysis manager found."); return 0; } //create config File names: TRAIN_ROOT is for running on GSI train, // ALICE_ROOT for CERN Lego trains TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/"); TString trainRoot=gSystem->Getenv("TRAIN_ROOT"); if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/"; TString configFile("ConfigLMEEPbPb2011.C"); TString configLMEECutLib("LMEECutLib.C"); TString configFilePath(configBasePath+configFile); TString configLMEECutLibPath(configBasePath+configLMEECutLib); //AOD Usage currently tested with separate task, to be merged if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){ ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration"); } //Do we have an MC handler? Bool_t hasMC=setMC; if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0) hasMC=kTRUE; if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data())) gROOT->LoadMacro(configLMEECutLibPath.Data()); if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data())) gROOT->LoadMacro(configFilePath.Data()); LMEECutLib* cutlib = new LMEECutLib(); cutlib->SetMCFlag(hasMC); AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEDataPbPb2011Centold"); if (!hasMC){ task->UsePhysicsSelection(); } task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral); task->SetEventFilter(cutlib->GetEventCuts(LMEECutLib::kPbPb2011TPCandTOF)); // //load dielectron configuration file //add dielectron analysis with different cuts to the task if (runRejection) { AliDielectron *lowmass4=ConfigLMEEPbPb2011(4,hasMC,enableCF); task->AddDielectron(lowmass4); printf("add: %s\n",lowmass4->GetName()); } else { AliDielectron *lowmass1=ConfigLMEEPbPb2011(1,hasMC,enableCF); task->AddDielectron(lowmass1); printf("add: %s\n",lowmass1->GetName()); /* AliDielectron *lowmass7=ConfigLMEEPbPb2011(7,hasMC,enableCF); task->AddDielectron(lowmass7); printf("add: %s\n",lowmass7->GetName());*/ } mgr->AddTask(task); //create output container AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("cbaumann_LMEEPbPb2011Centold_tree", TTree::Class(), AliAnalysisManager::kExchangeContainer, "cbaumann_LMEEPbPb2011Centold_default.root"); AliAnalysisDataContainer *cOutputHist1 = mgr->CreateContainer("cbaumann_LMEEPbPb2011Centold_out", TList::Class(), AliAnalysisManager::kOutputContainer, "cbaumann_LMEEPbPb2011Centold_out.root"); AliAnalysisDataContainer *cOutputHist2 = 0x0; if (enableCF) { cOutputHist2 = mgr->CreateContainer("cbaumann_LMEEPbPb2011Centold_CF", TList::Class(), AliAnalysisManager::kOutputContainer, "cbaumann_LMEEPbPb2011Centold_out.root"); } AliAnalysisDataContainer *cOutputHist3 = mgr->CreateContainer("cbaumann_EventStatPbPb2011", TH1D::Class(), AliAnalysisManager::kOutputContainer, "cbaumann_LMEEPbPb2011Centold_out.root"); mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer()); mgr->ConnectOutput(task, 0, coutput1 ); mgr->ConnectOutput(task, 1, cOutputHist1); if (enableCF) { mgr->ConnectOutput(task, 2, cOutputHist2); } mgr->ConnectOutput(task, 3, cOutputHist3); return task; }