{"action":"created","comment":{"url":"https://api.github.com/repos/cms-sw/cmssw/pulls/comments/79129939","id":79129939,"diff_hunk":"@@ -0,0 +1,306 @@\n+\n+/*\n+ * \\class PATTauDiscriminationByMVAIsolationRun2\n+ * \n+ * MVA based discriminator against jet -> tau fakes\n+ * \n+ * Adopted from RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByMVAIsolationRun2.cc\n+ * to enable computation of MVA isolation on MiniAOD\n+ * \n+ * \\author Alexander Nehrkorn, RWTH Aachen\n+ */\n+\n+// todo 1: remove leadingTrackChi2 as input variable from:\n+//           - here\n+//           - TauPFEssential\n+//           - PFRecoTauDiscriminationByMVAIsolationRun2\n+//           - Training of BDT\n+// todo 2: do we need/want to add PATTauIDEmbedder?\n+\n+#include \"RecoTauTag/RecoTau/interface/TauDiscriminationProducerBase.h\"\n+\n+#include \"FWCore/Framework/interface/Event.h\"\n+#include \"FWCore/Framework/interface/EventSetup.h\"\n+#include \"FWCore/Utilities/interface/InputTag.h\"\n+#include \"FWCore/ParameterSet/interface/ParameterSet.h\"\n+#include \"FWCore/ParameterSet/interface/FileInPath.h\"\n+\n+#include \"FWCore/Utilities/interface/Exception.h\"\n+\n+#include \"DataFormats/Candidate/interface/Candidate.h\"\n+#include \"DataFormats/PatCandidates/interface/Tau.h\"\n+#include \"DataFormats/PatCandidates/interface/PATTauDiscriminator.h\"\n+#include \"DataFormats/Math/interface/deltaR.h\"\n+#include \"RecoTauTag/RecoTau/interface/PFRecoTauClusterVariables.h\"\n+\n+#include \"CondFormats/EgammaObjects/interface/GBRForest.h\"\n+#include \"CondFormats/DataRecord/interface/GBRWrapperRcd.h\"\n+#include \"FWCore/Framework/interface/ESHandle.h\"\n+\n+#include <TMath.h>\n+#include <TFile.h>\n+\n+#include <iostream>\n+\n+using namespace pat;\n+\n+namespace\n+{\n+  const GBRForest* loadMVAfromFile(const edm::FileInPath& inputFileName, const std::string& mvaName, std::vector<TFile*>& inputFilesToDelete)\n+  {\n+    if ( inputFileName.location() == edm::FileInPath::Unknown ) throw cms::Exception(\"PATTauDiscriminationByIsolationMVARun2::loadMVA\")\n+      << \" Failed to find File = \" << inputFileName << \" !!\\n\"; \n+    TFile* inputFile = new TFile(inputFileName.fullPath().data());\n+\t\n+    //const GBRForest* mva = dynamic_cast<GBRForest*>(inputFile->Get(mvaName.data())); // CV: dynamic_cast<GBRForest*> fails for some reason ?!\n+    const GBRForest* mva = (GBRForest*)inputFile->Get(mvaName.data());\n+    if ( !mva )\n+      throw cms::Exception(\"PATTauDiscriminationByIsolationMVARun2::loadMVA\")\n+        << \" Failed to load MVA = \" << mvaName.data() << \" from file = \" << inputFileName.fullPath().data() << \" !!\\n\";\n+\t\n+     inputFilesToDelete.push_back(inputFile);\n+\t  \n+     return mva;\n+  }\n+\t\n+  const GBRForest* loadMVAfromDB(const edm::EventSetup& es, const std::string& mvaName)\n+  {\n+    edm::ESHandle<GBRForest> mva;\n+    es.get<GBRWrapperRcd>().get(mvaName, mva);\n+    return mva.product();\n+  }\n+}\n+\n+class PATTauDiscriminationByMVAIsolationRun2 : public PATTauDiscriminationProducerBase\n+{\n+  public:\n+    explicit PATTauDiscriminationByMVAIsolationRun2(const edm::ParameterSet& cfg)\n+      : PATTauDiscriminationProducerBase(cfg),\n+        moduleLabel_(cfg.getParameter<std::string>(\"@module_label\")),\n+\tmvaReader_(0),\n+\tmvaInput_(0),\n+\tcategory_output_(0)\n+    {\n+       mvaName_ = cfg.getParameter<std::string>(\"mvaName\");\n+       loadMVAfromDB_ = cfg.exists(\"loadMVAfromDB\") ? cfg.getParameter<bool>(\"loadMVAfromDB\") : false;\n+       if ( !loadMVAfromDB_ ) {\n+         if(cfg.exists(\"inputFileName\")){\n+\t   inputFileName_ = cfg.getParameter<edm::FileInPath>(\"inputFileName\");\n+\t }else throw cms::Exception(\"MVA input not defined\") << \"Requested to load tau MVA input from ROOT file but no file provided in cfg file\";\n+       }    \n+       std::string mvaOpt_string = cfg.getParameter<std::string>(\"mvaOpt\");\n+       if      ( mvaOpt_string == \"oldDMwoLT\" ) mvaOpt_ = kOldDMwoLT;\n+       else if ( mvaOpt_string == \"oldDMwLT\"  ) mvaOpt_ = kOldDMwLT;\n+       else if ( mvaOpt_string == \"newDMwoLT\" ) mvaOpt_ = kNewDMwoLT;\n+       else if ( mvaOpt_string == \"newDMwLT\"  ) mvaOpt_ = kNewDMwLT;\n+       else if ( mvaOpt_string == \"DBoldDMwLT\"  ) mvaOpt_ = kDBoldDMwLT;\n+       else if ( mvaOpt_string == \"DBnewDMwLT\"  ) mvaOpt_ = kDBnewDMwLT;\n+       else if ( mvaOpt_string == \"PWoldDMwLT\"  ) mvaOpt_ = kPWoldDMwLT;\n+       else if ( mvaOpt_string == \"PWnewDMwLT\"  ) mvaOpt_ = kPWnewDMwLT;\n+       else throw cms::Exception(\"PATTauDiscriminationByMVAIsolationRun2\")\n+         << \" Invalid Configuration Parameter 'mvaOpt' = \" << mvaOpt_string << \" !!\\n\";\n+\t\t    \n+       if      ( mvaOpt_ == kOldDMwoLT || mvaOpt_ == kNewDMwoLT ) mvaInput_ = new float[6];\n+       else if ( mvaOpt_ == kOldDMwLT  || mvaOpt_ == kNewDMwLT  ) mvaInput_ = new float[12];\n+       else if ( mvaOpt_ == kDBoldDMwLT || mvaOpt_ == kDBnewDMwLT ||\n+                 mvaOpt_ == kPWoldDMwLT || mvaOpt_ == kPWnewDMwLT) mvaInput_ = new float[23];\n+       else assert(0);\n+\n+       chargedIsoPtSums_ = cfg.getParameter<std::string>(\"srcChargedIsoPtSum\");\n+       neutralIsoPtSums_ = cfg.getParameter<std::string>(\"srcNeutralIsoPtSum\");\n+       puCorrPtSums_ = cfg.getParameter<std::string>(\"srcPUcorrPtSum\");\n+       photonPtSumOutsideSignalCone_ = cfg.getParameter<std::string>(\"srcPhotonPtSumOutsideSignalCone\");\n+       footprintCorrection_ = cfg.getParameter<std::string>(\"srcFootprintCorrection\");\n+\t\t  \n+       verbosity_ = ( cfg.exists(\"verbosity\") ) ?\n+         cfg.getParameter<int>(\"verbosity\") : 0;\n+\n+       produces<pat::PATTauDiscriminator>(\"category\");\n+    }  \n+\t\t\n+    void beginEvent(const edm::Event&, const edm::EventSetup&);\n+\t\t\n+    double discriminate(const TauRef&) const;\n+\t\t\n+    void endEvent(edm::Event&);\n+\t\t\n+    ~PATTauDiscriminationByMVAIsolationRun2()\n+    {\n+      if(!loadMVAfromDB_) delete mvaReader_;\n+      delete[] mvaInput_;\n+      for ( std::vector<TFile*>::iterator it = inputFilesToDelete_.begin();\n+\t    it != inputFilesToDelete_.end(); ++it ) {\n+        delete (*it);\n+      }\n+    }","path":"RecoTauTag/RecoTau/plugins/PATTauDiscriminationByMVAIsolationRun2.cc","position":135,"original_position":135,"commit_id":"148c073c20b7f0a8c41afa32780954255f824817","original_commit_id":"148c073c20b7f0a8c41afa32780954255f824817","user":{"login":"roger-wolf","id":4981329,"avatar_url":"https://avatars.githubusercontent.com/u/4981329?v=3","gravatar_id":"","url":"https://api.github.com/users/roger-wolf","html_url":"https://github.com/roger-wolf","followers_url":"https://api.github.com/users/roger-wolf/followers","following_url":"https://api.github.com/users/roger-wolf/following{/other_user}","gists_url":"https://api.github.com/users/roger-wolf/gists{/gist_id}","starred_url":"https://api.github.com/users/roger-wolf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/roger-wolf/subscriptions","organizations_url":"https://api.github.com/users/roger-wolf/orgs","repos_url":"https://api.github.com/users/roger-wolf/repos","events_url":"https://api.github.com/users/roger-wolf/events{/privacy}","received_events_url":"https://api.github.com/users/roger-wolf/received_events","type":"User","site_admin":false},"body":"I can have a look and try to improve on it in following code improvement commits. ","created_at":"2016-09-16T08:54:40Z","updated_at":"2016-09-16T08:54:40Z","html_url":"https://github.com/cms-sw/cmssw/pull/15778#discussion_r79129939","pull_request_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/15778","_links":{"self":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/comments/79129939"},"html":{"href":"https://github.com/cms-sw/cmssw/pull/15778#discussion_r79129939"},"pull_request":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/15778"}}},"pull_request":{"url":"https://api.github.com/repos/cms-sw/cmssw/pulls/15778","id":84456905,"html_url":"https://github.com/cms-sw/cmssw/pull/15778","diff_url":"https://github.com/cms-sw/cmssw/pull/15778.diff","patch_url":"https://github.com/cms-sw/cmssw/pull/15778.patch","issue_url":"https://api.github.com/repos/cms-sw/cmssw/issues/15778","number":15778,"state":"open","locked":false,"title":"Infrastructure to create the actual ValueMap pat::Tau-discriminator for tau isolation and ID","user":{"login":"roger-wolf","id":4981329,"avatar_url":"https://avatars.githubusercontent.com/u/4981329?v=3","gravatar_id":"","url":"https://api.github.com/users/roger-wolf","html_url":"https://github.com/roger-wolf","followers_url":"https://api.github.com/users/roger-wolf/followers","following_url":"https://api.github.com/users/roger-wolf/following{/other_user}","gists_url":"https://api.github.com/users/roger-wolf/gists{/gist_id}","starred_url":"https://api.github.com/users/roger-wolf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/roger-wolf/subscriptions","organizations_url":"https://api.github.com/users/roger-wolf/orgs","repos_url":"https://api.github.com/users/roger-wolf/repos","events_url":"https://api.github.com/users/roger-wolf/events{/privacy}","received_events_url":"https://api.github.com/users/roger-wolf/received_events","type":"User","site_admin":false},"body":"This is a pull request to layout the infrastructure to create the actual pat::Tau-discriminator ValueMap. \r\n\r\nThe PATTauDiscriminator.h is declared in DataFormats/PatCandidate. The classes for filling are provided in RecoTauTag/RecoTau:\r\n\r\n - PATTauDiscriminantCutMultiplexer.cc : used to save discriminator working points (eventually depending on other variables), following the currently existing TauPOG infrastructure.\r\n - PATTauDiscriminantCutMultiplexer_cfi.py : corresponding cfi file for configuration.\r\n - PATTauDiscriminationByMVAIsolationRun2.cc : the plugin to create the tauID discriminator ValueMap\r\n - PATTauDiscriminationByMVAIsolationRun2_cff.py : corresponding cff file for configuration.\r\n\r\nSeveral other files have been modified to account for the existence new discriminator or to adapt helper functions to be able to act on the PATTauDiscriminator as well as on the PFTauDiscriminator. The input values for the AOD based discriminator calculation have been downgraded to float, since this is the available level of accuracy on miniAOD. This has been done with the premiss to guarantee that the MVA return values are the same irrespective of whether AOD or miniAOD has been used as input to the calculation. A few files have been added to the RecoTauTag/RecoTau/test directory for unit testing.  \r\n\r\nUsual checks have been made (apart from runMatrix problems with CMS_DAS). Also internal tests show that already existing workflows are not altered or compromised in any way. The unit test show that the discriminator can be calculated on miniAOD event content and read-in at analysis level and that it returns identical results to the discriminator as calculated on AOD input at an accuracy of 10e-5. Residual differences are understood in terms of differences on the miniAOD input variables.   \r\n\r\nWe would like to get this infrastructure integrated in time for CMSSW_8_1_0_pre12. \r\n\r\nPotentially we would like to backport it to 80X: it does not change any existing event content while it clearly add a new object to the EDM. In the typical case the new objects will be used at the analysis level and will be transient. The use case is also expressed by the fact that the new data object is defined in the AT packages DataFormats/PatCandidates. We anticipate that the backport might be subject of debate and rely on our assessment.\r\n\r\nAs for the extension of the miniAOD event content before we have one more development that is a bit lacking behind but that we would like to be integrated on the same time scale for the anti-electron discriminator. We hope that we can prepare this PR by tomorrow based on the infrastructure that has been laid out here. It will then ideally only add the plugins to calculate the physically different discriminator values using the PATTauDiscriminator infrastructure introduced with this PR. It will therefore not be as extended in lines of new/altered code as this PR. \r\n\r\nCheers,\r\nRoger","created_at":"2016-09-08T11:03:35Z","updated_at":"2016-09-16T08:54:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"789f19e20ed99a7d6da643e6d8a3fa1dfd3e54ed","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/cms-sw/cmssw/milestones/59","html_url":"https://github.com/cms-sw/cmssw/milestones/Next%20CMSSW_8_1_X","labels_url":"https://api.github.com/repos/cms-sw/cmssw/milestones/59/labels","id":1590252,"number":59,"title":"Next CMSSW_8_1_X","description":null,"creator":{"login":"smuzaffar","id":4115138,"avatar_url":"https://avatars.githubusercontent.com/u/4115138?v=3","gravatar_id":"","url":"https://api.github.com/users/smuzaffar","html_url":"https://github.com/smuzaffar","followers_url":"https://api.github.com/users/smuzaffar/followers","following_url":"https://api.github.com/users/smuzaffar/following{/other_user}","gists_url":"https://api.github.com/users/smuzaffar/gists{/gist_id}","starred_url":"https://api.github.com/users/smuzaffar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smuzaffar/subscriptions","organizations_url":"https://api.github.com/users/smuzaffar/orgs","repos_url":"https://api.github.com/users/smuzaffar/repos","events_url":"https://api.github.com/users/smuzaffar/events{/privacy}","received_events_url":"https://api.github.com/users/smuzaffar/received_events","type":"User","site_admin":false},"open_issues":66,"closed_issues":1445,"state":"open","created_at":"2016-02-18T09:12:12Z","updated_at":"2016-09-16T07:18:19Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/15778/commits","review_comments_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/15778/comments","review_comment_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cms-sw/cmssw/issues/15778/comments","statuses_url":"https://api.github.com/repos/cms-sw/cmssw/statuses/148c073c20b7f0a8c41afa32780954255f824817","head":{"label":"cms-tau-pog:CMSSW_8_1_X_tau-pog_miniAOD-tauID","ref":"CMSSW_8_1_X_tau-pog_miniAOD-tauID","sha":"148c073c20b7f0a8c41afa32780954255f824817","user":{"login":"cms-tau-pog","id":5045946,"avatar_url":"https://avatars.githubusercontent.com/u/5045946?v=3","gravatar_id":"","url":"https://api.github.com/users/cms-tau-pog","html_url":"https://github.com/cms-tau-pog","followers_url":"https://api.github.com/users/cms-tau-pog/followers","following_url":"https://api.github.com/users/cms-tau-pog/following{/other_user}","gists_url":"https://api.github.com/users/cms-tau-pog/gists{/gist_id}","starred_url":"https://api.github.com/users/cms-tau-pog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cms-tau-pog/subscriptions","organizations_url":"https://api.github.com/users/cms-tau-pog/orgs","repos_url":"https://api.github.com/users/cms-tau-pog/repos","events_url":"https://api.github.com/users/cms-tau-pog/events{/privacy}","received_events_url":"https://api.github.com/users/cms-tau-pog/received_events","type":"Organization","site_admin":false},"repo":{"id":11524374,"name":"cmssw","full_name":"cms-tau-pog/cmssw","owner":{"login":"cms-tau-pog","id":5045946,"avatar_url":"https://avatars.githubusercontent.com/u/5045946?v=3","gravatar_id":"","url":"https://api.github.com/users/cms-tau-pog","html_url":"https://github.com/cms-tau-pog","followers_url":"https://api.github.com/users/cms-tau-pog/followers","following_url":"https://api.github.com/users/cms-tau-pog/following{/other_user}","gists_url":"https://api.github.com/users/cms-tau-pog/gists{/gist_id}","starred_url":"https://api.github.com/users/cms-tau-pog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cms-tau-pog/subscriptions","organizations_url":"https://api.github.com/users/cms-tau-pog/orgs","repos_url":"https://api.github.com/users/cms-tau-pog/repos","events_url":"https://api.github.com/users/cms-tau-pog/events{/privacy}","received_events_url":"https://api.github.com/users/cms-tau-pog/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cms-tau-pog/cmssw","description":"CMS Offline Software fork - for all tau related developments","fork":true,"url":"https://api.github.com/repos/cms-tau-pog/cmssw","forks_url":"https://api.github.com/repos/cms-tau-pog/cmssw/forks","keys_url":"https://api.github.com/repos/cms-tau-pog/cmssw/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cms-tau-pog/cmssw/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cms-tau-pog/cmssw/teams","hooks_url":"https://api.github.com/repos/cms-tau-pog/cmssw/hooks","issue_events_url":"https://api.github.com/repos/cms-tau-pog/cmssw/issues/events{/number}","events_url":"https://api.github.com/repos/cms-tau-pog/cmssw/events","assignees_url":"https://api.github.com/repos/cms-tau-pog/cmssw/assignees{/user}","branches_url":"https://api.github.com/repos/cms-tau-pog/cmssw/branches{/branch}","tags_url":"https://api.github.com/repos/cms-tau-pog/cmssw/tags","blobs_url":"https://api.github.com/repos/cms-tau-pog/cmssw/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cms-tau-pog/cmssw/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cms-tau-pog/cmssw/git/refs{/sha}","trees_url":"https://api.github.com/repos/cms-tau-pog/cmssw/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cms-tau-pog/cmssw/statuses/{sha}","languages_url":"https://api.github.com/repos/cms-tau-pog/cmssw/languages","stargazers_url":"https://api.github.com/repos/cms-tau-pog/cmssw/stargazers","contributors_url":"https://api.github.com/repos/cms-tau-pog/cmssw/contributors","subscribers_url":"https://api.github.com/repos/cms-tau-pog/cmssw/subscribers","subscription_url":"https://api.github.com/repos/cms-tau-pog/cmssw/subscription","commits_url":"https://api.github.com/repos/cms-tau-pog/cmssw/commits{/sha}","git_commits_url":"https://api.github.com/repos/cms-tau-pog/cmssw/git/commits{/sha}","comments_url":"https://api.github.com/repos/cms-tau-pog/cmssw/comments{/number}","issue_comment_url":"https://api.github.com/repos/cms-tau-pog/cmssw/issues/comments{/number}","contents_url":"https://api.github.com/repos/cms-tau-pog/cmssw/contents/{+path}","compare_url":"https://api.github.com/repos/cms-tau-pog/cmssw/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cms-tau-pog/cmssw/merges","archive_url":"https://api.github.com/repos/cms-tau-pog/cmssw/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cms-tau-pog/cmssw/downloads","issues_url":"https://api.github.com/repos/cms-tau-pog/cmssw/issues{/number}","pulls_url":"https://api.github.com/repos/cms-tau-pog/cmssw/pulls{/number}","milestones_url":"https://api.github.com/repos/cms-tau-pog/cmssw/milestones{/number}","notifications_url":"https://api.github.com/repos/cms-tau-pog/cmssw/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cms-tau-pog/cmssw/labels{/name}","releases_url":"https://api.github.com/repos/cms-tau-pog/cmssw/releases{/id}","deployments_url":"https://api.github.com/repos/cms-tau-pog/cmssw/deployments","created_at":"2013-07-19T09:16:54Z","updated_at":"2015-09-25T08:26:06Z","pushed_at":"2016-09-13T13:04:42Z","git_url":"git://github.com/cms-tau-pog/cmssw.git","ssh_url":"git@github.com:cms-tau-pog/cmssw.git","clone_url":"https://github.com/cms-tau-pog/cmssw.git","svn_url":"https://github.com/cms-tau-pog/cmssw","homepage":"cms-sw.github.io/cmssw","size":821057,"stargazers_count":2,"watchers_count":2,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":2,"forks":4,"open_issues":2,"watchers":2,"default_branch":"CMSSW_8_1_X_tau-pog"}},"base":{"label":"cms-sw:CMSSW_8_1_X","ref":"CMSSW_8_1_X","sha":"5aa4600f432c484fed7158fe74f28b3b20b9ab2d","user":{"login":"cms-sw","id":3863500,"avatar_url":"https://avatars.githubusercontent.com/u/3863500?v=3","gravatar_id":"","url":"https://api.github.com/users/cms-sw","html_url":"https://github.com/cms-sw","followers_url":"https://api.github.com/users/cms-sw/followers","following_url":"https://api.github.com/users/cms-sw/following{/other_user}","gists_url":"https://api.github.com/users/cms-sw/gists{/gist_id}","starred_url":"https://api.github.com/users/cms-sw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cms-sw/subscriptions","organizations_url":"https://api.github.com/users/cms-sw/orgs","repos_url":"https://api.github.com/users/cms-sw/repos","events_url":"https://api.github.com/users/cms-sw/events{/privacy}","received_events_url":"https://api.github.com/users/cms-sw/received_events","type":"Organization","site_admin":false},"repo":{"id":10969551,"name":"cmssw","full_name":"cms-sw/cmssw","owner":{"login":"cms-sw","id":3863500,"avatar_url":"https://avatars.githubusercontent.com/u/3863500?v=3","gravatar_id":"","url":"https://api.github.com/users/cms-sw","html_url":"https://github.com/cms-sw","followers_url":"https://api.github.com/users/cms-sw/followers","following_url":"https://api.github.com/users/cms-sw/following{/other_user}","gists_url":"https://api.github.com/users/cms-sw/gists{/gist_id}","starred_url":"https://api.github.com/users/cms-sw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cms-sw/subscriptions","organizations_url":"https://api.github.com/users/cms-sw/orgs","repos_url":"https://api.github.com/users/cms-sw/repos","events_url":"https://api.github.com/users/cms-sw/events{/privacy}","received_events_url":"https://api.github.com/users/cms-sw/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cms-sw/cmssw","description":"CMS Offline Software","fork":false,"url":"https://api.github.com/repos/cms-sw/cmssw","forks_url":"https://api.github.com/repos/cms-sw/cmssw/forks","keys_url":"https://api.github.com/repos/cms-sw/cmssw/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cms-sw/cmssw/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cms-sw/cmssw/teams","hooks_url":"https://api.github.com/repos/cms-sw/cmssw/hooks","issue_events_url":"https://api.github.com/repos/cms-sw/cmssw/issues/events{/number}","events_url":"https://api.github.com/repos/cms-sw/cmssw/events","assignees_url":"https://api.github.com/repos/cms-sw/cmssw/assignees{/user}","branches_url":"https://api.github.com/repos/cms-sw/cmssw/branches{/branch}","tags_url":"https://api.github.com/repos/cms-sw/cmssw/tags","blobs_url":"https://api.github.com/repos/cms-sw/cmssw/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cms-sw/cmssw/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cms-sw/cmssw/git/refs{/sha}","trees_url":"https://api.github.com/repos/cms-sw/cmssw/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cms-sw/cmssw/statuses/{sha}","languages_url":"https://api.github.com/repos/cms-sw/cmssw/languages","stargazers_url":"https://api.github.com/repos/cms-sw/cmssw/stargazers","contributors_url":"https://api.github.com/repos/cms-sw/cmssw/contributors","subscribers_url":"https://api.github.com/repos/cms-sw/cmssw/subscribers","subscription_url":"https://api.github.com/repos/cms-sw/cmssw/subscription","commits_url":"https://api.github.com/repos/cms-sw/cmssw/commits{/sha}","git_commits_url":"https://api.github.com/repos/cms-sw/cmssw/git/commits{/sha}","comments_url":"https://api.github.com/repos/cms-sw/cmssw/comments{/number}","issue_comment_url":"https://api.github.com/repos/cms-sw/cmssw/issues/comments{/number}","contents_url":"https://api.github.com/repos/cms-sw/cmssw/contents/{+path}","compare_url":"https://api.github.com/repos/cms-sw/cmssw/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cms-sw/cmssw/merges","archive_url":"https://api.github.com/repos/cms-sw/cmssw/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cms-sw/cmssw/downloads","issues_url":"https://api.github.com/repos/cms-sw/cmssw/issues{/number}","pulls_url":"https://api.github.com/repos/cms-sw/cmssw/pulls{/number}","milestones_url":"https://api.github.com/repos/cms-sw/cmssw/milestones{/number}","notifications_url":"https://api.github.com/repos/cms-sw/cmssw/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cms-sw/cmssw/labels{/name}","releases_url":"https://api.github.com/repos/cms-sw/cmssw/releases{/id}","deployments_url":"https://api.github.com/repos/cms-sw/cmssw/deployments","created_at":"2013-06-26T14:09:07Z","updated_at":"2016-09-15T05:48:53Z","pushed_at":"2016-09-16T07:58:52Z","git_url":"git://github.com/cms-sw/cmssw.git","ssh_url":"git@github.com:cms-sw/cmssw.git","clone_url":"https://github.com/cms-sw/cmssw.git","svn_url":"https://github.com/cms-sw/cmssw","homepage":"http://cms-sw.github.io/","size":1107487,"stargazers_count":342,"watchers_count":342,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1976,"mirror_url":null,"open_issues_count":364,"forks":1976,"open_issues":364,"watchers":342,"default_branch":"CMSSW_8_1_X"}},"_links":{"self":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/15778"},"html":{"href":"https://github.com/cms-sw/cmssw/pull/15778"},"issue":{"href":"https://api.github.com/repos/cms-sw/cmssw/issues/15778"},"comments":{"href":"https://api.github.com/repos/cms-sw/cmssw/issues/15778/comments"},"review_comments":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/15778/comments"},"review_comment":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/15778/commits"},"statuses":{"href":"https://api.github.com/repos/cms-sw/cmssw/statuses/148c073c20b7f0a8c41afa32780954255f824817"}}}}
{"actor":{"display_login":"roger-wolf"}}