ATLAS Offline Software
Starlight_i.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // -------------------------------------------------------------
6 // Generators/Starlight_i.cxx Description: Allows the user
7 // to generate Starlight events and store the result in the
8 // Transient Store.
9 //
10 // AuthorList:
11 // Andrzej Olszewski: Initial Code January 2011
12 // Andrzej Olszewski: Update for Starlight "r193" March 2016
13 //
14 // Random seed set via jo
15 // Random numbers not saved by atlas engine mechanism event by event.
16 
18 
19 #include "CxxUtils/StringParse.h"
20 
21 #include "AtlasHepMC/GenEvent.h"
22 #include "AtlasHepMC/GenVertex.h"
23 #include "AtlasHepMC/GenParticle.h"
24 
25 #include <stdlib.h>
26 #include <iostream>
27 #include <fstream>
28 
30 #include "CLHEP/Vector/LorentzVector.h"
31 
32 #include "reportingUtils.h"
33 #include "starlightconstants.h"
34 #include "starlightparticlecodes.h"
35 
36 namespace{
37  static const std::string starlight_stream = "STARLIGHT";
38 }
39 
40 typedef std::vector<std::string> CommandVector;
41 
42 Starlight_i::Starlight_i(const std::string& name, ISvcLocator* pSvcLocator):
43  GenModule(name,pSvcLocator)
44 {
45 }
46 
48  if (m_starlight) delete m_starlight;
49  if (m_event) delete m_event;
50 }
51 
53 {
54  // Initialisation of input parameters
55  //
56  ATH_MSG_INFO( "===> January 20 2011 STARLIGHT INTERFACE VERSION. \n" );
57  ATH_MSG_INFO( "===> STARLIGHT INITIALISING. \n" );
58 
59  //Re-seed the random number stream
60  long seeds[7];
61  ATHRNG::calculateSeedsMC21(seeds, starlight_stream, 0, m_dsid, m_randomSeed);
62 
63  // Create inputParameters and
64  // set the users' initialisation parameters choices
65  bool res = set_user_params();
66  if( !res ) {
67  return StatusCode::FAILURE;
68  }
69 
70  // create the starlight object
71  m_starlight = new starlight();
72  // Set random generator to prevent crash in tests.
73  m_randomGenerator = std::make_shared<randomGenerator>();
74  m_randomGenerator->SetSeed(seeds[0]);
75  m_starlight->setRandomGenerator(m_randomGenerator.get());
76  // set input parameters
77  m_starlight->setInputParameters(&m_inputParameters);
78  // and initialize
79  m_starlight->init();
80 
81  // dump events to lhef (needed for QED showering with Pythia8
82  if(m_lheOutput){
83  ATH_MSG_INFO("===> dumping starlight events to lhef format. \n" );
84  if(!starlight2lhef()) return StatusCode::FAILURE;
85  }
86 
87  return StatusCode::SUCCESS;
88 }
89 
91 {
92  if(m_lheOutput) return StatusCode::SUCCESS;
93  ATH_MSG_DEBUG( " STARLIGHT generating. \n" );
94 
95  //Re-seed the random number stream
96  long seeds[7];
97  const EventContext& ctx = Gaudi::Hive::currentContext();
98  ATHRNG::calculateSeedsMC21(seeds, starlight_stream, ctx.eventID().event_number(),
100  m_randomGenerator->SetSeed(seeds[0]);
101 
102  // Generate event
103  m_event = new upcEvent;
104  (*m_event) = m_starlight->produceEvent();
105 
106  // update event counter
107  ++m_events;
108 
109  int numberofTracks = m_event->getParticles()->size();
110  int numberOfVertices = 1; //m_event->getVertices()->size();
111 
112  ATH_MSG_DEBUG( "EVENT: " << m_events << " "
113  << " with " << numberOfVertices << " vertices "
114  << " and " << numberofTracks << " tracks" );
115  ATH_MSG_DEBUG( "VERTEX: "<< 0. << " " << 0. << " " << 0.
116  << " with " << numberofTracks << " tracks" );
117 
118  int ipart = 0;
119  std::vector<starlightParticle>::const_iterator part =
120  (m_event->getParticles())->begin();
121  for (part = m_event->getParticles()->begin();
122  part != m_event->getParticles()->end(); ++part, ++ipart) {
123  ATH_MSG_DEBUG( "TRACK: " << " "
124  << starlightParticleCodes::jetsetToGeant((*part).getCharge() * (*part).getPdgCode()) << " "
125  << (*part).GetPx() << " " << (*part).GetPy() << " "<< (*part).GetPz()
126  << " " << m_events << " " << ipart << " " << 0 << " "
127  << (*part).getCharge() * (*part).getPdgCode() );
128  }
129 
130  ATH_MSG_DEBUG( " Starlight generating done. \n" );
131 
132  return StatusCode::SUCCESS;
133 }
134 
137 {
138  ATH_MSG_DEBUG( " STARLIGHT Ending. \n" );
139 
140  return StatusCode::SUCCESS;
141 }
142 
144 Starlight_i::fillEvt(HepMC::GenEvent* evt)
145 {
146  if(m_lheOutput) return StatusCode::SUCCESS;
147  ATH_MSG_DEBUG( " STARLIGHT Filing. \n" );
148 
149  // Set the event number
150  evt->set_event_number( m_events );
151 
152  // Create the event vertex
154  evt->add_vertex( v1 );
155 
156  // Loop on all final particles and
157  // put them all as outgoing from the event vertex
158  int ipart = 0;
159  std::vector<starlightParticle>::const_iterator part =
160  (m_event->getParticles())->begin();
161  double px_tot=0;
162  double py_tot=0;
163  double pz_tot=0;
164  for (part = m_event->getParticles()->begin();
165  part != m_event->getParticles()->end(); ++part, ++ipart)
166  {
167  int pid = (*part).getPdgCode();
168  int charge = (*part).getCharge();
169  //AO special for pid sign stored in charge
170  int pidsign = pid/std::abs(pid);
171  int chsign = 0;
172  if (charge !=0) chsign = charge/std::abs(charge);
173  if( chsign != pidsign && chsign != 0) pid = -pid;
174 
175  double px = (*part).GetPx();
176  double py = (*part).GetPy();
177  double pz = (*part).GetPz();
178  double e = (*part).GetE();
179  // mass fix implemented only for muons
180  if(std::abs(pid)==13) {
181  float mass = m_inputParameters.muonMass();//0.1056583715;// starlightConstants::muonMass;
182  e = std::sqrt(px*px + py*py + pz*pz + mass*mass);
183  }
184  // mass fix for photons (ALPs)
185  if(std::abs(pid)==22) {
186  e = std::sqrt(px*px + py*py + pz*pz);
187  }
188 
189  ATH_MSG_DEBUG( "saving particle " << ipart );
190  px_tot+=px;
191  py_tot+=py;
192  pz_tot+=pz;
193 
194  if(!m_suppressVMdecay) v1->add_particle_out(
195  HepMC::newGenParticlePtr(HepMC::FourVector(px, py, pz, e), pid, 1) );
196  }
197  if(m_suppressVMdecay) {
198  int pid = 113;
199  double mass = 0.770;
200  if(m_prodParticleId == 443011 || m_prodParticleId == 443013){
201  pid = 443;
202  mass = 3.0969;
203  }
204  if(m_prodParticleId == 444011 || m_prodParticleId == 444013){
205  pid = 100443;
206  mass = 3.6861;
207  }
208  if(m_prodParticleId == 553011 || m_prodParticleId == 553013){
209  pid = 553;
210  mass = 9.4604;
211  }
212  if(m_prodParticleId == 554011 || m_prodParticleId == 554013){
213  pid = 100553;
214  mass = 10.023;
215  }
216  if(m_prodParticleId == 555011 || m_prodParticleId == 555013){
217  pid = 200553;
218  mass = 10.355;
219  }
220  double e = sqrt(px_tot*px_tot + py_tot*py_tot + pz_tot*pz_tot + mass*mass);
221  v1->add_particle_out(
222  HepMC::newGenParticlePtr(HepMC::FourVector(px_tot, py_tot, pz_tot, e), pid, 1) );
223  }
224  ATH_MSG_DEBUG( "Saved " << ipart << " tracks " );
225 
226  // Convert cm->mm and GeV->MeV
227  //
228  GeVToMeV(evt);
229 
230  return StatusCode::SUCCESS;
231 }
232 
233 bool
235 {
236 
237  std::string lheFilename = "events.lhe";
238  std::ofstream lheStream;
239  lheStream.open(lheFilename.c_str(), std::ofstream::trunc);
240  if(!lheStream) {
241  ATH_MSG_ERROR("error: Failed to open file "+lheFilename);
242  return false;
243  }
244 
245  lheStream << "<LesHouchesEvents version=\"1.0\">\n";
246  lheStream << "<!--\n";
247  lheStream << "File generated using Starlight \n";
248  lheStream << "-->\n";
249 
250  float beam_energy=0.;
251  // run-3 beam energy (allowing approximate value of 2877 for gamma of the beams)
252  if(m_beam1Gamma>2870 && m_beam1Gamma<2880) beam_energy = 2.68e+03;
253  // run-2 beam energy
254  else beam_energy = 2.51e+03;
255 
256  lheStream << "<init>\n";
257  lheStream << " 13 -13 "<<beam_energy<<" "<<beam_energy<<" 0 0 0 0 3 1\n";
258  lheStream << " 1.000000e+00 0.000000e+00 1.000000e+00 9999\n";
259  lheStream << "</init>\n";
260 
261 
262  std::unique_ptr<upcEvent> uevent(new upcEvent);
263 
264  for(unsigned int i=0; i<m_maxevents; i++) {
265  lheStream << "<event>\n";
266  (*uevent) = m_starlight->produceEvent();
267  int ipart = 0;
268  CLHEP::HepLorentzVector photon_system(0);
269  double ptscale =0;
270  std::vector<starlightParticle>::const_iterator part = (uevent->getParticles())->begin();
271  for (part = uevent->getParticles()->begin(); part != uevent->getParticles()->end(); ++part, ++ipart)
272  {
273  CLHEP::HepLorentzVector particle_sl((*part).GetPx(), (*part).GetPy(), (*part).GetPz(), (*part).GetE());
274  photon_system += particle_sl;
275  ptscale += std::sqrt((*part).GetPx()*(*part).GetPx() + (*part).GetPy()*(*part).GetPy());
276  }
277 
278  // avg pt is the correct scale here
279  ptscale /= static_cast<float> (ipart);
280  lheStream << " 4 9999 1.000000e+00 "<<ptscale<<" 7.297e-03 2.569093e-01\n";
281 
283  lheStream << " -11 -1 0 0 0 0 0.0000000000e+00 0.0000000000e+00 "
284  << photon_system.m()/2.*std::exp(photon_system.rapidity())<<" "
285  <<photon_system.m()/2.*std::exp(photon_system.rapidity())
286  << " 0.0000000000e+00 0. 9.\n";
287  lheStream << " 11 -1 0 0 0 0 0.0000000000e+00 0.0000000000e+00 "
288  << -photon_system.m()/2.*std::exp(-photon_system.rapidity())<<" "
289  <<photon_system.m()/2.*std::exp(-photon_system.rapidity())
290  << " 0.0000000000e+00 0. 9.\n";
291  }
292 
293  else{
294  lheStream << " 22 -1 0 0 0 0 0.0000000000e+00 0.0000000000e+00 "
295  << photon_system.m()/2.*std::exp(photon_system.rapidity())<<" "
296  <<photon_system.m()/2.*std::exp(photon_system.rapidity())
297  <<" 0.0000000000e+00 0. 9.\n";
298  lheStream << " 22 -1 0 0 0 0 0.0000000000e+00 0.0000000000e+00 "
299  << -photon_system.m()/2.*std::exp(-photon_system.rapidity())<<" "
300  <<photon_system.m()/2.*std::exp(-photon_system.rapidity())
301  <<" 0.0000000000e+00 0. 9.\n";
302  }
303 
304  for (part = uevent->getParticles()->begin(); part != uevent->getParticles()->end(); ++part, ++ipart)
305  {
306  int pid = (*part).getPdgCode();
307  int charge = (*part).getCharge();
308  //AO special for pid sign stored in charge
309  int pidsign = pid/std::abs(pid);
310  int chsign = charge/std::abs(charge);
311  if( chsign != pidsign ) pid = -pid;
312 
313  double px = (*part).GetPx();
314  double py = (*part).GetPy();
315  double pz = (*part).GetPz();
316  double e = (*part).GetE();
317  double mass = (*part).getMass();
318  if(std::abs(pid)==11) mass = m_inputParameters.mel();
319  else if(std::abs(pid)==13) mass = m_inputParameters.muonMass();
320  else if(std::abs(pid)==15) mass = m_inputParameters.tauMass();
321 
322  lheStream << pid<<" 1 1 2 0 0 "<<px<<" "<<py<<" "<<pz<<" "<<e<<" "<<mass<<" 0. 9.\n";
323 
324  }
325  lheStream << "</event>\n";
326  }
327 
328 
329  lheStream << "</LesHouchesEvents>";
330  lheStream.close();
331 
332  return true;
333 }
334 
336 {
337  // Set starlight user initialization parameters
338 
339  // write python starlight config parameters to tmp file
340  // if external config file not specified
341  if (m_configFileName.empty()) {
342  m_configFileName = "tmp.slight.in";
343  if (!prepare_params_file()) {
344  printWarn <<
345  "problems initializing input parameters. cannot initialize starlight.";
346  return false;
347  }
348  }
349 
350  m_inputParameters.configureFromFile(m_configFileName);
351  if (!m_inputParameters.init()) {
352  ATH_MSG_WARNING( "problems initializing input parameters. cannot initialize starlight. " );
353  return false;
354  }
355 
356  return true;
357 }
358 
360 {
361  // Write initialization parameters to tmp file
362 
364  {
365  ATH_MSG_INFO( " Command is: " << *i );
366 
367  StringParse mystring(*i);
368  std::string myparam = mystring.piece<std::string>(1);
369  if (myparam == "beam1Z")
370  {
371  m_beam1Z = mystring.piece<double>(2);
372  }
373  else if (myparam == "beam1A")
374  {
375  m_beam1A = mystring.piece<double>(2);
376  }
377  else if (myparam == "beam2Z")
378  {
379  m_beam2Z = mystring.piece<double>(2);
380  }
381  else if (myparam == "beam2A")
382  {
383  m_beam2A = mystring.piece<double>(2);
384  }
385  else if (myparam == "beam1Gamma")
386  {
387  m_beam1Gamma = mystring.piece<double>(2);
388  }
389  else if (myparam == "beam2Gamma")
390  {
391  m_beam2Gamma = mystring.piece<double>(2);
392  }
393  else if (myparam == "maxW")
394  {
395  m_maxW = mystring.piece<double>(2);
396  }
397  else if (myparam == "minW")
398  {
399  m_minW = mystring.piece<double>(2);
400  }
401  else if (myparam == "nmbWBins")
402  {
403  m_nmbWBins = mystring.piece<double>(2);
404  }
405  else if (myparam == "maxRapidity")
406  {
407  m_maxRapidity = mystring.piece<double>(2);
408  }
409  else if (myparam == "nmbRapidityBins")
410  {
411  m_nmbRapidityBins = mystring.piece<double>(2);
412  }
413  else if (myparam == "accCutPt")
414  {
415  m_accCutPt = mystring.piece<double>(2);
416  }
417  else if (myparam == "minPt")
418  {
419  m_minPt = mystring.piece<double>(2);
420  }
421  else if (myparam == "maxPt")
422  {
423  m_maxPt = mystring.piece<double>(2);
424  }
425  else if (myparam == "accCutEta")
426  {
427  m_accCutEta = mystring.piece<double>(2);
428  }
429  else if (myparam == "minEta")
430  {
431  m_minEta = mystring.piece<double>(2);
432  }
433  else if (myparam == "maxEta")
434  {
435  m_maxEta = mystring.piece<double>(2);
436  }
437  else if (myparam == "productionMode")
438  {
439  m_productionMode = mystring.piece<double>(2);
440  }
441  else if (myparam == "axionMass")
442  {
443  m_axionMass = mystring.piece<double>(2);
444  }
445  else if (myparam == "nmbEventsTot")
446  {
447  m_nmbEventsTot = mystring.piece<double>(2);
448  }
449  else if (myparam == "prodParticleId")
450  {
451  m_prodParticleId = mystring.piece<double>(2);
452  }
453  else if (myparam == "randomSeed")
454  {
455  m_randomSeed = mystring.piece<double>(2);
456  }
457  else if (myparam == "outputFormat")
458  {
459  m_outputFormat = mystring.piece<double>(2);
460  }
461  else if (myparam == "beamBreakupMode")
462  {
463  m_beamBreakupMode = mystring.piece<double>(2);
464  }
465  else if (myparam == "interferenceEnabled")
466  {
467  m_interferenceEnabled = mystring.piece<double>(2);
468  }
469  else if (myparam == "interferenceStrength")
470  {
471  m_interferenceStrength = mystring.piece<double>(2);
472  }
473  else if (myparam == "coherentProduction")
474  {
475  m_coherentProduction = mystring.piece<double>(2);
476  }
477  else if (myparam == "incoherentFactor")
478  {
479  m_incoherentFactor = mystring.piece<double>(2);
480  }
481  else if (myparam == "maxPtInterference")
482  {
483  m_maxPtInterference = mystring.piece<double>(2);
484  }
485  else if (myparam == "nmbPtBinsInterference")
486  {
487  m_nmbPtBinsInterference = mystring.piece<double>(2);
488  }
489  else if (myparam == "xsecMethod")
490  {
491  m_xsecMethod = mystring.piece<double>(2);
492  }
493  else if (myparam == "nThreads")
494  {
495  m_nThreads = mystring.piece<double>(2);
496  }
497  else if (myparam == "pythFullRec")
498  {
499  m_pythFullRec = mystring.piece<double>(2);
500  }
501  else
502  {
503  ATH_MSG_ERROR( " ERROR in STARLIGHT INITIALIZATION PARAMETERS "
504  << myparam << " is an invalid parameter !" );
505  return false;
506  }
507  }
508 
509  std::ofstream configFile;
510  configFile.open(m_configFileName.value().c_str());
511 
512  configFile << "BEAM_1_Z = " << m_beam1Z << std::endl;
513  configFile << "BEAM_1_A = " << m_beam1A << std::endl;
514  configFile << "BEAM_2_Z = " << m_beam2Z << std::endl;
515  configFile << "BEAM_2_A = " << m_beam2A << std::endl;
516  configFile << "BEAM_1_GAMMA = " << m_beam1Gamma << std::endl;
517  configFile << "BEAM_2_GAMMA = " << m_beam2Gamma << std::endl;
518  configFile << "W_MAX = " << m_maxW << std::endl;
519  configFile << "W_MIN = " << m_minW << std::endl;
520  configFile << "W_N_BINS = " << m_nmbWBins << std::endl;
521  configFile << "RAP_MAX = " << m_maxRapidity << std::endl;
522  configFile << "RAP_N_BINS = " << m_nmbRapidityBins << std::endl;
523  configFile << "CUT_PT = " << m_accCutPt << std::endl;
524  configFile << "PT_MIN = " << m_minPt << std::endl;
525  configFile << "PT_MAX = " << m_maxPt << std::endl;
526  configFile << "CUT_ETA = " << m_accCutEta << std::endl;
527  configFile << "ETA_MIN = " << m_minEta << std::endl;
528  configFile << "ETA_MAX = " << m_maxEta << std::endl;
529  configFile << "PROD_MODE = " << m_productionMode << std::endl;
530  configFile << "AXION_MASS = " << m_axionMass << std::endl;
531  configFile << "N_EVENTS = " << m_nmbEventsTot << std::endl;
532  configFile << "PROD_PID = " << m_prodParticleId << std::endl;
533  configFile << "RND_SEED = " << m_randomSeed << std::endl;
534  configFile << "BREAKUP_MODE = " << m_beamBreakupMode << std::endl;
535  configFile << "INTERFERENCE = " << m_interferenceEnabled << std::endl;
536  configFile << "IF_STRENGTH = " << m_interferenceStrength << std::endl;
537  configFile << "INT_PT_MAX = " << m_maxPtInterference << std::endl;
538  configFile << "INT_PT_N_BINS = " << m_nmbPtBinsInterference << std::endl;
539  configFile << "COHERENT = " << m_coherentProduction << std::endl;
540  configFile << "INCO_FACTOR = " << m_incoherentFactor << std::endl;
541  configFile << "XSEC_METHOD = " << m_xsecMethod << std::endl;
542  configFile << "N_THREADS = " << m_nThreads << std::endl;
543  configFile << "PYTHIA_FULL_EVENTRECORD = " << m_pythFullRec << std::endl;
544 
545  configFile.close();
546  return true;
547 }
HepMC::GenVertexPtr
HepMC::GenVertex * GenVertexPtr
Definition: GenVertex.h:59
Starlight_i::m_event
upcEvent * m_event
Definition: Starlight_i.h:55
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Starlight_i::m_doTauolappLheFormat
BooleanProperty m_doTauolappLheFormat
Definition: Starlight_i.h:45
StringParse
Utility object for parsing a string into tokens and returning them as a variety of types.
Definition: StringParse.h:33
GenEvent.h
taskman.configFile
configFile
Definition: taskman.py:311
test_pyathena.px
px
Definition: test_pyathena.py:18
Starlight_i::m_starlight
starlight * m_starlight
Definition: Starlight_i.h:51
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Starlight_i::m_accCutEta
bool m_accCutEta
Definition: Starlight_i.h:71
Starlight_i::m_maxEta
double m_maxEta
Definition: Starlight_i.h:73
Starlight_i::m_beam2A
unsigned int m_beam2A
Definition: Starlight_i.h:60
GenBase::GeVToMeV
void GeVToMeV(HepMC::GenEvent *evt)
Scale event energies/momenta by x 1000.
Definition: GenBase.cxx:61
Starlight_i::m_inputParameters
inputParameters m_inputParameters
Definition: Starlight_i.h:53
Starlight_i::m_productionMode
int m_productionMode
Definition: Starlight_i.h:74
GenVertex.h
Starlight_i::m_suppressVMdecay
BooleanProperty m_suppressVMdecay
Definition: Starlight_i.h:46
StringParse.h
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
Starlight_i::m_beam1A
unsigned int m_beam1A
Definition: Starlight_i.h:58
Starlight_i::m_axionMass
double m_axionMass
Definition: Starlight_i.h:54
Starlight_i::fillEvt
virtual StatusCode fillEvt(HepMC::GenEvent *evt)
For filling the HepMC event object.
Definition: Starlight_i.cxx:144
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
Starlight_i::m_nThreads
int m_nThreads
Definition: Starlight_i.h:89
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
Starlight_i::m_maxPt
double m_maxPt
Definition: Starlight_i.h:70
GenParticle.h
Starlight_i::m_beam1Gamma
double m_beam1Gamma
Definition: Starlight_i.h:61
Starlight_i::m_lheOutput
BooleanProperty m_lheOutput
Definition: Starlight_i.h:43
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
Starlight_i::m_configFileName
StringProperty m_configFileName
Definition: Starlight_i.h:42
Starlight_i::m_minPt
double m_minPt
Definition: Starlight_i.h:69
Starlight_i::m_beam2Gamma
double m_beam2Gamma
Definition: Starlight_i.h:62
Starlight_i::m_interferenceStrength
double m_interferenceStrength
Definition: Starlight_i.h:81
Starlight_i::m_xsecMethod
bool m_xsecMethod
Definition: Starlight_i.h:88
GenModule
Base class for common behaviour of generator interfaces.
Definition: GenModule.h:39
Starlight_i::starlight2lhef
bool starlight2lhef()
Definition: Starlight_i.cxx:234
Starlight_i::m_pythFullRec
bool m_pythFullRec
Definition: Starlight_i.h:90
Starlight_i::genFinalize
virtual StatusCode genFinalize()
For finalising the generator, if required.
Definition: Starlight_i.cxx:136
Starlight_i::m_randomGenerator
std::shared_ptr< randomGenerator > m_randomGenerator
Definition: Starlight_i.h:52
StringParse::piece
T piece(size_t num) const
Templated function to get the num'th token as any numeric type.
Definition: StringParse.h:44
Starlight_i.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Starlight_i::m_InitializeVector
StringArrayProperty m_InitializeVector
Definition: Starlight_i.h:48
HepMC::newGenVertexPtr
GenVertexPtr newGenVertexPtr(const HepMC::FourVector &pos=HepMC::FourVector(0.0, 0.0, 0.0, 0.0), const int i=0)
Definition: GenVertex.h:64
lumiFormat.i
int i
Definition: lumiFormat.py:92
trigbs_createHLTBSTestFile.beam_energy
beam_energy
Definition: trigbs_createHLTBSTestFile.py:124
Starlight_i::m_outputFormat
int m_outputFormat
Definition: Starlight_i.h:78
Starlight_i::Starlight_i
Starlight_i(const std::string &name, ISvcLocator *pSvcLocator)
Definition: Starlight_i.cxx:42
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
Starlight_i::set_user_params
bool set_user_params()
Definition: Starlight_i.cxx:335
ParticleGun_EoverP_Config.pid
pid
Definition: ParticleGun_EoverP_Config.py:62
Amg::pz
@ pz
Definition: GeoPrimitives.h:40
Starlight_i::m_prodParticleId
int m_prodParticleId
Definition: Starlight_i.h:76
Starlight_i::m_maxPtInterference
double m_maxPtInterference
Definition: Starlight_i.h:85
Starlight_i::m_accCutPt
bool m_accCutPt
Definition: Starlight_i.h:68
Starlight_i::m_nmbWBins
unsigned int m_nmbWBins
Definition: Starlight_i.h:65
Starlight_i::m_nmbPtBinsInterference
int m_nmbPtBinsInterference
Definition: Starlight_i.h:86
Starlight_i::m_nmbEventsTot
unsigned int m_nmbEventsTot
Definition: Starlight_i.h:75
starlight
Definition: starlight.example.joboption.py:1
Amg::py
@ py
Definition: GeoPrimitives.h:39
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Starlight_i::m_minW
double m_minW
Definition: Starlight_i.h:64
Starlight_i::callGenerator
virtual StatusCode callGenerator()
For calling the generator on each iteration of the event loop.
Definition: Starlight_i.cxx:90
charge
double charge(const T &p)
Definition: AtlasPID.h:494
Starlight_i::m_interferenceEnabled
bool m_interferenceEnabled
Definition: Starlight_i.h:80
Starlight_i::m_nmbRapidityBins
unsigned int m_nmbRapidityBins
Definition: Starlight_i.h:67
Starlight_i::m_incoherentFactor
double m_incoherentFactor
Definition: Starlight_i.h:83
RNGWrapper.h
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
HepMC::newGenParticlePtr
GenParticlePtr newGenParticlePtr(const HepMC::FourVector &mom=HepMC::FourVector(0.0, 0.0, 0.0, 0.0), int pid=0, int status=0)
Definition: GenParticle.h:39
Starlight_i::m_coherentProduction
bool m_coherentProduction
Definition: Starlight_i.h:82
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Starlight_i::m_dsid
IntegerProperty m_dsid
Definition: Starlight_i.h:41
Starlight_i::m_beamBreakupMode
int m_beamBreakupMode
Definition: Starlight_i.h:79
ATHRNG::calculateSeedsMC21
void calculateSeedsMC21(long *seeds, const std::string &algName, uint64_t ev, uint64_t run, uint64_t offset=0)
Set the random seed using a string (e.g.
Definition: RNGWrapper.cxx:37
Starlight_i::m_events
int m_events
Definition: Starlight_i.h:50
Starlight_i::m_minEta
double m_minEta
Definition: Starlight_i.h:72
Starlight_i::m_beam1Z
unsigned int m_beam1Z
Definition: Starlight_i.h:57
Starlight_i::m_beam2Z
unsigned int m_beam2Z
Definition: Starlight_i.h:59
Starlight_i::~Starlight_i
virtual ~Starlight_i()
Definition: Starlight_i.cxx:47
Starlight_i::prepare_params_file
bool prepare_params_file()
Definition: Starlight_i.cxx:359
CommandVector
std::vector< std::string > CommandVector
Definition: Starlight_i.cxx:40
Starlight_i::m_maxevents
UnsignedIntegerProperty m_maxevents
Definition: Starlight_i.h:44
Starlight_i::m_maxRapidity
double m_maxRapidity
Definition: Starlight_i.h:66
Starlight_i::m_maxW
double m_maxW
Definition: Starlight_i.h:63
Starlight_i::m_randomSeed
int m_randomSeed
Definition: Starlight_i.h:77
Starlight_i::genInitialize
virtual StatusCode genInitialize()
For initializing the generator, if required.
Definition: Starlight_i.cxx:52