void EvtSSD_DirectCP::init() {

    // check that there is 1 argument and 2-body decay

    checkNArg(1);
    checkNDaug(2);

    EvtSpinType::spintype d1type=EvtPDL::getSpinType(getDaug(0));
    EvtSpinType::spintype d2type=EvtPDL::getSpinType(getDaug(1));

    if ( (!(d1type == EvtSpinType::SCALAR || d2type == EvtSpinType::SCALAR))||
            (!((d2type==EvtSpinType::SCALAR)||(d2type==EvtSpinType::VECTOR)||
               (d2type==EvtSpinType::TENSOR)))||
            (!((d1type==EvtSpinType::SCALAR)||(d1type==EvtSpinType::VECTOR)||
               (d1type==EvtSpinType::TENSOR)))
       ) {
        EvtGenReport(EVTGEN_ERROR,"EvtGen") << "EvtSSD_DirectCP generator expected "
                                            << "one of the daugters to be a scalar, "
                                            << "the other either scalar, vector, or tensor, "
                                            << "found:"
                                            << EvtPDL::name(getDaug(0)).c_str()
                                            <<" and "
                                            <<EvtPDL::name(getDaug(1)).c_str()<<std::endl;
        EvtGenReport(EVTGEN_ERROR,"EvtGen") << "Will terminate execution!"<<std::endl;
        ::abort();
    }

    _acp = getArg( 0 ) ; // A_CP defined as A_CP = (BR(fbar)-BR(f))/(BR(fbar)+BR(f))

}
Beispiel #2
0
void EvtISGW2::init() {

    checkNArg(0);
    checkNDaug(3);

    //We expect the parent to be a scalar
    //and the daughters to be X lepton neutrino

    checkSpinParent(EvtSpinType::SCALAR);
    checkSpinDaughter(1,EvtSpinType::DIRAC);
    checkSpinDaughter(2,EvtSpinType::NEUTRINO);

    EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));

    isgw2ffmodel = new EvtISGW2FF;

    if ( mesontype==EvtSpinType::SCALAR ) {
        calcamp = new EvtSemiLeptonicScalarAmp;
    }
    if ( mesontype==EvtSpinType::VECTOR ) {
        calcamp = new EvtSemiLeptonicVectorAmp;
    }
    if ( mesontype==EvtSpinType::TENSOR ) {
        calcamp = new EvtSemiLeptonicTensorAmp;
    }

}
void EvtSVVNONCPEIGEN::init(){

  // check that there are 27 arguments
  checkNArg(27,15);
  checkNDaug(2);

  checkSpinDaughter(0,EvtSpinType::VECTOR);
  checkSpinDaughter(1,EvtSpinType::VECTOR);

  //  The ordering of A_f is :
  //  A_f[0-2] = A_f
  //  A_f[3-5] = Abar_f
  //  A_f[6-8] = A_fbar 
  //  A_f[9-11] = Abar_fbar
  //  
  //  Each of the 4 amplitudes include the 3 different helicity states in 
  //  the order +, 0, -. See more about helicity amplitude ordering in ::decay

  int i=0;
  int j=(getNArg()-3)/2;

  for(i=0; i<j; ++i){
    _A_f[i] = getArg((2*i)+3) * EvtComplex( cos(getArg((2*i)+4)),sin(getArg((2*i)+4)) );
  }

  //  If only 6 amplitudes are specified, calculate the last 6 from the first 6:
  if(6 == j){
    for(i = 0; i < 3; ++i){
      _A_f[6+i] = _A_f[3+i];
      _A_f[9+i] = _A_f[i];
    }
  }
}
Beispiel #4
0
//======================================================
void EvtBcVNpi::init(){
    //cout<<"BcVNpi::init()"<<endl;
    
    checkNArg(1);
    checkSpinParent(EvtSpinType::SCALAR);
    checkSpinDaughter(0,EvtSpinType::VECTOR);
    for (int i=1; i<=(getNDaug()-1);i++) {
      checkSpinDaughter(i,EvtSpinType::SCALAR);
    };

    if(getNDaug()<2 || getNDaug()>6) {
      report(Severity::Error,"EvtGen") << "Have not yet implemented this final state in BcVNpi model" << endl;
      report(Severity::Error,"EvtGen") << "Ndaug="<<getNDaug() << endl;
      for ( int id=0; id<(getNDaug()-1); id++ ) 
	report(Severity::Error,"EvtGen") << "Daug " << id << " "<<EvtPDL::name(getDaug(id)).c_str() << endl;
      return;
    }

  
//     for(int i=0; i<getNDaug(); i++)
//       cout<<"BcVNpi::init \t\t daughter "<<i<<" : "<<getDaug(i).getId()<<"   "<<EvtPDL::name(getDaug(i)).c_str()<<endl;

   idVector = getDaug(0).getId();
    whichfit = int(getArg(0)+0.1);
//     cout<<"BcVNpi: whichfit ="<<whichfit<<"  idVector="<<idVector<<endl;
    ffmodel = new EvtBCVFF(idVector,whichfit);
    
    wcurr = new EvtWnPi();
    
    nCall = 0;
}
Beispiel #5
0
void EvtVVP::init(){

  // check that there are 8 arguments

  checkNArg(8);
  checkNDaug(2);

  checkSpinParent(EvtSpinType::VECTOR);
  checkSpinDaughter(0,EvtSpinType::VECTOR);
  checkSpinDaughter(1,EvtSpinType::PHOTON);
}
Beispiel #6
0
void EvtSSSCP::init(){

  // check that there are 7 arguments
  checkNArg(7);
  checkNDaug(2);
  checkSpinParent(EvtSpinType::SCALAR);

  checkSpinDaughter(0,EvtSpinType::SCALAR);
  checkSpinDaughter(1,EvtSpinType::SCALAR);

}
void EvtTauVectornu::init(){

  // check that there are 0 arguments
  checkNArg(0);
  checkNDaug(2);

  checkSpinParent(EvtSpinType::DIRAC);
    
  checkSpinDaughter(0,EvtSpinType::VECTOR);
  checkSpinDaughter(1,EvtSpinType::NEUTRINO);
}
Beispiel #8
0
void EvtVSSMix::init(){

  // check that there are 1 arguments
  checkNArg(1);
  checkNDaug(2);

  checkSpinParent(EvtSpinType::VECTOR);
    
  checkSpinDaughter(0,EvtSpinType::SCALAR);
  checkSpinDaughter(1,EvtSpinType::SCALAR);

}
//=============================================================================
// Initialisation method
//=============================================================================
void EvtBToDDalitzCPK::init ( ) 
{
  // Check that there are 3 arguments 
  checkNArg( 3 ) ;
  // Check that there are 2 daughters
  checkNDaug( 2 ) ;
  // Check that the particles of the decay are :
  // B+/-   -> D0/bar K+/-
  // B+/-   -> K+/- D0/bar
  // B0/bar -> K*0/bar D0/bar
  // and nothing else ...
  static EvtId BP  = EvtPDL::getId( "B+" ) ;
  static EvtId BM  = EvtPDL::getId( "B-" ) ;
  static EvtId B0  = EvtPDL::getId( "B0" ) ;
  static EvtId B0B = EvtPDL::getId( "anti-B0" ) ;
  static EvtId KP  = EvtPDL::getId( "K+" ) ;
  static EvtId KM  = EvtPDL::getId( "K-" ) ; 
  static EvtId KS  = EvtPDL::getId( "K*0" ) ;
  static EvtId KSB = EvtPDL::getId( "anti-K*0" ) ;
  static EvtId D0  = EvtPDL::getId( "D0" ) ;
  static EvtId D0B = EvtPDL::getId( "anti-D0" ) ;

  _flag = 0 ;
  
  EvtId parent = getParentId() ;
  EvtId d1     = getDaug( 0 )  ;
  EvtId d2     = getDaug( 1 )  ;

  if ( ( ( parent == BP ) || ( parent == BM  ) ) &&
       ( ( d1     == D0 ) || ( d1     == D0B ) ) && 
       ( ( d2     == KP ) || ( d2     == KM  ) ) ) {
    _flag = 1 ;
    // PHSP Decay 
  }
  else if ( ( ( parent == BP ) || ( parent == BM  ) ) &&
            ( ( d1     == KP ) || ( d1     == KM  ) ) && 
            ( ( d2     == D0 ) || ( d2     == D0B  ) ) ) {
    _flag = 1 ;
    // also PHSP decay
  }
  else if ( ( ( parent == B0 ) || ( parent == B0B ) ) &&
            ( ( d1     == KS ) || ( d1     == KSB ) ) && 
            ( ( d2     == D0 ) || ( d2     == D0B ) ) ) {
    _flag = 2 ;
    // SVS Decay
  }
  
  if ( _flag == 0 ) {
    EvtGenReport(EVTGEN_ERROR , "EvtGen" ) << "EvtBToDDalitzCPK : Invalid mode." 
                               << std::endl ;
    assert( 0 ) ;
  }
}
Beispiel #10
0
void EvtSVPHelAmp::init(){

  // check that there are 4 arguments
  checkNArg(4);
  checkNDaug(2);

  checkSpinParent(EvtSpinType::SCALAR);

  checkSpinDaughter(0,EvtSpinType::VECTOR);
  checkSpinDaughter(1,EvtSpinType::PHOTON);

}
Beispiel #11
0
void EvtPVVCPLH::init(){

  // check that there are 8 arguments (deltaMs no argument anymore)
  checkNArg(8);
  checkNDaug(2);

  checkSpinParent(EvtSpinType::SCALAR);

  checkSpinDaughter(0,EvtSpinType::VECTOR);
  checkSpinDaughter(1,EvtSpinType::VECTOR);

}
Beispiel #12
0
void EvtD0gammaDalitz::init()
{
  // check that there are 0 arguments
  checkNArg(0);

  // Check that this model is valid for the specified decay.
  checkNDaug( 3 );
  checkSpinParent  (    _SCALAR );
  checkSpinDaughter( 0, _SCALAR );
  checkSpinDaughter( 1, _SCALAR );
  checkSpinDaughter( 2, _SCALAR );

  // Get the values of the EvtId objects from the data files.
  readPDGValues();

  // Get the EvtId of the D0 and its 3 daughters.
  getParentId();

  EvtId dau[ 3 ];
  for ( int index = 0; index < 3; index++ )
  {
    dau[ index ] = getDaug( index );
  }

  // Look for K0bar h+ h-. The order will be K[0SL] h+ h-
  for ( int index = 0; index < 3; index++ )
  {
    if      ( ( dau[ index ] == _K0B ) || ( dau[ index ] == _KS ) || ( dau[ index ] == _KL ) )
    {
      _d1 = index;
    }
    else if ( ( dau[ index ] == _PIP ) || ( dau[ index ] == _KP ) )
    {
      _d2 = index;
    }
    else if ( ( dau[ index ] == _PIM ) || ( dau[ index ] == _KM ) )
    {
      _d3 = index;
    }
    else
    {
      reportInvalidAndExit();
    }
  }

  // Check if we're dealing with Ks pi pi or with Ks K K.
  _isKsPiPi = false;
  if ( dau[ _d2 ] == _PIP || dau[ _d2 ] == _PIM )
  {
    _isKsPiPi = true;
  }

}
Beispiel #13
0
void EvtEtaDalitz::init(){

  // check that there are 0 arguments
  checkNArg(0);
  checkNDaug(3);

  checkSpinParent(EvtSpinType::SCALAR);

  checkSpinDaughter(0,EvtSpinType::SCALAR);
  checkSpinDaughter(1,EvtSpinType::SCALAR);
  checkSpinDaughter(2,EvtSpinType::SCALAR);
}
Beispiel #14
0
void EvtBcBsNPi::init() {

  checkNArg(0);

  // check spins
  checkSpinParent(EvtSpinType::SCALAR);
  checkSpinDaughter(0,EvtSpinType::SCALAR);
  // the others are scalar
  for (int i=1; i<=(getNDaug()-1);i++) {
    checkSpinDaughter(i,EvtSpinType::SCALAR);
  }

}
Beispiel #15
0
void EvtKstarnunu::init(){

  // check that there are 0 arguments
  checkNArg(0);
  checkNDaug(3);

  //We expect the parent to be a scalar 
  //and the daughters to be K neutrino netrino

  checkSpinParent(EvtSpinType::SCALAR);

  checkSpinDaughter(0,EvtSpinType::VECTOR);
  checkSpinDaughter(1,EvtSpinType::NEUTRINO);
  checkSpinDaughter(2,EvtSpinType::NEUTRINO);

}
// The inicialization of the decay model
void EvtB2MuMuMuNu::init(){

  // check that there are 0 arguments
  checkNArg(0);
  // check that there are 4 daughteres
  checkNDaug(4);

  // We expect that the parent to be a scalar (B^{-} meson)
  // and the daughters to be Mu^+(k_1), Mu^-(k_2), barNu_{Mu}(k_3) and Mu^-(k_4).
  checkSpinParent(EvtSpinType::SCALAR);

  checkSpinDaughter(0,EvtSpinType::DIRAC);    // Mu^+(k_1)
  checkSpinDaughter(1,EvtSpinType::DIRAC);    // Mu^-(k_2)
  checkSpinDaughter(2,EvtSpinType::NEUTRINO); // barNu_{Mu}(k_3)
  checkSpinDaughter(3,EvtSpinType::DIRAC);    // Mu^-(k_4)

  _msffmodel = new EvtbTosllMSFF();
  _calcamp   = new EvtB2MuMuMuNuAmp(); 

}
Beispiel #17
0
// The inicialization of the decay model
//
// Tn the our model we have are following 4 arguments:
//
//           mu          - the scale parameter, GeV;
//           Nf          - number of "effective" flavors (for b-quark Nf=5);
//           res_swch    - resonant switching parametr:
//                         = 0 the resonant contribution switched OFF, 
//                         = 1 the resonant contribution switched ON;
//           ias         - switching parametr for \alpha_s(M_Z) value:
//                         = 0 PDG 1sigma minimal alpha_s(M_Z), 
//                         = 1 PDG average value  alpha_s(M_Z), 
//                         = 2 PDG 1sigma maximal alpha_s(M_Z).
//           Wolfenstein parameterization for CKM matrix
//                         CKM_A, CKM_lambda, CKM_barrho, CKM_bareta
//
void EvtbsToLLLL::init(){

  // check that there are 8 arguments
  checkNArg(8);
  // check that there are 4 daughteres
  checkNDaug(4);

  // We expect that the parent to be a scalar (B-meson)
  // and the daughters to be l^+, l^-, l^+ and l^-
  checkSpinParent(EvtSpinType::SCALAR);

  // We expect that the all daughters are the ell+ or ell- == DIRAC
  checkSpinDaughter(0,EvtSpinType::DIRAC);
  checkSpinDaughter(1,EvtSpinType::DIRAC);
  checkSpinDaughter(2,EvtSpinType::DIRAC);
  checkSpinDaughter(3,EvtSpinType::DIRAC);

  _mntffmodel = new Evtbs2llGammaFFMNT();
  _wilscoeff  = new EvtbTosllWilsCoeffNLO();
  _calcamp    = new EvtbsToLLLLAmp(); 

}
void EvtSVSNONCPEIGEN::init(){

  // check that there are 11 arguments
  checkNArg(11,7);
  checkNDaug(2);

  checkSpinDaughter(0,EvtSpinType::VECTOR);
  checkSpinDaughter(1,EvtSpinType::SCALAR);

  _dm=getArg(1);
  _phickm=2*getArg(0)+getArg(2);

  _A_f=EvtComplex(getArg(3)*cos(getArg(4)),getArg(3)*sin(getArg(4)));
  _Abar_f=EvtComplex(getArg(5)*cos(getArg(6)),getArg(5)*sin(getArg(6)));
  
  _A_fbar=_Abar_f;
  _Abar_fbar=_A_f;

  if (getNArg()==11){
    _A_fbar=EvtComplex(getArg(7)*cos(getArg(8)),getArg(7)*sin(getArg(8)));
    _Abar_fbar=EvtComplex(getArg(9)*cos(getArg(10)),getArg(9)*sin(getArg(10)));
  }
}
Beispiel #19
0
void EvtVectorIsr::init(){

  // check that there are 2 arguments
  
  checkNDaug(2);
  
  checkSpinParent(EvtSpinType::VECTOR);
  checkSpinDaughter(0,EvtSpinType::VECTOR);
  checkSpinDaughter(1,EvtSpinType::PHOTON);

  int narg = getNArg();
  if ( narg > 4 ) checkNArg(4);

  csfrmn=1.;
  csbkmn=1.;
  fmax=1.2;
  firstorder=false;

  if ( narg > 0 ) csfrmn=getArg(0);
  if ( narg > 1 ) csbkmn=getArg(1);
  if ( narg > 2 ) fmax=getArg(2);
  if ( narg > 3 ) firstorder=true;
}