Hi Rene! In the main program I have something like this (simplified) #include "Event.hh" Event* event; void main() { event = new Event(); evttree = new TTree("evttree","rare decays ROOT tree"); evttree->Branch("event","Event",&event); } The implementation of the classes: #include "Event.hh" //#include "arte/ArteMessage.hh" ClassImp(EventHeader) ClassImp(Mimp) ClassImp(Event) TClonesArray* Event::fgB0sMimps = 0; TClonesArray* Event::fgMuplusMimps = 0; TClonesArray* Event::fgMuminusMimps = 0; //**************************************************************************** EventHeader::EventHeader() : fEvtNum(0), fRunNum(0), fDate(0), fTime(0), fBX(0) { } EventHeader::~EventHeader() { } void EventHeader::SetAll(Int_t EvtNum, Int_t RunNum, Int_t Date, Int_t Time, Int_t BX) { fEvtNum = EvtNum; fRunNum = RunNum; fDate = Date; fTime = Time; fBX = BX; } //**************************************************************************** void Mimp::Clear() { fX = 0; fY=0; fZ = 0; fPx = 0; fPy = 0; fPz = 0; fCmp = 0; fNsl = 0; } void Mimp::SetConvertedMomenta(Float_t tx, Float_t ty, Float_t p) { fPz = p/(sqrt(1 + tx*tx + ty*ty)); fPx = tx * fPz; fPy = ty * fPz; } //**************************************************************************** Event::Event() { if(!fgB0sMimps) fgB0sMimps = new TClonesArray("Mimp",1000); if(!fgMuminusMimps) fgB0sMimps = new TClonesArray("Mimp",1000); if(!fgMuplusMimps) fgB0sMimps = new TClonesArray("Mimp",1000); fB0sMimps = fgB0sMimps; fMuminusMimps = fgMuminusMimps; fMuplusMimps = fgMuplusMimps; fNb0sMimps = 0; fNmuminusMimps = 0; fNmuplusMimps = 0; } Event::~Event() {} void Event::AddMimp(const Mimp* mymimp, char* particle) { if (particle == "B0s") AddB0sMimp(mymimp); else if (particle == "Muplus") AddMuplusMimp(mymimp); else if (particle == "Muminus") AddMuminusMimp(mymimp); else { //arteMsg << "Cannot fill MIMP array for this particle type" << endl; //arteMsg.warn(); } } void Event::AddB0sMimp(const Mimp* mymimp) { TClonesArray &b0s = *fB0sMimps; new(b0s[fNb0sMimps++]) Mimp(mymimp); } void Event::AddMuminusMimp(const Mimp* mymimp) { TClonesArray &muminus = *fMuminusMimps; new(muminus[fNmuminusMimps++]) Mimp(mymimp); } void Event::AddMuplusMimp(const Mimp* mymimp) { TClonesArray &muplus = *fMuplusMimps; new(muplus[fNmuplusMimps++]) Mimp(mymimp); } void Event::Clear(Option_t *option) { fNb0sMimps = 0; fNmuminusMimps = 0; fNmuplusMimps = 0; fB0sMimps->Clear(option); fMuminusMimps->Clear(option); fMuplusMimps->Clear(option); fEvtHdr.SetAll(0,0,0,0,0); } void Event::Reset(Option_t *option) { delete fgB0sMimps; fgB0sMimps = 0; delete fgMuminusMimps; fgMuminusMimps = 0; delete fgMuplusMimps; fgMuplusMimps = 0; } void Event::SetHeader(Int_t EvtNum, Int_t RunNum, Int_t Date, Int_t Time, Int_t BX) { fEvtHdr.SetAll(EvtNum, RunNum, Date, Time, BX); } Ulrich Husemann
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:19 MET