28 #ifndef Gw_AgataEventContainer
40 TString
AgataEventContainer::fgTypeName[fgkMaxNofTypeName] = {
"Agata",
"HeavyIons",
"LightCP",
"Neutron"};
41 const TString AgataEventContainer::fgkTypeNameExt[] = {
"_Tracks",
"_Hits"};
46 fTrackList(new TClonesArray(
"Gw::TrackHit")),
47 fHitList(new TClonesArray(
"Gw::StdHit")),
61 for (Int_t i = 0; i < fNofBracnhes; ++i) {
62 delete fCurrentTrackList[i];
63 delete fCurrentHitList[i];
72 if (++fNofBracnhes >= fgkMaxNofTypeName) {
80 fgTypeName[fNofBracnhes-1] = type;
82 name = fgTypeName[fNofBracnhes-1].Data() + fgkTypeNameExt[0];
83 fCurrentTrackList[fNofBracnhes-1] =
new TClonesArray(
"Gw::TrackHit");
84 fEventTree->Branch(name.Data(), &fCurrentTrackList[fNofBracnhes-1]);
86 name = fgTypeName[fNofBracnhes-1].Data() + fgkTypeNameExt[1];
87 fCurrentHitList[fNofBracnhes-1] =
new TClonesArray(
"Gw::StdHit");
88 fEventTree->Branch(name.Data(), &fCurrentHitList[fNofBracnhes-1]);
90 return fgTypeName[fNofBracnhes-1].Data();
96 for (Int_t i = 0; i < fNofBracnhes; ++i) {
97 fCurrentTrackList[i]->Clear();
98 fCurrentHitList[i]->Clear();
113 TString name = GetHitBranchName(type);
120 for (Int_t i = 0; i < fNofBracnhes; ++i) {
121 fCurrentHitList[i]->Delete();
135 TString name = GetTrackBranchName(type);
142 for (Int_t i = 0; i < fNofBracnhes; ++i) {
143 fCurrentTrackList[i]->Delete();
159 if (fCurrentTrackList[idx] == 0x0) {
164 TClonesArray &hitArray = *fCurrentTrackList[idx];
182 if (fCurrentHitList[idx] == 0x0) {
187 TClonesArray &hitArray = *fCurrentHitList[idx];
188 StdHit* hit =
new(hitArray[hitArray.GetEntriesFast()])
StdHit();
199 for (Int_t i = 0; i < fNofBracnhes; ++i) {
200 if (tmp.CompareTo(fgTypeName[i]) == 0)
208 TString AgataEventContainer::GetTrackBranchName(Option_t* type)
const
217 TString name = fgTypeName[idx].Data() + fgkTypeNameExt[0];
219 return TString(name);
223 TString AgataEventContainer::GetHitBranchName(Option_t* type)
const
232 TString name = fgTypeName[idx].Data() + fgkTypeNameExt[1];
234 return TString(name);
240 TString name = GetTrackBranchName(type);
246 if (ievent >= b->GetEntries()) {
254 fTrackList->Delete();
256 b->SetAddress(&fTrackList);
264 TString name = GetHitBranchName(type);
270 if (ievent >= b->GetEntries()) {
280 b->SetAddress(&fHitList);
292 fTrackList(new TClonesArray(
"Gw::StdHit"))
294 fTrackList->SetOwner(
true);
306 return fTrackList->GetEntries();
312 TClonesArray &hitArray = *fTrackList;
313 StdHit* hit =
new(hitArray[hitArray.GetEntriesFast()])
StdHit();
321 if (i >= fTrackList->GetEntries() && i >= 0)
324 return (
StdHit*)fTrackList->At(i);
AgataEventContainer class that contains agata event to be displayed.
const Char_t * RegisterBranch(Option_t *type="")
Register branch, return name of type.
Int_t GetIndex(Option_t *type) const
Get index from type.
LogMessage & error(LogMessage &)
StdHit * NewHit()
Add a new hit to the track (filling mode). The Stack is emptied by calling Reset. ...
virtual ~AgataEventContainer()
void FillTracks(Option_t *type="Agata")
TClonesArray * GetHitList(Int_t ievent, Option_t *type="Agata", Bool_t warn=true)
get array
BaseEventContainer base class that contains event for display.
StdHit * GetHit(Int_t i=0) const
Get Hit number i of the track (already added with NewHit !!)
Int_t GetNbHits() const
It returns the number of hits for this tracked particle.
LogMessage & dolog(LogMessage &)
void ClearEvents()
clear list or delete when dynamical memory allocation
void FillHits(Option_t *type="Agata")
Fill Event.
TClonesArray * GetTrackList(Int_t ievent, Option_t *type="Agata", Bool_t warn=true)
get array
TrackHit * NewTrackHit(Option_t *type="Agata")
add current track hit (added to current track hit list)
StdHit * NewHit(Option_t *type="Agata")
add current hit (added to current hit list)
virtual std::string & GetProcessName()
To get the Process name.
virtual void SetProcessMethod(const char *)
To set the current method.