ROOT logo
#ifndef  __HPARTICLEGEANTDECAY_H__
#define __HPARTICLEGEANTDECAY_H__


#include "hgeomvector.h"
#include "hgeantkine.h"

#include "TObject.h"

#include <vector>

using namespace std;

class HParticleGeantDecay : public TObject {

private:

    HGeantKine* fmother;
    vector <HGeantKine*> fdaughters;
    HGeomVector fdecayVertex;
    Int_t  fgeneration;
    HParticleGeantDecay*  fmotherDecay;


    static  Bool_t compareTrackNr(HGeantKine* kine1,HGeantKine* kine2){
	return kine1->getTrack()     < kine2->getTrack();
    }

public:

    HParticleGeantDecay();
    ~HParticleGeantDecay();

    Int_t                  getMotherID()       { return (fmother) ? fmother->getID()    : -10;}
    HGeantKine*            getMother()         { return fmother;}
    vector<HGeantKine*>&   getDaughters()      { return fdaughters;}
    UInt_t                 getNDaughters()     { return fdaughters.size();}
    HGeantKine*            getDaughter(UInt_t i) { return (i < fdaughters.size()) ? fdaughters[i] : 0;}
    Bool_t                 isDaughterPID(Int_t pid);
    Bool_t                 isDaughterPID(vector<Int_t>& pids);

    HGeomVector&           getDecayVertex()    { return fdecayVertex;}
    Int_t                  getMedium()         { return (fmother) ? fmother->getMedium()    : -1;}
    Int_t                  getMechanism()      { return (fmother) ? fmother->getMechanism() : 0;}
    Int_t                  getGeneration()     { return fgeneration;}
    HParticleGeantDecay*   getMotherDecay()    { return fmotherDecay;}
    Int_t                  getGeneratorInfo()  { return (fmother) ? fmother->getGeneratorInfo() : 0;}
    Int_t                  getGeneratorInfo1() { return (fmother) ? fmother->getGeneratorInfo1(): 0;}
    Int_t                  getGeneratorInfo2() { return (fmother) ? fmother->getGeneratorInfo2(): 0;}

    void                   setGeneration(Int_t gen)                      { fgeneration = gen;}
    void                   setDecayVertex(Float_t x,Float_t y,Float_t z) { fdecayVertex.setXYZ(x,y,z);}
    void                   setDecayVertex(HGeomVector& ver)              { fdecayVertex = ver;}
    void                   setMotherDecay(HParticleGeantDecay* mdecay)   { fmotherDecay = mdecay;}
    void                   setMother  (HGeantKine* mother)               { fmother = mother;}
    void                   addDaughter(HGeantKine* d);
    void                   setDaughters(vector<HGeantKine*>& d)          { fdaughters = d;}
    void                   sortDaughters();
    Float_t                getDistFromVertex(HGeomVector* primVer=0);
    Bool_t                 isExternalSource()  { return (fmother) ? fmother->isExternalSource() : kFALSE; }
    void                   clear();
    Bool_t                 isDaughter(HGeantKine* d);
    Bool_t                 isDaughter(vector<HGeantKine*> d);
    void                   print();

    ClassDef(HParticleGeantDecay,0)

};

#endif

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