18#ifndef GENERATORMODULESEVTDECAY_H
19#define GENERATORMODULESEVTDECAY_H
21#include "HepMC/GenEvent.h"
22#include "HepMC/GenParticle.h"
30#include "GaudiKernel/Algorithm.h"
31#include "GaudiKernel/ISvcLocator.h"
32#include "GaudiKernel/NTuple.h"
34#include "CLHEP/Random/Ranlux64Engine.h"
41#include "DataInfoSvc/IDataInfoSvc.h"
42#include "DataInfoSvc/DataInfoSvc.h"
62 HepRandomEngine* m_engine;
68 EvtDecay(
const string& name, ISvcLocator* pSvcLocator);
77double ampsLenu(vector<double> Vexp,std::vector<double> vpars);
78double ampsLbenu(vector<double> Vexp,std::vector<double> vpars);
79double HV(
double i,
double j,vector<double> Vexp, std::vector<double> vpars);
80double HA(
double i,
double j,vector<double> Vexp, std::vector<double> vpars);
86 StatusCode callEvtGen( HepMC::GenEvent* hepMCevt );
87 StatusCode callBesEvtGen( HepMC::GenEvent* hepMCevt );
88 StatusCode makeHepMC(
EvtParticle*, HepMC::GenEvent*, HepMC::GenParticle*);
93 void MeVToGeV(HepMC::GenEvent* hepMCevt);
94 void GeVToMeV(HepMC::GenEvent* hepMCevt);
96 void ReadTruth(
EvtParticle* part,std::vector<std::vector<string> > mylist);
99 int isNumber(
double d);
107 vector<long int> m_seeds;
111string m_DecayDec, m_PdtTable, userDecFileName,m_DecayTop,m_DecayRec, m_ParentPart;
113 std::ofstream outfile,outfile2,truth;
114 std::vector<int> m_InSeeds;
116 bool _mDIY,m_RdMeasuredEcms;
117 double dbEcms, m_beamEnergySpread;
119 bool m_Ncharge,m_NtupleFile, m_Psi4040OpenCharm, m_Psi2openCharm, m_statDecays;
121 int AllTrk_index,Trk_index[500];
129 string m_SB3File, m_SB3HT;
135 int pdg0,pdg1,pdg2,pdg,multi;
142 string m_FDPparticle;
148 int br[500],vbr[500];
150 bool isCharmonium(
EvtId xid);
151 bool isCharm(
EvtId xid);
157 bool m_tagLundModel,_RvalueTag;
159 std::vector<std::string> m_mystring;
160 std::vector<double> m_wind0,m_wind1,m_wind2;
161 std::vector<int> m_cluster0,m_cluster1,m_cluster2;
163 std::vector<std::vector<std::string> > m_ReadTruth;
165 double m_eBeamPolarization;
168 std::vector<double> m_polarization;
169 std::string m_truthFile,m_truthPart;
171NTuple::Tuple* m_tuple;
172NTuple::Item<int> TotNumTrk;
173NTuple::Item<int> m_nchr;
174NTuple::Item<int> m_nchr_e;
175NTuple::Item<int> m_nchr_mu;
176NTuple::Item<int> m_nchr_pi;
177NTuple::Item<int> m_nchr_k;
178NTuple::Item<int> m_nchr_p;
179NTuple::Item<int> m_gamma;
180NTuple::Item<int> m_gammaFSR;
181NTuple::Item<int> m_flag1;
183NTuple::Array<int> m_Trk_index;
184NTuple::Array<int> m_fst;
185NTuple::Array<double> m_px_trk;
186NTuple::Array<double> m_py_trk;
187NTuple::Array<double> m_pz_trk;
188NTuple::Array<double> m_en_trk;
190NTuple::Tuple* mass_tuple;
191NTuple::Item<double> m_m12;
192NTuple::Item<double> m_m13;
193NTuple::Item<double> m_m23;
194NTuple::Item<double> m_m1;
195NTuple::Item<double> m_m2;
196NTuple::Item<double> m_m3;
197NTuple::Item<double> m_cos1;
198NTuple::Item<double> m_cos2;
199NTuple::Item<double> m_cos3;
200NTuple::Item<int> m_ich;
201NTuple::Tuple* massgen_tuple;
202NTuple::Item<double> _m12;
203NTuple::Item<double> _m13;
204NTuple::Item<double> _m23;
205NTuple::Item<double> _m1;
206NTuple::Item<double> _m2;
207NTuple::Item<double> _m3;
208NTuple::Item<double> _cos1;
209NTuple::Item<double> _cos2;
210NTuple::Item<double> _cos3;
211NTuple::Item<int> _ich;
double ampsLenu(vector< double > Vexp, std::vector< double > vpars)
DataInfoSvc * dataInfoSvc
IDataInfoSvc * tmpInfoSvc
double energySpread(double mu, double sigma)
double getObsXsection(double mhds, int mode)
double ampsLbenu(vector< double > Vexp, std::vector< double > vpars)
double HV(double i, double j, vector< double > Vexp, std::vector< double > vpars)
double HA(double i, double j, vector< double > Vexp, std::vector< double > vpars)
manage multiple CLHEP random engines as named streams