{"action":"created","comment":{"url":"https://api.github.com/repos/cms-sw/cmssw/pulls/comments/30519451","id":30519451,"diff_hunk":"@@ -0,0 +1,319 @@\n+/**\n+ * \\file GEMCSCSegAlgoRR.cc\n+ * originally based on CSCSegAlgoDF.cc\n+ * modified by Piet Verwilligen \n+ * to use GEMCSCSegFit class\n+ *\n+ *  \\authors: Raffaella Radogna\n+ */\n+\n+#include \"GEMCSCSegAlgoRR.h\"\n+#include \"GEMCSCSegFit.h\"\n+\n+#include \"FWCore/ParameterSet/interface/ParameterSet.h\"\n+#include \"FWCore/MessageLogger/interface/MessageLogger.h\"\n+\n+#include \"Geometry/CSCGeometry/interface/CSCLayer.h\"\n+#include \"DataFormats/GeometryVector/interface/GlobalPoint.h\"\n+#include \"DataFormats/MuonDetId/interface/MuonSubdetId.h\"\n+#include \"CommonTools/Statistics/interface/ChiSquaredProbability.h\"\n+\n+#include <algorithm>\n+#include <cmath>\n+#include <string>\n+#include <iostream>\n+#include <sstream>\n+\n+\n+\n+/**\n+ *  Constructor\n+ */\n+GEMCSCSegAlgoRR::GEMCSCSegAlgoRR(const edm::ParameterSet& ps) : GEMCSCSegmentAlgorithm(ps), myName(\"GEMCSCSegAlgoRR\"), sfit_(0) \n+{\t \n+  debug                     = ps.getUntrackedParameter<bool>(\"GEMCSCDebug\");\n+  minHitsPerSegment         = ps.getParameter<unsigned int>(\"minHitsPerSegment\");\n+  preClustering             = ps.getParameter<bool>(\"preClustering\");\n+  dXclusBoxMax              = ps.getParameter<double>(\"dXclusBoxMax\");\n+  dYclusBoxMax              = ps.getParameter<double>(\"dYclusBoxMax\");\n+  preClustering_useChaining = ps.getParameter<bool>(\"preClusteringUseChaining\");\n+  dPhiChainBoxMax           = ps.getParameter<double>(\"dPhiChainBoxMax\");\n+  dThetaChainBoxMax         = ps.getParameter<double>(\"dThetaChainBoxMax\");\n+  dRChainBoxMax             = ps.getParameter<double>(\"dRChainBoxMax\");\n+  maxRecHitsInCluster       = ps.getParameter<int>(\"maxRecHitsInCluster\");\n+}\n+\n+\n+\n+/** \n+ * Destructor\n+ */\n+GEMCSCSegAlgoRR::~GEMCSCSegAlgoRR() {}\n+\n+\n+\n+/**\n+ * Run the algorithm\n+ */\n+std::vector<GEMCSCSegment> GEMCSCSegAlgoRR::run( std::map<uint32_t, const CSCLayer*> csclayermap, std::map<uint32_t, const GEMEtaPartition*> gemrollmap, \n+\t\t\t\t\t\t std::vector<const CSCSegment*> cscsegments, std::vector<const GEMRecHit*> gemrechits) \n+{\n+\n+  // This function is called for each CSC Chamber (ME1/1) associated with a GEM chamber in which GEM Rechits were found\n+  // This means that the csc segment vector can contain more than one segment and that all combinations with the gemrechits have to be tried\n+\n+\n+  // assign the maps < detid, geometry object > to the class variables\n+  theCSCLayers_   = csclayermap;\n+  theGEMEtaParts_ = gemrollmap;\n+\n+\n+  // LogDebug info about reading of CSC Chamber map and GEM Eta Partition map\n+  edm::LogVerbatim(\"GEMCSCSegAlgoRR\") << \"[GEMCSCSegAlgoRR::run] cached the csclayermap and the gemrollmap\";\n+\n+  // --- LogDebug for CSC Layer map -----------------------------------------\n+  std::stringstream csclayermapss; csclayermapss<<\"[GEMCSCSegAlgoRR::run] :: csclayermap :: elements [\"<<std::endl;\n+  for(std::map<uint32_t, const CSCLayer*>::const_iterator mapIt = theCSCLayers_.begin(); mapIt != theCSCLayers_.end(); ++mapIt) \n+    {\n+      csclayermapss<<\"[CSC DetId \"<<mapIt->first<<\" =\"<<CSCDetId(mapIt->first)<<\", CSC Layer \"<<mapIt->second<<\" =\"<<(mapIt->second)->id()<<\"],\"<<std::endl;\n+    }\n+  csclayermapss<<\"]\"<<std::endl; \n+  std::string csclayermapstr = csclayermapss.str();\n+  edm::LogVerbatim(\"GEMCSCSegAlgoRR\") << csclayermapstr;\n+  // --- End LogDebug -------------------------------------------------------\n+\n+  // --- LogDebug for GEM Eta Partition map ---------------------------------\n+  std::stringstream gemetapartmapss; gemetapartmapss<<\"[GEMCSCSegAlgoRR::run] :: gemetapartmap :: elements [\"<<std::endl;\n+  for(std::map<uint32_t, const GEMEtaPartition*>::const_iterator mapIt = theGEMEtaParts_.begin(); mapIt != theGEMEtaParts_.end(); ++mapIt) \n+    {\n+      gemetapartmapss<<\"[GEM DetId \"<<mapIt->first<<\" =\"<<GEMDetId(mapIt->first)<<\", GEM EtaPart \"<<mapIt->second<<\"],\"<<std::endl;\n+    }\n+  gemetapartmapss<<\"]\"<<std::endl; \n+  std::string gemetapartmapstr = gemetapartmapss.str();\n+  edm::LogVerbatim(\"GEMCSCSegAlgoRR\") << gemetapartmapstr;\n+  // --- End LogDebug -------------------------------------------------------\n+\n+\n+  std::vector<GEMCSCSegment>                        segmentvectorfinal;\n+  std::vector<GEMCSCSegment>                        segmentvectorchamber;\n+  std::vector<GEMCSCSegment>                        segmentvectorfromfit;\n+  std::vector<const TrackingRecHit*>                chainedRecHits;\n+  \n+\n+  // From the GEMCSCSegmentBuilder we get \n+  // - a collection of CSC Segments belonging all to the same chamber\n+  // - a collection of GEM RecHits belonging to GEM Eta-Partitions close to this CSC\n+  //\n+  // Now we have to loop over all CSC Segments \n+  // and see to which CSC segments we can match the GEM rechits\n+  // if matching fails we will still keep those segments in the GEMCSC segment collection\n+  // but we will assign -1 to the matched parameter --> 2B implemented in the DataFormat\n+  // 1 for matched, 0 for no GEM chamber available and -1 for not matched\n+\n+  // empty the temporary gemcsc segments vector\n+  // segmentvectortmp.clear();\n+\n+  for(std::vector<const CSCSegment*>::iterator cscSegIt = cscsegments.begin(); cscSegIt != cscsegments.end(); ++cscSegIt)\n+    {\n+\n+      // chain hits :: make a vector of TrackingRecHits\n+      //               that contains the CSC and GEM rechits\n+      //               and that can be given to the fitter\n+      chainedRecHits = this->chainHitsToSegm(*cscSegIt, gemrechits);\n+  \n+      // if gemrechits are associated, run the buildSegments step\n+      if(chainedRecHits.size() > (*cscSegIt)->specificRecHits().size()) \n+\t{\n+\t  segmentvectorfromfit = this->buildSegments(*cscSegIt, chainedRecHits);\n+\t}\n+  \n+      // if no gemrechits are associated, wrap the existing CSCSegment in a GEMCSCSegment class\n+      else \n+\t{\n+\t  std::vector<const GEMRecHit*> gemRecHits_noGEMrh; // empty GEMRecHit vector\n+\t  GEMCSCSegment tmp(*cscSegIt, gemRecHits_noGEMrh, (*cscSegIt)->localPosition(), (*cscSegIt)->localDirection(), (*cscSegIt)->parametersError(), (*cscSegIt)->chi2());\n+\t  segmentvectorfromfit.push_back(tmp);\n+\t}\n+\n+      segmentvectorchamber.insert( segmentvectorchamber.end(), segmentvectorfromfit.begin(), segmentvectorfromfit.end() );\n+      segmentvectorfromfit.clear();\n+    }\n+\n+  // add the found gemcsc segments to the collection of all gemcsc segments and return\n+  segmentvectorfinal.insert( segmentvectorfinal.end(), segmentvectorchamber.begin(), segmentvectorchamber.end() );  \n+  segmentvectorchamber.clear();\n+  edm::LogVerbatim(\"GEMCSCSegAlgoRR\") << \"[GEMCSCSegAlgoRR::run] GEMCSC Segments fitted or wrapped, size of vector = \"<<segmentvectorfinal.size();\n+  return segmentvectorfinal;\n+}\n+\n+\n+/**\n+ * Chain hits :: make a TrackingRecHit vector containing both CSC and GEM rechits \n+ *               take the hits from the CSCSegment and add a clone of them\n+ *               take the hits from the GEM RecHit vector and \n+ *               check whether they are compatible with the CSC segment extrapolation\n+ *               to the GEM plane. If they are compatible, add these GEM rechits\n+ */\n+std::vector<const TrackingRecHit*> GEMCSCSegAlgoRR::chainHitsToSegm(const CSCSegment* cscsegment, const std::vector<const GEMRecHit*>& gemrechits) \n+{\n+\n+  std::vector<const TrackingRecHit*> chainedRecHits;\n+\n+  // working with layers makes it here a bit more difficult:\n+  // the CSC segment points to the chamber, which we cannot ask from the map\n+  // the CSC rechits point to the layers, from which we can ask the chamber\n+\n+  auto segLP                   = cscsegment->localPosition();\n+  auto segLD                   = cscsegment->localDirection();\n+  auto cscrhs                  = cscsegment->specificRecHits();\n+\n+  // Loop over the CSC Segment rechits \n+  // and save a copy in the chainedRecHits vector\n+  for (auto crh = cscrhs.begin(); crh!= cscrhs.end(); crh++)\n+    {\n+      chainedRecHits.push_back(crh->clone());\n+    }\n+\n+  // now ask the layer id of the first CSC rechit\n+  std::vector<const TrackingRecHit*>::const_iterator trhIt = chainedRecHits.begin();\n+  const CSCLayer * cscLayer = theCSCLayers_.find((*trhIt)->rawId())->second;\n+  // now ask the chamber id of the first CSC rechit\n+  const CSCChamber* cscChamber = cscLayer->chamber();\n+\n+  // For non-empty GEM rechit vector\n+  if(gemrechits.size()!=0)\n+    {\n+      float Dphi_min_l1 = 999;\n+      float Dphi_min_l2 = 999;\n+      float Dtheta_min_l1 = 999;\n+      float Dtheta_min_l2 = 999;\n+     \n+      std::vector<const GEMRecHit*>::const_iterator grhIt = gemrechits.begin();\n+      const GEMRecHit* gemrh_min_l1= *grhIt;\n+      const GEMRecHit* gemrh_min_l2= *grhIt;\n+      \n+      // Loop over GEM rechits from the EnsembleGEMHitContainer\n+      for(grhIt = gemrechits.begin(); grhIt != gemrechits.end(); ++grhIt) \n+\t{\n+\t\n+\t  // get GEM Rechit Local & Global Position\n+\t  auto rhLP = (*grhIt)->localPosition();\n+\t  const GEMEtaPartition* rhRef  = theGEMEtaParts_.find((*grhIt)->gemId())->second;\n+\t  auto rhGP = rhRef->toGlobal(rhLP);\n+\t  // get GEM Rechit Local position w.r.t. the CSC Chamber\n+\t  // --> we are interessed in the z-coordinate\n+\t  auto rhLP_inSegmRef = cscChamber->toLocal(rhGP);\n+\t  // calculate the extrapolation of the CSC segment to the GEM plane (z-coord)\n+\t  // to get x- and y- coordinate \n+\t  float xe = segLP.x()+segLD.x()*rhLP_inSegmRef.z()/segLD.z();\n+\t  float ye = segLP.y()+segLD.y()*rhLP_inSegmRef.z()/segLD.z();","path":"RecoLocalMuon/GEMCSCSegment/plugins/GEMCSCSegAlgoRR.cc","position":209,"original_position":209,"commit_id":"c38bd62e6cd841ec14675e534625f5c4d9a5299f","original_commit_id":"c38bd62e6cd841ec14675e534625f5c4d9a5299f","user":{"login":"cvuosalo","id":5736159,"avatar_url":"https://avatars.githubusercontent.com/u/5736159?v=3","gravatar_id":"","url":"https://api.github.com/users/cvuosalo","html_url":"https://github.com/cvuosalo","followers_url":"https://api.github.com/users/cvuosalo/followers","following_url":"https://api.github.com/users/cvuosalo/following{/other_user}","gists_url":"https://api.github.com/users/cvuosalo/gists{/gist_id}","starred_url":"https://api.github.com/users/cvuosalo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cvuosalo/subscriptions","organizations_url":"https://api.github.com/users/cvuosalo/orgs","repos_url":"https://api.github.com/users/cvuosalo/repos","events_url":"https://api.github.com/users/cvuosalo/events{/privacy}","received_events_url":"https://api.github.com/users/cvuosalo/received_events","type":"User","site_admin":false},"body":"Protect against division by 0.","created_at":"2015-05-18T15:45:56Z","updated_at":"2015-05-18T15:45:56Z","html_url":"https://github.com/cms-sw/cmssw/pull/9083#discussion_r30519451","pull_request_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/9083","_links":{"self":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/comments/30519451"},"html":{"href":"https://github.com/cms-sw/cmssw/pull/9083#discussion_r30519451"},"pull_request":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/9083"}}},"pull_request":{"url":"https://api.github.com/repos/cms-sw/cmssw/pulls/9083","id":35411345,"html_url":"https://github.com/cms-sw/cmssw/pull/9083","diff_url":"https://github.com/cms-sw/cmssw/pull/9083.diff","patch_url":"https://github.com/cms-sw/cmssw/pull/9083.patch","issue_url":"https://api.github.com/repos/cms-sw/cmssw/issues/9083","number":9083,"state":"open","locked":false,"title":"Gemcsc segment 75X","user":{"login":"pietverwilligen","id":5398585,"avatar_url":"https://avatars.githubusercontent.com/u/5398585?v=3","gravatar_id":"","url":"https://api.github.com/users/pietverwilligen","html_url":"https://github.com/pietverwilligen","followers_url":"https://api.github.com/users/pietverwilligen/followers","following_url":"https://api.github.com/users/pietverwilligen/following{/other_user}","gists_url":"https://api.github.com/users/pietverwilligen/gists{/gist_id}","starred_url":"https://api.github.com/users/pietverwilligen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pietverwilligen/subscriptions","organizations_url":"https://api.github.com/users/pietverwilligen/orgs","repos_url":"https://api.github.com/users/pietverwilligen/repos","events_url":"https://api.github.com/users/pietverwilligen/events{/privacy}","received_events_url":"https://api.github.com/users/pietverwilligen/received_events","type":"User","site_admin":false},"body":"This pull request brings finally the GEMCSC code into the release.\r\nThis code has been around for more than a year in private branches,\r\nfirst of the original developer (Raffaella Radogna), then in mine.\r\n\r\nChanges implemented before committing to the release:\r\n- change CLHEP matrices --> SMatrices\r\n- factorizing the fit in GEMCSCSegFit.cc as was done by Tim Cox for CSCSegment\r\n- removed the use of Ensembles, just work with vectors of CSCLayers and GEM Eta Partitions\r\n- uniform approach to GEM RecHits and CSC RecHits: use of TrackingRecHit\r\n- implemented LogDebug messages\r\n- necessary multithreading: edm::stream::EDProducer and getByToken\r\n\r\nFurther on I had a look at @cvuosalo's comments on #8912 and checked for these.","created_at":"2015-05-14T10:45:33Z","updated_at":"2015-05-18T15:45:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6286f7e0dddd56bde0c2dc3d0e367da9d1fce333","assignee":null,"milestone":{"url":"https://api.github.com/repos/cms-sw/cmssw/milestones/51","html_url":"https://github.com/cms-sw/cmssw/milestones/Next%20CMSSW_7_5_X","labels_url":"https://api.github.com/repos/cms-sw/cmssw/milestones/51/labels","id":982516,"number":51,"title":"Next CMSSW_7_5_X","description":"","creator":{"login":"nclopezo","id":1944922,"avatar_url":"https://avatars.githubusercontent.com/u/1944922?v=3","gravatar_id":"","url":"https://api.github.com/users/nclopezo","html_url":"https://github.com/nclopezo","followers_url":"https://api.github.com/users/nclopezo/followers","following_url":"https://api.github.com/users/nclopezo/following{/other_user}","gists_url":"https://api.github.com/users/nclopezo/gists{/gist_id}","starred_url":"https://api.github.com/users/nclopezo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nclopezo/subscriptions","organizations_url":"https://api.github.com/users/nclopezo/orgs","repos_url":"https://api.github.com/users/nclopezo/repos","events_url":"https://api.github.com/users/nclopezo/events{/privacy}","received_events_url":"https://api.github.com/users/nclopezo/received_events","type":"User","site_admin":false},"open_issues":76,"closed_issues":593,"state":"open","created_at":"2015-02-17T08:21:25Z","updated_at":"2015-05-18T14:56:38Z","due_on":"2015-03-02T23:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/9083/commits","review_comments_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/9083/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/9083/comments","statuses_url":"https://api.github.com/repos/cms-sw/cmssw/statuses/c38bd62e6cd841ec14675e534625f5c4d9a5299f","head":{"label":"pietverwilligen:GEMCSCSegment_75X_PR_v3","ref":"GEMCSCSegment_75X_PR_v3","sha":"c38bd62e6cd841ec14675e534625f5c4d9a5299f","user":{"login":"pietverwilligen","id":5398585,"avatar_url":"https://avatars.githubusercontent.com/u/5398585?v=3","gravatar_id":"","url":"https://api.github.com/users/pietverwilligen","html_url":"https://github.com/pietverwilligen","followers_url":"https://api.github.com/users/pietverwilligen/followers","following_url":"https://api.github.com/users/pietverwilligen/following{/other_user}","gists_url":"https://api.github.com/users/pietverwilligen/gists{/gist_id}","starred_url":"https://api.github.com/users/pietverwilligen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pietverwilligen/subscriptions","organizations_url":"https://api.github.com/users/pietverwilligen/orgs","repos_url":"https://api.github.com/users/pietverwilligen/repos","events_url":"https://api.github.com/users/pietverwilligen/events{/privacy}","received_events_url":"https://api.github.com/users/pietverwilligen/received_events","type":"User","site_admin":false},"repo":{"id":14990646,"name":"cmssw","full_name":"pietverwilligen/cmssw","owner":{"login":"pietverwilligen","id":5398585,"avatar_url":"https://avatars.githubusercontent.com/u/5398585?v=3","gravatar_id":"","url":"https://api.github.com/users/pietverwilligen","html_url":"https://github.com/pietverwilligen","followers_url":"https://api.github.com/users/pietverwilligen/followers","following_url":"https://api.github.com/users/pietverwilligen/following{/other_user}","gists_url":"https://api.github.com/users/pietverwilligen/gists{/gist_id}","starred_url":"https://api.github.com/users/pietverwilligen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pietverwilligen/subscriptions","organizations_url":"https://api.github.com/users/pietverwilligen/orgs","repos_url":"https://api.github.com/users/pietverwilligen/repos","events_url":"https://api.github.com/users/pietverwilligen/events{/privacy}","received_events_url":"https://api.github.com/users/pietverwilligen/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pietverwilligen/cmssw","description":"CMS Offline Software","fork":true,"url":"https://api.github.com/repos/pietverwilligen/cmssw","forks_url":"https://api.github.com/repos/pietverwilligen/cmssw/forks","keys_url":"https://api.github.com/repos/pietverwilligen/cmssw/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pietverwilligen/cmssw/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pietverwilligen/cmssw/teams","hooks_url":"https://api.github.com/repos/pietverwilligen/cmssw/hooks","issue_events_url":"https://api.github.com/repos/pietverwilligen/cmssw/issues/events{/number}","events_url":"https://api.github.com/repos/pietverwilligen/cmssw/events","assignees_url":"https://api.github.com/repos/pietverwilligen/cmssw/assignees{/user}","branches_url":"https://api.github.com/repos/pietverwilligen/cmssw/branches{/branch}","tags_url":"https://api.github.com/repos/pietverwilligen/cmssw/tags","blobs_url":"https://api.github.com/repos/pietverwilligen/cmssw/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pietverwilligen/cmssw/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pietverwilligen/cmssw/git/refs{/sha}","trees_url":"https://api.github.com/repos/pietverwilligen/cmssw/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pietverwilligen/cmssw/statuses/{sha}","languages_url":"https://api.github.com/repos/pietverwilligen/cmssw/languages","stargazers_url":"https://api.github.com/repos/pietverwilligen/cmssw/stargazers","contributors_url":"https://api.github.com/repos/pietverwilligen/cmssw/contributors","subscribers_url":"https://api.github.com/repos/pietverwilligen/cmssw/subscribers","subscription_url":"https://api.github.com/repos/pietverwilligen/cmssw/subscription","commits_url":"https://api.github.com/repos/pietverwilligen/cmssw/commits{/sha}","git_commits_url":"https://api.github.com/repos/pietverwilligen/cmssw/git/commits{/sha}","comments_url":"https://api.github.com/repos/pietverwilligen/cmssw/comments{/number}","issue_comment_url":"https://api.github.com/repos/pietverwilligen/cmssw/issues/comments{/number}","contents_url":"https://api.github.com/repos/pietverwilligen/cmssw/contents/{+path}","compare_url":"https://api.github.com/repos/pietverwilligen/cmssw/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pietverwilligen/cmssw/merges","archive_url":"https://api.github.com/repos/pietverwilligen/cmssw/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pietverwilligen/cmssw/downloads","issues_url":"https://api.github.com/repos/pietverwilligen/cmssw/issues{/number}","pulls_url":"https://api.github.com/repos/pietverwilligen/cmssw/pulls{/number}","milestones_url":"https://api.github.com/repos/pietverwilligen/cmssw/milestones{/number}","notifications_url":"https://api.github.com/repos/pietverwilligen/cmssw/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pietverwilligen/cmssw/labels{/name}","releases_url":"https://api.github.com/repos/pietverwilligen/cmssw/releases{/id}","created_at":"2013-12-06T18:51:47Z","updated_at":"2014-05-16T17:52:42Z","pushed_at":"2015-05-14T10:33:35Z","git_url":"git://github.com/pietverwilligen/cmssw.git","ssh_url":"git@github.com:pietverwilligen/cmssw.git","clone_url":"https://github.com/pietverwilligen/cmssw.git","svn_url":"https://github.com/pietverwilligen/cmssw","homepage":"cms-sw.github.io/cmssw","size":732217,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"CMSSW_6_2_X_SLHC"}},"base":{"label":"cms-sw:CMSSW_7_5_X","ref":"CMSSW_7_5_X","sha":"732e55cad6b1eb348791cd9031929e2ad70799e8","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}","created_at":"2013-06-26T14:09:07Z","updated_at":"2015-05-10T23:06:01Z","pushed_at":"2015-05-18T15:37:09Z","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":1012414,"stargazers_count":230,"watchers_count":230,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1397,"mirror_url":null,"open_issues_count":152,"forks":1397,"open_issues":152,"watchers":230,"default_branch":"CMSSW_7_5_X"}},"_links":{"self":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/9083"},"html":{"href":"https://github.com/cms-sw/cmssw/pull/9083"},"issue":{"href":"https://api.github.com/repos/cms-sw/cmssw/issues/9083"},"comments":{"href":"https://api.github.com/repos/cms-sw/cmssw/issues/9083/comments"},"review_comments":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/9083/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/9083/commits"},"statuses":{"href":"https://api.github.com/repos/cms-sw/cmssw/statuses/c38bd62e6cd841ec14675e534625f5c4d9a5299f"}}}}