FairRoot/PandaRoot
Functions | Variables
photos_standalone_example.cxx File Reference
#include "HepMC/IO_GenEvent.h"
#include "Photos/Photos.h"
#include "Photos/PhotosHepMCEvent.h"
#include "Photos/Log.h"

Go to the source code of this file.

Functions

void checkMomentumConservationInEvent (HepMC::GenEvent *evt)
 
int main ()
 

Variables

int EventsToCheck =20
 

Function Documentation

void checkMomentumConservationInEvent ( HepMC::GenEvent *  evt)

Definition at line 27 of file photos_standalone_example.cxx.

References m, p, and pz.

Referenced by main().

28 {
29  //cout<<"List of stable particles: "<<endl;
30 
31  double px=0.0,py=0.0,pz=0.0,e=0.0;
32 
33  for ( HepMC::GenEvent::particle_const_iterator p = evt->particles_begin();
34  p != evt->particles_end(); ++p )
35  {
36  if( (*p)->status() == 1 )
37  {
38  HepMC::FourVector m = (*p)->momentum();
39  px+=m.px();
40  py+=m.py();
41  pz+=m.pz();
42  e +=m.e();
43  //(*p)->print();
44  }
45  }
46  cout.precision(6);
47  cout.setf(ios_base::floatfield);
48  cout<<endl<<"Vector Sum: "<<px<<" "<<py<<" "<<pz<<" "<<e<<endl;
49 }
__m128 m
Definition: P4_F32vec4.h:28
int evt
Definition: checkhelixhit.C:36
Double_t p
Definition: anasim.C:58
double pz[39]
Definition: pipisigmas.h:14
int main ( void  )

Definition at line 51 of file photos_standalone_example.cxx.

References buf, checkMomentumConservationInEvent(), EventsToCheck, evt, file, chigen::initialize(), and Photospp::PhotosEvent::process().

52 {
53  HepMC::IO_GenEvent file("photos_standalone_example.dat",std::ios::in);
54 
56  Photos::setInfraredCutOff(0.001/200);
57 
58  int photonAdded=0,twoAdded=0,moreAdded=0,evtCount=0;
59  // Begin event loop. Generate event.
60  while(true)
61  {
62  // Create event
63  HepMC::GenEvent *HepMCEvt = new HepMC::GenEvent();
64  file.fill_next_event(HepMCEvt);
65  if(file.rdstate()) break;
66  evtCount++;
67  int buf = -HepMCEvt->particles_size();
68 
69  //cout << "BEFORE:"<<endl;
70  //HepMCEvt->print();
71 
72  if(evtCount<EventsToCheck)
73  {
74  cout<<" "<<endl;
75  cout<<"Momentum conservation chceck BEFORE/AFTER Photos"<<endl;
77  }
78 
79  // Process by photos
80  PhotosHepMCEvent evt(HepMCEvt);
81  evt.process();
82 
83  if(evtCount<EventsToCheck)
84  {
86  }
87 
88  buf+=HepMCEvt->particles_size();
89  if(buf==1) photonAdded++;
90  else if(buf==2) twoAdded++;
91  else if(buf>2) moreAdded++;
92 
93  //cout << "AFTER:"<<endl;
94  //HepMCEvt->print();
95 
96  //clean up
97  delete HepMCEvt;
98  }
99 
100  // Print results
101  cout.precision(2);
102  cout.setf(ios::fixed);
103  cout<<endl;
104  if(evtCount==0)
105  {
106  cout<<"Something went wrong with the input file: photos_standalone_example.dat"<<endl;
107  cout<<"No events were processed."<<endl<<endl;
108  return 0;
109  }
110  cout<<"Summary (whole event processing):"<<endl;
111  cout<<evtCount <<"\tevents processed"<<endl;
112  cout<<photonAdded<<"\ttimes one photon added to the event \t("<<(photonAdded*100./evtCount)<<"%)"<<endl;
113  cout<<twoAdded <<"\ttimes two photons added to the event \t("<<(twoAdded*100./evtCount)<<"%)"<<endl;
114  cout<<moreAdded <<"\ttimes more than two photons added to the event\t("<<(moreAdded*100./evtCount)<<"%)"<<endl<<endl;
115  cout<<"(Contrary to results from MC-Tester, these values are technical and infrared unstable)"<<endl<<endl;
116 }
TFile * file
int evt
Definition: checkhelixhit.C:36
void initialize()
void checkMomentumConservationInEvent(HepMC::GenEvent *evt)
return buf

Variable Documentation

int EventsToCheck =20

Definition at line 21 of file photos_standalone_example.cxx.

Referenced by main().