]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TEvtGen/EvtGenBase/EvtHepMCEvent.hh
Updates EvtGen Code
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtHepMCEvent.hh
diff --git a/TEvtGen/EvtGenBase/EvtHepMCEvent.hh b/TEvtGen/EvtGenBase/EvtHepMCEvent.hh
new file mode 100644 (file)
index 0000000..cb503eb
--- /dev/null
@@ -0,0 +1,77 @@
+//--------------------------------------------------------------------------
+//
+// Environment:
+//      This software is part of the EvtGen package. If you use all or part
+//      of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//      Copyright (C) 2011      University of Warwick, UK
+//
+// Module: EvtHepMCEvent
+//
+// Description: Create an HepMC::GenEvent for the complete EvtParticle 
+//              decay tree.
+//
+// Modification history:
+//
+//    John Back       June 2011            Module created
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTHEPMCEVENT_HH
+#define EVTHEPMCEVENT_HH
+
+#include "EvtGenBase/EvtVector4R.hh"
+
+#include "HepMC/GenEvent.h"
+#include "HepMC/GenParticle.h"
+#include "HepMC/SimpleVector.h"
+
+class EvtParticle;
+
+class EvtHepMCEvent {
+
+public:
+
+  EvtHepMCEvent();
+  virtual ~EvtHepMCEvent();
+
+  // Select what frame a given GenParticle is in:
+  // its own restframe, the lab frame (first mother), or its mother's frame
+  enum HepMCFrame {RESTFRAME = 1, LAB = 2, MOTHER = 3};
+  // Select the GenParticle status
+  enum HepMCStatus {STABLE = 1, DECAYED = 2, HISTORY = 3};
+
+  void constructEvent(EvtParticle* baseParticle);
+  void constructEvent(EvtParticle* baseParticle, EvtVector4R& translation);
+  
+  HepMC::GenEvent* getEvent() {return _theEvent;}
+
+  // Methods used to create GenParticles and FourVectors of vertices.
+  // Make these public so that other classes may call them if they use EvtHepMCEvent.
+
+  // Create a GenParticle using info from the EvtParticle, specifying what frame
+  // the 4-momentum is from.
+  HepMC::GenParticle* createGenParticle(EvtParticle* theParticle, int frameType);
+
+  // Find out the decay vertex position for the given EvtParticle.
+  HepMC::FourVector getVertexCoord(EvtParticle* theParticle);
+
+protected:
+
+private:
+
+  // Delete the event structure (called by destructor)
+  void deleteEvent();
+
+  // Add a vertex to the event. This is called by the constructEvent function
+  // and is recursive, i.e. it loops through all possible daughter particles and
+  // their descendents.
+  void addVertex(EvtParticle* inEvtParticle, HepMC::GenParticle* inGenParticle);
+
+  HepMC::GenEvent* _theEvent;
+  EvtVector4R _translation;
+
+};
+
+#endif