void QPaintWidget::drawCircle(QPainter *ppainter) { if (circle.radius !=0) { ppainter->save(); double posXCenter = scalePointX(circle.pos.x()); double posYCenter = scalePointY(circle.pos.y()); int sizeX = static_cast<int>(circle.radius/((maxX - minX) / canvasWidth())); int sizeY = static_cast<int>(circle.radius/((maxY - minY) / canvasHeight())); int size = kmin(sizeX, sizeY); ppainter->setPen(QPen(Qt::darkGreen, kDrawPenWidth)); ppainter->setBrush(QBrush(Qt::transparent)); ppainter->drawEllipse( posXCenter-size, posYCenter-size, 2*size+1, 2*size+1 ); ppainter->restore(); } }
bool KOutgoingMessage::saveTmpFile(const void* data, int len) { string_512 filepath = this->buildTmpFileName(); if(filepath.empty()) return true; KOutputFileStream fo; if(!fo.OpenForce(filepath.c_str(), "w+")) { Log(LOG_ERROR, "error: open '%s'", filepath.c_str()); return false; } char* p = (char*)data; while(len > 0) { int n = kmin(len, 512); fo.WriteData(p, n); p += n; len -= n; } fo.Close(); return true; }
bool Jets(Cluster_Amplitude *ampl,int mode) { DEBUG_FUNC("mode = "<<mode); msg_Debugging()<<*ampl<<"\n"; PHASIC::Jet_Finder *jf(ampl->JF<PHASIC::Jet_Finder>()); double q2cut(jf->Ycut()*sqr(rpa->gen.Ecms())); double q2min(std::numeric_limits<double>::max()); size_t imin(0), jmin(0), kmin(0); Flavour mofl; for (size_t i(0);i<ampl->Legs().size();++i) { Cluster_Leg *li(ampl->Leg(i)); for (size_t j(Max(i+1,ampl->NIn()));j<ampl->Legs().size();++j) { Cluster_Leg *lj(ampl->Leg(j)); if (j<ampl->NIn()) continue; for (size_t k(0);k<ampl->Legs().size();++k) { if (k==i || k==j) continue; Cluster_Leg *lk(ampl->Leg(k)); if (i<ampl->NIn() && k>=ampl->NIn()) continue; if (lk->Flav().Strong() && li->Flav().Strong() && lj->Flav().Strong()) { if (i<ampl->NIn()) li->SetMom(-li->Mom()); if (k<ampl->NIn()) lk->SetMom(-lk->Mom()); double q2ijk(pT2pythia(ampl,*li,*lj,*lk,i<ampl->NIn()?-1:1)); msg_Debugging()<<"Q_{"<<ID(li->Id())<<ID(lj->Id()) <<","<<ID(lk->Id())<<"} = "<<sqrt(q2ijk)<<"\n"; if (i<ampl->NIn()) li->SetMom(-li->Mom()); if (k<ampl->NIn()) lk->SetMom(-lk->Mom()); if (mode==0) { if (q2ijk<q2cut) return false; } else { if (q2ijk<q2min) { q2min=q2ijk; mofl=Flavour(kf_gluon); if (li->Flav().IsGluon()) mofl=lj->Flav(); if (lj->Flav().IsGluon()) mofl=li->Flav(); imin=i; jmin=j; kmin=k; } } } } } } if (mode!=0 && imin!=jmin) { Vec4D_Vector p=Combine(*ampl,imin,jmin,kmin,mofl); if (p.empty()) { msg_Error()<<METHOD<<"(): Combine failed. Use R configuration."<<std::endl; return Jets(ampl,0); } Cluster_Amplitude *bampl(Cluster_Amplitude::New()); bampl->SetProc(ampl->Proc<void>()); bampl->SetMS(ampl->MS()); bampl->SetNIn(ampl->NIn()); bampl->SetJF(ampl->JF<void>()); for (int i(0), j(0);i<ampl->Legs().size();++i) { if (i==jmin) continue; if (i==imin) { bampl->CreateLeg(p[j],mofl,ampl->Leg(i)->Col()); bampl->Legs().back()->SetId(ampl->Leg(imin)->Id()|ampl->Leg(jmin)->Id()); bampl->Legs().back()->SetK(ampl->Leg(kmin)->Id()); } else { bampl->CreateLeg(p[j],ampl->Leg(i)->Flav(),ampl->Leg(i)->Col()); } ++j; } bool res=Jets(bampl,0); bampl->Delete(); return res; } msg_Debugging()<<"--- Jet veto ---\n"; return true; }