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