FairRoot/PandaRoot
Static Public Member Functions | Static Public Attributes | Static Private Member Functions | Static Private Attributes | List of all members
Photospp::PH_HEPEVT_Interface Class Reference

#include <PH_HEPEVT_Interface.h>

Static Public Member Functions

static int set (PhotosBranch *branch)
 
static void get ()
 
static void prepare ()
 
static void check_ME_channel ()
 
static void complete ()
 
static void clear ()
 

Static Public Attributes

static int decay_idx =0
 
static int ME_channel =0
 

Static Private Member Functions

static void add_particle (int i, PhotosParticle *particle, int first_mother, int last_mother, int first_daughter, int last_daughter)
 

Static Private Attributes

static std::vector
< PhotosParticle * > 
m_particle_list
 

Detailed Description

Definition at line 40 of file PH_HEPEVT_Interface.h.

Member Function Documentation

void Photospp::PH_HEPEVT_Interface::add_particle ( int  i,
PhotosParticle particle,
int  first_mother,
int  last_mother,
int  first_daughter,
int  last_daughter 
)
staticprivate

Add single particle to HEPEVT

Definition at line 45 of file PH_HEPEVT_Interface.cxx.

References Photospp::PhotosParticle::getE(), Photospp::PhotosParticle::getMass(), Photospp::PhotosParticle::getPdgID(), Photospp::PhotosParticle::getPx(), Photospp::PhotosParticle::getPy(), Photospp::PhotosParticle::getPz(), Photospp::PhotosParticle::getStatus(), Photospp::PhotosParticle::getVirtuality(), i, Photospp::ph_hepevt_, and Photospp::ph_phoqed_.

47  {
48 
49  if(i>0)
50  i--; //account for fortran indicies begining at 1
51  else
52  Log::Warning()<<"Index given to PH_HEPEVT_Interface::add_particle "
53  <<"is too low (it must be > 0)."<<endl;
54 
55  //add to our internal list of pointer/index pairs
56  m_particle_list.push_back(particle);
57 
58  //now set the element of PH_HEPEVT
59  ph_hepevt_.nevhep=0; //dummy
60  //ph_hepevt_.nhep=ph_hepevt_.nhep++; // [R.K. 9/2018] This line may lead to undefined behaviour.
61  ph_hepevt_.nhep++; // [R.K. 9/2018] I assume the number should be increased by one
62  ph_hepevt_.isthep[i]=particle->getStatus();
63  ph_hepevt_.idhep[i]=particle->getPdgID();
64 
65  ph_hepevt_.jmohep[i][0]=first_mother;
66  ph_hepevt_.jmohep[i][1]=last_mother;
67 
68  ph_hepevt_.jdahep[i][0]=first_daughter;
69  ph_hepevt_.jdahep[i][1]=last_daughter;
70 
71  ph_hepevt_.phep[i][0]=particle->getPx();
72  ph_hepevt_.phep[i][1]=particle->getPy();
73  ph_hepevt_.phep[i][2]=particle->getPz();
74  ph_hepevt_.phep[i][3]=particle->getE();
75 
76  // if massFrom4Vector=true (default) - get sqrt(e^2-p^2)
77  // otherwise - get mass from event record
78  if(!Photos::massFrom4Vector) ph_hepevt_.phep[i][4]=particle->getMass();
79  else ph_hepevt_.phep[i][4]=particle->getVirtuality();
80 
81  int pdgid = abs(particle->getPdgID());
82 
83  // if 'forceMass' for this PDGID was used - overwrite mass
85  {
86  for(unsigned int j=0;j<Photos::forceMassList->size();j++)
87  {
88  if(pdgid == abs(Photos::forceMassList->at(j)->first))
89  {
90  double mass = Photos::forceMassList->at(j)->second;
91 
92  // when 'forceMass' is used the mass provided is larger than 0.0
93  // when 'forceMassFromEventRecord' is used mass is -1.0
94  // in this case - get mass from event record
95  if(mass<0.0) mass = particle->getMass();
96  ph_hepevt_.phep[i][4] = mass;
97  }
98  }
99  }
100 
101  ph_hepevt_.vhep[i][0]=0;
102  ph_hepevt_.vhep[i][1]=0;
103  ph_hepevt_.vhep[i][2]=0;
104  ph_hepevt_.vhep[i][3]=0;
105 
106  ph_phoqed_.qedrad[i]=1;
107 
108 }
Int_t i
Definition: run_full.C:25
static std::vector< PhotosParticle * > m_particle_list
static bool massFrom4Vector
Definition: Photos.h:157
static vector< pair< int, double > * > * forceMassList
Definition: Photos.h:166
struct Photospp::@32 ph_hepevt_
static ostream & Warning(bool count=true)
Definition: Log.cxx:46
struct Photospp::@33 ph_phoqed_
void Photospp::PH_HEPEVT_Interface::check_ME_channel ( )
static

Check channel for complete matrix element calculation

Definition at line 419 of file PH_HEPEVT_Interface.cxx.

References i, and Photospp::ph_hepevt_.

420 {
421  ME_channel=0;
422 
423 // Check mothers:
424 
425  if(decay_idx==2) return; // Only one mother present
426  if(ph_hepevt_.idhep[0]*ph_hepevt_.idhep[1]>0) return; // Mothers have same sign
427 
428  Log::Debug(900)<<"ME_channel: Mothers PDG: "<<ph_hepevt_.idhep[0]<<" "<<ph_hepevt_.idhep[1]<<endl;
429  if(decay_idx)
430  Log::Debug(900,false)<<" Intermediate: "<<ph_hepevt_.idhep[decay_idx-1]<<endl;
431 
432  int firstDaughter=3;
433  if(decay_idx==0) firstDaughter=2; // if no intermediate particle - daughters start at idx 2
434 
435  // Are mothers in range +/- 1-6; +/- 11-16?
436  int mother1 = abs(ph_hepevt_.idhep[0]);
437  int mother2 = abs(ph_hepevt_.idhep[1]);
438  if( mother1<1 || (mother1>6 && mother1<11) || mother1>16 ) return;
439  if( mother2<1 || (mother2>6 && mother2<11) || mother2>16 ) return;
440 
441 //Check daughters
442 
443  // Z: check for pairs 11 -11 ; 13 -13 ; 15 -15
444  // -------------------------------------------
445  int firstPDG =0;
446  int secondPDG=0;
447  for(int i=firstDaughter; i<ph_hepevt_.nhep;i++)
448  {
449  int pdg = abs(ph_hepevt_.idhep[i]);
450  if(pdg==11 || pdg==13 || pdg==15)
451  {
452  if(firstPDG==0) firstPDG=ph_hepevt_.idhep[i];
453  else
454  {
455  secondPDG=ph_hepevt_.idhep[i];
456  // Just in case two pairs are genereted - verify that we have a pair with oposite signs
457  if(firstPDG*secondPDG>0) secondPDG=0;
458  break;
459  }
460  }
461  }
462 
463  if( ME_channel==0 && firstPDG!=0 && secondPDG!=0 &&
464  firstPDG==-secondPDG ) ME_channel=1;
465 
466  // W: check for pairs 11 -12; -11 12; 13 -14; -13 14; 15 -16; -15 16
467  // -----------------------------------------------------------------
468  firstPDG =0;
469  secondPDG=0;
470  for(int i=firstDaughter; i<ph_hepevt_.nhep;i++)
471  {
472  int pdg = abs(ph_hepevt_.idhep[i]);
473  if(pdg>=11 && pdg<=16)
474  {
475  if(firstPDG==0) firstPDG=ph_hepevt_.idhep[i];
476  else
477  {
478  secondPDG=ph_hepevt_.idhep[i];
479  // Just in case two pairs are genereted - verify that we have a pair with oposite signs
480  if(firstPDG*secondPDG>0) secondPDG=0;
481  break;
482  }
483  }
484  }
485 
486  firstPDG =abs(firstPDG);
487  secondPDG=abs(secondPDG);
488 
489  if( ME_channel==0 && firstPDG!=0 && secondPDG!=0 &&
490  ( ( firstPDG==11 && secondPDG==12 ) || (firstPDG == 12 && secondPDG == 11) ||
491  ( firstPDG==13 && secondPDG==14 ) || (firstPDG == 14 && secondPDG == 13) ||
492  ( firstPDG==15 && secondPDG==16 ) || (firstPDG == 16 && secondPDG == 15)
493  )
494  ) ME_channel=2;
495 
496  Log::Debug(901)<<"ME_channel: Found ME_channel: "<<ME_channel<<endl;
497 
498 // Check intermediate particle (if exists):
499 
500  // Verify that intermediate particle PDG matches ME_channel found
501  if(ME_channel>0 && decay_idx)
502  {
503  int pdg=ph_hepevt_.idhep[decay_idx-1];
504 
505  if(ME_channel==1 && !(pdg==22 || pdg==23) ) ME_channel=0; //gamma/Z
506  if(ME_channel==2 && !(pdg==24 || pdg==-24)) ME_channel=0; //W+/W-
507 
508  if(ME_channel==0)
509  Log::Debug(901,false)<<" but set to 0: wrong intermediate particle: "<<pdg<<endl;
510  }
511 
512 // Check flags
513 
514  switch(ME_channel)
515  {
516  case 0: break; // Ok - no channel found
517  case 1: if(!Photos::meCorrectionWtForZ) ME_channel=0; break;
518  case 2: if(!Photos::meCorrectionWtForW) ME_channel=0; break;
519  default: Log::Error()<<"Unimplemented ME channel: "<<ME_channel<<endl; break;
520  }
521  Log::Debug(902)<<"ME_channel: Finally, after flag check, ME_channel is: "<<ME_channel<<endl;
522 }
static bool meCorrectionWtForZ
Definition: Photos.h:178
Int_t i
Definition: run_full.C:25
static ostream & Debug(unsigned short int code=0, bool count=true)
Definition: Log.cxx:30
struct Photospp::@32 ph_hepevt_
static bool meCorrectionWtForW
Definition: Photos.h:181
static ostream & Error(bool count=true)
Definition: Log.cxx:64
void Photospp::PH_HEPEVT_Interface::clear ( void  )
static

Clear HEPEVT

for(int i=0; i < NMXHEP; i++){

ph_hepevt_.isthep[i]=0; ph_hepevt_.idhep[i]=0;

for(int j=0; j<2; j++){ ph_hepevt_.jmohep[i][j]=0; ph_hepevt_.jdahep[i][j]=0; }

for(int j=0; j<5; j++) ph_hepevt_.phep[i][j]=0;

for(int j=0; j<4; j++) ph_hepevt_.vhep[i][j]=0;

ph_phoqed_.qedrad[i]=0;

}

Definition at line 16 of file PH_HEPEVT_Interface.cxx.

References Photospp::ph_hepevt_.

16  {
17 
18  m_particle_list.clear();
19 
20  ph_hepevt_.nevhep=0;
21  ph_hepevt_.nhep=0;
22 
23 
43 }
static std::vector< PhotosParticle * > m_particle_list
struct Photospp::@32 ph_hepevt_
void Photospp::PH_HEPEVT_Interface::complete ( )
static

Finalize processing

Definition at line 414 of file PH_HEPEVT_Interface.cxx.

Referenced by Photospp::PhotosBranch::process().

415 {
416 
417 }
void Photospp::PH_HEPEVT_Interface::get ( )
static

Update event record with data from HEPEVT

Definition at line 161 of file PH_HEPEVT_Interface.cxx.

References Photospp::PhotosParticle::addDaughter(), Photospp::PhotosParticle::boostDaughtersFromRestFrame(), Photospp::PhotosParticle::boostDaughtersToRestFrame(), Photospp::PhotosParticle::boostFromRestFrame(), Photospp::PhotosParticle::boostToRestFrame(), Photospp::PhotosParticle::createHistoryEntry(), Photospp::PhotosParticle::createNewParticle(), fabs(), Photospp::PhotosParticle::getDaughters(), Photospp::PhotosParticle::getE(), Photospp::PhotosParticle::getPdgID(), Photospp::PhotosParticle::getPx(), Photospp::PhotosParticle::getPy(), Photospp::PhotosParticle::getPz(), i, Photospp::NO_BOOST_THRESHOLD, p, p1, p2, particle, Photospp::ph_hepevt_, Photospp::PhotosParticle::setE(), Photospp::PhotosParticle::setPx(), Photospp::PhotosParticle::setPy(), Photospp::PhotosParticle::setPz(), threshold, and update().

Referenced by Photospp::PhotosBranch::process().

161  {
162 
163  int index = 0;
164 
165  //if no photons have been added to the event record, do nothing.
166  if(ph_hepevt_.nhep == (int) m_particle_list.size())
167  return;
168 
169  //phodmp_();
170 
171  int particle_count = m_particle_list.size();
172  int daughters_start = ph_hepevt_.jmohep[ph_hepevt_.nhep-1][0];
173  int photons = ph_hepevt_.nhep - m_particle_list.size();
174  bool isPhotonCreated = (photons>0);
175 
176  std::vector<PhotosParticle*> photon_list; // list of added photons
177  // which need kinematical treatment
178  // in special case
179 
180  // we decipher daughters_start from last entry
181  // that is last daughter in ph_hepevt_
182  // another option of this functionality may be
183  // ph_hepevt_.jdahep[ ph_hepevt_.jmohep[ph_hepevt_.nhep-1][0]-1][0];
184  // Update daughters_start if there are two mothers
185  // NOTE: daughters_start is index for C++ arrays, while ph_hepevt_.jmohep
186  // contains indices for Fortran arrays.
187  if(ph_hepevt_.jmohep[ph_hepevt_.nhep-1][1]>0)
188  daughters_start = ph_hepevt_.jmohep[ph_hepevt_.nhep-1][1];
189 
190  index = particle_count;
191 
192  // Add extra photons
193  for(;photons>0; photons--, index++){
194 
195  if(ph_hepevt_.idhep[index]!=PhotosParticle::GAMMA)
196  Log::Fatal("PH_HEPEVT_Interface::get(): Extra particle added to the PH_HEPEVT common block in not a photon!",6);
197 
198  //create a new particle
199  PhotosParticle * new_photon;
200  new_photon = m_particle_list.at(0)->createNewParticle(ph_hepevt_.idhep[index],
201  ph_hepevt_.isthep[index],
202  ph_hepevt_.phep[index][4],
203  ph_hepevt_.phep[index][0],
204  ph_hepevt_.phep[index][1],
205  ph_hepevt_.phep[index][2],
206  ph_hepevt_.phep[index][3]);
207 
208  //add into the event record
209  //get mother particle of photon
210  PhotosParticle * mother = m_particle_list.at(ph_hepevt_.jmohep[index][0]-1);
211  mother->addDaughter(new_photon);
212 
213  //add to list of photons
214  photon_list.push_back(new_photon);
215  }
216 
217  // Before we update particles, we check for special cases
218  // At this step, particles are yet unmodified
219  // but photons are already in the event record
220  bool special=false;
221  PhotosParticle *p1 = NULL;
222  PhotosParticle *p2 = NULL;
223 
224  if( isPhotonCreated )
225  {
226  std::vector<PhotosParticle*> daughters;
227 
228  // in the following we create list of daughters,
229  // later we calculate bool special which is true only if all
230  // daughters self-decay
231  // at peresent warning for mixed self-decay and not self decay
232  // daughters is not printed.
233 
234  for(int i=daughters_start;i<particle_count;i++)
235  {
237 
238  daughters.push_back(p);
239  }
240 
241  // Check if this is a special case
242  special = true;
243 
244  if(daughters.size()==0) special = false;
245 
246  // special = false if there is a stable particle on the list
247  // or there is a particle without self-decay
248  for(unsigned int i=0;i<daughters.size();i++)
249  {
250  if(daughters[i]->getStatus()==1)
251  {
252  special = false;
253  break;
254  }
255 
256  // NOTE: We can use 'getDaughters' here, because vertices
257  // of daughters are not being modified by Photos right now
258  // (so there will be no caching)
259  std::vector<PhotosParticle*> daughters2 = daughters[i]->getDaughters();
260 
261  if(daughters2.size()!=1 ||
262  daughters2[0]->getPdgID() != daughters[i]->getPdgID() )
263  {
264  special = false;
265  break;
266  }
267  }
268 
269  if( special )
270  {
271  double px1=0.0, py1=0.0, pz1=0.0, e1=0.0;
272  double px2=0.0, py2=0.0, pz2=0.0, e2=0.0;
273 
274  // get sum of 4-momenta of unmodified particles
275  for(unsigned int i=0;i<daughters.size();i++)
276  {
277  // ignore photons
278  if(daughters[i]->getPdgID()==22) continue;
279 
280  px1+=daughters[i]->getPx();
281  py1+=daughters[i]->getPy();
282  pz1+=daughters[i]->getPz();
283  e1 +=daughters[i]->getE();
284  }
285 
286  // get sum of 4-momenta of particles in self-decay vertices
287  for(unsigned int i=0;i<daughters.size();i++)
288  {
289  // ignore photons
290  if(daughters[i]->getPdgID()==22) continue;
291 
292  // since 'allDaughtersSelfDecay()' is true
293  // each of these particles has exactly one daughter
294  px2 += daughters[i]->getDaughters().at(0)->getPx();
295  py2 += daughters[i]->getDaughters().at(0)->getPy();
296  pz2 += daughters[i]->getDaughters().at(0)->getPz();
297  e2 += daughters[i]->getDaughters().at(0)->getE();
298  }
299 
300  //cout<<"ORIG: "<<px1<<" "<<py1<<" "<<pz1<<" "<<e1<<endl;
301  //cout<<"SELF: "<<px2<<" "<<py2<<" "<<pz2<<" "<<e2<<endl;
302 
303  p1 = m_particle_list.at(0)->createNewParticle(0,-1,0.0,px1,py1,pz1,e1);
304  p2 = m_particle_list.at(0)->createNewParticle(0,-2,0.0,px2,py2,pz2,e2);
305 
306  // Finaly, boost photons to appropriate frame
307  for(unsigned int i=0;i<photon_list.size();i++)
308  {
309  PhotosParticle *boosted = photon_list[i]->createNewParticle( 22, 1,
310  0.0,
311  photon_list[i]->getPx(),
312  photon_list[i]->getPy(),
313  photon_list[i]->getPz(),
314  photon_list[i]->getE() );
315 
316  boosted->boostToRestFrame(p1);
317  boosted->boostFromRestFrame(p2);
318 
319  photon_list[i]->createSelfDecayVertex(boosted);
320 
321  delete boosted;
322  }
323 
324  Log::Warning()<<"Hidden interaction, all daughters self decay."
325  <<"Potentially over simplified solution applied."<<endl;
326  }
327  }
328 
329  //otherwise loop over particles which are already in the
330  //event record and modify their 4 momentum
331  //4.03.2012: Fix to prevent kinematical trap in vertex of simultaneous:
332  // z-collinear and non-conservation pf E,p for dauthters of grandmothers
333  for(index=daughters_start; index < particle_count && index < (int) m_particle_list.size(); index++){
334 
336 
337  if(ph_hepevt_.idhep[index]!=particle->getPdgID())
338  Log::Fatal("PH_HEPEVT_Interface::get(): Something is wrong with the PH_HEPEVT common block",5);
339 
340  // If photons were added - for each daughter create a history entry
341  if(isPhotonCreated && Photos::isCreateHistoryEntries)
342  {
343  particle->createHistoryEntry();
344  }
345 
346  //check to see if this particle's 4-momentum has been modified
347  bool update=false;
348 
349  // don't update particle if difference lower than THRESHOLD * particle energy (default threshold = 10e-8)
350  double threshold = NO_BOOST_THRESHOLD*ph_hepevt_.phep[index][3];
351  if( fabs(ph_hepevt_.phep[index][0]-particle->getPx()) > threshold ||
352  fabs(ph_hepevt_.phep[index][1]-particle->getPy()) > threshold ||
353  fabs(ph_hepevt_.phep[index][2]-particle->getPz()) > threshold ||
354  fabs(ph_hepevt_.phep[index][3]-particle->getE()) > threshold ) update=true;
355 
356  if(update)
357  {
358 
359  //modify this particle's momentum and it's daughters momentum
360  //Steps 1., 2. and 3. must be executed in order.
361 
362  //1. boost the particles daughters into it's (old) rest frame
363  particle->boostDaughtersToRestFrame(particle);
364 
365  //2. change this particles 4 momentum
366  particle->setPx(ph_hepevt_.phep[index][0]);
367  particle->setPy(ph_hepevt_.phep[index][1]);
368  particle->setPz(ph_hepevt_.phep[index][2]);
369  particle->setE(ph_hepevt_.phep[index][3]);
370 
371  //3. boost the particles daughters back into the lab frame
372  particle->boostDaughtersFromRestFrame(particle);
373 
374  if(special && particle->getDaughters().size()>0){
375 
376  // Algorithm for special case:
377  // a. get self-daughter of 'particle'
378  PhotosParticle *particled = particle->getDaughters().at(0);
379 
380  // b. boost 'particled' daughters to rest frame
381  particled->boostDaughtersToRestFrame(particled);
382 
383  // c. copy four momentum of 'particle' into four momentum of
384  // its self-daughter 'particled'
385 
386  particled->setPx( particle->getPx() );
387  particled->setPy( particle->getPy() );
388  particled->setPz( particle->getPz() );
389  particled->setE ( particle->getE() );
390 
391  // d. boost self daughter to rest-frame of <e1>
392  // boost self daughter from rest-frame of <e2>
393 
394  particled->boostToRestFrame(p1);
395  particled->boostFromRestFrame(p2);
396 
397  // e. boost the 'particled' daughters back into the lab frame
398  particled->boostDaughtersFromRestFrame(particled);
399  }
400 
401  }
402  }
403 
404  // cleanup
405  if(p1) delete p1;
406  if(p2) delete p2;
407 }
Int_t i
Definition: run_full.C:25
static void update(void)
Definition: ranlxd.cxx:453
static std::vector< PhotosParticle * > m_particle_list
static const double NO_BOOST_THRESHOLD
Double_t p
Definition: anasim.C:58
const int particle
static const int GAMMA
Abstract base class for particle in the event. This class also handles boosting.
struct Photospp::@32 ph_hepevt_
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
double threshold
static ostream & Warning(bool count=true)
Definition: Log.cxx:46
TPad * p2
Definition: hist-t7.C:117
static void Fatal(string text, unsigned short int code=0)
TPad * p1
Definition: hist-t7.C:116
static bool isCreateHistoryEntries
Definition: Photos.h:184
void Photospp::PH_HEPEVT_Interface::prepare ( )
static

Prepare particles for processing

Definition at line 409 of file PH_HEPEVT_Interface.cxx.

Referenced by Photospp::PhotosBranch::process().

410 {
412 }
int Photospp::PH_HEPEVT_Interface::set ( PhotosBranch branch)
static

Convert PhotosBranch to HEPEVT

Definition at line 110 of file PH_HEPEVT_Interface.cxx.

References Photospp::PhotosBranch::getDaughters(), Photospp::PhotosBranch::getDecayingParticle(), Photospp::PhotosBranch::getMothers(), i, and idx.

Referenced by Photospp::PhotosBranch::process().

111 {
113  int idx=1;
114 
115  //get mothers
116  vector<PhotosParticle *> mothers = branch->getMothers();
117  int nmothers=mothers.size();
118 
119  //check if mid-particle exist
120  decay_idx=0;
121  PhotosParticle *decay_particle = branch->getDecayingParticle();
122  if(decay_particle) decay_idx=nmothers+1;
123 
124  //get daughters
125  vector<PhotosParticle *> daughters = branch->getDaughters();
126  int ndaughters=daughters.size();
127 
128  for(int i=0;i<nmothers;i++)
129  {
130  if(decay_idx)
131  add_particle(idx++,mothers.at(i),
132  0,0, //mothers
133  decay_idx,decay_idx); //daughters
134  else
135  add_particle(idx++,mothers.at(i),
136  0,0, //mothers
137  nmothers+1,nmothers+ndaughters); //daughters
138  }
139 
140  if(decay_particle)
141  add_particle(idx++,decay_particle,
142  1,nmothers, //mothers
143  nmothers+2,nmothers+1+ndaughters); //daughters
144 
145  for(int i=0;i<ndaughters;i++)
146  {
147  if(decay_idx)
148  add_particle(idx++,daughters.at(i),
149  decay_idx,decay_idx, //mothers
150  0,0); //daughters
151  else
152  add_particle(idx++,daughters.at(i),
153  1,nmothers, //mothers
154  0,0); //daughters
155  }
156  //Log::RedirectOutput( phodmp_ , Log::Debug(1000) );
157  Log::Debug(1000,false)<<"PH_HEPEVT returning: "<<( (decay_idx) ? decay_idx : 1 )<<" from "<<idx-1<<" particles."<<endl;
158  return (decay_idx) ? decay_idx : 1;
159 }
Int_t i
Definition: run_full.C:25
int idx[MAX]
Definition: autocutx.C:38
static ostream & Debug(unsigned short int code=0, bool count=true)
Definition: Log.cxx:30
static void add_particle(int i, PhotosParticle *particle, int first_mother, int last_mother, int first_daughter, int last_daughter)
Abstract base class for particle in the event. This class also handles boosting.

Member Data Documentation

int Photospp::PH_HEPEVT_Interface::decay_idx =0
static

Index of decaying particle

Definition at line 62 of file PH_HEPEVT_Interface.h.

vector< PhotosParticle * > Photospp::PH_HEPEVT_Interface::m_particle_list
staticprivate

List of particles added to HEPEVT

Definition at line 72 of file PH_HEPEVT_Interface.h.

int Photospp::PH_HEPEVT_Interface::ME_channel =0
static

Number of channel to be used - flag for fortran routines

Definition at line 64 of file PH_HEPEVT_Interface.h.


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