{"action":"created","comment":{"url":"https://api.github.com/repos/francescorubbo/timing/pulls/comments/29036386","id":29036386,"diff_hunk":"@@ -39,216 +37,274 @@ double sgn(double val){\n }\n \n // Constructor \n-TimingAnalysis::TimingAnalysis(float bunchsize_, bool randomZ_, bool randomT_){\n-\n-    fDebug=false;\n+TimingAnalysis::TimingAnalysis(Pythia8::Pythia *pythiaHS, Pythia8::Pythia *pythiaPU, float bunchsize_, smearMode PU, smearMode HS, bool Debug){\n \n-    if(fDebug) \n-      cout << \"TimingAnalysis::TimingAnalysis Start \" << endl;\n-    ftest = 0;\n-    fOutName = \"test.root\";\n-\n-    bunchsize = bunchsize_;\n-    randomZ=randomZ_;\n-    randomT=randomT_;\n+  if((pythiaHS != NULL) and (pythiaPU != NULL)){\n+    _pythiaHS=pythiaHS;\n+    _pythiaPU=pythiaPU;\n+  }\n+  else{\n+    cerr << \"Invalid Pythia pointer passed to TimingAnalysis\" << endl;\n+    exit(1);\n+  }\n \n-    if(fDebug) \n-      cout << \"TimingAnalysis::TimingAnalysis End \" << endl;\n+  fDebug=Debug;\n+  if(fDebug) \n+    cout << \"TimingAnalysis::TimingAnalysis Start \" << endl;\n \n-    //suppress fastjet banner\n-    fastjet::ClusterSequence::set_fastjet_banner_stream(NULL);\n+  ftest = 0;\n+  fOutName = \"test.root\";\n+  \n+  Bunchsize(bunchsize_);\n+  PileupMode(PU);\n+  SignalMode(HS);\n+  \n+  if(fDebug) \n+    cout << \"TimingAnalysis::TimingAnalysis End \" << endl;\n+  \n+  //suppress fastjet banner\n+  fastjet::ClusterSequence::set_fastjet_banner_stream(NULL);\n }\n \n-// Destructor \n-TimingAnalysis::~TimingAnalysis(){\n+void TimingAnalysis::PileupMode(smearMode PU){\n+  switch(PU){\n+  case Off:\n+    randomT=false;\n+    randomZ=false;\n+    break;\n+  case Z:\n+    randomT=false;\n+    randomZ=true;\n+    break;\n+  case T:\n+    randomT=true;\n+    randomZ=false;\n+    break;\n+  case ZT:\n+    randomT=true;\n+    randomZ=false;\n+  }\n }\n \n-// Begin method\n-void TimingAnalysis::Begin(){\n-   // Declare TTree\n-   tF = new TFile(fOutName.c_str(), \"RECREATE\");\n-   tT = new TTree(\"tree\", \"Event Tree for Timing\");\n-   rnd = new TRandom3(123);\n-\n-   // for shit you want to do by hand\n-   DeclareBranches();\n-\n-   jpt = new vector<float>();  \n-   jphi = new vector<float>();  \n-   jeta = new vector<float>();  \n-   jtime = new vector<float>();  \n-\n-   j0clpt = new vector<float>();  \n-   j0clphi = new vector<float>();  \n-   j0cleta = new vector<float>();  \n-   j0cltime = new vector<float>();  \n-\n-   truejpt = new vector<float>();  \n-   truejphi = new vector<float>();  \n-   truejeta = new vector<float>();  \n-   truejtime = new vector<float>();  \n-\n-   ResetBranches();\n-   \n-   return;\n+void TimingAnalysis::SignalMode(smearMode HS){\n+  switch(HS){\n+  case Off:\n+    smear=false;\n+    displace=false;\n+    break;\n+  case Z:\n+    smear=false;\n+    displace=true;\n+    break;\n+  case T:\n+    smear=true;\n+    displace=false;\n+    break;\n+  case ZT:\n+    smear=true;\n+    displace=false;\n+  }\n }\n \n-// End\n-void TimingAnalysis::End(){\n-    \n+// Destructor \n+TimingAnalysis::~TimingAnalysis(){\n+  if(tT != NULL){\n     tT->Write();\n     tF->Close();\n+    delete tF;\n+  }\n \n+  if(jpt != NULL){\n     delete jpt;\n     delete jphi;\n     delete jeta;\n     delete jtime;\n-\n     delete j0clpt;\n     delete j0clphi;\n     delete j0cleta;\n     delete j0cltime;\n-\n+    delete j0cltruth;\n     delete truejpt;\n     delete truejphi;\n     delete truejeta;\n     delete truejtime;\n-\n-    return;\n+  }\n }\n \n-// Analyze\n-void TimingAnalysis::AnalyzeEvent(int ievt, Pythia8::Pythia* pythia8, Pythia8::Pythia* pythia_MB, int NPV,\n-\t\t\t\t  float minEta){\n+// Begin method\n+void TimingAnalysis::Initialize(distribution dtype, int seed, double phi, double psi){\n+   // Declare TTree\n+   tF = new TFile(fOutName.c_str(), \"RECREATE\");\n+   tT = new TTree(\"tree\", \"Event Tree for Timing\");\n+   rnd.reset(new TimingDistribution(bunchsize,seed,phi,psi));\n+   _dtype=dtype;\n \n-    if(fDebug) \n-      cout << \"TimingAnalysis::AnalyzeEvent Begin \" << endl;\n+   // for shit you want to do by hand\n+   DeclareBranches();\n \n-    // -------------------------\n-    if (!pythia8->next()) return;\n-    if(fDebug) \n-      cout << \"TimingAnalysis::AnalyzeEvent Event Number \" << ievt << endl;\n+   jpt = new timingBranch();  \n+   jphi = new timingBranch();  \n+   jeta = new timingBranch();  \n+   jtime = new timingBranch();\n \n-    // reset branches \n-    ResetBranches();\n-    \n-    // new event-----------------------\n-    fTEventNumber = ievt;\n-    std::vector <fastjet::PseudoJet>           particlesForJets;\n-    std::vector <fastjet::PseudoJet>           particlesForJets_np;\n-\n-    //Pileup Loop\n-\n-    fTNPV = NPV;\n-    std::pair<double,double> randomVariates=GetVtxZandT();  \n-    fzvtxspread = randomVariates.first;\n-    ftvtxspread = randomVariates.second;\n-\n-    //Loop over Pileup Events\n-    for (int iPU = 0; iPU <= NPV; ++iPU) {\n-\n-      //Loop over pileup particles\n-      for (int i = 0; i < pythia_MB->event.size(); ++i) {\n-\t//skipping Leptons\n-        if (!pythia_MB->event[i].isFinal()    ) continue;\n-        if (fabs(pythia_MB->event[i].id())==12) continue;\n-        if (fabs(pythia_MB->event[i].id())==14) continue;\n-        if (fabs(pythia_MB->event[i].id())==13) continue;\n-        if (fabs(pythia_MB->event[i].id())==16) continue;\n-\t\n-\t//determine random vertex position in z-t space\n-\trandomVariates=GetVtxZandT();\n-\tdouble zvtx = 0;\n-\tdouble tvtx = 0;\n-\tif(randomZ)\n-\t  zvtx = randomVariates.first;\n-\tif(randomT)\n-\t  tvtx = randomVariates.second;\n-\t\n-\t//Instantiate new pseudojet\n-\tPseudoJet p(pythia_MB->event[i].px(), pythia_MB->event[i].py(), pythia_MB->event[i].pz(),pythia_MB->event[i].e() ); \n-\t\n-\t//extract event information\n-\tdouble eta = p.rapidity();\n-\tdouble sinheta = sinh(eta);\n-\tdouble cosheta = cosh(eta);\n-\n-\t//calculate eta from displacement (minEta pos)\n-\tdouble radius = 1.2; // barrel radius=1.2 meter\n-\tdouble zbase = radius*sinh(minEta)*sgn(eta); //should eta be minEta?\n-\tdouble corrEta = asinh(zbase*sinheta/(zbase-zvtx));\n-\tif(fabs(corrEta)>5.0) continue;\n-\n-\t//calculate time measured relative to if event was at 0\n-\tdouble dist = (zbase-zvtx)*cosheta/sinheta;\n-\tdouble time = fabs(dist)/LIGHTSPEED + tvtx; //plus random time\n-\tdouble refdist = zbase*cosh(corrEta)/sinh(corrEta);\n-\tdouble reftime = fabs(refdist)/LIGHTSPEED;\n-\tdouble corrtime = (time-reftime)*1e9;\n-\tif(fabs(corrEta)<minEta) \n-\t  corrtime = -999.;\n-\n-\tp.reset_PtYPhiM(p.pt(), corrEta, p.phi(), 0.);\n-\t\n-\tp.set_user_info(new TimingInfo(pythia_MB->event[i].id(),i,iPU,true,corrtime)); \n-\tparticlesForJets.push_back(p); \n-      }\n-      if (!pythia_MB->next()) continue;\n-    }\n+   j0clpt = new timingBranch();  \n+   j0clphi = new timingBranch();  \n+   j0cleta = new timingBranch();  \n+   j0cltime = new timingBranch();  \n+   j0cltruth = new timingBranch();\n+   \n+   truejpt = new timingBranch();  \n+   truejphi = new timingBranch();  \n+   truejeta = new timingBranch();  \n+   truejtime = new timingBranch();  \n+\n+   ResetBranches();\n    \n-    // Particle loop -----------------------------------------------------------\n-    for (int ip=0; ip<pythia8->event.size(); ++ip){\n+   return;\n+}\n+\n+// Analyze\n+void TimingAnalysis::AnalyzeEvent(int ievt, int NPV, float minEta){\n+\n+  if(fDebug) \n+    cout << \"TimingAnalysis::AnalyzeEvent Begin \" << endl;\n+  \n+  // -------------------------\n+  if (!_pythiaHS->next()) return;\n+  if(fDebug) \n+    cout << \"TimingAnalysis::AnalyzeEvent Event Number \" << ievt << endl;\n+  \n+  // reset branches \n+  ResetBranches();\n+  \n+  // new event-----------------------\n+  fTEventNumber = ievt;\n+  JetVector particlesForJets;\n+  JetVector particlesForJets_np;\n+  \n+  //Pileup Loop\n+  \n+  fTNPV = NPV;\n+  std::pair<double,double> randomVariates;  \n+  randomVariates=rnd->get(_dtype);\n+  fzvtxspread = randomVariates.first;\n+  ftvtxspread = randomVariates.second;\n+  \n+  double zhs=0.0;\n+  if(displace) //randomly distribute \"ideally measured\" hard-scatter vertex\n+    zhs=fzvtxspread;\n+  \n+  //Loop over Pileup Events\n+  for (int iPU = 0; iPU <= NPV; ++iPU) {\n+    \n+    //determine random vertex position in z-t space\n+    randomVariates=rnd->get(_dtype);\n+    double zvtx = 0;\n+    double tvtx = 0;\n+    if(randomZ)\n+      zvtx = randomVariates.first;\n+    if(randomT)\n+      tvtx = randomVariates.second;\n+    \n+    //Loop over pileup particles\n+    for (int i = 0; i < _pythiaPU->event.size(); ++i) {\n+\n+      //skipping Leptons\n+      if (!_pythiaPU->event[i].isFinal()    ) continue;\n+      if (fabs(_pythiaPU->event[i].id())==12) continue;\n+      if (fabs(_pythiaPU->event[i].id())==14) continue;\n+      if (fabs(_pythiaPU->event[i].id())==13) continue;\n+      if (fabs(_pythiaPU->event[i].id())==16) continue;\n       \n-      if (!pythia8->event[ip].isFinal() )      continue;\n-      //if (fabs(pythia8->event[ip].id())  ==11) continue;\n-      if (fabs(pythia8->event[ip].id())  ==12) continue;\n-      if (fabs(pythia8->event[ip].id())  ==13) continue;\n-      if (fabs(pythia8->event[ip].id())  ==14) continue;\n-      if (fabs(pythia8->event[ip].id())  ==16) continue;\n+      //Instantiate new pseudojet\n+      PseudoJet p(_pythiaPU->event[i].px(), _pythiaPU->event[i].py(), _pythiaPU->event[i].pz(),_pythiaPU->event[i].e() ); \n       \n-      fastjet::PseudoJet p(pythia8->event[ip].px(), pythia8->event[ip].py(), pythia8->event[ip].pz(),pythia8->event[ip].e() ); \n+      //extract event information\n       double eta = p.rapidity();\n-      if (fabs(eta)>5.0) continue;\n-      double corrtime = 0.;\n-      if (fabs(eta)<minEta) corrtime = -999.;\n-      p.reset_PtYPhiM(p.pt(), eta, p.phi(), 0.);\n-      p.set_user_info(new TimingInfo(pythia8->event[ip].id(),ip,0, false,corrtime)); //0 for the primary vertex. \n+      double sinheta = sinh(eta);\n+      double cosheta = cosh(eta);\n       \n-      particlesForJets.push_back(p);\n-      particlesForJets_np.push_back(p);\n-\n-    } // end particle loop -----------------------------------------------\n-\n-    fastjet::JetDefinition jetDef(fastjet::antikt_algorithm, 0.4, fastjet::E_scheme, fastjet::Best);\n-    fastjet::AreaDefinition active_area(fastjet::active_area);\n-    fastjet::ClusterSequenceArea clustSeq(particlesForJets, jetDef, active_area);\n-\n-    fastjet::GridMedianBackgroundEstimator bge(4.5,0.6);\n-    bge.set_particles(particlesForJets);\n-    fastjet::Subtractor subtractor(&bge);\n-\n-    vector<fastjet::PseudoJet> inclusiveJets = sorted_by_pt(clustSeq.inclusive_jets(10.));\n-    vector<fastjet::PseudoJet> subtractedJets = subtractor(inclusiveJets);\n-    Selector select_fwd = SelectorAbsRapRange(minEta,4.5);\n-    vector<fastjet::PseudoJet> selectedJets = select_fwd(subtractedJets);\n-\n-    FillTree(selectedJets);\n-\n-    fastjet::ClusterSequenceArea clustSeqTruth(particlesForJets_np, jetDef, active_area);\n-    vector<fastjet::PseudoJet> truthJets = sorted_by_pt(clustSeqTruth.inclusive_jets(10.));\n-    vector<fastjet::PseudoJet> selectedTruthJets = select_fwd(truthJets);\n-    FillTruthTree(selectedTruthJets);\n-\n-    tT->Fill();\n-\n-    if(fDebug) \n-      cout << \"TimingAnalysis::AnalyzeEvent End \" << endl;\n-\n-    return;\n+      //calculate eta from displacement (minEta pos)\n+      static const double radius = 1.2; // barrel radius=1.2 meter\n+      double zbase = radius*sinh(minEta)*sgn(eta)-zhs; //displace due to new location of Hard-Scatter Vertex","path":"src/TimingAnalysis.cc","position":393,"original_position":393,"commit_id":"20e4340fd7e4d4a468a804f5779870f7e415d497","original_commit_id":"20e4340fd7e4d4a468a804f5779870f7e415d497","user":{"login":"francescorubbo","id":5140987,"avatar_url":"https://avatars.githubusercontent.com/u/5140987?v=3","gravatar_id":"","url":"https://api.github.com/users/francescorubbo","html_url":"https://github.com/francescorubbo","followers_url":"https://api.github.com/users/francescorubbo/followers","following_url":"https://api.github.com/users/francescorubbo/following{/other_user}","gists_url":"https://api.github.com/users/francescorubbo/gists{/gist_id}","starred_url":"https://api.github.com/users/francescorubbo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francescorubbo/subscriptions","organizations_url":"https://api.github.com/users/francescorubbo/orgs","repos_url":"https://api.github.com/users/francescorubbo/repos","events_url":"https://api.github.com/users/francescorubbo/events{/privacy}","received_events_url":"https://api.github.com/users/francescorubbo/received_events","type":"User","site_admin":false},"body":"I am not sure this is what we want. The actual Eta of pileup particles does not depend on zhs, but only on the position of the pileup vertex.\r\nIt's only the reference time \"reftime\" that should take into account the position of the hs vertex.","created_at":"2015-04-24T09:40:40Z","updated_at":"2015-04-24T09:40:40Z","html_url":"https://github.com/francescorubbo/timing/pull/2#discussion_r29036386","pull_request_url":"https://api.github.com/repos/francescorubbo/timing/pulls/2","_links":{"self":{"href":"https://api.github.com/repos/francescorubbo/timing/pulls/comments/29036386"},"html":{"href":"https://github.com/francescorubbo/timing/pull/2#discussion_r29036386"},"pull_request":{"href":"https://api.github.com/repos/francescorubbo/timing/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/francescorubbo/timing/pulls/2","id":34020717,"html_url":"https://github.com/francescorubbo/timing/pull/2","diff_url":"https://github.com/francescorubbo/timing/pull/2.diff","patch_url":"https://github.com/francescorubbo/timing/pull/2.patch","issue_url":"https://api.github.com/repos/francescorubbo/timing/issues/2","number":2,"state":"open","locked":false,"title":"Resolution","user":{"login":"nkurinsky","id":3444077,"avatar_url":"https://avatars.githubusercontent.com/u/3444077?v=3","gravatar_id":"","url":"https://api.github.com/users/nkurinsky","html_url":"https://github.com/nkurinsky","followers_url":"https://api.github.com/users/nkurinsky/followers","following_url":"https://api.github.com/users/nkurinsky/following{/other_user}","gists_url":"https://api.github.com/users/nkurinsky/gists{/gist_id}","starred_url":"https://api.github.com/users/nkurinsky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nkurinsky/subscriptions","organizations_url":"https://api.github.com/users/nkurinsky/orgs","repos_url":"https://api.github.com/users/nkurinsky/repos","events_url":"https://api.github.com/users/nkurinsky/events{/privacy}","received_events_url":"https://api.github.com/users/nkurinsky/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-04-24T05:56:41Z","updated_at":"2015-04-24T09:40:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d34d2169493db61f6827364772a04a1cdf568de3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/francescorubbo/timing/pulls/2/commits","review_comments_url":"https://api.github.com/repos/francescorubbo/timing/pulls/2/comments","review_comment_url":"https://api.github.com/repos/francescorubbo/timing/pulls/comments{/number}","comments_url":"https://api.github.com/repos/francescorubbo/timing/issues/2/comments","statuses_url":"https://api.github.com/repos/francescorubbo/timing/statuses/20e4340fd7e4d4a468a804f5779870f7e415d497","head":{"label":"francescorubbo:resolution","ref":"resolution","sha":"20e4340fd7e4d4a468a804f5779870f7e415d497","user":{"login":"francescorubbo","id":5140987,"avatar_url":"https://avatars.githubusercontent.com/u/5140987?v=3","gravatar_id":"","url":"https://api.github.com/users/francescorubbo","html_url":"https://github.com/francescorubbo","followers_url":"https://api.github.com/users/francescorubbo/followers","following_url":"https://api.github.com/users/francescorubbo/following{/other_user}","gists_url":"https://api.github.com/users/francescorubbo/gists{/gist_id}","starred_url":"https://api.github.com/users/francescorubbo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francescorubbo/subscriptions","organizations_url":"https://api.github.com/users/francescorubbo/orgs","repos_url":"https://api.github.com/users/francescorubbo/repos","events_url":"https://api.github.com/users/francescorubbo/events{/privacy}","received_events_url":"https://api.github.com/users/francescorubbo/received_events","type":"User","site_admin":false},"repo":{"id":32607686,"name":"timing","full_name":"francescorubbo/timing","owner":{"login":"francescorubbo","id":5140987,"avatar_url":"https://avatars.githubusercontent.com/u/5140987?v=3","gravatar_id":"","url":"https://api.github.com/users/francescorubbo","html_url":"https://github.com/francescorubbo","followers_url":"https://api.github.com/users/francescorubbo/followers","following_url":"https://api.github.com/users/francescorubbo/following{/other_user}","gists_url":"https://api.github.com/users/francescorubbo/gists{/gist_id}","starred_url":"https://api.github.com/users/francescorubbo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francescorubbo/subscriptions","organizations_url":"https://api.github.com/users/francescorubbo/orgs","repos_url":"https://api.github.com/users/francescorubbo/repos","events_url":"https://api.github.com/users/francescorubbo/events{/privacy}","received_events_url":"https://api.github.com/users/francescorubbo/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/francescorubbo/timing","description":"","fork":false,"url":"https://api.github.com/repos/francescorubbo/timing","forks_url":"https://api.github.com/repos/francescorubbo/timing/forks","keys_url":"https://api.github.com/repos/francescorubbo/timing/keys{/key_id}","collaborators_url":"https://api.github.com/repos/francescorubbo/timing/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/francescorubbo/timing/teams","hooks_url":"https://api.github.com/repos/francescorubbo/timing/hooks","issue_events_url":"https://api.github.com/repos/francescorubbo/timing/issues/events{/number}","events_url":"https://api.github.com/repos/francescorubbo/timing/events","assignees_url":"https://api.github.com/repos/francescorubbo/timing/assignees{/user}","branches_url":"https://api.github.com/repos/francescorubbo/timing/branches{/branch}","tags_url":"https://api.github.com/repos/francescorubbo/timing/tags","blobs_url":"https://api.github.com/repos/francescorubbo/timing/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/francescorubbo/timing/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/francescorubbo/timing/git/refs{/sha}","trees_url":"https://api.github.com/repos/francescorubbo/timing/git/trees{/sha}","statuses_url":"https://api.github.com/repos/francescorubbo/timing/statuses/{sha}","languages_url":"https://api.github.com/repos/francescorubbo/timing/languages","stargazers_url":"https://api.github.com/repos/francescorubbo/timing/stargazers","contributors_url":"https://api.github.com/repos/francescorubbo/timing/contributors","subscribers_url":"https://api.github.com/repos/francescorubbo/timing/subscribers","subscription_url":"https://api.github.com/repos/francescorubbo/timing/subscription","commits_url":"https://api.github.com/repos/francescorubbo/timing/commits{/sha}","git_commits_url":"https://api.github.com/repos/francescorubbo/timing/git/commits{/sha}","comments_url":"https://api.github.com/repos/francescorubbo/timing/comments{/number}","issue_comment_url":"https://api.github.com/repos/francescorubbo/timing/issues/comments{/number}","contents_url":"https://api.github.com/repos/francescorubbo/timing/contents/{+path}","compare_url":"https://api.github.com/repos/francescorubbo/timing/compare/{base}...{head}","merges_url":"https://api.github.com/repos/francescorubbo/timing/merges","archive_url":"https://api.github.com/repos/francescorubbo/timing/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/francescorubbo/timing/downloads","issues_url":"https://api.github.com/repos/francescorubbo/timing/issues{/number}","pulls_url":"https://api.github.com/repos/francescorubbo/timing/pulls{/number}","milestones_url":"https://api.github.com/repos/francescorubbo/timing/milestones{/number}","notifications_url":"https://api.github.com/repos/francescorubbo/timing/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/francescorubbo/timing/labels{/name}","releases_url":"https://api.github.com/repos/francescorubbo/timing/releases{/id}","created_at":"2015-03-20T21:20:10Z","updated_at":"2015-04-08T18:34:12Z","pushed_at":"2015-04-24T05:58:37Z","git_url":"git://github.com/francescorubbo/timing.git","ssh_url":"git@github.com:francescorubbo/timing.git","clone_url":"https://github.com/francescorubbo/timing.git","svn_url":"https://github.com/francescorubbo/timing","homepage":null,"size":252,"stargazers_count":1,"watchers_count":1,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":1,"default_branch":"master"}},"base":{"label":"francescorubbo:master","ref":"master","sha":"94864b6815e42406f90fd4506675871f6d7bc79c","user":{"login":"francescorubbo","id":5140987,"avatar_url":"https://avatars.githubusercontent.com/u/5140987?v=3","gravatar_id":"","url":"https://api.github.com/users/francescorubbo","html_url":"https://github.com/francescorubbo","followers_url":"https://api.github.com/users/francescorubbo/followers","following_url":"https://api.github.com/users/francescorubbo/following{/other_user}","gists_url":"https://api.github.com/users/francescorubbo/gists{/gist_id}","starred_url":"https://api.github.com/users/francescorubbo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francescorubbo/subscriptions","organizations_url":"https://api.github.com/users/francescorubbo/orgs","repos_url":"https://api.github.com/users/francescorubbo/repos","events_url":"https://api.github.com/users/francescorubbo/events{/privacy}","received_events_url":"https://api.github.com/users/francescorubbo/received_events","type":"User","site_admin":false},"repo":{"id":32607686,"name":"timing","full_name":"francescorubbo/timing","owner":{"login":"francescorubbo","id":5140987,"avatar_url":"https://avatars.githubusercontent.com/u/5140987?v=3","gravatar_id":"","url":"https://api.github.com/users/francescorubbo","html_url":"https://github.com/francescorubbo","followers_url":"https://api.github.com/users/francescorubbo/followers","following_url":"https://api.github.com/users/francescorubbo/following{/other_user}","gists_url":"https://api.github.com/users/francescorubbo/gists{/gist_id}","starred_url":"https://api.github.com/users/francescorubbo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/francescorubbo/subscriptions","organizations_url":"https://api.github.com/users/francescorubbo/orgs","repos_url":"https://api.github.com/users/francescorubbo/repos","events_url":"https://api.github.com/users/francescorubbo/events{/privacy}","received_events_url":"https://api.github.com/users/francescorubbo/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/francescorubbo/timing","description":"","fork":false,"url":"https://api.github.com/repos/francescorubbo/timing","forks_url":"https://api.github.com/repos/francescorubbo/timing/forks","keys_url":"https://api.github.com/repos/francescorubbo/timing/keys{/key_id}","collaborators_url":"https://api.github.com/repos/francescorubbo/timing/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/francescorubbo/timing/teams","hooks_url":"https://api.github.com/repos/francescorubbo/timing/hooks","issue_events_url":"https://api.github.com/repos/francescorubbo/timing/issues/events{/number}","events_url":"https://api.github.com/repos/francescorubbo/timing/events","assignees_url":"https://api.github.com/repos/francescorubbo/timing/assignees{/user}","branches_url":"https://api.github.com/repos/francescorubbo/timing/branches{/branch}","tags_url":"https://api.github.com/repos/francescorubbo/timing/tags","blobs_url":"https://api.github.com/repos/francescorubbo/timing/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/francescorubbo/timing/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/francescorubbo/timing/git/refs{/sha}","trees_url":"https://api.github.com/repos/francescorubbo/timing/git/trees{/sha}","statuses_url":"https://api.github.com/repos/francescorubbo/timing/statuses/{sha}","languages_url":"https://api.github.com/repos/francescorubbo/timing/languages","stargazers_url":"https://api.github.com/repos/francescorubbo/timing/stargazers","contributors_url":"https://api.github.com/repos/francescorubbo/timing/contributors","subscribers_url":"https://api.github.com/repos/francescorubbo/timing/subscribers","subscription_url":"https://api.github.com/repos/francescorubbo/timing/subscription","commits_url":"https://api.github.com/repos/francescorubbo/timing/commits{/sha}","git_commits_url":"https://api.github.com/repos/francescorubbo/timing/git/commits{/sha}","comments_url":"https://api.github.com/repos/francescorubbo/timing/comments{/number}","issue_comment_url":"https://api.github.com/repos/francescorubbo/timing/issues/comments{/number}","contents_url":"https://api.github.com/repos/francescorubbo/timing/contents/{+path}","compare_url":"https://api.github.com/repos/francescorubbo/timing/compare/{base}...{head}","merges_url":"https://api.github.com/repos/francescorubbo/timing/merges","archive_url":"https://api.github.com/repos/francescorubbo/timing/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/francescorubbo/timing/downloads","issues_url":"https://api.github.com/repos/francescorubbo/timing/issues{/number}","pulls_url":"https://api.github.com/repos/francescorubbo/timing/pulls{/number}","milestones_url":"https://api.github.com/repos/francescorubbo/timing/milestones{/number}","notifications_url":"https://api.github.com/repos/francescorubbo/timing/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/francescorubbo/timing/labels{/name}","releases_url":"https://api.github.com/repos/francescorubbo/timing/releases{/id}","created_at":"2015-03-20T21:20:10Z","updated_at":"2015-04-08T18:34:12Z","pushed_at":"2015-04-24T05:58:37Z","git_url":"git://github.com/francescorubbo/timing.git","ssh_url":"git@github.com:francescorubbo/timing.git","clone_url":"https://github.com/francescorubbo/timing.git","svn_url":"https://github.com/francescorubbo/timing","homepage":null,"size":252,"stargazers_count":1,"watchers_count":1,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/francescorubbo/timing/pulls/2"},"html":{"href":"https://github.com/francescorubbo/timing/pull/2"},"issue":{"href":"https://api.github.com/repos/francescorubbo/timing/issues/2"},"comments":{"href":"https://api.github.com/repos/francescorubbo/timing/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/francescorubbo/timing/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/francescorubbo/timing/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/francescorubbo/timing/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/francescorubbo/timing/statuses/20e4340fd7e4d4a468a804f5779870f7e415d497"}}}}