BOSS 7.0.4
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 83 of file EvtDecay.cxx.

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

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 1591 of file EvtDecay.cxx.

1591 {
1592 //mu: mean value in Gaussian
1593 //sigma: variance in Gaussian
1594 rloop:
1595 int n=12;
1596 double ri=0;
1597 for(int i=0;i<n;i++){
1598 double pm= EvtRandom::Flat(0.,1);
1599 ri += pm;
1600 }
1601 double eta=sqrt(n*12.0)*(ri/12-0.5);
1602 double xsig= sigma*eta+mu;
1603 double mx0=EvtConExc::mlow;
1604 double mx1=EvtConExc::mup;
1605 if(xsig<mx0 || xsig>mx1) goto rloop;
1606 return xsig;
1607}
const Int_t n
static double mlow
Definition: EvtConExc.hh:234
static double mup
Definition: EvtConExc.hh:234
static double Flat()
Definition: EvtRandom.cc:74

◆ execute()

StatusCode EvtDecay::execute ( )

Definition at line 335 of file EvtDecay.cxx.

336{
337
338 MsgStream log(messageService(), name());
339 // log << MSG::INFO << "EvtDecay executing" << endreq;
340 //------------------
341 string key = "GEN_EVENT";
342 // retrieve event from Transient Store (Storegate)
343 SmartDataPtr<McGenEventCol> McEvtColl(eventSvc(), "/Event/Gen");
344
345 m_numberEvent += 1;
346 writeFlag = 0;
347 //std::cout<<"EvtNumber= "<<m_numberEvent<<std::endl;
348 if ( McEvtColl == 0 )
349 {
350 HepMC::GenEvent* evt=new GenEvent();
351 evt->set_event_number(m_numberEvent);
352
353 //read Ecms from the database
354 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
355 int runNo=eventHeader->runNumber();
356 int event=eventHeader->eventNumber();
357 bool newRunFlag=0;
358 if(runNo != 0 && runNo != m_runNo){m_runNo=runNo;newRunFlag = true;}else{newRunFlag=false;}
359 if(m_RdMeasuredEcms&& newRunFlag){// using cms energy of beam read from database
360 runNo = std::abs(runNo);
361 ReadME theME(runNo);
362 if(theME.isRunNoValid()){
363 dbEcms=theME.getEcms();
364 std::cout<<"Read Ecms= "<<dbEcms<<std::endl;
365 if(dbEcms!=0){
366 std::cout<<"INFO: Read the MeasuredEcms"<<std::endl;
367 }
368 else{
369 std::cout<<"ERROR: Can not read the MeasuredEcms, try to turn off the ReadEcmsDB"<<std::endl;
370 return StatusCode::FAILURE;
371 }
372 }
373 }
374 //end of read Ecms
375
376 callBesEvtGen( evt );
377 if(!(m_DecayTop=="")) evt->print(outfile);
378
379 //create a Transient store
380 McGenEventCol *mcColl = new McGenEventCol;
381 McGenEvent* mcEvent = new McGenEvent(evt);
382 mcColl->push_back(mcEvent);
383 StatusCode sc = eventSvc()->registerObject("/Event/Gen",mcColl);
384 if(sc != SUCCESS) return StatusCode::FAILURE;
385
386 } else // (McEvtColl != 0)
387 {
388 McGenEventCol::iterator mcItr;
389 for( mcItr = McEvtColl->begin(); mcItr != McEvtColl->end(); mcItr++ )
390 {
391 HepMC::GenEvent* hEvt = (*mcItr)->getGenEvt();
392 // MeVToGeV( hEvt );
393
394 callEvtGen( hEvt );
395
396 if(!(m_DecayTop=="")) hEvt->print(outfile);
397 // GeVToMeV( hEvt );
398 // if(!(m_DecayRec=="")) outfile2<<std::endl;
399 if(!(m_DecayRec=="")) std::cout<<std::endl;
400 };
401 }
402 if( m_NtupleFile ){ m_tuple->write();}
403 return StatusCode::SUCCESS;
404}
int runNo
Definition: DQA_TO_DB.cxx:12
*************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

◆ finalize()

StatusCode EvtDecay::finalize ( )

Definition at line 988 of file EvtDecay.cxx.

989{
990
991 if(EvtCalHelAmp::nevt>0){
992 double H2=EvtCalHelAmp::_H2;
993 double H1=EvtCalHelAmp::_H1;
994 double H0=EvtCalHelAmp::_H0;
995 double H2err=EvtCalHelAmp::_H2err;
996 double H1err=EvtCalHelAmp::_H1err;
997 double H0err=EvtCalHelAmp::_H0err;
998 int nd = EvtCalHelAmp::nevt;
999 std::cout<<"Calculated helicity amplitude sqaured are:"<<std::endl;
1000 std::cout<<"|H_{2}|^2=|H_{-2}|^2= "<<H2/nd<<" +/- "<<sqrt(H2err/nd)<<endl;
1001 std::cout<<"|H_{1}|^2=|H_{-1}|^2= "<<H1/nd<<" +/- "<<sqrt(H1err/nd)<<endl;
1002 //std::cout<<"|H_{0}|^2= "<<H0/nd <<" +/- "<<sqrt(H0err/nd)<<endl;
1003 }
1004 MsgStream log(messageService(), name());
1005 truth.close();
1006 log << MSG::INFO << "EvtDecay finalized" << endreq;
1007 fstream Forfile;
1008 Forfile.open("fort.16",ios::in);
1009 char delcmd[300];
1010 strcpy(delcmd,"rm -f ");
1011 strcat(delcmd,"fort.16");
1012 // if(Forfile)system(delcmd);
1013
1014 fstream Forfile2;
1015 Forfile2.open("fort.22",ios::in);
1016 strcpy(delcmd,"rm -f ");
1017 strcat(delcmd,"fort.22");
1018 // if(Forfile2)system(delcmd);
1019
1020 // To get the branching fraction of the specified mode in Lundcharm Model
1021 /*
1022 EvtLundCharm lundcharmEvt;
1023 int nevt=lundcharmEvt.getTotalEvt();
1024 std::cout<<"The total number of the specified mode is "<<nevt<<std::endl;
1025 */
1026 int totalEvt=0;
1027 if(!(m_SB3File=="" || m_SB3HT=="")){
1028 for(int i=0;i<500;i++){totalEvt=totalEvt+br[i];}
1029 for(int i=0;i<500;i++){
1030 double bi=1.0*br[i]/totalEvt;
1031 std::cout<<"Branching fraction of channel "<<i<<" is: "<<bi<<std::endl;
1032 if(br[i]==0) break;
1033 }
1034 }
1035
1036 if(m_statDecays){
1037 int totalEvt=0;
1038 for(int i=0;i<=totalChannels;i++){totalEvt=totalEvt+br[i];}
1039 std::cout<<"==================Statistical first chain decay ==============================="<<std::endl;
1040 std::cout<<"i-th channel Events Generated Branching fraction generated "<<std::endl;
1041 for(int i=0;i<=totalChannels;i++){
1042 std::cout<<"| "<<i<<" "<<br[i]<<" "<<br[i]*1.0/totalEvt<<std::endl;
1043
1044 }
1045 std::cout<<"--------------------------------------------------------------------------------"<<std::endl;
1046 std::cout<<" sum: "<<totalEvt<<" "<<"1"<<std::endl;
1047 std::cout<<"================== End of statistical first chain decay ========================"<<std::endl;
1048 }
1049
1050 return StatusCode::SUCCESS;
1051}
static double _H0err
Definition: EvtCalHelAmp.hh:58
static double _H1err
Definition: EvtCalHelAmp.hh:58
static double _H0
Definition: EvtCalHelAmp.hh:58
static int nevt
Definition: EvtCalHelAmp.hh:59
static double _H1
Definition: EvtCalHelAmp.hh:58
static double _H2
Definition: EvtCalHelAmp.hh:58
static double _H2err
Definition: EvtCalHelAmp.hh:58

◆ 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 137 of file EvtDecay.cxx.

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