void DirectProcess11(
    std::vector<BinData2<1,3> >& data, const NCell& c1, const Cell& c2,
    const double dsq, const Position2D& r)
{
    xdbg<<std::string(recursen+1,'-')<<"Direct: d = "<<sqrt(dsq)<<std::endl;
    XAssert(c1.getSize()+c2.getSize() < sqrt(dsq)*b + 0.0001);
    XAssert(std::abs(c2.getMeanPos() - c1.getMeanPos() - r) < 0.0001);
    XAssert(std::abs(dsq - std::norm(r)) < 0.0001);

    Assert(dsq >= minsepsq);
    Assert(dsq < maxsepsq);

    std::complex<double> cr(r.getX(),r.getY());
    const std::complex<double> expm2iarg = SQR(conj(cr))/dsq;

    const double logr = log(dsq)/2.;
    Assert(logr >= logminsep);

    const int k = int(floor((logr - logminsep)/binsize));
    Assert(k >= 0); Assert(k<int(data.size()));

    const double nw = c1.getN()*c2.getWeight();
    const std::complex<double> net = -double(c1.getN())*c2.getWE()*expm2iarg;
    const double npairs = c1.getN()*c2.getN();

    BinData2<1,3>& crossbin = data[k];
    crossbin.meangammat += net;
    crossbin.weight += nw;
    crossbin.meanlogr += nw*logr;
    crossbin.npair += npairs;
}
예제 #2
0
void BinnedCorr2<D1,D2>::directProcess11(
    const Cell<D1,C>& c1, const Cell<D2,C>& c2, const double dsq)
{
    XAssert(dsq >= _minsepsq);
    XAssert(dsq < _maxsepsq);
    XAssert(c1.getSize()+c2.getSize() < sqrt(dsq)*_b + 0.0001);

    const double r = sqrt(dsq);
    const double logr = log(dsq)/2.;
    XAssert(logr >= _logminsep);

    XAssert(_binsize != 0.);
    const int k = int((logr - _logminsep)/_binsize);
    XAssert(k >= 0); 
    XAssert(k < _nbins);

    double nn = double(c1.getN()) * double(c2.getN());
    _npairs[k] += nn;

    double ww = double(c1.getW()) * double(c2.getW());
    _meanr[k] += ww * r;
    _meanlogr[k] += ww * logr;
    _weight[k] += ww;

    DirectHelper<D1,D2>::template ProcessXi<C,M>(c1,c2,dsq,_xi,k);
}
예제 #3
0
void BinnedCorr2<D1,D2>::process11(const Cell<D1,C>& c1, const Cell<D2,C>& c2)
{
    if (c1.getW() == 0. || c2.getW() == 0.) return;

    const double dsq = MetricHelper<M>::DistSq(c1.getPos(),c2.getPos());
    const double s1ps2 = c1.getAllSize()+c2.getAllSize();

    if (MetricHelper<M>::TooSmallDist(c1.getPos(), c2.getPos(), s1ps2, dsq, _minsep, _minsepsq))
        return;
    if (MetricHelper<M>::TooLargeDist(c1.getPos(), c2.getPos(), s1ps2, dsq, _maxsep, _maxsepsq))
        return;

    // See if need to split:
    bool split1=false, split2=false;
    CalcSplitSq(split1,split2,c1,c2,dsq,s1ps2,_bsq);

    if (split1) {
        if (split2) {
            if (!c1.getLeft()) {
                std::cerr<<"minsep = "<<_minsep<<", maxsep = "<<_maxsep<<std::endl;
                std::cerr<<"minsepsq = "<<_minsepsq<<", maxsepsq = "<<_maxsepsq<<std::endl;
                std::cerr<<"c1.Size = "<<c1.getSize()<<", c2.Size = "<<c2.getSize()<<std::endl;
                std::cerr<<"c1.SizeSq = "<<c1.getSizeSq()<<
                    ", c2.SizeSq = "<<c2.getSizeSq()<<std::endl;
                std::cerr<<"c1.N = "<<c1.getN()<<", c2.N = "<<c2.getN()<<std::endl;
                std::cerr<<"c1.Pos = "<<c1.getPos();
                std::cerr<<", c2.Pos = "<<c2.getPos()<<std::endl;
                std::cerr<<"dsq = "<<dsq<<", s1ps2 = "<<s1ps2<<std::endl;
            }
            Assert(c1.getLeft());
            Assert(c1.getRight());
            Assert(c2.getLeft());
            Assert(c2.getRight());
            process11<C,M>(*c1.getLeft(),*c2.getLeft());
            process11<C,M>(*c1.getLeft(),*c2.getRight());
            process11<C,M>(*c1.getRight(),*c2.getLeft());
            process11<C,M>(*c1.getRight(),*c2.getRight());
        } else {
            Assert(c1.getLeft());
            Assert(c1.getRight());
            process11<C,M>(*c1.getLeft(),c2);
            process11<C,M>(*c1.getRight(),c2);
        }
    } else {
        if (split2) {
            Assert(c2.getLeft());
            Assert(c2.getRight());
            process11<C,M>(c1,*c2.getLeft());
            process11<C,M>(c1,*c2.getRight());
        } else if (dsq >= _minsepsq && dsq < _maxsepsq) {
            XAssert(NoSplit(c1,c2,sqrt(dsq),_b));
            directProcess11<C,M>(c1,c2,dsq);
        }
    }
}
예제 #4
0
OSStatus ComponentBase_GetComponentDescription (const AudioComponentInstance & inInstance, AudioComponentDescription & outDesc)
{
		// we prefer to use the new API. If it is not available however, we have to go back to using the ComponentMgr one. 
	typedef AudioComponent (*AudioComponentInstanceGetComponentProc) (AudioComponentInstance);
	static AudioComponentInstanceGetComponentProc aciGCProc = NULL;
	
	typedef OSStatus (*AudioComponentGetDescriptionProc)(AudioComponent, AudioComponentDescription *);
	static AudioComponentGetDescriptionProc acGDProc = NULL;
	
	typedef OSErr (*GetComponentInfoProc)(Component, ComponentDescription *, void*, void*, void*);
	static GetComponentInfoProc gciProc = NULL;

	static int doneInit = 0;
	if (doneInit == 0) {
		doneInit = 1;
		bool loadCMgr = true;
		
		void* theImage = dlopen("/System/Library/Frameworks/AudioUnit.framework/AudioUnit", RTLD_LAZY);
		if (theImage != NULL)
		{
			//	we assume that all routine names passed here have a leading underscore which gets shaved
			//	off when passed to dlsym
			aciGCProc = (AudioComponentInstanceGetComponentProc)dlsym (theImage, "AudioComponentInstanceGetComponent");
			if (aciGCProc) {
				acGDProc = (AudioComponentGetDescriptionProc)dlsym (theImage, "AudioComponentGetDescription");
				if (acGDProc)
					loadCMgr = false;
			}
		}
		if (loadCMgr) {
			theImage = dlopen("/System/Library/Frameworks/CoreServices.framework/CoreServices", RTLD_LAZY);
			if (theImage != NULL)
			{	
				gciProc = (GetComponentInfoProc)dlsym (theImage, "GetComponentInfo");
			}
		}
	}
	
	OSStatus result = noErr;
	if (acGDProc && aciGCProc) {
		AudioComponent comp = (*aciGCProc)(inInstance);
		XAssert (comp);
		if (comp) {
			ca_require_noerr(result = (*acGDProc)(comp, &outDesc), home);
		} else
			ca_require_noerr(result = -1, home);
	
	} else if (gciProc) {
		// in this case we know that inInstance is directly castable to a Component
		ca_require_noerr(result = (*gciProc)((Component)inInstance, (ComponentDescription*)&outDesc, NULL, NULL, NULL), home);
	}
home:
	return result;
}
void DirectProcess11(
    std::vector<BinData2<3,3> >& data, const Cell& c1, const Cell& c2,
    const double dsq, const Position2D& r)
{
    XAssert(c1.getSize()+c2.getSize() < sqrt(dsq)*b + 0.0001);
    XAssert(Dist(c2.getMeanPos() - c1.getMeanPos(),r) < 0.0001);
    XAssert(std::abs(dsq - DistSq(c1.getMeanPos(),c2.getMeanPos())) < 0.0001);

    Assert(dsq > minsepsq);
    Assert(dsq < maxsepsq);

    std::complex<double> cr(r.getX(),r.getY());
    std::complex<double> expm4iarg = conj(cr*cr)/dsq; // now expm2iarg
    expm4iarg *= expm4iarg; // now expm4iarg

    const double logr = log(dsq)/2.;
    Assert(logr >= logminsep);

    const int k = int(floor((logr - logminsep)/binsize));
    Assert(k >= 0); Assert(k<int(data.size()));

    const double ww = c1.getWeight()*c2.getWeight();
    const std::complex<double> e1 = c1.getWE();
    const std::complex<double> e2 = c2.getWE();

    const std::complex<double> ee = e1*e2*expm4iarg;
    const std::complex<double> eec = e1*conj(e2);

    const double npairs = c1.getN()*c2.getN();

    BinData2<3,3>& bindata = data[k];
    bindata.xiplus += eec;
    bindata.ximinus += ee;
    bindata.weight += ww;
    bindata.meanlogr += ww*logr;
    bindata.npair += npairs;

    ++bincount[k];
}
void DirectProcess11(
    std::vector<BinData2<1,1> >& data, const NCell& c1, const NCell& c2,
    const double dsq, const Position2D& r)
{
    xdbg<<std::string(recursen+1,'-')<<"Direct: d = "<<sqrt(dsq)<<std::endl;
    XAssert(c1.getSize()+c2.getSize() < sqrt(dsq)*b + 0.0001);
    XAssert(Dist(c2.getMeanPos() - c1.getMeanPos(),r) < 0.0001);
    XAssert(std::abs(dsq - std::norm(r)) < 0.0001);

    Assert(dsq >= minsepsq);
    Assert(dsq < maxsepsq);

    const double logr = log(dsq)/2.;
    Assert(logr >= logminsep);

    const int k = int(floor((logr - logminsep)/binsize));
    Assert(k >= 0); 
    Assert(k<int(data.size()));

    const double npairs = c1.getN()*c2.getN();

    data[k].npair += npairs;
}
예제 #7
0
AudioComponentDescription ComponentBase::GetComponentDescription() const
{
	AudioComponentDescription desc;
	OSStatus result;
	
#if CA_DO_NOT_USE_AUDIO_COMPONENT
	ca_require_noerr (result = ComponentBase_GetComponentDescription (mComponentInstance, desc), home);
#else
	AudioComponent comp = AudioComponentInstanceGetComponent(mComponentInstance);
	XAssert (comp);
	if (comp) {
		ca_require_noerr(result = AudioComponentGetDescription(comp, &desc), home);
	} else
		ca_require_noerr(result = -1, home);
#endif

home:
	if (result)
		memset (&desc, 0, sizeof(AudioComponentDescription));
	return desc;
}
예제 #8
0
void UiManager::AddChildWidget( UIWidget* child )
{
    XAssert(m_pUiLayer, "m_pUiLayer is invalid.");

    m_pUiLayer->addWidget(child);
}
예제 #9
0
UIWidget* UiManager::GetChildByName( const char* name )
{
    XAssert(m_pUiLayer, "m_pUiLayer is invalid.");

    return m_pUiLayer->getWidgetByName(name);
}