{"action":"created","comment":{"url":"https://api.github.com/repos/cms-sw/cmssw/pulls/comments/77410704","id":77410704,"diff_hunk":"@@ -0,0 +1,778 @@\n+#include \"RecoVertex/PrimaryVertexProducer/interface/DAClusterizerInZT.h\"\n+#include \"FWCore/MessageLogger/interface/MessageLogger.h\"\n+#include \"DataFormats/GeometryCommonDetAlgo/interface/Measurement1D.h\"\n+#include \"RecoVertex/VertexPrimitives/interface/VertexException.h\"\n+#include \"FWCore/Utilities/interface/isFinite.h\"\n+\n+using namespace std;\n+\n+\n+namespace {\n+  constexpr double dtCutOff = 4.0;\n+\n+  bool recTrackLessZ1(const DAClusterizerInZT::track_t & tk1,\n+                      const DAClusterizerInZT::track_t & tk2)\n+  {\n+    return tk1.z < tk2.z;\n+  }\n+}\n+\n+\n+vector<DAClusterizerInZT::track_t> \n+DAClusterizerInZT::fill( const vector<reco::TransientTrack> & tracks )const{\n+  // prepare track data for clustering\n+  vector<track_t> tks;\n+  for(vector<reco::TransientTrack>::const_iterator it=tracks.begin(); it!=tracks.end(); it++){\n+    track_t t;\n+    t.pi = 1.;\n+    t.z = ((*it).stateAtBeamLine().trackStateAtPCA()).position().z();\n+    t.t = it->timeExt(); // the time\n+    \n+    if (std::abs(t.z) > 1000.) continue;\n+    auto const & t_mom = (*it).stateAtBeamLine().trackStateAtPCA().momentum();\n+    //  get the beam-spot\n+    reco::BeamSpot beamspot = (it->stateAtBeamLine()).beamSpot();\n+    double t_dz2 = \n+      std::pow((*it).track().dzError(), 2) // track errror\n+      + (std::pow(beamspot.BeamWidthX()*t_mom.x(),2)+std::pow(beamspot.BeamWidthY()*t_mom.y(),2))*std::pow(t_mom.z(),2)/std::pow(t_mom.perp2(),2) // beam spot width\n+      + std::pow(vertexSize_, 2); // intrinsic vertex size, safer for outliers and short lived decays\n+    t.dz2 = 1./ t_dz2;\n+    \n+    t.dtz = 0.;\n+    t.dt2 = std::pow((*it).dtErrorExt(),2.0) + std::pow(0.010,2.0);   // the ~injected~ timing error, need to add a small minimum vertex size in time\n+    \n+    if (d0CutOff_>0){\n+      Measurement1D IP=(*it).stateAtBeamLine().transverseImpactParameter();// error constains beamspot\n+      t.pi=1./(1.+std::exp(std::pow(IP.value()/IP.error(),2.0) - std::pow(d0CutOff_ ,2)));  // reduce weight for high ip tracks  \n+    }else{\n+      t.pi=1.;\n+    }    \n+    t.tt=&(*it);\n+    t.Z=1.;\n+    if( edm::isFinite(t.pi) &&  t.pi >= std::numeric_limits<double>::epsilon() ) {\n+      tks.push_back(t);\n+    }\n+  }\n+\n+  return tks;\n+}\n+\n+\n+\n+\n+\n+double DAClusterizerInZT::Eik(const track_t & t, const vertex_t &k ) const {\n+  return std::pow(t.z-k.z,2.)/t.dz2 + std::pow(t.t - k.t,2.)/t.dt2;\n+}\n+  \n+\n+\n+\n+double DAClusterizerInZT::update( double beta,\n+                                  vector<track_t> & tks,\n+                                  vector<vertex_t> & y ) const {\n+  //update weights and vertex positions\n+  // mass constrained annealing without noise\n+  // returns the squared sum of changes of vertex positions\n+\n+  unsigned int nt=tks.size();\n+\n+  //initialize sums\n+  double sumpi=0;\n+  for(vector<vertex_t>::iterator k=y.begin(); k!=y.end(); ++k){\n+    k->sw=0.; k->swz=0.; k->swt = 0.; k->se=0.;\n+    k->swE=0.;  k->Tc=0.;\n+  }\n+\n+\n+  // loop over tracks\n+  for(unsigned int i=0; i<nt; i++){\n+\n+    // update pik and Zi\n+    double Zi = 0.;\n+    for(vector<vertex_t>::iterator k=y.begin(); k!=y.end(); ++k){\n+      k->ei = std::exp(-beta*Eik(tks[i],*k));// cache exponential for one track at a time\n+      Zi   += k->pk * k->ei;      \n+    }\n+    tks[i].Z=Zi;\n+\n+    // normalization for pk\n+    if (tks[i].Z>0){\n+      sumpi += tks[i].pi;\n+      // accumulate weighted z and weights for vertex update\n+      for(vector<vertex_t>::iterator k=y.begin(); k!=y.end(); ++k){\n+\tk->se  += tks[i].pi* k->ei / Zi;\n+\tconst double w = k->pk * tks[i].pi* k->ei / ( Zi * ( tks[i].dz2 * tks[i].dt2 ) );\n+\tk->sw  += w;\n+\tk->swz += w * tks[i].z;\n+        k->swt += w * tks[i].t;\n+\tk->swE += w * Eik(tks[i],*k);\n+      }\n+    }else{\n+      sumpi += tks[i].pi;\n+    }\n+    \n+\n+  } // end of track loop\n+\n+\n+  // now update z and pk\n+  double delta=0;\n+  for(vector<vertex_t>::iterator k=y.begin(); k!=y.end(); k++){\n+    if ( k->sw > 0){\n+      const double znew = k->swz/k->sw; \n+      const double tnew = k->swt/k->sw;\n+      delta += std::pow(k->z-znew,2.) + std::pow(k->t-tnew,2.);\n+      k->z  = znew;\n+      k->t  = tnew;\n+      k->Tc = 2.*k->swE/k->sw;\n+    }else{\n+      edm::LogInfo(\"sumw\") <<  \"invalid sum of weights in fit: \" << k->sw << endl;","path":"RecoVertex/PrimaryVertexProducer/src/DAClusterizerInZT.cc","position":130,"original_position":130,"commit_id":"975fed1116b68135791ddd1df9433953c7fbb37b","original_commit_id":"975fed1116b68135791ddd1df9433953c7fbb37b","user":{"login":"slava77","id":4676718,"avatar_url":"https://avatars.githubusercontent.com/u/4676718?v=3","gravatar_id":"","url":"https://api.github.com/users/slava77","html_url":"https://github.com/slava77","followers_url":"https://api.github.com/users/slava77/followers","following_url":"https://api.github.com/users/slava77/following{/other_user}","gists_url":"https://api.github.com/users/slava77/gists{/gist_id}","starred_url":"https://api.github.com/users/slava77/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/slava77/subscriptions","organizations_url":"https://api.github.com/users/slava77/orgs","repos_url":"https://api.github.com/users/slava77/repos","events_url":"https://api.github.com/users/slava77/events{/privacy}","received_events_url":"https://api.github.com/users/slava77/received_events","type":"User","site_admin":false},"body":"how frequently is this this scope  reached?\r\nIf more than a few times per event, LogInfo should be turned to a LogDebug or suppressed by other means","created_at":"2016-09-02T20:56:16Z","updated_at":"2016-09-02T20:56:16Z","html_url":"https://github.com/cms-sw/cmssw/pull/15710#discussion_r77410704","pull_request_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/15710","_links":{"self":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/comments/77410704"},"html":{"href":"https://github.com/cms-sw/cmssw/pull/15710#discussion_r77410704"},"pull_request":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/15710"}}},"pull_request":{"url":"https://api.github.com/repos/cms-sw/cmssw/pulls/15710","id":83844976,"html_url":"https://github.com/cms-sw/cmssw/pull/15710","diff_url":"https://github.com/cms-sw/cmssw/pull/15710.diff","patch_url":"https://github.com/cms-sw/cmssw/pull/15710.patch","issue_url":"https://api.github.com/repos/cms-sw/cmssw/issues/15710","number":15710,"state":"open","locked":false,"title":"Vertex Reconstruction with Timing 810","user":{"login":"lgray","id":1068089,"avatar_url":"https://avatars.githubusercontent.com/u/1068089?v=3","gravatar_id":"","url":"https://api.github.com/users/lgray","html_url":"https://github.com/lgray","followers_url":"https://api.github.com/users/lgray/followers","following_url":"https://api.github.com/users/lgray/following{/other_user}","gists_url":"https://api.github.com/users/lgray/gists{/gist_id}","starred_url":"https://api.github.com/users/lgray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgray/subscriptions","organizations_url":"https://api.github.com/users/lgray/orgs","repos_url":"https://api.github.com/users/lgray/repos","events_url":"https://api.github.com/users/lgray/events{/privacy}","received_events_url":"https://api.github.com/users/lgray/received_events","type":"User","site_admin":false},"body":"This is a forward port of:\r\n- #12290 & #12962\r\n\r\nIt implements in reco::Vertex and the vertex finding/fitting machinery the ability to cluster in time in addition to space.\r\n\r\nThe track times are extracted from the matched sim-track of the reconstructed track and saved as ValueMaps.\r\n\r\nIn order to seemlessly switch between timing and no timing I have implemented the underlying GlobalError and Positions as four vectors instead of three vectors. Extending an interface to deal with the new dimension, and using the old interface for the original 3D algorithms. \r\n\r\nThe physics performance of the 3D algorithms (i.e. present LHC vertex reco) should be (and from local tests is) unaffected by this change. There may be minor performance drawbacks due to the way the backwards compatibility is kept. Alternative recommendations are welcome.\r\n\r\nThe timing is integrated directly into the phase 2 tracking reconstruction era. The overhead is fairly small.\r\n\r\n@bendavid @kpedro88","created_at":"2016-09-02T18:27:17Z","updated_at":"2016-09-02T20:56:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ecb348ae2772995fb97a2a0bf274eb7bc9ce48fe","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":63,"closed_issues":1343,"state":"open","created_at":"2016-02-18T09:12:12Z","updated_at":"2016-09-02T18:40:25Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/15710/commits","review_comments_url":"https://api.github.com/repos/cms-sw/cmssw/pulls/15710/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/15710/comments","statuses_url":"https://api.github.com/repos/cms-sw/cmssw/statuses/975fed1116b68135791ddd1df9433953c7fbb37b","head":{"label":"lgray:vertex_timing_810","ref":"vertex_timing_810","sha":"975fed1116b68135791ddd1df9433953c7fbb37b","user":{"login":"lgray","id":1068089,"avatar_url":"https://avatars.githubusercontent.com/u/1068089?v=3","gravatar_id":"","url":"https://api.github.com/users/lgray","html_url":"https://github.com/lgray","followers_url":"https://api.github.com/users/lgray/followers","following_url":"https://api.github.com/users/lgray/following{/other_user}","gists_url":"https://api.github.com/users/lgray/gists{/gist_id}","starred_url":"https://api.github.com/users/lgray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgray/subscriptions","organizations_url":"https://api.github.com/users/lgray/orgs","repos_url":"https://api.github.com/users/lgray/repos","events_url":"https://api.github.com/users/lgray/events{/privacy}","received_events_url":"https://api.github.com/users/lgray/received_events","type":"User","site_admin":false},"repo":{"id":11345764,"name":"cmssw","full_name":"lgray/cmssw","owner":{"login":"lgray","id":1068089,"avatar_url":"https://avatars.githubusercontent.com/u/1068089?v=3","gravatar_id":"","url":"https://api.github.com/users/lgray","html_url":"https://github.com/lgray","followers_url":"https://api.github.com/users/lgray/followers","following_url":"https://api.github.com/users/lgray/following{/other_user}","gists_url":"https://api.github.com/users/lgray/gists{/gist_id}","starred_url":"https://api.github.com/users/lgray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgray/subscriptions","organizations_url":"https://api.github.com/users/lgray/orgs","repos_url":"https://api.github.com/users/lgray/repos","events_url":"https://api.github.com/users/lgray/events{/privacy}","received_events_url":"https://api.github.com/users/lgray/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lgray/cmssw","description":"CMS Offline Software","fork":true,"url":"https://api.github.com/repos/lgray/cmssw","forks_url":"https://api.github.com/repos/lgray/cmssw/forks","keys_url":"https://api.github.com/repos/lgray/cmssw/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lgray/cmssw/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lgray/cmssw/teams","hooks_url":"https://api.github.com/repos/lgray/cmssw/hooks","issue_events_url":"https://api.github.com/repos/lgray/cmssw/issues/events{/number}","events_url":"https://api.github.com/repos/lgray/cmssw/events","assignees_url":"https://api.github.com/repos/lgray/cmssw/assignees{/user}","branches_url":"https://api.github.com/repos/lgray/cmssw/branches{/branch}","tags_url":"https://api.github.com/repos/lgray/cmssw/tags","blobs_url":"https://api.github.com/repos/lgray/cmssw/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lgray/cmssw/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lgray/cmssw/git/refs{/sha}","trees_url":"https://api.github.com/repos/lgray/cmssw/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lgray/cmssw/statuses/{sha}","languages_url":"https://api.github.com/repos/lgray/cmssw/languages","stargazers_url":"https://api.github.com/repos/lgray/cmssw/stargazers","contributors_url":"https://api.github.com/repos/lgray/cmssw/contributors","subscribers_url":"https://api.github.com/repos/lgray/cmssw/subscribers","subscription_url":"https://api.github.com/repos/lgray/cmssw/subscription","commits_url":"https://api.github.com/repos/lgray/cmssw/commits{/sha}","git_commits_url":"https://api.github.com/repos/lgray/cmssw/git/commits{/sha}","comments_url":"https://api.github.com/repos/lgray/cmssw/comments{/number}","issue_comment_url":"https://api.github.com/repos/lgray/cmssw/issues/comments{/number}","contents_url":"https://api.github.com/repos/lgray/cmssw/contents/{+path}","compare_url":"https://api.github.com/repos/lgray/cmssw/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lgray/cmssw/merges","archive_url":"https://api.github.com/repos/lgray/cmssw/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lgray/cmssw/downloads","issues_url":"https://api.github.com/repos/lgray/cmssw/issues{/number}","pulls_url":"https://api.github.com/repos/lgray/cmssw/pulls{/number}","milestones_url":"https://api.github.com/repos/lgray/cmssw/milestones{/number}","notifications_url":"https://api.github.com/repos/lgray/cmssw/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lgray/cmssw/labels{/name}","releases_url":"https://api.github.com/repos/lgray/cmssw/releases{/id}","deployments_url":"https://api.github.com/repos/lgray/cmssw/deployments","created_at":"2013-07-11T15:38:46Z","updated_at":"2016-06-13T15:06:35Z","pushed_at":"2016-09-02T19:57:22Z","git_url":"git://github.com/lgray/cmssw.git","ssh_url":"git@github.com:lgray/cmssw.git","clone_url":"https://github.com/lgray/cmssw.git","svn_url":"https://github.com/lgray/cmssw","homepage":"cms-sw.github.io/cmssw","size":885923,"stargazers_count":1,"watchers_count":1,"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":1,"default_branch":"CMSSW_7_0_X"}},"base":{"label":"cms-sw:CMSSW_8_1_X","ref":"CMSSW_8_1_X","sha":"0cf1e015c42434d2cf4357e862ce6a5524e6c73d","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-08-30T23:51:00Z","pushed_at":"2016-09-02T19:57:26Z","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":1104182,"stargazers_count":338,"watchers_count":338,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1962,"mirror_url":null,"open_issues_count":368,"forks":1962,"open_issues":368,"watchers":338,"default_branch":"CMSSW_8_1_X"}},"_links":{"self":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/15710"},"html":{"href":"https://github.com/cms-sw/cmssw/pull/15710"},"issue":{"href":"https://api.github.com/repos/cms-sw/cmssw/issues/15710"},"comments":{"href":"https://api.github.com/repos/cms-sw/cmssw/issues/15710/comments"},"review_comments":{"href":"https://api.github.com/repos/cms-sw/cmssw/pulls/15710/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/15710/commits"},"statuses":{"href":"https://api.github.com/repos/cms-sw/cmssw/statuses/975fed1116b68135791ddd1df9433953c7fbb37b"}}}}
{"actor":{"display_login":"slava77"}}