BOSS 8.0.0
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
IDataInfoSvcdataInfoSvc

Detailed Description

Definition at line 63 of file EvtDecay.h.

Constructor & Destructor Documentation

◆ EvtDecay()

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

Definition at line 90 of file EvtDecay.cxx.

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

Referenced by EvtDecay().

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

1846 {
1847 // mu: mean value in Gaussian
1848 // sigma: variance in Gaussian
1849rloop:
1850 int n = 12;
1851 double ri = 0;
1852 for ( int i = 0; i < n; i++ )
1853 {
1854 double pm = EvtRandom::Flat( 0., 1 );
1855 ri += pm;
1856 }
1857 double eta = sqrt( n * 12.0 ) * ( ri / 12 - 0.5 );
1858 double xsig = sigma * eta + mu;
1859 double mx0 = EvtConExc::mlow;
1860 double mx1 = EvtConExc::mup;
1861 if ( xsig < mx0 || xsig > mx1 ) goto rloop;
1862 return xsig;
1863}
const Int_t n
static double mlow
Definition EvtConExc.hh:239
static double mup
Definition EvtConExc.hh:239
static double Flat()
Definition EvtRandom.cc:69

◆ execute()

StatusCode EvtDecay::execute ( )

Definition at line 375 of file EvtDecay.cxx.

375 {
376 // new Added
377 EvtParticle::_NextLevelDauNum = 0; //////////add for Model:FromParent
378
379 MsgStream log( msgSvc(), name() );
380 // log << MSG::INFO << "EvtDecay executing" << endmsg;
381 //------------------
382 string key = "GEN_EVENT";
383 // retrieve event from Transient Store (Storegate)
384 SmartDataPtr<McGenEventCol> McEvtColl( eventSvc(), "/Event/Gen" );
385
386 m_numberEvent += 1;
387 writeFlag = 0;
388 if ( McEvtColl == 0 )
389 {
390 // std::cout<<"McEvtColl == 0 INFO: Using the callBesEvtGen!!"<<std::endl;
391 HepMC::GenEvent* evt = new GenEvent();
392 evt->set_event_number( m_numberEvent );
393
394 // read Ecms from the database
395 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(), "/Event/EventHeader" );
396 int runNo = eventHeader->runNumber();
397 int event = eventHeader->eventNumber();
398 bool newRunFlag = 0;
399 if ( runNo != 0 && runNo != m_runNo )
400 {
401 m_runNo = runNo;
402 newRunFlag = true;
403 }
404 else { newRunFlag = false; }
405 if ( m_RdMeasuredEcms && newRunFlag )
406 { // using cms energy of beam read from database
407 runNo = std::abs( runNo );
408 ReadME theME( runNo );
409 if ( theME.isRunNoValid() )
410 {
411 dbEcms = theME.getEcms();
412 std::cout << "Read Ecms= " << dbEcms << std::endl;
413 if ( dbEcms != 0 ) { std::cout << "INFO: Read the MeasuredEcms" << std::endl; }
414 else
415 {
416 std::cout << "ERROR: Can not read the MeasuredEcms, try to turn off the ReadEcmsDB"
417 << std::endl;
418 return StatusCode::FAILURE;
419 }
420 }
421 }
422 // end of read Ecms
423
424 callBesEvtGen( evt );
425 if ( !( m_DecayTop == "" ) ) evt->print( outfile );
426
427 // create a Transient store
428 McGenEventCol* mcColl = new McGenEventCol;
429 McGenEvent* mcEvent = new McGenEvent( evt );
430 mcColl->push_back( mcEvent );
431 StatusCode sc = eventSvc()->registerObject( "/Event/Gen", mcColl );
432 if ( sc != StatusCode::SUCCESS ) return StatusCode::FAILURE;
433 }
434 else // (McEvtColl != 0)
435 {
436
437 // std::cout<<"McEvtColl == 1 INFO: Using the callEvtGen!!"<<std::endl;
438 McGenEventCol::iterator mcItr;
439 for ( mcItr = McEvtColl->begin(); mcItr != McEvtColl->end(); mcItr++ )
440 {
441 HepMC::GenEvent* hEvt = ( *mcItr )->getGenEvt();
442 // MeVToGeV( hEvt );
443
444 callEvtGen( hEvt );
445
446 if ( !( m_DecayTop == "" ) ) hEvt->print( outfile );
447 // GeVToMeV( hEvt );
448 // if(!(m_DecayRec=="")) outfile2<<std::endl;
449 if ( !( m_DecayRec == "" ) ) std::cout << std::endl;
450 };
451 }
452 if ( m_NtupleFile ) { m_tuple->write(); }
453
454 if ( _mDIY )
455 {
456 std::cout << "helangs ";
457 for ( int i = 0; i < m_vangs.size(); i++ ) std::cout << m_vangs[i] << " ";
458 std::cout << std::endl;
459 }
460 return StatusCode::SUCCESS;
461}
int runNo
Definition DQA_TO_DB.cxx:13
ObjectVector< McGenEvent > McGenEventCol
IMessageSvc * msgSvc()
*************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 1105 of file EvtDecay.cxx.

1105 {
1106
1107 if ( EvtCalHelAmp::nevt > 0 )
1108 {
1109 double H2 = EvtCalHelAmp::_H2;
1110 double H1 = EvtCalHelAmp::_H1;
1111 double H0 = EvtCalHelAmp::_H0;
1112 double H2err = EvtCalHelAmp::_H2err;
1113 double H1err = EvtCalHelAmp::_H1err;
1114 double H0err = EvtCalHelAmp::_H0err;
1115 int nd = EvtCalHelAmp::nevt;
1116 std::cout << "Calculated helicity amplitude sqaured are:" << std::endl;
1117 std::cout << "|H_{2}|^2=|H_{-2}|^2= " << H2 / nd << " +/- " << sqrt( H2err / nd ) << endl;
1118 std::cout << "|H_{1}|^2=|H_{-1}|^2= " << H1 / nd << " +/- " << sqrt( H1err / nd ) << endl;
1119 // std::cout<<"|H_{0}|^2= "<<H0/nd <<" +/- "<<sqrt(H0err/nd)<<endl;
1120 }
1121 MsgStream log( msgSvc(), name() );
1122 truth.close();
1123 log << MSG::INFO << "EvtDecay finalized" << endmsg;
1124 fstream Forfile;
1125 Forfile.open( "fort.16", ios::in );
1126 char delcmd[300];
1127 strcpy( delcmd, "rm -f " );
1128 strcat( delcmd, "fort.16" );
1129 // if(Forfile)system(delcmd);
1130
1131 fstream Forfile2;
1132 Forfile2.open( "fort.22", ios::in );
1133 strcpy( delcmd, "rm -f " );
1134 strcat( delcmd, "fort.22" );
1135 // if(Forfile2)system(delcmd);
1136
1137 // To get the branching fraction of the specified mode in Lundcharm Model
1138 /*
1139 EvtLundCharm lundcharmEvt;
1140 int nevt=lundcharmEvt.getTotalEvt();
1141 std::cout<<"The total number of the specified mode is "<<nevt<<std::endl;
1142 */
1143 int totalEvt = 0;
1144 if ( !( m_SB3File == "" || m_SB3HT == "" ) )
1145 {
1146 for ( int i = 0; i < 500; i++ ) { totalEvt = totalEvt + br[i]; }
1147 for ( int i = 0; i < 500; i++ )
1148 {
1149 double bi = 1.0 * br[i] / totalEvt;
1150 std::cout << "Branching fraction of channel " << i << " is: " << bi << std::endl;
1151 if ( br[i] == 0 ) break;
1152 }
1153 }
1154
1155 if ( m_statDecays )
1156 {
1157 int totalEvt = 0;
1158 for ( int i = 0; i <= totalChannels; i++ ) { totalEvt = totalEvt + br[i]; }
1159 std::cout
1160 << "==================Statistical first chain decay ==============================="
1161 << std::endl;
1162 std::cout
1163 << "i-th channel Events Generated Branching fraction generated "
1164 << std::endl;
1165 for ( int i = 0; i <= totalChannels; i++ )
1166 {
1167 std::cout << "| " << i << " " << br[i] << " "
1168 << br[i] * 1.0 / totalEvt << std::endl;
1169 }
1170 std::cout
1171 << "--------------------------------------------------------------------------------"
1172 << std::endl;
1173 std::cout << " sum: " << totalEvt << " "
1174 << "1" << std::endl;
1175 std::cout
1176 << "================== End of statistical first chain decay ========================"
1177 << std::endl;
1178 }
1179
1180 return StatusCode::SUCCESS;
1181}
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 153 of file EvtDecay.cxx.

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

Member Data Documentation

◆ dataInfoSvc

IDataInfoSvc* EvtDecay::dataInfoSvc

Definition at line 72 of file EvtDecay.h.

Referenced by initialize().

◆ tmpInfoSvc

IDataInfoSvc* EvtDecay::tmpInfoSvc

Definition at line 71 of file EvtDecay.h.


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