BOSS 7.1.2
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDecay Class Reference

#include <EvtDecay.h>

+ Inheritance diagram for EvtDecay:

Public Member Functions

 EvtDecay (const string &name, ISvcLocator *pSvcLocator)
 
StatusCode initialize ()
 
StatusCode execute ()
 
StatusCode finalize ()
 
double ampsLenu (vector< double > Vexp, std::vector< double > vpars)
 
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)
 
double getObsXsection (double mhds, int mode)
 
double energySpread (double mu, double sigma)
 

Public Attributes

IDataInfoSvctmpInfoSvc
 
DataInfoSvcdataInfoSvc
 

Detailed Description

Definition at line 65 of file EvtDecay.h.

Constructor & Destructor Documentation

◆ EvtDecay()

EvtDecay::EvtDecay ( const string & name,
ISvcLocator * pSvcLocator )

Definition at line 88 of file EvtDecay.cxx.

88 :Algorithm( name, pSvcLocator )
89{
90
91
92
93 // these can be used to specify alternative locations or filenames
94 // for the EvtGen particle and channel definition files.
95
96 declareProperty("DecayDecDir", m_DecayDec = "");
97 declareProperty("PdtTableDir", m_PdtTable = "");
98 declareProperty("userDecayTableName", userDecFileName = "NONE");
99 declareProperty("DecayTopology", m_DecayTop = ""); // output decay topology to a file specified by user
100 declareProperty("DecayRecord", m_DecayRec = ""); // output decay topology of one particle specified by user to a file
101 declareProperty("ParentParticle", m_ParentPart = "NONE");// Mothor particle name in pdt.table for only running BesEvtGen
102 declareProperty("Multiplicity", m_Ncharge = false); // output ncharge number of an event
103 declareProperty("NutupleFile",m_NtupleFile = false); // output Ntuple file
104 declareProperty("mDIY",_mDIY= false); // mDIY model
105 declareProperty("FDPdata",m_SB3File = ""); // Fit Dalitz Plot (FDP) data file name (*.root)
106 declareProperty("FDPHisT",m_SB3HT = ""); // histogram title of Dalitz plot in data file
107 declareProperty("FDPpart",m_FDPparticle =""); //to assign the FDP parent particle name (string)
108 declareProperty("TruthFile",m_truthFile ="");
109 declareProperty("TruthPart",m_truthPart ="");
110 declareProperty("Psi3SopenCharm",m_Psi4040OpenCharm=false);
111 declareProperty("Psi2openCharm", m_Psi2openCharm=false);
112 declareProperty("SetMthrForConExc",m_SetMthr=0.0);
113 declareProperty("statDecays",m_statDecays=false);
114 declareProperty("TagLundCharmModel", m_tagLundModel=false);
115 m_mystring.clear();
116 declareProperty("FileForTrackGen", m_mystring);
117 //for polarized charmonium production
118 m_polarization.clear();//= diag{1+Pe, 0, 1-Pe} with electron polarization Pe
119 declareProperty("polarization", m_polarization);
120 declareProperty("eBeamPolarization", m_eBeamPolarization=-1);
121 m_cluster0.clear();m_wind0.clear();
122 m_cluster1.clear();m_wind1.clear();
123 m_cluster2.clear();m_wind2.clear();
124 declareProperty("cluster0",m_cluster0);
125 declareProperty("cluster1",m_cluster1);
126 declareProperty("cluster2",m_cluster2);
127 declareProperty("masswin0",m_wind0);
128 declareProperty("masswin1",m_wind1);
129 declareProperty("masswin2",m_wind2);
130 declareProperty("OutputP4",m_outputp4="");
131 declareProperty("ReadMeasuredEcms", m_RdMeasuredEcms = false);
132 declareProperty("beamEnergySpread", m_beamEnergySpread = 0);
133 m_ReadTruth.clear();
134 declareProperty("ReadTruthAtCM",_truthAtCM=false);
135 declareProperty("ReadTruth",m_ReadTruth);
136 //ReadTruth={{"ParentName"},{"i0","i1","i2"},{"j0","j1","j2","j3"}}, where the first part. is Parent->getDaug(i0)->getDaug(i1)->getDaug(i2),
137 //and second particle is Parent ->getDaug(j0)->getDaug(j1)->getDaug(j2)->getDaug(j3);
138 declareProperty("RvalueTag",_RvalueTag=false);
139 declareProperty("PrintFSFor",m_printfs="");
140}

Member Function Documentation

◆ ampsLbenu()

double EvtDecay::ampsLbenu ( vector< double > Vexp,
std::vector< double > vpars )

◆ ampsLenu()

double EvtDecay::ampsLenu ( vector< double > Vexp,
std::vector< double > vpars )

◆ energySpread()

double EvtDecay::energySpread ( double mu,
double sigma )

Definition at line 1616 of file EvtDecay.cxx.

1616 {
1617 //mu: mean value in Gaussian
1618 //sigma: variance in Gaussian
1619 rloop:
1620 int n=12;
1621 double ri=0;
1622 for(int i=0;i<n;i++){
1623 double pm= EvtRandom::Flat(0.,1);
1624 ri += pm;
1625 }
1626 double eta=sqrt(n*12.0)*(ri/12-0.5);
1627 double xsig= sigma*eta+mu;
1628 double mx0=EvtConExc::mlow;
1629 double mx1=EvtConExc::mup;
1630 if(xsig<mx0 || xsig>mx1) goto rloop;
1631 return xsig;
1632}
TTree * sigma
const Int_t n
static double mlow
Definition EvtConExc.hh:235
static double mup
Definition EvtConExc.hh:235
static double Flat()
Definition EvtRandom.cc:74

◆ execute()

StatusCode EvtDecay::execute ( )

Definition at line 343 of file EvtDecay.cxx.

344{
345 //new Added
346 EvtParticle::_NextLevelDauNum=0; //////////add for Model:FromParent
347
348 MsgStream log(messageService(), name());
349 // log << MSG::INFO << "EvtDecay executing" << endreq;
350 //------------------
351 string key = "GEN_EVENT";
352 // retrieve event from Transient Store (Storegate)
353 SmartDataPtr<McGenEventCol> McEvtColl(eventSvc(), "/Event/Gen");
354
355 m_numberEvent += 1;
356 writeFlag = 0;
357 //std::cout<<"EvtNumber= "<<m_numberEvent<<std::endl;
358 if ( McEvtColl == 0 )
359 {
360 //std::cout<<"McEvtColl == 0 INFO: Using the callBesEvtGen!!"<<std::endl;
361 HepMC::GenEvent* evt=new GenEvent();
362 evt->set_event_number(m_numberEvent);
363
364 //read Ecms from the database
365 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
366 int runNo=eventHeader->runNumber();
367 int event=eventHeader->eventNumber();
368 bool newRunFlag=0;
369 if(runNo != 0 && runNo != m_runNo){m_runNo=runNo;newRunFlag = true;}else{newRunFlag=false;}
370 if(m_RdMeasuredEcms&& newRunFlag){// using cms energy of beam read from database
371 runNo = std::abs(runNo);
372 ReadME theME(runNo);
373 if(theME.isRunNoValid()){
374 dbEcms=theME.getEcms();
375 std::cout<<"Read Ecms= "<<dbEcms<<std::endl;
376 if(dbEcms!=0){
377 std::cout<<"INFO: Read the MeasuredEcms"<<std::endl;
378 }
379 else{
380 std::cout<<"ERROR: Can not read the MeasuredEcms, try to turn off the ReadEcmsDB"<<std::endl;
381 return StatusCode::FAILURE;
382 }
383 }
384 }
385 //end of read Ecms
386
387 callBesEvtGen( evt );
388 if(!(m_DecayTop=="")) evt->print(outfile);
389
390 //create a Transient store
391 McGenEventCol *mcColl = new McGenEventCol;
392 McGenEvent* mcEvent = new McGenEvent(evt);
393 mcColl->push_back(mcEvent);
394 StatusCode sc = eventSvc()->registerObject("/Event/Gen",mcColl);
395 if(sc != SUCCESS) return StatusCode::FAILURE;
396
397 } else // (McEvtColl != 0)
398 {
399
400 //std::cout<<"McEvtColl == 1 INFO: Using the callEvtGen!!"<<std::endl;
401 McGenEventCol::iterator mcItr;
402 for( mcItr = McEvtColl->begin(); mcItr != McEvtColl->end(); mcItr++ )
403 {
404 HepMC::GenEvent* hEvt = (*mcItr)->getGenEvt();
405 // MeVToGeV( hEvt );
406
407 callEvtGen( hEvt );
408
409 if(!(m_DecayTop=="")) hEvt->print(outfile);
410 // GeVToMeV( hEvt );
411 // if(!(m_DecayRec=="")) outfile2<<std::endl;
412 if(!(m_DecayRec=="")) std::cout<<std::endl;
413 };
414 }
415 if( m_NtupleFile ){ m_tuple->write();}
416
417 if(_mDIY){
418 std::cout<<"helangs ";
419 for(int i=0;i<m_vangs.size();i++) std::cout<<m_vangs[i]<<" ";
420 std::cout<<std::endl;
421 }
422 return StatusCode::SUCCESS;
423}
int runNo
Definition DQA_TO_DB.cxx:12
ObjectVector< McGenEvent > McGenEventCol
Definition McGenEvent.h:39
*************DOUBLE PRECISION m_pi *DOUBLE PRECISION m_HvecTau2 DOUBLE PRECISION m_HvClone2 DOUBLE PRECISION m_gamma1 DOUBLE PRECISION m_gamma2 DOUBLE PRECISION m_thet1 DOUBLE PRECISION m_thet2 INTEGER m_IFPHOT *COMMON c_Taupair $ !Spin Polarimeter vector first Tau $ !Spin Polarimeter vector second Tau $ !Clone Spin Polarimeter vector first Tau $ !Clone Spin Polarimeter vector second Tau $ !Random Euler angle for cloning st tau $ !Random Euler angle for cloning st tau $ !Random Euler angle for cloning st tau $ !Random Euler angle for cloning nd tau $ !Random Euler angle for cloning nd tau $ !Random Euler angle for cloning nd tau $ !phi of HvecTau1 $ !theta of HvecTau1 $ !phi of HvecTau2 $ !theta of HvecTau2 $ !super key
Definition Taupair.h:42
static int _NextLevelDauNum

◆ finalize()

StatusCode EvtDecay::finalize ( )

Definition at line 1008 of file EvtDecay.cxx.

1009{
1010
1011 if(EvtCalHelAmp::nevt>0){
1012 double H2=EvtCalHelAmp::_H2;
1013 double H1=EvtCalHelAmp::_H1;
1014 double H0=EvtCalHelAmp::_H0;
1015 double H2err=EvtCalHelAmp::_H2err;
1016 double H1err=EvtCalHelAmp::_H1err;
1017 double H0err=EvtCalHelAmp::_H0err;
1018 int nd = EvtCalHelAmp::nevt;
1019 std::cout<<"Calculated helicity amplitude sqaured are:"<<std::endl;
1020 std::cout<<"|H_{2}|^2=|H_{-2}|^2= "<<H2/nd<<" +/- "<<sqrt(H2err/nd)<<endl;
1021 std::cout<<"|H_{1}|^2=|H_{-1}|^2= "<<H1/nd<<" +/- "<<sqrt(H1err/nd)<<endl;
1022 //std::cout<<"|H_{0}|^2= "<<H0/nd <<" +/- "<<sqrt(H0err/nd)<<endl;
1023 }
1024 MsgStream log(messageService(), name());
1025 truth.close();
1026 log << MSG::INFO << "EvtDecay finalized" << endreq;
1027 fstream Forfile;
1028 Forfile.open("fort.16",ios::in);
1029 char delcmd[300];
1030 strcpy(delcmd,"rm -f ");
1031 strcat(delcmd,"fort.16");
1032 // if(Forfile)system(delcmd);
1033
1034 fstream Forfile2;
1035 Forfile2.open("fort.22",ios::in);
1036 strcpy(delcmd,"rm -f ");
1037 strcat(delcmd,"fort.22");
1038 // if(Forfile2)system(delcmd);
1039
1040 // To get the branching fraction of the specified mode in Lundcharm Model
1041 /*
1042 EvtLundCharm lundcharmEvt;
1043 int nevt=lundcharmEvt.getTotalEvt();
1044 std::cout<<"The total number of the specified mode is "<<nevt<<std::endl;
1045 */
1046 int totalEvt=0;
1047 if(!(m_SB3File=="" || m_SB3HT=="")){
1048 for(int i=0;i<500;i++){totalEvt=totalEvt+br[i];}
1049 for(int i=0;i<500;i++){
1050 double bi=1.0*br[i]/totalEvt;
1051 std::cout<<"Branching fraction of channel "<<i<<" is: "<<bi<<std::endl;
1052 if(br[i]==0) break;
1053 }
1054 }
1055
1056 if(m_statDecays){
1057 int totalEvt=0;
1058 for(int i=0;i<=totalChannels;i++){totalEvt=totalEvt+br[i];}
1059 std::cout<<"==================Statistical first chain decay ==============================="<<std::endl;
1060 std::cout<<"i-th channel Events Generated Branching fraction generated "<<std::endl;
1061 for(int i=0;i<=totalChannels;i++){
1062 std::cout<<"| "<<i<<" "<<br[i]<<" "<<br[i]*1.0/totalEvt<<std::endl;
1063
1064 }
1065 std::cout<<"--------------------------------------------------------------------------------"<<std::endl;
1066 std::cout<<" sum: "<<totalEvt<<" "<<"1"<<std::endl;
1067 std::cout<<"================== End of statistical first chain decay ========================"<<std::endl;
1068 }
1069
1070 return StatusCode::SUCCESS;
1071}
static double _H0err
static double _H1err
static double _H0
static int nevt
static double _H1
static double _H2
static double _H2err

◆ getObsXsection()

double EvtDecay::getObsXsection ( double mhds,
int mode )

◆ HA()

double EvtDecay::HA ( double i,
double j,
vector< double > Vexp,
std::vector< double > vpars )

◆ HV()

double EvtDecay::HV ( double i,
double j,
vector< double > Vexp,
std::vector< double > vpars )

◆ initialize()

StatusCode EvtDecay::initialize ( )

Definition at line 143 of file EvtDecay.cxx.

143 {
144
145 MsgStream log(messageService(), name());
146 //system("cat $BESEVTGENROOT/share/phokhara_9.1.fferr>phokhara_9.1.fferr");
147 //system("cat $BESEVTGENROOT/share/phokhara_9.1.ffwarn>phokhara_9.1.ffwarn");
148 system("cat $BESEVTGENROOT/share/phokhara_10.0.fferr>phokhara_10.0.fferr"); //modified by luojiashun 2022.2.21
149 system("cat $BESEVTGENROOT/share/phokhara_10.0.ffwarn>phokhara_10.0.ffwarn"); //modified by luojiashun 2022.2.21
150
151 if(m_truthFile!=""){truth.open(m_truthFile.c_str());}
152 log << MSG::INFO << "EvtDecay initialize" << endreq;
153 static const bool CREATEIFNOTTHERE(true);
154 StatusCode RndmStatus = service("BesRndmGenSvc", p_BesRndmGenSvc, CREATEIFNOTTHERE);
155 if (!RndmStatus.isSuccess() || 0 == p_BesRndmGenSvc)
156 {
157 log << MSG::ERROR << " Could not initialize Random Number Service" << endreq;
158 return RndmStatus;
159 }
160
161 EvtGlobalSet::SV.clear();
162 for(int i=0;i<m_mystring.size();i++){EvtGlobalSet::SV.push_back(m_mystring[i]);}
163
164 EvtGlobalSet::iVV.clear();
165 EvtGlobalSet::dVV.clear();
166 std::vector<std::vector<int> >myivv;
167 std::vector<std::vector<double> >mydvv;
168
169 EvtConExc::SetMthr=m_SetMthr;
170
171 myivv.push_back(m_cluster0);
172 myivv.push_back(m_cluster1);
173 myivv.push_back(m_cluster2);
174
175 mydvv.push_back(m_wind0);
176 mydvv.push_back(m_wind1);
177 mydvv.push_back(m_wind2);
178
179 for(int i=0;i<myivv.size();i++){
180 std::vector<int> theivv;
181 for(int j=0;j<myivv[i].size();j++){
182 theivv.push_back(myivv[i][j]);
183 }
184 if(theivv.size()) EvtGlobalSet::iVV.push_back(theivv);
185 }
186
187 for(int i=0;i<mydvv.size();i++){
188 std::vector<double> thedvv;
189 for(int j=0;j<mydvv[i].size();j++){
190 thedvv.push_back(mydvv[i][j]);
191 }
192 if(thedvv.size()) EvtGlobalSet::dVV.push_back(thedvv);
193 }
194
195
196 if(m_eBeamPolarization>1) {std::cout<<"The e-beam polaziation should be in 0 to 1"<<std::endl;abort();}
197 m_numberEvent=0;
198 first = true;
199 m_ampscalflag = true;
200 // Save the random number seeds in the event
201 CLHEP::HepRandomEngine* engine = p_BesRndmGenSvc->GetEngine("EVTGEN");
202 const long s = engine->getSeed();
203 p_BesRndmGenSvc->setGenseed(s+1);
204
205 m_seeds.clear();
206 m_seeds.push_back(s);
207 totalChannels = 0;
208
209 // open an interface to EvtGen
210
211 if ( m_DecayDec == "") { //use default DECAY.DEC and pdt.table if not defined by user
212 m_DecayDec=getenv("BESEVTGENROOT");
213 m_DecayDec +="/share/DECAY.DEC";
214 }
215
216 if ( m_PdtTable == "") {
217 m_PdtTable =getenv("BESEVTGENROOT");
218 m_PdtTable +="/share/pdt.table";
219 }
220
221 char catcmd[300]; //output user decay cards to log file
222 std::cout<<"===================== user decay card ========================"<<std::endl;
223 strcpy(catcmd, "cat ");
224 strcat(catcmd, userDecFileName.c_str());
225 system(catcmd);
226
229
230 // write decay cards to the root file: pingrg@2009-09-09
231 StatusCode status;
232 status = service("DataInfoSvc",tmpInfoSvc);
233 if (status.isSuccess()) {
234 log << MSG::INFO << "got the DataInfoSvc" << endreq;
235 dataInfoSvc=dynamic_cast<DataInfoSvc *>(tmpInfoSvc);
236 dataInfoSvc->setDecayCard(userDecFileName);
237 } else {
238 log << MSG::ERROR << "could not get the DataInfoSvc" << endreq;
239 return StatusCode::FAILURE;
240 }
241
242
243
244 m_RandomEngine = new EvtBesRandom(engine);
245 m_Gen = new EvtGen( m_DecayDec.c_str(), m_PdtTable.c_str(), m_RandomEngine );
246
247 if(userDecFileName =="NONE") log << MSG::INFO << "EvtDecay User did not define his Decay table EvtGen will use standart" << endreq;
248 if(!(userDecFileName =="NONE")) m_Gen->readUDecay(userDecFileName.c_str());
249
250 if(!(m_DecayTop==" ")) {
251 outfile.open(m_DecayTop.c_str());
252 }
253
254 //for output Ntuple file, pingrg-2009-09-07
255
256
257 if(m_NtupleFile) {
258 NTuplePtr nt1(ntupleSvc(),"MYROOTFILE/Trk");
259 if(nt1) {m_tuple=nt1;}
260 else {
261 m_tuple = ntupleSvc()->book ("MYROOTFILE/Trk", CLID_ColumnWiseTuple, "Generator-trk-Ntuple");
262 if(m_tuple){
263 status = m_tuple->addItem ("TotNumTrk", TotNumTrk, 0,100);
264 status = m_tuple->addIndexedItem ("Trk_index", TotNumTrk, m_Trk_index);
265 status = m_tuple->addIndexedItem ("m_px_trk", TotNumTrk, m_px_trk);
266 status = m_tuple->addIndexedItem ("m_py_trk", TotNumTrk, m_py_trk);
267 status = m_tuple->addIndexedItem ("m_pz_trk", TotNumTrk, m_pz_trk);
268 status = m_tuple->addIndexedItem ("m_en_trk", TotNumTrk, m_en_trk);
269 status = m_tuple->addIndexedItem ("FST", TotNumTrk, m_fst);
270
271 status = m_tuple->addItem ("nchr", m_nchr);
272 status = m_tuple->addItem ("nchr_e", m_nchr_e);
273 status = m_tuple->addItem ("nchr_mu", m_nchr_mu);
274 status = m_tuple->addItem ("nchr_pi", m_nchr_pi);
275 status = m_tuple->addItem ("nchr_k", m_nchr_k);
276 status = m_tuple->addItem ("nchr_p", m_nchr_p);
277 status = m_tuple->addItem ("N_gamma", m_gamma);
278 status = m_tuple->addItem ("N_gammaFSR", m_gammaFSR);
279 status = m_tuple->addItem ("Flag1", m_flag1);
280 } else {
281 log << MSG::ERROR << " Cannot book N-tuple:"<< long(m_tuple) << endmsg;
282 return StatusCode::FAILURE;
283 }
284 }
285
286 NTuplePtr nt2(ntupleSvc(),"MYROOTFILE/mass");
287 if(nt2) {mass_tuple=nt2;}
288 else {
289 mass_tuple = ntupleSvc()->book ("MYROOTFILE/mass", CLID_ColumnWiseTuple, "Generator-mass-Ntuple");
290 if(mass_tuple){
291 status = mass_tuple->addItem ("m12", m_m12);
292 status = mass_tuple->addItem ("m13", m_m13);
293 status = mass_tuple->addItem ("m23", m_m23);
294 status = mass_tuple->addItem ("m1", m_m1);
295 status = mass_tuple->addItem ("m2", m_m2);
296 status = mass_tuple->addItem ("m3", m_m3);
297 status = mass_tuple->addItem ("costheta1", m_cos1);
298 status = mass_tuple->addItem ("costheta2", m_cos2);
299 status = mass_tuple->addItem ("costheta3", m_cos3);
300 status = mass_tuple->addItem ("ichannel", m_ich);
301 } else {
302 log << MSG::ERROR << " Cannot book N-tuple:"<< long(m_tuple) << endmsg;
303 return StatusCode::FAILURE;
304 }
305 }
306
307 NTuplePtr nt3(ntupleSvc(),"MYROOTFILE/massGen");
308 if(nt3) {massgen_tuple=nt3;}
309 else {
310 massgen_tuple = ntupleSvc()->book ("MYROOTFILE/massGen", CLID_ColumnWiseTuple, "Generator-mass-Ntuple");
311 if(massgen_tuple){
312 status = massgen_tuple->addItem ("m12", _m12);
313 status = massgen_tuple->addItem ("m13", _m13);
314 status = massgen_tuple->addItem ("m23", _m23);
315 status = massgen_tuple->addItem ("m1", _m1);
316 status = massgen_tuple->addItem ("m2", _m2);
317 status = massgen_tuple->addItem ("m3", _m3);
318 status = massgen_tuple->addItem ("costheta1", _cos1);
319 status = massgen_tuple->addItem ("costheta2", _cos2);
320 status = massgen_tuple->addItem ("costheta3", _cos3);
321 status = massgen_tuple->addItem ("ichannel", _ich);
322 } else {
323 log << MSG::ERROR << " Cannot book N-tuple:"<< long(m_tuple) << endmsg;
324 return StatusCode::FAILURE;
325 }
326 }
327
328
329 }
330 for(int i=0;i<500;i++){br[i]=0;}
331 if(!(m_SB3File=="" && m_SB3HT=="")) {
332 const char *filename, *histitle;
333 filename=(char*)m_SB3File.c_str();
334 histitle=(char*)m_SB3HT.c_str();
335 SuperBody3decay.setFile(filename);
336 SuperBody3decay.setHTitle(histitle);
337 SuperBody3decay.init();
338 }
339
340 return StatusCode::SUCCESS;
341}
XmlRpcServer s
INTupleSvc * ntupleSvc()
void setDecayCard(string card)
static double SetMthr
Definition EvtConExc.hh:192
DataInfoSvc * dataInfoSvc
Definition EvtDecay.h:75
IDataInfoSvc * tmpInfoSvc
Definition EvtDecay.h:74
void readUDecay(const char *const udecay_name)
Definition EvtGen.cc:126
static std::vector< std::string > SV
static std::vector< std::vector< double > > dVV
static std::vector< std::vector< int > > iVV
void init()
Definition EvtHis2F.cc:98
void setHTitle(const char *htitle)
Definition EvtHis2F.cc:40
void setFile(const char *dtfile)
Definition EvtHis2F.cc:35
virtual void setGenseed(long)=0
virtual CLHEP::HepRandomEngine * GetEngine(const std::string &StreamName)=0
Interface to the CLHEP engine.

Member Data Documentation

◆ dataInfoSvc

DataInfoSvc* EvtDecay::dataInfoSvc

Definition at line 75 of file EvtDecay.h.

Referenced by initialize().

◆ tmpInfoSvc

IDataInfoSvc* EvtDecay::tmpInfoSvc

Definition at line 74 of file EvtDecay.h.

Referenced by initialize().


The documentation for this class was generated from the following files: