Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:11:25

0001 /*****************************************************************************
0002  * Project: RooFit                                                           *
0003  * Package: RooFitModels                                                     *
0004  *    File: $Id: RooNonCPEigenDecay.h,v 1.13 2007/05/11 09:13:07 verkerke Exp $
0005  * Authors:                                                                  *
0006  *   AH, Andreas Hoecker,  Orsay,            hoecker@slac.stanford.edu       *
0007  *   SL, Sandrine Laplace, Orsay,            laplace@slac.stanford.edu       *
0008  *   JS, Jan Stark,        Paris,            stark@slac.stanford.edu         *
0009  *   WV, Wouter Verkerke,  UC Santa Barbara, verkerke@slac.stanford.edu      *
0010  *                                                                           *
0011  * Copyright (c) 2000-2005, Regents of the University of California,         *
0012  *                          IN2P3. All rights reserved.                      *
0013  *                                                                           *
0014  * History                                                                   *
0015  *   Nov-2001   WV Created initial version                                   *
0016  *   Dec-2001   SL mischarge correction, direct CPV                          *
0017  *   Jan-2002   AH built dedicated generator + code cleaning                 *
0018  *   Mar-2002   JS committed debugged version to CVS                         *
0019  *   Apr-2002   AH allow prompt (ie, non-Pdf) mischarge treatment            *
0020  *   May-2002   JS Changed the set of CP parameters (mathematically equiv.)  *
0021  *                                                                           *
0022  * Redistribution and use in source and binary forms,                        *
0023  * with or without modification, are permitted according to the terms        *
0024  * listed in LICENSE (http://roofit.sourceforge.net/license.txt)             *
0025  *****************************************************************************/
0026 #ifndef ROO_NONCPEIGEN_DECAY
0027 #define ROO_NONCPEIGEN_DECAY
0028 
0029 #include "RooAbsAnaConvPdf.h"
0030 #include "RooRealProxy.h"
0031 #include "RooCategoryProxy.h"
0032 
0033 class RooNonCPEigenDecay : public RooAbsAnaConvPdf {
0034 
0035 public:
0036 
0037   enum DecayType { SingleSided, DoubleSided, Flipped };
0038 
0039   // Constructors, assignment etc
0040   inline RooNonCPEigenDecay( void ) { }
0041 
0042   // with explicit mischarge
0043   RooNonCPEigenDecay( const char *name, const char *title,
0044             RooRealVar&     t,
0045                  RooAbsCategory& tag,
0046             RooAbsReal&     tau,
0047             RooAbsReal&     dm,
0048             RooAbsReal&     avgW,
0049             RooAbsReal&     delW,
0050             RooAbsCategory& rhoQ,
0051             RooAbsReal&     correctQ,
0052             RooAbsReal&     wQ,
0053             RooAbsReal&     a,
0054             RooAbsReal&     C,
0055             RooAbsReal&     delC,
0056             RooAbsReal&     S,
0057             RooAbsReal&     delS,
0058             const RooResolutionModel& model,
0059             DecayType       type = DoubleSided );
0060 
0061   // no explicit mischarge (=> set to zero)
0062   RooNonCPEigenDecay( const char *name, const char *title,
0063             RooRealVar&     t,
0064                  RooAbsCategory& tag,
0065             RooAbsReal&     tau,
0066             RooAbsReal&     dm,
0067             RooAbsReal&     avgW,
0068             RooAbsReal&     delW,
0069             RooAbsCategory& rhoQ,
0070             RooAbsReal&     correctQ,
0071             RooAbsReal&     a,
0072             RooAbsReal&     C,
0073             RooAbsReal&     delC,
0074             RooAbsReal&     S,
0075             RooAbsReal&     delS,
0076             const RooResolutionModel& model,
0077             DecayType       type = DoubleSided );
0078 
0079   RooNonCPEigenDecay(const RooNonCPEigenDecay& other, const char* name=nullptr);
0080   TObject* clone(const char* newname) const override {
0081     return new RooNonCPEigenDecay(*this,newname);
0082   }
0083 
0084   double coefficient( Int_t basisIndex ) const override;
0085 
0086   Int_t getCoefAnalyticalIntegral( Int_t coef, RooArgSet& allVars,
0087                     RooArgSet& analVars, const char* rangeName=nullptr ) const override;
0088   double coefAnalyticalIntegral( Int_t coef, Int_t code, const char* rangeName=nullptr ) const override;
0089 
0090   Int_t getGenerator( const RooArgSet& directVars,
0091             RooArgSet&       generateVars, bool staticInitOK=true ) const override;
0092   void initGenerator( Int_t code ) override;
0093   void generateEvent( Int_t code ) override;
0094 
0095 protected:
0096 
0097   RooRealProxy     _acp ;
0098   RooRealProxy     _avgC ;
0099   RooRealProxy     _delC ;
0100   RooRealProxy     _avgS ;
0101   RooRealProxy     _delS ;
0102   RooRealProxy     _avgW ;
0103   RooRealProxy     _delW ;
0104   RooRealProxy     _t ;
0105   RooRealProxy     _tau;
0106   RooRealProxy     _dm;
0107   RooCategoryProxy _tag;
0108   RooCategoryProxy _rhoQ;
0109   RooRealProxy     _correctQ;
0110   RooRealProxy     _wQ; ///< dummy mischarge (must be set to zero!)
0111   double         _genB0Frac;
0112   double         _genRhoPlusFrac;
0113 
0114   DecayType        _type;
0115   Int_t            _basisExp;
0116   Int_t            _basisSin;
0117   Int_t            _basisCos;
0118 
0119   ClassDefOverride(RooNonCPEigenDecay,1) // PDF to model CP-violating decays to final states which are not CP eigenstates
0120 };
0121 
0122 #endif