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);
83 StatusCode callEvtGen( HepMC::GenEvent* hepMCevt );
84 StatusCode callBesEvtGen( HepMC::GenEvent* hepMCevt );
85 StatusCode makeHepMC(
EvtParticle*, HepMC::GenEvent*, HepMC::GenParticle*);
90 void MeVToGeV(HepMC::GenEvent* hepMCevt);
91 void GeVToMeV(HepMC::GenEvent* hepMCevt);
93 void ReadTruth(
EvtParticle* part,std::vector<std::vector<string> > mylist);
96 int isNumber(
double d);
103 vector<long int> m_seeds;
107string m_DecayDec, m_PdtTable, userDecFileName,m_DecayTop,m_DecayRec, m_ParentPart;
109 std::ofstream outfile,outfile2,truth;
110 std::vector<int> m_InSeeds;
112 bool _mDIY,m_RdMeasuredEcms;
115 bool m_Ncharge,m_NtupleFile, m_Psi4040OpenCharm, m_Psi2openCharm, m_statDecays;
117 int AllTrk_index,Trk_index[500];
125 string m_SB3File, m_SB3HT;
131 int pdg0,pdg1,pdg2,pdg,multi;
138 string m_FDPparticle;
144 int br[500],vbr[500];
146 bool isCharmonium(
EvtId xid);
147 bool isCharm(
EvtId xid);
155 std::vector<std::string> m_mystring;
156 std::vector<double> m_wind0,m_wind1,m_wind2;
157 std::vector<int> m_cluster0,m_cluster1,m_cluster2;
159 std::vector<std::vector<std::string> > m_ReadTruth;
161 double m_eBeamPolarization;
164 std::vector<double> m_polarization;
165 std::string m_truthFile,m_truthPart;
167NTuple::Tuple* m_tuple;
168NTuple::Item<int> TotNumTrk;
169NTuple::Item<int> m_nchr;
170NTuple::Item<int> m_nchr_e;
171NTuple::Item<int> m_nchr_mu;
172NTuple::Item<int> m_nchr_pi;
173NTuple::Item<int> m_nchr_k;
174NTuple::Item<int> m_nchr_p;
175NTuple::Item<int> m_gamma;
176NTuple::Item<int> m_gammaFSR;
177NTuple::Item<int> m_flag1;
179NTuple::Array<int> m_Trk_index;
180NTuple::Array<int> m_fst;
181NTuple::Array<double> m_px_trk;
182NTuple::Array<double> m_py_trk;
183NTuple::Array<double> m_pz_trk;
184NTuple::Array<double> m_en_trk;
186NTuple::Tuple* mass_tuple;
187NTuple::Item<double> m_m12;
188NTuple::Item<double> m_m13;
189NTuple::Item<double> m_m23;
190NTuple::Item<double> m_m1;
191NTuple::Item<double> m_m2;
192NTuple::Item<double> m_m3;
193NTuple::Item<double> m_cos1;
194NTuple::Item<double> m_cos2;
195NTuple::Item<double> m_cos3;
196NTuple::Item<int> m_ich;
197NTuple::Tuple* massgen_tuple;
198NTuple::Item<double> _m12;
199NTuple::Item<double> _m13;
200NTuple::Item<double> _m23;
201NTuple::Item<double> _m1;
202NTuple::Item<double> _m2;
203NTuple::Item<double> _m3;
204NTuple::Item<double> _cos1;
205NTuple::Item<double> _cos2;
206NTuple::Item<double> _cos3;
207NTuple::Item<int> _ich;
double ampsLenu(vector< double > Vexp, std::vector< double > vpars)
DataInfoSvc * dataInfoSvc
IDataInfoSvc * tmpInfoSvc
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