16 #ifndef ROO_TRUTH_MODEL 
   17 #define ROO_TRUTH_MODEL 
   21 class RooTruthModel : 
public RooResolutionModel {
 
   24   enum RooTruthBasis { noBasis=0, expBasisMinus= 1, expBasisSum= 2, expBasisPlus= 3,
 
   25                                   sinBasisMinus=11, sinBasisSum=12, sinBasisPlus=13,
 
   26                                   cosBasisMinus=21, cosBasisSum=22, cosBasisPlus=23,
 
   29               coshBasisMinus=51,coshBasisSum=52,coshBasisPlus=53,
 
   30               sinhBasisMinus=61,sinhBasisSum=62,sinhBasisPlus=63,
 
   33   enum BasisType { none=0, expBasis=1, sinBasis=2, cosBasis=3,
 
   34                    linBasis=4, quadBasis=5, coshBasis=6, sinhBasis=7 } ;
 
   35   enum BasisSign { Both=0, Plus=+1, Minus=-1 } ;
 
   38   inline RooTruthModel() { }
 
   39   RooTruthModel(
const char *name, 
const char *title, RooRealVar& x) ; 
 
   40   RooTruthModel(
const RooTruthModel& other, 
const char* name=0);
 
   41   virtual TObject* clone(
const char* newname)
 const { 
return new RooTruthModel(*
this,newname) ; }
 
   42   virtual ~RooTruthModel();
 
   44   virtual Int_t basisCode(
const char* name) 
const ;
 
   46   virtual RooAbsGenContext* modelGenContext(
const RooAbsAnaConvPdf& convPdf, 
const RooArgSet &vars,
 
   47                                             const RooDataSet *prototype=0, 
const RooArgSet* auxProto=0,
 
   48                                             Bool_t verbose= kFALSE) 
const;
 
   50   Int_t getGenerator(
const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) 
const;
 
   51   void generateEvent(Int_t code);
 
   53   Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, 
const char* rangeName=0) 
const ;
 
   54   Double_t analyticalIntegral(Int_t code, 
const char* rangeName=0) 
const ;
 
   57   virtual Double_t evaluate() 
const ;
 
   58   virtual void changeBasis(RooFormulaVar* basis) ;
 
   60   ClassDef(RooTruthModel,1)