{"action":"created","comment":{"url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/comments/24478978","id":24478978,"diff_hunk":"@@ -0,0 +1,293 @@\n+///////////////////////////////////////////////////////////////////////////\n+//\n+//    Copyright 2009 Sebastian Neubert\n+//\n+//    This file is part of rootpwa\n+//\n+//    rootpwa is free software: you can redistribute it and/or modify\n+//    it under the terms of the GNU General Public License as published by\n+//    the Free Software Foundation, either version 3 of the License, or\n+//    (at your option) any later version.\n+//\n+//    rootpwa is distributed in the hope that it will be useful,\n+//    but WITHOUT ANY WARRANTY; without even the implied warranty of\n+//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+//    GNU General Public License for more details.\n+//\n+//    You should have received a copy of the GNU General Public License\n+//    along with rootpwa.  If not, see <http://www.gnu.org/licenses/>.\n+//\n+///////////////////////////////////////////////////////////////////////////\n+//-----------------------------------------------------------\n+//\n+// Description:\n+//      fitting program for rootpwa\n+//      minimizes pwaLikelihood function\n+//\n+//\n+// Author List:\n+//      Sebastian Neubert    TUM            (original author)\n+//\n+//\n+//-----------------------------------------------------------\n+\n+\n+#include <iostream>\n+\n+#include <TFile.h>\n+#include <TROOT.h>\n+#include <TTree.h>\n+\n+#include \"ampIntegralMatrix.h\"\n+#include \"fileUtils.hpp\"\n+#include \"fitResult.h\"\n+#include \"reportingUtilsEnvironment.h\"\n+\n+using namespace std;\n+using namespace rpwa;\n+\n+\n+ampIntegralMatrix readIntegralMatrix(const string& intFileName, const string& integralTKeyName = \"integral\") {\n+\tprintInfo << \"loading normalization integral from '\" << intFileName << \"'\" << endl;\n+\tampIntegralMatrix integral;\n+\tconst string normIntFileExt  = extensionFromPath(intFileName);\n+#ifdef USE_STD_COMPLEX_TREE_LEAFS\n+\tif (normIntFileExt == \"root\") {\n+\t\tTFile* intFile  = TFile::Open(intFileName.c_str(), \"READ\");\n+\t\tif (not intFile or intFile->IsZombie()) {\n+\t\t\tprintErr << \"could open normalization integral file '\" << intFileName << \"'. \"\n+\t\t\t         << \"aborting.\" << endl;\n+\t\t\tthrow;\n+\t\t}\n+\t\tampIntegralMatrix* integralPtr = 0;\n+\t\tintFile->GetObject(integralTKeyName.c_str(), integralPtr);\n+\t\tif (not integralPtr) {\n+\t\t\tprintErr << \"cannot find integral object in TKey '\" << integralTKeyName << \"' in file \"\n+\t\t\t         << \"'\" << intFileName << \"'. aborting.\" << endl;\n+\t\t\tthrow;\n+\t\t}\n+\t\tintegral = *integralPtr;\n+\t\tintFile->Close();\n+\t} else\n+#endif  // USE_STD_COMPLEX_TREE_LEAFS\n+\t\tif(normIntFileExt == \"int\") {\n+\t\t\tintegral.readAscii(intFileName);\n+\t} else {\n+\t\tprintErr << \"unknown file type '\" << intFileName << \"'. \"\n+\t\t         << \"only .int and .root files are supported. aborting.\" << endl;\n+\t\tthrow;\n+\t}\n+\treturn integral;\n+}\n+\n+\n+\n+void\n+usage(const string& progName,\n+      const int     errCode = 0)\n+{\n+\n+\tcerr << \"adds normalization integrals from fit result file\" << endl\n+\t     << endl\n+\t     << \"usage:\" << endl\n+\t     << progName\n+\t     << \" -i inuptFile -o outputFile -n PSIntFile [-a ACCIntFile -f]\" << endl\n+\t     << \"    where:\" << endl\n+\t     << \"        -i         input fit result file\" << endl\n+\t     << \"        -o         output fit result file\" << endl\n+\t     << \"        -n         phase space integral file to be added\" << endl\n+\t     << \"        -a         accepted integral file to be added\" << endl\n+\t     << \"        -f         force integral replacement (default: false)\" << endl\n+\t     << \"        -h         print help\" << endl\n+\t     << endl;\n+\texit(errCode);\n+}\n+\n+\n+int\n+main(int    argc,\n+     char** argv)\n+{\n+\tprintCompilerInfo();\n+\tprintLibraryInfo ();\n+\tprintGitHash     ();\n+\tcout << endl;\n+\n+\t// force loading predefined std::complex dictionary\n+\t// see http://root.cern.ch/phpBB3/viewtopic.php?f=5&t=9618&p=50164\n+\tgROOT->ProcessLine(\"#include <complex>\");\n+\n+\tconst string treeName = \"pwa\";\n+\tconst string branchName = \"fitResult_v2\";\n+\n+\tconst string progName            = argv[0];\n+\tstring inputFileName = \"\";\n+\tstring outputFileName = \"\";\n+\tstring phaseSpaceIntegralFileName = \"\";\n+\tstring acceptedIntegralFileName = \"\";\n+\tbool forceIntegralReplacement = false;\n+\textern char* optarg;\n+\t// extern int optind;\n+\tint c;\n+\twhile ((c = getopt(argc, argv, \"i:o:n:a:fh\")) != -1)\n+\t\tswitch (c) {\n+\t\tcase 'i':\n+\t\t\tinputFileName = optarg;\n+\t\t\tbreak;\n+\t\tcase 'o':\n+\t\t\toutputFileName = optarg;\n+\t\t\tbreak;\n+\t\tcase 'n':\n+\t\t\tphaseSpaceIntegralFileName = optarg;\n+\t\t\tbreak;\n+\t\tcase 'a':\n+\t\t\tacceptedIntegralFileName = optarg;\n+\t\t\tbreak;\n+\t\tcase 'f':\n+\t\t\tforceIntegralReplacement = true;\n+\t\t\tbreak;\n+\t\tcase 'h':\n+\t\t\tusage(progName);\n+\t\t\tbreak;\n+\t\t}\n+\n+\tTFile* inputFile = TFile::Open(inputFileName.c_str(), \"READ\");\n+\tif(not inputFile) {\n+\t\tprintErr << \"could not open input file '\" << inputFileName << \"'. Aborting...\" << endl;\n+\t\treturn 1;\n+\t}\n+\n+\tconst ampIntegralMatrix providedNormIntegral = readIntegralMatrix(phaseSpaceIntegralFileName);\n+\tampIntegralMatrix providedAccIntegral = readIntegralMatrix(acceptedIntegralFileName);\n+\n+\tTFile* outputFile = TFile::Open(outputFileName.c_str(), \"NEW\");\n+\tif(not outputFile) {\n+\t\tprintErr << \"could not open output file '\" << outputFileName << \"'. Aborting...\" << endl;\n+\t\treturn 1;\n+\t}\n+\n+\tTTree* inResultTree = 0;\n+\tinputFile->GetObject(treeName.c_str(), inResultTree);\n+\tif(not inResultTree) {\n+\t\tprintErr << \"could not find input tree with name '\" << treeName << \"' in input file '\" << inputFileName << \"'. Aborting...\" << endl;\n+\t\treturn 1;\n+\t}\n+\n+\tfitResult* inResult = 0;\n+\tinResultTree->SetBranchAddress(branchName.c_str(), &inResult);\n+\n+\toutputFile->cd();\n+\tTTree* outResultTree = new TTree(treeName.c_str(), treeName.c_str());\n+\tfitResult* outResult = 0;\n+\toutResultTree->Branch(branchName.c_str(), &outResult);\n+\n+\tfor(long i = 0; i < inResultTree->GetEntries(); ++i) {\n+\t\tinResultTree->GetEntry(i);\n+\t\tconst unsigned int& nmbEvents = inResult->nmbEvents();\n+\t\tconst unsigned int& normNmbEvents = inResult->normNmbEvents();\n+\t\tconst double& massBinCenter = inResult->massBinCenter();\n+\t\tconst double& logLikelihood = inResult->logLikelihood();\n+\t\tconst int& rank = inResult->rank();\n+\t\tconst vector<TComplex> prodAmpsTComplex = inResult->prodAmps();\n+\t\tconst unsigned int nmbProdAmps = prodAmpsTComplex.size();\n+\t\tvector<complex<double> > prodAmps(nmbProdAmps);\n+\t\tfor(unsigned int i = 0; i < nmbProdAmps; ++i) {\n+\t\t\tprodAmps[i] = complex<double>(prodAmpsTComplex[i].Re(), prodAmpsTComplex[i].Im());\n+\t\t}\n+\t\tconst vector<string>& prodAmpNames = inResult->prodAmpNames();\n+\t\tconst TMatrixT<double> fitParCovMatrix = inResult->fitParCovMatrix();\n+\t\tconst vector<pair<int, int> >& fitParCovMatrixIndices = inResult->fitParCovIndices();\n+\t\tcomplexMatrix normIntegral = inResult->normIntegralMatrix();\n+\t\tcomplexMatrix accIntegral = inResult->acceptedNormIntegralMatrix();\n+\t\tvector<double> phaseSpaceIntegral = inResult->phaseSpaceIntegralVector();\n+\t\tconst bool& converged = inResult->converged();\n+\t\tconst bool& hasHesse = inResult->hasHessian();\n+\n+\t\tif(normIntegral.nCols() != 0 or normIntegral.nRows() != 0 or\n+\t\t   accIntegral.nCols() != 0 or accIntegral.nRows() != 0 or\n+\t\t   not phaseSpaceIntegral.empty())\n+\t\t{\n+\t\t\tprintWarn << \"input file already has integral matrices.\";\n+\t\t\tif(forceIntegralReplacement) {\n+\t\t\t\tcout << \"Replacing anyway...\" << endl;\n+\t\t\t} else {\n+\t\t\t\tcout << \"Aborting...\" << endl;\n+\t\t\t\treturn 1;\n+\t\t\t}\n+\t\t}\n+\t\t{\n+\t\t\tconst unsigned int nmbWaves = inResult->nmbWaves();\n+\t\t\tnormIntegral = complexMatrix(nmbWaves, nmbWaves);\n+\t\t\taccIntegral = complexMatrix(nmbWaves, nmbWaves);\n+\t\t\tphaseSpaceIntegral = vector<double>(nmbWaves, 0.);\n+\t\t\tconst double totalAcceptance = (double)providedAccIntegral.nmbEvents() / (double)providedNormIntegral.nmbEvents();\n+\t\t\tprovidedAccIntegral.setNmbEvents(providedNormIntegral.nmbEvents());\n+\t\t\tfor(unsigned int waveIndex_i = 0; waveIndex_i < nmbWaves - 1; ++waveIndex_i) {\n+\t\t\t\tconst string& waveName_i(inResult->waveName(waveIndex_i).Data());\n+\t\t\t\tif(waveName_i == \"flat\") {\n+\t\t\t\t\tprintErr << \"encountered flat wave prematurely. Aborting...\" << endl;\n+\t\t\t\t\treturn 1;\n+\t\t\t\t}\n+\t\t\t\tfor(unsigned int waveIndex_j = 0; waveIndex_j < nmbWaves - 1; ++waveIndex_j) {\n+\t\t\t\t\tconst string& waveName_j(inResult->waveName(waveIndex_j).Data());\n+\t\t\t\t\tif(waveName_j == \"flat\") {\n+\t\t\t\t\t\tprintErr << \"encountered flat wave prematurely. Aborting...\" << endl;\n+\t\t\t\t\t\treturn 1;\n+\t\t\t\t\t}\n+\t\t\t\t\tnormIntegral.set(waveIndex_i, waveIndex_j, providedNormIntegral.element(waveName_i, waveName_j));\n+\t\t\t\t\taccIntegral.set(waveIndex_i, waveIndex_j, providedAccIntegral.element(waveName_i, waveName_j));\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\tfor(unsigned int i = 0; i < phaseSpaceIntegral.size() - 1; ++i) {\n+\t\t\t\tphaseSpaceIntegral[i] = sqrt(normIntegral.get(i, i).real());\n+\t\t\t}\n+\t\t\tphaseSpaceIntegral[nmbWaves-1] = 1.;\n+\t\t\tfor(unsigned int waveIndex_i = 0; waveIndex_i < nmbWaves - 1; ++waveIndex_i) {\n+\t\t\t\tfor(unsigned int waveIndex_j = 0; waveIndex_j < nmbWaves - 1; ++waveIndex_j) {\n+\t\t\t\t\tif(waveIndex_i == waveIndex_j) {\n+\t\t\t\t\t\tnormIntegral.set(waveIndex_i, waveIndex_j, 1.);\n+\t\t\t\t\t} else {\n+\t\t\t\t\t\tnormIntegral.set(waveIndex_i, waveIndex_j, normIntegral.get(waveIndex_i, waveIndex_j) / (phaseSpaceIntegral[waveIndex_i] * phaseSpaceIntegral[waveIndex_j]));\n+\t\t\t\t\t}\n+\t\t\t\t\taccIntegral.set(waveIndex_i, waveIndex_j, accIntegral.get(waveIndex_i, waveIndex_j) / (phaseSpaceIntegral[waveIndex_i] * phaseSpaceIntegral[waveIndex_j]));\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\tfor (unsigned int i = 0; i < normIntegral.nCols(); ++i) {\n+\t\t\t\tnormIntegral.set(nmbWaves-1, i, complex<double>(0., 0.));\n+\t\t\t\tnormIntegral.set(i, nmbWaves-1, complex<double>(0., 0.));\n+\t\t\t\taccIntegral.set(nmbWaves-1, i, complex<double>(0., 0.));\n+\t\t\t\taccIntegral.set(i, nmbWaves-1, complex<double>(0., 0.));\n+\t\t\t}\n+\t\t\tnormIntegral.set(nmbWaves-1, nmbWaves-1, complex<double>(1., 0.));\n+\t\t\taccIntegral.set (nmbWaves-1, nmbWaves-1, complex<double>(totalAcceptance, 0.));\n+\t\t}\n+\n+\t\toutResult->reset();\n+\t\toutResult->fill(nmbEvents,\n+\t\t                normNmbEvents,\n+\t\t                massBinCenter,\n+\t\t                logLikelihood,\n+\t\t                rank,\n+\t\t                prodAmps,\n+\t\t                prodAmpNames,\n+\t\t                fitParCovMatrix,\n+\t\t                fitParCovMatrixIndices,\n+\t\t                normIntegral,  // contains the sqrt of the integral matrix diagonal elements!!!","path":"src/addIntegralsToFitResult.cc","position":275,"original_position":275,"commit_id":"fc0398e4b9668f073f211b070863699569ced1b6","original_commit_id":"fc0398e4b9668f073f211b070863699569ced1b6","user":{"login":"suhlatwork","id":7747454,"avatar_url":"https://avatars.githubusercontent.com/u/7747454?v=3","gravatar_id":"","url":"https://api.github.com/users/suhlatwork","html_url":"https://github.com/suhlatwork","followers_url":"https://api.github.com/users/suhlatwork/followers","following_url":"https://api.github.com/users/suhlatwork/following{/other_user}","gists_url":"https://api.github.com/users/suhlatwork/gists{/gist_id}","starred_url":"https://api.github.com/users/suhlatwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/suhlatwork/subscriptions","organizations_url":"https://api.github.com/users/suhlatwork/orgs","repos_url":"https://api.github.com/users/suhlatwork/repos","events_url":"https://api.github.com/users/suhlatwork/events{/privacy}","received_events_url":"https://api.github.com/users/suhlatwork/received_events","type":"User","site_admin":false},"body":"the comment belongs to phaseSpaceIntegral","created_at":"2015-02-11T08:12:07Z","updated_at":"2015-02-11T08:12:07Z","html_url":"https://github.com/ROOTPWA-Maintainers/ROOTPWA/pull/61#discussion_r24478978","pull_request_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/61","_links":{"self":{"href":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/comments/24478978"},"html":{"href":"https://github.com/ROOTPWA-Maintainers/ROOTPWA/pull/61#discussion_r24478978"},"pull_request":{"href":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/61"}}},"pull_request":{"url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/61","id":29025951,"html_url":"https://github.com/ROOTPWA-Maintainers/ROOTPWA/pull/61","diff_url":"https://github.com/ROOTPWA-Maintainers/ROOTPWA/pull/61.diff","patch_url":"https://github.com/ROOTPWA-Maintainers/ROOTPWA/pull/61.patch","issue_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/issues/61","number":61,"state":"closed","locked":false,"title":" v2","user":{"login":"legordian","id":1710317,"avatar_url":"https://avatars.githubusercontent.com/u/1710317?v=3","gravatar_id":"","url":"https://api.github.com/users/legordian","html_url":"https://github.com/legordian","followers_url":"https://api.github.com/users/legordian/followers","following_url":"https://api.github.com/users/legordian/following{/other_user}","gists_url":"https://api.github.com/users/legordian/gists{/gist_id}","starred_url":"https://api.github.com/users/legordian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/legordian/subscriptions","organizations_url":"https://api.github.com/users/legordian/orgs","repos_url":"https://api.github.com/users/legordian/repos","events_url":"https://api.github.com/users/legordian/events{/privacy}","received_events_url":"https://api.github.com/users/legordian/received_events","type":"User","site_admin":false},"body":"Add executables to remove and add integral matrices to fit result files.","created_at":"2015-02-10T17:17:38Z","updated_at":"2015-02-11T08:12:07Z","closed_at":"2015-02-10T17:54:19Z","merged_at":"2015-02-10T17:54:19Z","merge_commit_sha":"ef3fc0db73d4c8285e37217afbd57c1e2b5f7278","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/61/commits","review_comments_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/61/comments","review_comment_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/comments/{number}","comments_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/issues/61/comments","statuses_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/statuses/fc0398e4b9668f073f211b070863699569ced1b6","head":{"label":"legordian:_v2","ref":"_v2","sha":"fc0398e4b9668f073f211b070863699569ced1b6","user":{"login":"legordian","id":1710317,"avatar_url":"https://avatars.githubusercontent.com/u/1710317?v=3","gravatar_id":"","url":"https://api.github.com/users/legordian","html_url":"https://github.com/legordian","followers_url":"https://api.github.com/users/legordian/followers","following_url":"https://api.github.com/users/legordian/following{/other_user}","gists_url":"https://api.github.com/users/legordian/gists{/gist_id}","starred_url":"https://api.github.com/users/legordian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/legordian/subscriptions","organizations_url":"https://api.github.com/users/legordian/orgs","repos_url":"https://api.github.com/users/legordian/repos","events_url":"https://api.github.com/users/legordian/events{/privacy}","received_events_url":"https://api.github.com/users/legordian/received_events","type":"User","site_admin":false},"repo":{"id":23425508,"name":"ROOTPWA","full_name":"legordian/ROOTPWA","owner":{"login":"legordian","id":1710317,"avatar_url":"https://avatars.githubusercontent.com/u/1710317?v=3","gravatar_id":"","url":"https://api.github.com/users/legordian","html_url":"https://github.com/legordian","followers_url":"https://api.github.com/users/legordian/followers","following_url":"https://api.github.com/users/legordian/following{/other_user}","gists_url":"https://api.github.com/users/legordian/gists{/gist_id}","starred_url":"https://api.github.com/users/legordian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/legordian/subscriptions","organizations_url":"https://api.github.com/users/legordian/orgs","repos_url":"https://api.github.com/users/legordian/repos","events_url":"https://api.github.com/users/legordian/events{/privacy}","received_events_url":"https://api.github.com/users/legordian/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/legordian/ROOTPWA","description":"","fork":true,"url":"https://api.github.com/repos/legordian/ROOTPWA","forks_url":"https://api.github.com/repos/legordian/ROOTPWA/forks","keys_url":"https://api.github.com/repos/legordian/ROOTPWA/keys{/key_id}","collaborators_url":"https://api.github.com/repos/legordian/ROOTPWA/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/legordian/ROOTPWA/teams","hooks_url":"https://api.github.com/repos/legordian/ROOTPWA/hooks","issue_events_url":"https://api.github.com/repos/legordian/ROOTPWA/issues/events{/number}","events_url":"https://api.github.com/repos/legordian/ROOTPWA/events","assignees_url":"https://api.github.com/repos/legordian/ROOTPWA/assignees{/user}","branches_url":"https://api.github.com/repos/legordian/ROOTPWA/branches{/branch}","tags_url":"https://api.github.com/repos/legordian/ROOTPWA/tags","blobs_url":"https://api.github.com/repos/legordian/ROOTPWA/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/legordian/ROOTPWA/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/legordian/ROOTPWA/git/refs{/sha}","trees_url":"https://api.github.com/repos/legordian/ROOTPWA/git/trees{/sha}","statuses_url":"https://api.github.com/repos/legordian/ROOTPWA/statuses/{sha}","languages_url":"https://api.github.com/repos/legordian/ROOTPWA/languages","stargazers_url":"https://api.github.com/repos/legordian/ROOTPWA/stargazers","contributors_url":"https://api.github.com/repos/legordian/ROOTPWA/contributors","subscribers_url":"https://api.github.com/repos/legordian/ROOTPWA/subscribers","subscription_url":"https://api.github.com/repos/legordian/ROOTPWA/subscription","commits_url":"https://api.github.com/repos/legordian/ROOTPWA/commits{/sha}","git_commits_url":"https://api.github.com/repos/legordian/ROOTPWA/git/commits{/sha}","comments_url":"https://api.github.com/repos/legordian/ROOTPWA/comments{/number}","issue_comment_url":"https://api.github.com/repos/legordian/ROOTPWA/issues/comments/{number}","contents_url":"https://api.github.com/repos/legordian/ROOTPWA/contents/{+path}","compare_url":"https://api.github.com/repos/legordian/ROOTPWA/compare/{base}...{head}","merges_url":"https://api.github.com/repos/legordian/ROOTPWA/merges","archive_url":"https://api.github.com/repos/legordian/ROOTPWA/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/legordian/ROOTPWA/downloads","issues_url":"https://api.github.com/repos/legordian/ROOTPWA/issues{/number}","pulls_url":"https://api.github.com/repos/legordian/ROOTPWA/pulls{/number}","milestones_url":"https://api.github.com/repos/legordian/ROOTPWA/milestones{/number}","notifications_url":"https://api.github.com/repos/legordian/ROOTPWA/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/legordian/ROOTPWA/labels{/name}","releases_url":"https://api.github.com/repos/legordian/ROOTPWA/releases{/id}","created_at":"2014-08-28T11:29:31Z","updated_at":"2015-02-10T17:10:36Z","pushed_at":"2015-02-10T17:56:05Z","git_url":"git://github.com/legordian/ROOTPWA.git","ssh_url":"git@github.com:legordian/ROOTPWA.git","clone_url":"https://github.com/legordian/ROOTPWA.git","svn_url":"https://github.com/legordian/ROOTPWA","homepage":null,"size":28224,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ROOTPWA-Maintainers:_v2","ref":"_v2","sha":"6477c2fc9b38f9cd002f3a1d9b88b9422bdcb129","user":{"login":"ROOTPWA-Maintainers","id":8570007,"avatar_url":"https://avatars.githubusercontent.com/u/8570007?v=3","gravatar_id":"","url":"https://api.github.com/users/ROOTPWA-Maintainers","html_url":"https://github.com/ROOTPWA-Maintainers","followers_url":"https://api.github.com/users/ROOTPWA-Maintainers/followers","following_url":"https://api.github.com/users/ROOTPWA-Maintainers/following{/other_user}","gists_url":"https://api.github.com/users/ROOTPWA-Maintainers/gists{/gist_id}","starred_url":"https://api.github.com/users/ROOTPWA-Maintainers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ROOTPWA-Maintainers/subscriptions","organizations_url":"https://api.github.com/users/ROOTPWA-Maintainers/orgs","repos_url":"https://api.github.com/users/ROOTPWA-Maintainers/repos","events_url":"https://api.github.com/users/ROOTPWA-Maintainers/events{/privacy}","received_events_url":"https://api.github.com/users/ROOTPWA-Maintainers/received_events","type":"Organization","site_admin":false},"repo":{"id":23422237,"name":"ROOTPWA","full_name":"ROOTPWA-Maintainers/ROOTPWA","owner":{"login":"ROOTPWA-Maintainers","id":8570007,"avatar_url":"https://avatars.githubusercontent.com/u/8570007?v=3","gravatar_id":"","url":"https://api.github.com/users/ROOTPWA-Maintainers","html_url":"https://github.com/ROOTPWA-Maintainers","followers_url":"https://api.github.com/users/ROOTPWA-Maintainers/followers","following_url":"https://api.github.com/users/ROOTPWA-Maintainers/following{/other_user}","gists_url":"https://api.github.com/users/ROOTPWA-Maintainers/gists{/gist_id}","starred_url":"https://api.github.com/users/ROOTPWA-Maintainers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ROOTPWA-Maintainers/subscriptions","organizations_url":"https://api.github.com/users/ROOTPWA-Maintainers/orgs","repos_url":"https://api.github.com/users/ROOTPWA-Maintainers/repos","events_url":"https://api.github.com/users/ROOTPWA-Maintainers/events{/privacy}","received_events_url":"https://api.github.com/users/ROOTPWA-Maintainers/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ROOTPWA-Maintainers/ROOTPWA","description":"ROOTPWA is a toolkit for partial-wave analysis of multi-particle final states produced in high-energy particle reactions. It is used to determine hadron spectra from experimental data.","fork":false,"url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA","forks_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/forks","keys_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/teams","hooks_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/hooks","issue_events_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/issues/events{/number}","events_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/events","assignees_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/assignees{/user}","branches_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/branches{/branch}","tags_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/tags","blobs_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/git/refs{/sha}","trees_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/statuses/{sha}","languages_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/languages","stargazers_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/stargazers","contributors_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/contributors","subscribers_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/subscribers","subscription_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/subscription","commits_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/commits{/sha}","git_commits_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/git/commits{/sha}","comments_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/comments{/number}","issue_comment_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/issues/comments/{number}","contents_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/contents/{+path}","compare_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/merges","archive_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/downloads","issues_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/issues{/number}","pulls_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls{/number}","milestones_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/milestones{/number}","notifications_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/labels{/name}","releases_url":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/releases{/id}","created_at":"2014-08-28T09:19:07Z","updated_at":"2015-02-05T16:41:40Z","pushed_at":"2015-02-10T17:54:20Z","git_url":"git://github.com/ROOTPWA-Maintainers/ROOTPWA.git","ssh_url":"git@github.com:ROOTPWA-Maintainers/ROOTPWA.git","clone_url":"https://github.com/ROOTPWA-Maintainers/ROOTPWA.git","svn_url":"https://github.com/ROOTPWA-Maintainers/ROOTPWA","homepage":"","size":28473,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":23,"forks":5,"open_issues":23,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/61"},"html":{"href":"https://github.com/ROOTPWA-Maintainers/ROOTPWA/pull/61"},"issue":{"href":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/issues/61"},"comments":{"href":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/issues/61/comments"},"review_comments":{"href":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/61/comments"},"review_comment":{"href":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/pulls/61/commits"},"statuses":{"href":"https://api.github.com/repos/ROOTPWA-Maintainers/ROOTPWA/statuses/fc0398e4b9668f073f211b070863699569ced1b6"}}}}