]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenModels/EvtBtoXsgammaFlatEnergy.cpp
ATO-78 - Technical changes to compare different calibrations
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtBtoXsgammaFlatEnergy.cpp
CommitLineData
da0e9ce3 1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Module: EvtBtoXsgammaKagan.cc
9//
10// Description:
11// Routine to perform two-body B->Xs,gamma decays with a fixed hadronic
12// mass. For spectrum measurements.
13// The input parameters are 1: the hadronic mass
14// Modification history:
15//
16// Jim Libby October 11 2002
17//------------------------------------------------------------------------
18//
19#include "EvtGenBase/EvtPatches.hh"
20
21#include <stdlib.h>
22#include "EvtGenModels/EvtBtoXsgamma.hh"
23#include "EvtGenModels/EvtBtoXsgammaFlatEnergy.hh"
24#include "EvtGenBase/EvtRandom.hh"
25#include "EvtGenBase/EvtReport.hh"
26#include <fstream>
27using std::endl;
28using std::fstream;
29
30EvtBtoXsgammaFlatEnergy::~EvtBtoXsgammaFlatEnergy(){
31}
32
33void EvtBtoXsgammaFlatEnergy::init(int nArg, double* args){
34
35 if ((nArg) > 3 || (nArg > 1 && nArg <3)){
36
37 report(ERROR,"EvtGen") << "EvtBtoXsgamma generator model "
38 << "EvtBtoXsgammaFlatEnergy expected "
39 << "either 1(default config) or two arguments but found: "<<nArg<<endl;
40 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
41 ::abort();
42 }
43 _mB0=5.2794;
44 double mPi = 0.140;
45 double mK = 0.494;
46 if(nArg == 1){
47 _eMin = 1.7;
48 //Invariant mass of Xsd must be greater the m_pi+m_K leads to
49 //Egamma < (m_B**2-(m_pi+m_k)**2)/(2m_B)
50 _eMax = (pow(_mB0,2)-pow(mPi+mK,2))/(2.0*_mB0);
51 }else{
52 _eMin=args[1];
53 _eMax=args[2];
54 }
55 if (_eMax>(pow(_mB0,2)-pow(mPi+mK,2))/(2.0*_mB0)){
56 report(ERROR,"EvtGen") << "Emax greater than Kinematic limit" << endl;
57 report(ERROR,"EvtGen") << "Reset to the kinematic limit" << endl;
58 report(ERROR,"EvtGen") << "(m_B**2-(m_pi+m_k)**2)/(2m_B)" << endl;
59 _eMax = (pow(_mB0,2)-pow(mPi+mK,2))/(2.0*_mB0);
60 }
61 _eRange=_eMax-_eMin;
62}
63
64double EvtBtoXsgammaFlatEnergy::GetMass( int /*Xscode*/ ){
65
66 double eGamma = EvtRandom::Flat(_eRange)+_eMin;
67 double mH = sqrt(pow(_mB0,2)-2.0*_mB0*eGamma);
68 return mH;
69}
70