ROOT logo
#ifndef __HPARTICLEGEANTEVENT_H__
#define __HPARTICLEGEANTEVENT_H__

#include "hgeomvector.h"
#include "hparticledef.h"

#include "TObject.h"

#include <vector>
#include <map>

using namespace std;
using namespace Particle;

class HParticleGeant;
class HParticleGeantDecay;
class HGeantKine;

class HParticleGeantEvent : public TObject {

private:

    map<HGeantKine*, vector<HGeantKine*> >  mToDaughters;        // kine    -> vector of daughters
    map<Int_t, HParticleGeant* >            mToParticle;         // trackNr -> particle

    vector <HParticleGeantDecay*>           vDecays;             // vector of all decays
    vector<HGeantKine*>                     vexternalParticles;  // vector of all external (PLUTO) particles
    vector<HGeantKine*>                     vexternalKine;       // vector of all arteficial kine mother objects of external particle
    vector<HParticleGeant*>                 vParticles;          // vector of all particles

    HGeomVector   feventVertex;       // [mm]
    Float_t       fBeamEnergy;        // [MeV]
    Float_t       fEventPlane;        // [deg]
    Float_t       fImpactParam;       // [fm]
    Bool_t        bConvertExtThermal; // (default: kTRUE) convert id for external thermal source (sourceID-500)
    Bool_t        bCorrectInfo;       // (default: kTRUE) correct geninfo bug from HGeant2 <= 3.2
    void          clear();
public:

    HParticleGeantEvent();
    ~HParticleGeantEvent();
    void                           setConvertExtThermal(Bool_t convert) { bConvertExtThermal = convert; }
    void                           setCorrectGenInfo   (Bool_t cor)     { bCorrectInfo       = cor; }


    vector<HGeantKine*>&           getExternalParticles() { return vexternalParticles;}
    HGeomVector&                   getEventVertex()       { return feventVertex; }
    vector<HParticleGeantDecay*>&  getDecays()            { return vDecays;}
    vector<HParticleGeant*>&       getParticles()         { return vParticles;}
    Float_t                        getBeamEnergy()        { return fBeamEnergy;}
    Float_t                        getEventPlane()        { return fEventPlane;}
    Float_t                        getImpactParam()       { return fImpactParam;}


    void                           nextEvent();

    HParticleGeantDecay*           isMotherOfDecay  (Int_t track);
    HParticleGeantDecay*           isMotherOfDecay  (HGeantKine* moth);
    HParticleGeantDecay*           isDaughterOfDecay(HGeantKine* daughter);
    HParticleGeantDecay*           isDaughterOfDecay(Int_t track);
    Int_t                          isDecay   (vector<HParticleGeantDecay*>& decays,Int_t motherid = -2, Int_t generation = -2,Int_t med = -2,Float_t dist=0);
    Int_t                          isParticle(vector<HGeantKine*>&     particles,Int_t id  = -2 ,Int_t motherid = -2, Int_t generation = -2, Int_t med = -2 ,Float_t dist   = 0);
    Int_t                          isParticle(vector<HParticleGeant*>& particles,Int_t id  = -2 ,Int_t motherid = -2, Int_t generation = -2, Int_t med = -2 ,Float_t dist   = 0);
    HParticleGeant*                getParticle(Int_t track);
    HParticleGeant*                getParticle(HGeantKine*);
    HGeantKine*                    getKine    (Int_t track);
    UInt_t                         getMultiplicity(Int_t id=-10,Int_t generation=0,Int_t charge=0,UInt_t type=1,UInt_t detbits=kIsInInnerMDC|kIsInOuterMDC|kIsInMETA);

    ClassDef(HParticleGeantEvent,0)

};




#endif
 hparticlegeantevent.h:1
 hparticlegeantevent.h:2
 hparticlegeantevent.h:3
 hparticlegeantevent.h:4
 hparticlegeantevent.h:5
 hparticlegeantevent.h:6
 hparticlegeantevent.h:7
 hparticlegeantevent.h:8
 hparticlegeantevent.h:9
 hparticlegeantevent.h:10
 hparticlegeantevent.h:11
 hparticlegeantevent.h:12
 hparticlegeantevent.h:13
 hparticlegeantevent.h:14
 hparticlegeantevent.h:15
 hparticlegeantevent.h:16
 hparticlegeantevent.h:17
 hparticlegeantevent.h:18
 hparticlegeantevent.h:19
 hparticlegeantevent.h:20
 hparticlegeantevent.h:21
 hparticlegeantevent.h:22
 hparticlegeantevent.h:23
 hparticlegeantevent.h:24
 hparticlegeantevent.h:25
 hparticlegeantevent.h:26
 hparticlegeantevent.h:27
 hparticlegeantevent.h:28
 hparticlegeantevent.h:29
 hparticlegeantevent.h:30
 hparticlegeantevent.h:31
 hparticlegeantevent.h:32
 hparticlegeantevent.h:33
 hparticlegeantevent.h:34
 hparticlegeantevent.h:35
 hparticlegeantevent.h:36
 hparticlegeantevent.h:37
 hparticlegeantevent.h:38
 hparticlegeantevent.h:39
 hparticlegeantevent.h:40
 hparticlegeantevent.h:41
 hparticlegeantevent.h:42
 hparticlegeantevent.h:43
 hparticlegeantevent.h:44
 hparticlegeantevent.h:45
 hparticlegeantevent.h:46
 hparticlegeantevent.h:47
 hparticlegeantevent.h:48
 hparticlegeantevent.h:49
 hparticlegeantevent.h:50
 hparticlegeantevent.h:51
 hparticlegeantevent.h:52
 hparticlegeantevent.h:53
 hparticlegeantevent.h:54
 hparticlegeantevent.h:55
 hparticlegeantevent.h:56
 hparticlegeantevent.h:57
 hparticlegeantevent.h:58
 hparticlegeantevent.h:59
 hparticlegeantevent.h:60
 hparticlegeantevent.h:61
 hparticlegeantevent.h:62
 hparticlegeantevent.h:63
 hparticlegeantevent.h:64
 hparticlegeantevent.h:65
 hparticlegeantevent.h:66
 hparticlegeantevent.h:67
 hparticlegeantevent.h:68
 hparticlegeantevent.h:69
 hparticlegeantevent.h:70
 hparticlegeantevent.h:71
 hparticlegeantevent.h:72
 hparticlegeantevent.h:73
 hparticlegeantevent.h:74
 hparticlegeantevent.h:75
 hparticlegeantevent.h:76