ROOT logo
/*****************************************************************************
 * Project: RooFit                                                           *
 * Package: RooFitModels                                                     *
 * @(#)root/roofit:$Id$
 * Authors:                                                                  *
 *   AH, Andreas Hoecker,  Orsay,            hoecker@slac.stanford.edu       *
 *   SL, Sandrine Laplace, Orsay,            laplace@slac.stanford.edu       *
 *   JS, Jan Stark,        Paris,            stark@slac.stanford.edu         *
 *   WV, Wouter Verkerke,  UC Santa Barbara, verkerke@slac.stanford.edu      *
 *                                                                           *                  
 * Copyright (c) 2000-2005, Regents of the University of California,         *
 *                          IN2P3. All rights reserved.                      *
 *                                                                           *
 * History                                                                   *
 *   Nov-2001   WV Created initial version                                   *
 *   Dec-2001   SL mischarge correction, direct CPV                          *
 *   Jan-2002   AH built dedicated generator + code cleaning                 *
 *   Mar-2002   JS committed debugged version to CVS                         *
 *   Apr-2002   AH allow prompt (ie, non-Pdf) mischarge treatment            *
 *   May-2002   JS Changed the set of CP parameters (mathematically equiv.)  *
 *                                                                           *
 * Redistribution and use in source and binary forms,                        *
 * with or without modification, are permitted according to the terms        *
 * listed in LICENSE (http://roofit.sourceforge.net/license.txt)             *
 *****************************************************************************/

//////////////////////////////////////////////////////////////////////////////
//
// BEGIN_HTML
// Time-dependent RooAbsAnaConvPdf for CP violating decays 
// to Non-CP eigenstates (eg, B0 -> rho+- pi-+).
// For a description of the physics model see the 
// BaBar Physics Book, section 6.5.2.3 .
// The set of CP parameters used in this class is equivalent to
// the one used in the Physics Book, but it is not exactly the
// same. Starting from the set in the BaBar Book, in order to 
// get the parameters used here you have to change the sign of both
// a_c^+ and a_c^-, and then substitute:
// <pre>
//    a_s^Q = S + Q* deltaS
//    a_c^Q = C + Q*deltaC
// </pre>
// where Q denotes the charge of the rho.
// END_HTML
//

#include "RooFit.h"

#include "Riostream.h"
#include "Riostream.h"
#include "RooRealVar.h"
#include "RooRandom.h"
#include "RooNonCPEigenDecay.h"
#include "TMath.h"
#include "RooRealIntegral.h"

using namespace std;

ClassImp(RooNonCPEigenDecay);

#define Debug_RooNonCPEigenDecay 1


//_____________________________________________________________________________
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&     acp,
					RooAbsReal&     C,
					RooAbsReal&     delC,
					RooAbsReal&     S,
					RooAbsReal&     delS,
					const RooResolutionModel& model, 
					DecayType       type )
  : RooAbsAnaConvPdf( name, title, model, t ), 
  _acp      ( "acp",      "acp",                this, acp      ),
  _avgC        ( "C",        "C",                  this, C        ),
  _delC     ( "delC",     "delC",               this, delC     ),
  _avgS        ( "S",        "S",                  this, S        ),
  _delS     ( "delS",     "delS",               this, delS     ),
  _avgW     ( "avgW",     "Average mistag rate",this, avgW     ),
  _delW     ( "delW",     "Shift mistag rate",  this, delW     ),
  _t        ( "t",        "time",               this, t        ),
  _tau      ( "tau",      "decay time",         this, tau      ),
  _dm       ( "dm",       "mixing frequency",   this, dm       ),
  _tag      ( "tag",      "CP state",           this, tag      ),
  _rhoQ     ( "rhoQ",     "Charge of the rho",  this, rhoQ     ),
  _correctQ ( "correctQ", "correction of rhoQ", this, correctQ ),
  _wQ       ( "wQ",       "mischarge",          this, wQ       ),
  _genB0Frac     ( 0 ),
  _genRhoPlusFrac( 0 ),
  _type     ( type )
{

  // Constructor
  switch(type) {
  case SingleSided:
    _basisExp = declareBasis( "exp(-@0/@1)",            RooArgList( tau     ) );
    _basisSin = declareBasis( "exp(-@0/@1)*sin(@0*@2)", RooArgList( tau, dm ) );
    _basisCos = declareBasis( "exp(-@0/@1)*cos(@0*@2)", RooArgList( tau, dm ) );
    break;
  case Flipped:
    _basisExp = declareBasis( "exp(@0)/@1)",            RooArgList( tau     ) );
    _basisSin = declareBasis( "exp(@0/@1)*sin(@0*@2)",  RooArgList( tau, dm ) );
    _basisCos = declareBasis( "exp(@0/@1)*cos(@0*@2)",  RooArgList( tau, dm ) );
    break;
  case DoubleSided:
    _basisExp = declareBasis( "exp(-abs(@0)/@1)",            RooArgList( tau     ) );
    _basisSin = declareBasis( "exp(-abs(@0)/@1)*sin(@0*@2)", RooArgList( tau, dm ) );
    _basisCos = declareBasis( "exp(-abs(@0)/@1)*cos(@0*@2)", RooArgList( tau, dm ) );
    break;
  }
}


//_____________________________________________________________________________
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&     acp,
					RooAbsReal&     C,
					RooAbsReal&     delC,
					RooAbsReal&     S,
					RooAbsReal&     delS,
					const RooResolutionModel& model, 
					DecayType       type )
  : RooAbsAnaConvPdf( name, title, model, t ), 
  _acp      ( "acp",      "acp",                this, acp      ),
  _avgC        ( "C",        "C",                  this, C        ),
  _delC     ( "delC",     "delC",               this, delC     ),
  _avgS        ( "S",        "S",                  this, S        ),
  _delS     ( "delS",     "delS",               this, delS     ),
  _avgW     ( "avgW",     "Average mistag rate",this, avgW     ),
  _delW     ( "delW",     "Shift mistag rate",  this, delW     ),
  _t        ( "t",        "time",               this, t        ),
  _tau      ( "tau",      "decay time",         this, tau      ),
  _dm       ( "dm",       "mixing frequency",   this, dm       ),
  _tag      ( "tag",      "CP state",           this, tag      ),
  _rhoQ     ( "rhoQ",     "Charge of the rho",  this, rhoQ     ),
  _correctQ ( "correctQ", "correction of rhoQ", this, correctQ ),
  _genB0Frac     ( 0 ),
  _genRhoPlusFrac( 0 ),
  _type     ( type )
{
  
  // dummy mischarge (must be set to zero!)
  _wQ = RooRealProxy( "wQ", "mischarge", this, *(new RooRealVar( "wQ", "wQ", 0 )) );

  switch(type) {
  case SingleSided:
    _basisExp = declareBasis( "exp(-@0/@1)",            RooArgList( tau     ) );
    _basisSin = declareBasis( "exp(-@0/@1)*sin(@0*@2)", RooArgList( tau, dm ) );
    _basisCos = declareBasis( "exp(-@0/@1)*cos(@0*@2)", RooArgList( tau, dm ) );
    break;
  case Flipped:
    _basisExp = declareBasis( "exp(@0)/@1)",            RooArgList( tau     ) );
    _basisSin = declareBasis( "exp(@0/@1)*sin(@0*@2)",  RooArgList( tau, dm ) );
    _basisCos = declareBasis( "exp(@0/@1)*cos(@0*@2)",  RooArgList( tau, dm ) );
    break;
  case DoubleSided:
    _basisExp = declareBasis( "exp(-abs(@0)/@1)",            RooArgList( tau     ) );
    _basisSin = declareBasis( "exp(-abs(@0)/@1)*sin(@0*@2)", RooArgList( tau, dm ) );
    _basisCos = declareBasis( "exp(-abs(@0)/@1)*cos(@0*@2)", RooArgList( tau, dm ) );
    break;
  }
}


//_____________________________________________________________________________
RooNonCPEigenDecay::RooNonCPEigenDecay( const RooNonCPEigenDecay& other, const char* name ) 
  : RooAbsAnaConvPdf( other, name ), 
  _acp      ( "acp",      this, other._acp      ),
  _avgC        ( "C",        this, other._avgC        ),
  _delC     ( "delC",     this, other._delC     ),
  _avgS        ( "S",        this, other._avgS        ),
  _delS     ( "delS",     this, other._delS     ),
  _avgW     ( "avgW",     this, other._avgW     ),
  _delW     ( "delW",     this, other._delW     ),
  _t        ( "t",        this, other._t        ),
  _tau      ( "tau",      this, other._tau      ),
  _dm       ( "dm",       this, other._dm       ),
  _tag      ( "tag",      this, other._tag      ),
  _rhoQ     ( "rhoQ",     this, other._rhoQ     ),
  _correctQ ( "correctQ", this, other._correctQ ),
  _wQ       ( "wQ",       this, other._wQ       ),
  _genB0Frac     ( other._genB0Frac      ),
  _genRhoPlusFrac( other._genRhoPlusFrac ),
  _type          ( other._type           ),
  _basisExp      ( other._basisExp       ),
  _basisSin      ( other._basisSin       ),
  _basisCos      ( other._basisCos       )
{
  // Copy constructor
}


//_____________________________________________________________________________
RooNonCPEigenDecay::~RooNonCPEigenDecay( void )
{
  // Destructor
}


//_____________________________________________________________________________
Double_t RooNonCPEigenDecay::coefficient( Int_t basisIndex ) const 
{
  // B0    : _tag  == -1 
  // B0bar : _tag  == +1 
  // rho+  : _rhoQ == +1
  // rho-  : _rhoQ == -1
  // the charge corrrection factor "_correctQ" serves to implement mis-charges
  
  Int_t rhoQc = _rhoQ * int(_correctQ);
  assert( rhoQc == 1 || rhoQc == -1 );

  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;

  if (basisIndex == _basisExp) {
    if (rhoQc == -1 || rhoQc == +1) 
      return (1 + rhoQc*_acp*(1 - 2*_wQ))*(1 + 0.5*_tag*(2*_delW));
    else
      return 1;
  }

  if (basisIndex == _basisSin) {
    
    if (rhoQc == -1) 

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

    else if (rhoQc == +1)

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

    else 
       return - _tag*((a_sin_p + a_sin_m)/2)*(1 - 2*_avgW);
  }

  if (basisIndex == _basisCos) {
    
    if ( rhoQc == -1) 

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

    else if (rhoQc == +1)

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

    else 
      return _tag*((a_cos_p + a_cos_m)/2)*(1 - 2*_avgW);
  }

  return 0;
}

// advertise analytical integration

//_____________________________________________________________________________
Int_t RooNonCPEigenDecay::getCoefAnalyticalIntegral( Int_t /*code*/, RooArgSet& allVars, 
						     RooArgSet& analVars, const char* rangeName ) const 
{
  if (rangeName) return 0 ;

  if (matchArgs( allVars, analVars, _tag, _rhoQ )) return 3;
  if (matchArgs( allVars, analVars, _rhoQ       )) return 2;
  if (matchArgs( allVars, analVars, _tag        )) return 1;

  return 0;
}


//_____________________________________________________________________________
Double_t RooNonCPEigenDecay::coefAnalyticalIntegral( Int_t basisIndex, 
						     Int_t code, const char* /*rangeName*/ ) const 
{
  // 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
    Double_t sumInt1 = RooRealIntegral( "sumInt1", "sum integral1", *this, 
					RooArgSet( _t.arg(), _tag.arg(), _rhoQ.arg() )
				      ).getVal();
    _tag = -1;
    Double_t b0Int1 = RooRealIntegral( "mixInt1", "mix integral1", *this,
				       RooArgSet( _t.arg(), _rhoQ.arg() )
				     ).getVal();
    _genB0Frac = b0Int1/sumInt1;

    if (Debug_RooNonCPEigenDecay == 1) 
      cout << "     o RooNonCPEigenDecay::initgenerator: genB0Frac     : " 
	   << _genB0Frac 
	   << ", tag dilution: " << (1 - 2*_avgW)
	   << endl;
  }  

  if (code == 3 || code == 4) {
    // Calculate the fraction of positive rho's to generate
    Double_t sumInt2 = RooRealIntegral( "sumInt2", "sum integral2", *this, 
					RooArgSet( _t.arg(), _tag.arg(), _rhoQ.arg() )
				      ).getVal();
    _rhoQ = 1;
    Double_t b0Int2 = RooRealIntegral( "mixInt2", "mix integral2", *this,
				       RooArgSet( _t.arg(), _tag.arg() )
				     ).getVal();
    _genRhoPlusFrac = b0Int2/sumInt2;

    if (Debug_RooNonCPEigenDecay == 1) 
      cout << "     o RooNonCPEigenDecay::initgenerator: genRhoPlusFrac: " 
	   << _genRhoPlusFrac << endl;
  }  
}



//_____________________________________________________________________________
void RooNonCPEigenDecay::generateEvent( Int_t code )
{

  // Generate delta-t dependent
  while (kTRUE) {

    // B flavor and rho charge (we do not use the integrated weights)
    if (code != 1) {
      if (code != 3) _tag  = (RooRandom::uniform()<=0.5) ? -1 : +1;
      if (code != 2) _rhoQ = (RooRandom::uniform()<=0.5) ?  1 : -1;
    }

    // opposite 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;
  
    // maximum probability density 
    double a1 = 1 + sqrt(TMath::Power(a_cos_m, 2) + TMath::Power(a_sin_m, 2));
    double a2 = 1 + sqrt(TMath::Power(a_cos_p, 2) + TMath::Power(a_sin_p, 2));
 
    Double_t maxAcceptProb = (1.10 + TMath::Abs(_acp)) * (a1 > a2 ? a1 : a2);
    // The 1.10 in the above line is a security feature to prevent crashes close to the limit at 1.00

    Double_t rand = RooRandom::uniform();
    Double_t tval(0);

    switch(_type) {

    case SingleSided:
      tval = -_tau*log(rand);
      break;

    case Flipped:
      tval = +_tau*log(rand);
      break;

    case DoubleSided:
      tval = (rand<=0.5) ? -_tau*log(2*rand) : +_tau*log(2*(rand-0.5));
      break;
    }

    // get coefficients
    Double_t expC = coefficient( _basisExp );
    Double_t sinC = coefficient( _basisSin );
    Double_t cosC = coefficient( _basisCos );
    
    // probability density
    Double_t acceptProb  = expC + sinC*sin(_dm*tval) + cosC*cos(_dm*tval);

    // sanity check...
    assert( acceptProb <= maxAcceptProb );

    // hit or miss...
    Bool_t accept = maxAcceptProb*RooRandom::uniform() < acceptProb ? kTRUE : kFALSE;
    
    if (accept && tval<_t.max() && tval>_t.min()) {
      _t = tval;
      break;
    }
  }  
}

 RooNonCPEigenDecay.cxx:1
 RooNonCPEigenDecay.cxx:2
 RooNonCPEigenDecay.cxx:3
 RooNonCPEigenDecay.cxx:4
 RooNonCPEigenDecay.cxx:5
 RooNonCPEigenDecay.cxx:6
 RooNonCPEigenDecay.cxx:7
 RooNonCPEigenDecay.cxx:8
 RooNonCPEigenDecay.cxx:9
 RooNonCPEigenDecay.cxx:10
 RooNonCPEigenDecay.cxx:11
 RooNonCPEigenDecay.cxx:12
 RooNonCPEigenDecay.cxx:13
 RooNonCPEigenDecay.cxx:14
 RooNonCPEigenDecay.cxx:15
 RooNonCPEigenDecay.cxx:16
 RooNonCPEigenDecay.cxx:17
 RooNonCPEigenDecay.cxx:18
 RooNonCPEigenDecay.cxx:19
 RooNonCPEigenDecay.cxx:20
 RooNonCPEigenDecay.cxx:21
 RooNonCPEigenDecay.cxx:22
 RooNonCPEigenDecay.cxx:23
 RooNonCPEigenDecay.cxx:24
 RooNonCPEigenDecay.cxx:25
 RooNonCPEigenDecay.cxx:26
 RooNonCPEigenDecay.cxx:27
 RooNonCPEigenDecay.cxx:28
 RooNonCPEigenDecay.cxx:29
 RooNonCPEigenDecay.cxx:30
 RooNonCPEigenDecay.cxx:31
 RooNonCPEigenDecay.cxx:32
 RooNonCPEigenDecay.cxx:33
 RooNonCPEigenDecay.cxx:34
 RooNonCPEigenDecay.cxx:35
 RooNonCPEigenDecay.cxx:36
 RooNonCPEigenDecay.cxx:37
 RooNonCPEigenDecay.cxx:38
 RooNonCPEigenDecay.cxx:39
 RooNonCPEigenDecay.cxx:40
 RooNonCPEigenDecay.cxx:41
 RooNonCPEigenDecay.cxx:42
 RooNonCPEigenDecay.cxx:43
 RooNonCPEigenDecay.cxx:44
 RooNonCPEigenDecay.cxx:45
 RooNonCPEigenDecay.cxx:46
 RooNonCPEigenDecay.cxx:47
 RooNonCPEigenDecay.cxx:48
 RooNonCPEigenDecay.cxx:49
 RooNonCPEigenDecay.cxx:50
 RooNonCPEigenDecay.cxx:51
 RooNonCPEigenDecay.cxx:52
 RooNonCPEigenDecay.cxx:53
 RooNonCPEigenDecay.cxx:54
 RooNonCPEigenDecay.cxx:55
 RooNonCPEigenDecay.cxx:56
 RooNonCPEigenDecay.cxx:57
 RooNonCPEigenDecay.cxx:58
 RooNonCPEigenDecay.cxx:59
 RooNonCPEigenDecay.cxx:60
 RooNonCPEigenDecay.cxx:61
 RooNonCPEigenDecay.cxx:62
 RooNonCPEigenDecay.cxx:63
 RooNonCPEigenDecay.cxx:64
 RooNonCPEigenDecay.cxx:65
 RooNonCPEigenDecay.cxx:66
 RooNonCPEigenDecay.cxx:67
 RooNonCPEigenDecay.cxx:68
 RooNonCPEigenDecay.cxx:69
 RooNonCPEigenDecay.cxx:70
 RooNonCPEigenDecay.cxx:71
 RooNonCPEigenDecay.cxx:72
 RooNonCPEigenDecay.cxx:73
 RooNonCPEigenDecay.cxx:74
 RooNonCPEigenDecay.cxx:75
 RooNonCPEigenDecay.cxx:76
 RooNonCPEigenDecay.cxx:77
 RooNonCPEigenDecay.cxx:78
 RooNonCPEigenDecay.cxx:79
 RooNonCPEigenDecay.cxx:80
 RooNonCPEigenDecay.cxx:81
 RooNonCPEigenDecay.cxx:82
 RooNonCPEigenDecay.cxx:83
 RooNonCPEigenDecay.cxx:84
 RooNonCPEigenDecay.cxx:85
 RooNonCPEigenDecay.cxx:86
 RooNonCPEigenDecay.cxx:87
 RooNonCPEigenDecay.cxx:88
 RooNonCPEigenDecay.cxx:89
 RooNonCPEigenDecay.cxx:90
 RooNonCPEigenDecay.cxx:91
 RooNonCPEigenDecay.cxx:92
 RooNonCPEigenDecay.cxx:93
 RooNonCPEigenDecay.cxx:94
 RooNonCPEigenDecay.cxx:95
 RooNonCPEigenDecay.cxx:96
 RooNonCPEigenDecay.cxx:97
 RooNonCPEigenDecay.cxx:98
 RooNonCPEigenDecay.cxx:99
 RooNonCPEigenDecay.cxx:100
 RooNonCPEigenDecay.cxx:101
 RooNonCPEigenDecay.cxx:102
 RooNonCPEigenDecay.cxx:103
 RooNonCPEigenDecay.cxx:104
 RooNonCPEigenDecay.cxx:105
 RooNonCPEigenDecay.cxx:106
 RooNonCPEigenDecay.cxx:107
 RooNonCPEigenDecay.cxx:108
 RooNonCPEigenDecay.cxx:109
 RooNonCPEigenDecay.cxx:110
 RooNonCPEigenDecay.cxx:111
 RooNonCPEigenDecay.cxx:112
 RooNonCPEigenDecay.cxx:113
 RooNonCPEigenDecay.cxx:114
 RooNonCPEigenDecay.cxx:115
 RooNonCPEigenDecay.cxx:116
 RooNonCPEigenDecay.cxx:117
 RooNonCPEigenDecay.cxx:118
 RooNonCPEigenDecay.cxx:119
 RooNonCPEigenDecay.cxx:120
 RooNonCPEigenDecay.cxx:121
 RooNonCPEigenDecay.cxx:122
 RooNonCPEigenDecay.cxx:123
 RooNonCPEigenDecay.cxx:124
 RooNonCPEigenDecay.cxx:125
 RooNonCPEigenDecay.cxx:126
 RooNonCPEigenDecay.cxx:127
 RooNonCPEigenDecay.cxx:128
 RooNonCPEigenDecay.cxx:129
 RooNonCPEigenDecay.cxx:130
 RooNonCPEigenDecay.cxx:131
 RooNonCPEigenDecay.cxx:132
 RooNonCPEigenDecay.cxx:133
 RooNonCPEigenDecay.cxx:134
 RooNonCPEigenDecay.cxx:135
 RooNonCPEigenDecay.cxx:136
 RooNonCPEigenDecay.cxx:137
 RooNonCPEigenDecay.cxx:138
 RooNonCPEigenDecay.cxx:139
 RooNonCPEigenDecay.cxx:140
 RooNonCPEigenDecay.cxx:141
 RooNonCPEigenDecay.cxx:142
 RooNonCPEigenDecay.cxx:143
 RooNonCPEigenDecay.cxx:144
 RooNonCPEigenDecay.cxx:145
 RooNonCPEigenDecay.cxx:146
 RooNonCPEigenDecay.cxx:147
 RooNonCPEigenDecay.cxx:148
 RooNonCPEigenDecay.cxx:149
 RooNonCPEigenDecay.cxx:150
 RooNonCPEigenDecay.cxx:151
 RooNonCPEigenDecay.cxx:152
 RooNonCPEigenDecay.cxx:153
 RooNonCPEigenDecay.cxx:154
 RooNonCPEigenDecay.cxx:155
 RooNonCPEigenDecay.cxx:156
 RooNonCPEigenDecay.cxx:157
 RooNonCPEigenDecay.cxx:158
 RooNonCPEigenDecay.cxx:159
 RooNonCPEigenDecay.cxx:160
 RooNonCPEigenDecay.cxx:161
 RooNonCPEigenDecay.cxx:162
 RooNonCPEigenDecay.cxx:163
 RooNonCPEigenDecay.cxx:164
 RooNonCPEigenDecay.cxx:165
 RooNonCPEigenDecay.cxx:166
 RooNonCPEigenDecay.cxx:167
 RooNonCPEigenDecay.cxx:168
 RooNonCPEigenDecay.cxx:169
 RooNonCPEigenDecay.cxx:170
 RooNonCPEigenDecay.cxx:171
 RooNonCPEigenDecay.cxx:172
 RooNonCPEigenDecay.cxx:173
 RooNonCPEigenDecay.cxx:174
 RooNonCPEigenDecay.cxx:175
 RooNonCPEigenDecay.cxx:176
 RooNonCPEigenDecay.cxx:177
 RooNonCPEigenDecay.cxx:178
 RooNonCPEigenDecay.cxx:179
 RooNonCPEigenDecay.cxx:180
 RooNonCPEigenDecay.cxx:181
 RooNonCPEigenDecay.cxx:182
 RooNonCPEigenDecay.cxx:183
 RooNonCPEigenDecay.cxx:184
 RooNonCPEigenDecay.cxx:185
 RooNonCPEigenDecay.cxx:186
 RooNonCPEigenDecay.cxx:187
 RooNonCPEigenDecay.cxx:188
 RooNonCPEigenDecay.cxx:189
 RooNonCPEigenDecay.cxx:190
 RooNonCPEigenDecay.cxx:191
 RooNonCPEigenDecay.cxx:192
 RooNonCPEigenDecay.cxx:193
 RooNonCPEigenDecay.cxx:194
 RooNonCPEigenDecay.cxx:195
 RooNonCPEigenDecay.cxx:196
 RooNonCPEigenDecay.cxx:197
 RooNonCPEigenDecay.cxx:198
 RooNonCPEigenDecay.cxx:199
 RooNonCPEigenDecay.cxx:200
 RooNonCPEigenDecay.cxx:201
 RooNonCPEigenDecay.cxx:202
 RooNonCPEigenDecay.cxx:203
 RooNonCPEigenDecay.cxx:204
 RooNonCPEigenDecay.cxx:205
 RooNonCPEigenDecay.cxx:206
 RooNonCPEigenDecay.cxx:207
 RooNonCPEigenDecay.cxx:208
 RooNonCPEigenDecay.cxx:209
 RooNonCPEigenDecay.cxx:210
 RooNonCPEigenDecay.cxx:211
 RooNonCPEigenDecay.cxx:212
 RooNonCPEigenDecay.cxx:213
 RooNonCPEigenDecay.cxx:214
 RooNonCPEigenDecay.cxx:215
 RooNonCPEigenDecay.cxx:216
 RooNonCPEigenDecay.cxx:217
 RooNonCPEigenDecay.cxx:218
 RooNonCPEigenDecay.cxx:219
 RooNonCPEigenDecay.cxx:220
 RooNonCPEigenDecay.cxx:221
 RooNonCPEigenDecay.cxx:222
 RooNonCPEigenDecay.cxx:223
 RooNonCPEigenDecay.cxx:224
 RooNonCPEigenDecay.cxx:225
 RooNonCPEigenDecay.cxx:226
 RooNonCPEigenDecay.cxx:227
 RooNonCPEigenDecay.cxx:228
 RooNonCPEigenDecay.cxx:229
 RooNonCPEigenDecay.cxx:230
 RooNonCPEigenDecay.cxx:231
 RooNonCPEigenDecay.cxx:232
 RooNonCPEigenDecay.cxx:233
 RooNonCPEigenDecay.cxx:234
 RooNonCPEigenDecay.cxx:235
 RooNonCPEigenDecay.cxx:236
 RooNonCPEigenDecay.cxx:237
 RooNonCPEigenDecay.cxx:238
 RooNonCPEigenDecay.cxx:239
 RooNonCPEigenDecay.cxx:240
 RooNonCPEigenDecay.cxx:241
 RooNonCPEigenDecay.cxx:242
 RooNonCPEigenDecay.cxx:243
 RooNonCPEigenDecay.cxx:244
 RooNonCPEigenDecay.cxx:245
 RooNonCPEigenDecay.cxx:246
 RooNonCPEigenDecay.cxx:247
 RooNonCPEigenDecay.cxx:248
 RooNonCPEigenDecay.cxx:249
 RooNonCPEigenDecay.cxx:250
 RooNonCPEigenDecay.cxx:251
 RooNonCPEigenDecay.cxx:252
 RooNonCPEigenDecay.cxx:253
 RooNonCPEigenDecay.cxx:254
 RooNonCPEigenDecay.cxx:255
 RooNonCPEigenDecay.cxx:256
 RooNonCPEigenDecay.cxx:257
 RooNonCPEigenDecay.cxx:258
 RooNonCPEigenDecay.cxx:259
 RooNonCPEigenDecay.cxx:260
 RooNonCPEigenDecay.cxx:261
 RooNonCPEigenDecay.cxx:262
 RooNonCPEigenDecay.cxx:263
 RooNonCPEigenDecay.cxx:264
 RooNonCPEigenDecay.cxx:265
 RooNonCPEigenDecay.cxx:266
 RooNonCPEigenDecay.cxx:267
 RooNonCPEigenDecay.cxx:268
 RooNonCPEigenDecay.cxx:269
 RooNonCPEigenDecay.cxx:270
 RooNonCPEigenDecay.cxx:271
 RooNonCPEigenDecay.cxx:272
 RooNonCPEigenDecay.cxx:273
 RooNonCPEigenDecay.cxx:274
 RooNonCPEigenDecay.cxx:275
 RooNonCPEigenDecay.cxx:276
 RooNonCPEigenDecay.cxx:277
 RooNonCPEigenDecay.cxx:278
 RooNonCPEigenDecay.cxx:279
 RooNonCPEigenDecay.cxx:280
 RooNonCPEigenDecay.cxx:281
 RooNonCPEigenDecay.cxx:282
 RooNonCPEigenDecay.cxx:283
 RooNonCPEigenDecay.cxx:284
 RooNonCPEigenDecay.cxx:285
 RooNonCPEigenDecay.cxx:286
 RooNonCPEigenDecay.cxx:287
 RooNonCPEigenDecay.cxx:288
 RooNonCPEigenDecay.cxx:289
 RooNonCPEigenDecay.cxx:290
 RooNonCPEigenDecay.cxx:291
 RooNonCPEigenDecay.cxx:292
 RooNonCPEigenDecay.cxx:293
 RooNonCPEigenDecay.cxx:294
 RooNonCPEigenDecay.cxx:295
 RooNonCPEigenDecay.cxx:296
 RooNonCPEigenDecay.cxx:297
 RooNonCPEigenDecay.cxx:298
 RooNonCPEigenDecay.cxx:299
 RooNonCPEigenDecay.cxx:300
 RooNonCPEigenDecay.cxx:301
 RooNonCPEigenDecay.cxx:302
 RooNonCPEigenDecay.cxx:303
 RooNonCPEigenDecay.cxx:304
 RooNonCPEigenDecay.cxx:305
 RooNonCPEigenDecay.cxx:306
 RooNonCPEigenDecay.cxx:307
 RooNonCPEigenDecay.cxx:308
 RooNonCPEigenDecay.cxx:309
 RooNonCPEigenDecay.cxx:310
 RooNonCPEigenDecay.cxx:311
 RooNonCPEigenDecay.cxx:312
 RooNonCPEigenDecay.cxx:313
 RooNonCPEigenDecay.cxx:314
 RooNonCPEigenDecay.cxx:315
 RooNonCPEigenDecay.cxx:316
 RooNonCPEigenDecay.cxx:317
 RooNonCPEigenDecay.cxx:318
 RooNonCPEigenDecay.cxx:319
 RooNonCPEigenDecay.cxx:320
 RooNonCPEigenDecay.cxx:321
 RooNonCPEigenDecay.cxx:322
 RooNonCPEigenDecay.cxx:323
 RooNonCPEigenDecay.cxx:324
 RooNonCPEigenDecay.cxx:325
 RooNonCPEigenDecay.cxx:326
 RooNonCPEigenDecay.cxx:327
 RooNonCPEigenDecay.cxx:328
 RooNonCPEigenDecay.cxx:329
 RooNonCPEigenDecay.cxx:330
 RooNonCPEigenDecay.cxx:331
 RooNonCPEigenDecay.cxx:332
 RooNonCPEigenDecay.cxx:333
 RooNonCPEigenDecay.cxx:334
 RooNonCPEigenDecay.cxx:335
 RooNonCPEigenDecay.cxx:336
 RooNonCPEigenDecay.cxx:337
 RooNonCPEigenDecay.cxx:338
 RooNonCPEigenDecay.cxx:339
 RooNonCPEigenDecay.cxx:340
 RooNonCPEigenDecay.cxx:341
 RooNonCPEigenDecay.cxx:342
 RooNonCPEigenDecay.cxx:343
 RooNonCPEigenDecay.cxx:344
 RooNonCPEigenDecay.cxx:345
 RooNonCPEigenDecay.cxx:346
 RooNonCPEigenDecay.cxx:347
 RooNonCPEigenDecay.cxx:348
 RooNonCPEigenDecay.cxx:349
 RooNonCPEigenDecay.cxx:350
 RooNonCPEigenDecay.cxx:351
 RooNonCPEigenDecay.cxx:352
 RooNonCPEigenDecay.cxx:353
 RooNonCPEigenDecay.cxx:354
 RooNonCPEigenDecay.cxx:355
 RooNonCPEigenDecay.cxx:356
 RooNonCPEigenDecay.cxx:357
 RooNonCPEigenDecay.cxx:358
 RooNonCPEigenDecay.cxx:359
 RooNonCPEigenDecay.cxx:360
 RooNonCPEigenDecay.cxx:361
 RooNonCPEigenDecay.cxx:362
 RooNonCPEigenDecay.cxx:363
 RooNonCPEigenDecay.cxx:364
 RooNonCPEigenDecay.cxx:365
 RooNonCPEigenDecay.cxx:366
 RooNonCPEigenDecay.cxx:367
 RooNonCPEigenDecay.cxx:368
 RooNonCPEigenDecay.cxx:369
 RooNonCPEigenDecay.cxx:370
 RooNonCPEigenDecay.cxx:371
 RooNonCPEigenDecay.cxx:372
 RooNonCPEigenDecay.cxx:373
 RooNonCPEigenDecay.cxx:374
 RooNonCPEigenDecay.cxx:375
 RooNonCPEigenDecay.cxx:376
 RooNonCPEigenDecay.cxx:377
 RooNonCPEigenDecay.cxx:378
 RooNonCPEigenDecay.cxx:379
 RooNonCPEigenDecay.cxx:380
 RooNonCPEigenDecay.cxx:381
 RooNonCPEigenDecay.cxx:382
 RooNonCPEigenDecay.cxx:383
 RooNonCPEigenDecay.cxx:384
 RooNonCPEigenDecay.cxx:385
 RooNonCPEigenDecay.cxx:386
 RooNonCPEigenDecay.cxx:387
 RooNonCPEigenDecay.cxx:388
 RooNonCPEigenDecay.cxx:389
 RooNonCPEigenDecay.cxx:390
 RooNonCPEigenDecay.cxx:391
 RooNonCPEigenDecay.cxx:392
 RooNonCPEigenDecay.cxx:393
 RooNonCPEigenDecay.cxx:394
 RooNonCPEigenDecay.cxx:395
 RooNonCPEigenDecay.cxx:396
 RooNonCPEigenDecay.cxx:397
 RooNonCPEigenDecay.cxx:398
 RooNonCPEigenDecay.cxx:399
 RooNonCPEigenDecay.cxx:400
 RooNonCPEigenDecay.cxx:401
 RooNonCPEigenDecay.cxx:402
 RooNonCPEigenDecay.cxx:403
 RooNonCPEigenDecay.cxx:404
 RooNonCPEigenDecay.cxx:405
 RooNonCPEigenDecay.cxx:406
 RooNonCPEigenDecay.cxx:407
 RooNonCPEigenDecay.cxx:408
 RooNonCPEigenDecay.cxx:409
 RooNonCPEigenDecay.cxx:410
 RooNonCPEigenDecay.cxx:411
 RooNonCPEigenDecay.cxx:412
 RooNonCPEigenDecay.cxx:413
 RooNonCPEigenDecay.cxx:414
 RooNonCPEigenDecay.cxx:415
 RooNonCPEigenDecay.cxx:416
 RooNonCPEigenDecay.cxx:417
 RooNonCPEigenDecay.cxx:418
 RooNonCPEigenDecay.cxx:419
 RooNonCPEigenDecay.cxx:420
 RooNonCPEigenDecay.cxx:421
 RooNonCPEigenDecay.cxx:422
 RooNonCPEigenDecay.cxx:423
 RooNonCPEigenDecay.cxx:424
 RooNonCPEigenDecay.cxx:425
 RooNonCPEigenDecay.cxx:426
 RooNonCPEigenDecay.cxx:427
 RooNonCPEigenDecay.cxx:428
 RooNonCPEigenDecay.cxx:429
 RooNonCPEigenDecay.cxx:430
 RooNonCPEigenDecay.cxx:431
 RooNonCPEigenDecay.cxx:432
 RooNonCPEigenDecay.cxx:433
 RooNonCPEigenDecay.cxx:434
 RooNonCPEigenDecay.cxx:435
 RooNonCPEigenDecay.cxx:436
 RooNonCPEigenDecay.cxx:437
 RooNonCPEigenDecay.cxx:438
 RooNonCPEigenDecay.cxx:439
 RooNonCPEigenDecay.cxx:440
 RooNonCPEigenDecay.cxx:441
 RooNonCPEigenDecay.cxx:442
 RooNonCPEigenDecay.cxx:443
 RooNonCPEigenDecay.cxx:444
 RooNonCPEigenDecay.cxx:445
 RooNonCPEigenDecay.cxx:446
 RooNonCPEigenDecay.cxx:447
 RooNonCPEigenDecay.cxx:448
 RooNonCPEigenDecay.cxx:449
 RooNonCPEigenDecay.cxx:450
 RooNonCPEigenDecay.cxx:451
 RooNonCPEigenDecay.cxx:452
 RooNonCPEigenDecay.cxx:453
 RooNonCPEigenDecay.cxx:454
 RooNonCPEigenDecay.cxx:455
 RooNonCPEigenDecay.cxx:456
 RooNonCPEigenDecay.cxx:457
 RooNonCPEigenDecay.cxx:458
 RooNonCPEigenDecay.cxx:459
 RooNonCPEigenDecay.cxx:460