library: libRooFit
#include "RooNonCPEigenDecay.h"

RooNonCPEigenDecay


class description - header file - source file - inheritance tree (.pdf)

class RooNonCPEigenDecay : public RooAbsAnaConvPdf

Inheritance Chart:
TObject
<-
TNamed
RooPrintable
<-
RooAbsArg
<-
RooAbsReal
<-
RooAbsPdf
<-
RooAbsAnaConvPdf
<-
RooNonCPEigenDecay

    public:
RooNonCPEigenDecay() RooNonCPEigenDecay(const char* name, const char* title, RooRealVar& t, RooAbsCategory& tag, RooAbsReal& tau, RooAbsReal& dm, RooAbsReal& avgW, RooAbsReal& delW, RooAbsCategory& rhoQ, RooAbsReal& correctQ, RooAbsReal& wQ, RooAbsReal& a, RooAbsReal& C, RooAbsReal& delC, RooAbsReal& S, RooAbsReal& delS, const RooResolutionModel& model, RooNonCPEigenDecay::DecayType type = DoubleSided) RooNonCPEigenDecay(const char* name, const char* title, RooRealVar& t, RooAbsCategory& tag, RooAbsReal& tau, RooAbsReal& dm, RooAbsReal& avgW, RooAbsReal& delW, RooAbsCategory& rhoQ, RooAbsReal& correctQ, RooAbsReal& a, RooAbsReal& C, RooAbsReal& delC, RooAbsReal& S, RooAbsReal& delS, const RooResolutionModel& model, RooNonCPEigenDecay::DecayType type = DoubleSided) RooNonCPEigenDecay(const RooNonCPEigenDecay& other, const char* name = "0") virtual ~RooNonCPEigenDecay() static TClass* Class() virtual TObject* clone(const char* newname) const virtual Double_t coefAnalyticalIntegral(Int_t coef, Int_t code, const char* rangeName = "0") const virtual Double_t coefficient(Int_t basisIndex) const virtual void generateEvent(Int_t code) virtual Int_t getCoefAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName = "0") const virtual Int_t getGenerator(const RooArgSet& directVars, RooArgSet& generateVars, Bool_t staticInitOK = kTRUE) const virtual void initGenerator(Int_t code) virtual TClass* IsA() const virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b)

Data Members


    protected:
RooRealProxy _acp RooRealProxy _avgC RooRealProxy _delC RooRealProxy _avgS RooRealProxy _delS RooRealProxy _avgW RooRealProxy _delW RooRealProxy _t RooRealProxy _tau RooRealProxy _dm RooCategoryProxy _tag RooCategoryProxy _rhoQ RooRealProxy _correctQ RooRealProxy _wQ Double_t _genB0Frac Double_t _genRhoPlusFrac RooNonCPEigenDecay::DecayType _type Int_t _basisExp Int_t _basisSin Int_t _basisCos public:
static const RooNonCPEigenDecay::DecayType SingleSided static const RooNonCPEigenDecay::DecayType DoubleSided static const RooNonCPEigenDecay::DecayType Flipped

Class Description

RooNonCPEigenDecay( const char *name, const char *title, RooRealVar& t, RooAbsCategory& tag, RooAbsReal& tau, RooAbsReal& dm, RooAbsReal& avgW, RooAbsReal& delW, RooAbsCategory& rhoQ, RooAbsReal& correctQ, RooAbsReal& wQ, RooAbsReal& acp, RooAbsReal& C, RooAbsReal& delC, RooAbsReal& S, RooAbsReal& delS, const RooResolutionModel& model, DecayType type )
RooNonCPEigenDecay( const char *name, const char *title, RooRealVar& t, RooAbsCategory& tag, RooAbsReal& tau, RooAbsReal& dm, RooAbsReal& avgW, RooAbsReal& delW, RooAbsCategory& rhoQ, RooAbsReal& correctQ, RooAbsReal& acp, RooAbsReal& C, RooAbsReal& delC, RooAbsReal& S, RooAbsReal& delS, const RooResolutionModel& model, DecayType type )
RooNonCPEigenDecay( const RooNonCPEigenDecay& other, const char* name )
 Copy constructor
~RooNonCPEigenDecay( void )
 Destructor
Double_t coefficient( Int_t basisIndex )
 B0    : _tag  == -1
 B0bar : _tag  == +1
 rho+  : _rhoQ == +1
 rho-  : _rhoQ == -1
 the charge corrrection factor "_correctQ" serves to implement mis-charges
Int_t getCoefAnalyticalIntegral( RooArgSet& allVars, RooArgSet& analVars, const char* rangeName )
Double_t coefAnalyticalIntegral( Int_t basisIndex, Int_t code, const char* /*rangeName*/ )
{
 correct for the right/wrong charge...
Int_t rhoQc = _rhoQ*int(_correctQ);

Double_t a_sin_p = _avgS + _delS;
Double_t a_sin_m = _avgS - _delS;
Double_t a_cos_p = _avgC + _delC;
Double_t a_cos_m = _avgC - _delC;

switch(code) {

 No integration
case 0: return coefficient(basisIndex);

 Integration over 'tag'
case 1:
if (basisIndex == _basisExp) return 2*(1 + rhoQc*_acp*(1 - 2*_wQ));
if (basisIndex == _basisSin || basisIndex==_basisCos) return 0;
assert( kFALSE );

 Integration over 'rhoQ'
case 2:
if (basisIndex == _basisExp) return 2*(1 + 0.5*_tag*(2.*_delW));

if (basisIndex == _basisSin)

return - ( (1 - _acp)*a_sin_m + (1 + _acp)*a_sin_p )*(1 - 2*_avgW)*_tag;

if (basisIndex == _basisCos)

return + ( (1 - _acp)*a_cos_m + (1 + _acp)*a_cos_p )*(1 - 2*_avgW)*_tag;

assert( kFALSE );

 Integration over 'tag' and 'rhoQ'
case 3:
if (basisIndex == _basisExp) return 2*2; // for both: tag and charge
if (basisIndex == _basisSin || basisIndex==_basisCos) return 0;
assert( kFALSE );

default:
assert( kFALSE );
}

return 0;
}

Int_t RooNonCPEigenDecay::getGenerator( const RooArgSet& directVars,
					RooArgSet&       generateVars, Bool_t staticInitOK ) const
{
if (staticInitOK) {
if (matchArgs( directVars, generateVars, _t, _tag, _rhoQ )) return 4;
if (matchArgs( directVars, generateVars, _t, _rhoQ       )) return 3;
if (matchArgs( directVars, generateVars, _t, _tag        )) return 2;
}
if (matchArgs( directVars, generateVars, _t              )) return 1;
return 0;
}

void RooNonCPEigenDecay::initGenerator( Int_t code )
{

if (code == 2 || code == 4) {
 Calculate the fraction of mixed events to generate
void generateEvent( Int_t code )
inline RooNonCPEigenDecay( void )
 Constructors, assignment etc
TObject* clone(const char* newname)
Int_t getGenerator( const RooArgSet& directVars, RooArgSet& generateVars, Bool_t staticInitOK=kTRUE )
void initGenerator( Int_t code )

Last update: Tue Jul 11 11:46:00 2006
Copyright (c) 2000-2005, Regents of the University of California, *


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.